feat(goose-acp): enable parallel sessions with isolated agent state (#6392)
Signed-off-by: Adrian Cole <adrian@tetrate.io>
This commit is contained in:
@@ -1,381 +0,0 @@
|
||||
mod common;
|
||||
|
||||
use rmcp::transport::streamable_http_server::{
|
||||
session::local::LocalSessionManager, StreamableHttpServerConfig, StreamableHttpService,
|
||||
};
|
||||
use rmcp::{
|
||||
handler::server::router::tool::ToolRouter, model::*, tool, tool_handler, tool_router,
|
||||
ErrorData as McpError, ServerHandler,
|
||||
};
|
||||
use sacp::schema::{
|
||||
ContentBlock, ContentChunk, InitializeRequest, McpServer, McpServerHttp, NewSessionRequest,
|
||||
PromptRequest, ProtocolVersion, RequestPermissionOutcome, RequestPermissionRequest,
|
||||
RequestPermissionResponse, SelectedPermissionOutcome, SessionNotification, SessionUpdate,
|
||||
StopReason, TextContent,
|
||||
};
|
||||
use sacp::{ClientToAgent, JrConnectionCx};
|
||||
use std::collections::VecDeque;
|
||||
use std::path::Path;
|
||||
use std::process::Stdio;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::time::Duration;
|
||||
use tokio::process::{Child, Command};
|
||||
use tokio::task::JoinHandle;
|
||||
use tokio_util::compat::{TokioAsyncReadCompatExt, TokioAsyncWriteCompatExt};
|
||||
use wiremock::matchers::{method, path};
|
||||
use wiremock::{Mock, MockServer, ResponseTemplate};
|
||||
|
||||
/// Fake code returned by the MCP server - an LLM couldn't know this from memory
|
||||
const FAKE_CODE: &str = "test-uuid-12345-67890";
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_acp_basic_completion() {
|
||||
let prompt = "what is 1+1";
|
||||
let mock_server = setup_mock_openai(vec![(
|
||||
format!(r#"</info-msg>\n{prompt}","role":"user""#),
|
||||
include_str!("./test_data/openai_basic_response.txt"),
|
||||
)])
|
||||
.await;
|
||||
|
||||
run_acp_session(
|
||||
&mock_server,
|
||||
vec![],
|
||||
&[],
|
||||
tempfile::tempdir().unwrap().path(),
|
||||
|cx, session_id, updates| async move {
|
||||
let response = cx
|
||||
.send_request(PromptRequest::new(
|
||||
session_id,
|
||||
vec![ContentBlock::Text(TextContent::new(prompt))],
|
||||
))
|
||||
.block_task()
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(response.stop_reason, StopReason::EndTurn);
|
||||
wait_for_text(&updates, "2", Duration::from_secs(5)).await;
|
||||
},
|
||||
)
|
||||
.await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_acp_with_mcp_http_server() {
|
||||
let prompt = "Use the get_code tool and output only its result.";
|
||||
let (mcp_url, _handle) = spawn_mcp_http_server().await;
|
||||
|
||||
let mock_server = setup_mock_openai(vec![
|
||||
(
|
||||
format!(r#"</info-msg>\n{prompt}","role":"user""#),
|
||||
include_str!("./test_data/openai_tool_call_response.txt"),
|
||||
),
|
||||
(
|
||||
format!(r#""content":"{FAKE_CODE}","role":"tool""#),
|
||||
include_str!("./test_data/openai_tool_result_response.txt"),
|
||||
),
|
||||
])
|
||||
.await;
|
||||
|
||||
run_acp_session(
|
||||
&mock_server,
|
||||
vec![McpServer::Http(McpServerHttp::new("lookup", &mcp_url))],
|
||||
&[],
|
||||
tempfile::tempdir().unwrap().path(),
|
||||
|cx, session_id, updates| async move {
|
||||
let response = cx
|
||||
.send_request(PromptRequest::new(
|
||||
session_id,
|
||||
vec![ContentBlock::Text(TextContent::new(prompt))],
|
||||
))
|
||||
.block_task()
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(response.stop_reason, StopReason::EndTurn);
|
||||
wait_for_text(&updates, FAKE_CODE, Duration::from_secs(5)).await;
|
||||
},
|
||||
)
|
||||
.await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_acp_with_builtin_and_mcp() {
|
||||
let prompt =
|
||||
"Search for get_code and text_editor tools. Use them to save the code to /tmp/result.txt.";
|
||||
let (mcp_url, _handle) = spawn_mcp_http_server().await;
|
||||
|
||||
let mock_server = setup_mock_openai(vec: string - Get the code"#.into(),
|
||||
include_str!("./test_data/openai_builtin_execute.txt"),
|
||||
),
|
||||
(
|
||||
r#"Successfully wrote to /tmp/result.txt"#.into(),
|
||||
include_str!("./test_data/openai_builtin_final.txt"),
|
||||
),
|
||||
])
|
||||
.await;
|
||||
|
||||
run_acp_session(
|
||||
&mock_server,
|
||||
vec![McpServer::Http(McpServerHttp::new("lookup", &mcp_url))],
|
||||
&["code_execution", "developer"],
|
||||
tempfile::tempdir().unwrap().path(),
|
||||
|cx, session_id, updates| async move {
|
||||
let response = cx
|
||||
.send_request(PromptRequest::new(
|
||||
session_id,
|
||||
vec![ContentBlock::Text(TextContent::new(prompt))],
|
||||
))
|
||||
.block_task()
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(response.stop_reason, StopReason::EndTurn);
|
||||
wait_for_text(&updates, FAKE_CODE, Duration::from_secs(10)).await;
|
||||
},
|
||||
)
|
||||
.await;
|
||||
}
|
||||
|
||||
async fn wait_for_text(
|
||||
updates: &Arc<Mutex<Vec<SessionNotification>>>,
|
||||
expected: &str,
|
||||
timeout: Duration,
|
||||
) {
|
||||
let deadline = tokio::time::Instant::now() + timeout;
|
||||
loop {
|
||||
let actual = extract_text(&updates.lock().unwrap());
|
||||
if actual.contains(expected) {
|
||||
return;
|
||||
}
|
||||
if tokio::time::Instant::now() > deadline {
|
||||
assert_eq!(actual, expected);
|
||||
return;
|
||||
}
|
||||
tokio::task::yield_now().await;
|
||||
}
|
||||
}
|
||||
|
||||
/// Each entry is (expected_body_substring, response_body).
|
||||
/// Session description requests are handled automatically.
|
||||
async fn setup_mock_openai(exchanges: Vec<(String, &'static str)>) -> MockServer {
|
||||
let mock_server = MockServer::start().await;
|
||||
let queue: VecDeque<(String, &'static str)> = exchanges.into_iter().collect();
|
||||
let queue = Arc::new(Mutex::new(queue));
|
||||
|
||||
Mock::given(method("POST"))
|
||||
.and(path("/v1/chat/completions"))
|
||||
.respond_with({
|
||||
let queue = queue.clone();
|
||||
move |req: &wiremock::Request| {
|
||||
let body = String::from_utf8_lossy(&req.body);
|
||||
|
||||
if body.contains("Reply with only a description in four words or less") {
|
||||
return ResponseTemplate::new(200)
|
||||
.insert_header("content-type", "application/json")
|
||||
.set_body_string(include_str!(
|
||||
"./test_data/openai_session_description.json"
|
||||
));
|
||||
}
|
||||
|
||||
let (expected, response) = {
|
||||
let mut q = queue.lock().unwrap();
|
||||
match q.pop_front() {
|
||||
Some(item) => item,
|
||||
None => {
|
||||
return ResponseTemplate::new(500)
|
||||
.set_body_string(format!("unexpected request: {body}"));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if !body.contains(&expected) {
|
||||
return ResponseTemplate::new(500).set_body_string(format!(
|
||||
"expected body to contain: {expected}\nactual: {body}"
|
||||
));
|
||||
}
|
||||
|
||||
ResponseTemplate::new(200)
|
||||
.insert_header("content-type", "text/event-stream")
|
||||
.set_body_string(response)
|
||||
}
|
||||
})
|
||||
.mount(&mock_server)
|
||||
.await;
|
||||
|
||||
mock_server
|
||||
}
|
||||
|
||||
fn extract_text(updates: &[SessionNotification]) -> String {
|
||||
updates
|
||||
.iter()
|
||||
.filter_map(|n| match &n.update {
|
||||
SessionUpdate::AgentMessageChunk(ContentChunk {
|
||||
content: ContentBlock::Text(t),
|
||||
..
|
||||
}) => Some(t.text.clone()),
|
||||
_ => None,
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
async fn spawn_goose_acp(mock_server: &MockServer, builtins: &[&str], data_root: &Path) -> Child {
|
||||
let mut cmd = Command::new(&*common::GOOSE_BINARY);
|
||||
cmd.args(["acp"]);
|
||||
if !builtins.is_empty() {
|
||||
cmd.arg("--with-builtin").arg(builtins.join(","));
|
||||
}
|
||||
cmd.stdin(Stdio::piped())
|
||||
.stdout(Stdio::piped())
|
||||
.stderr(Stdio::piped())
|
||||
.env("GOOSE_PROVIDER", "openai")
|
||||
.env("GOOSE_MODEL", "gpt-5-nano")
|
||||
.env("GOOSE_MODE", "approve")
|
||||
.env("OPENAI_HOST", mock_server.uri())
|
||||
.env("OPENAI_API_KEY", "test-key")
|
||||
.env("GOOSE_PATH_ROOT", data_root)
|
||||
.env(
|
||||
"RUST_LOG",
|
||||
std::env::var("RUST_LOG").unwrap_or_else(|_| "info".into()),
|
||||
)
|
||||
.kill_on_drop(true)
|
||||
.spawn()
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
async fn run_acp_session<F, Fut>(
|
||||
mock_server: &MockServer,
|
||||
mcp_servers: Vec<McpServer>,
|
||||
builtins: &[&str],
|
||||
data_root: &Path,
|
||||
test_fn: F,
|
||||
) where
|
||||
F: FnOnce(
|
||||
JrConnectionCx<ClientToAgent>,
|
||||
sacp::schema::SessionId,
|
||||
Arc<Mutex<Vec<SessionNotification>>>,
|
||||
) -> Fut,
|
||||
Fut: std::future::Future<Output = ()>,
|
||||
{
|
||||
let mut child = spawn_goose_acp(mock_server, builtins, data_root).await;
|
||||
let work_dir = tempfile::tempdir().unwrap();
|
||||
let updates = Arc::new(Mutex::new(Vec::new()));
|
||||
let outgoing = child.stdin.take().unwrap().compat_write();
|
||||
let incoming = child.stdout.take().unwrap().compat();
|
||||
|
||||
let transport = sacp::ByteStreams::new(outgoing, incoming);
|
||||
|
||||
ClientToAgent::builder()
|
||||
.on_receive_notification(
|
||||
{
|
||||
let updates = updates.clone();
|
||||
async move |notification: SessionNotification, _cx| {
|
||||
updates.lock().unwrap().push(notification);
|
||||
Ok(())
|
||||
}
|
||||
},
|
||||
sacp::on_receive_notification!(),
|
||||
)
|
||||
.on_receive_request(
|
||||
async move |request: RequestPermissionRequest, request_cx, _connection_cx| {
|
||||
let option_id = request.options.first().map(|opt| opt.option_id.clone());
|
||||
match option_id {
|
||||
Some(id) => request_cx.respond(RequestPermissionResponse::new(
|
||||
RequestPermissionOutcome::Selected(SelectedPermissionOutcome::new(id)),
|
||||
)),
|
||||
None => request_cx.respond(RequestPermissionResponse::new(
|
||||
RequestPermissionOutcome::Cancelled,
|
||||
)),
|
||||
}
|
||||
},
|
||||
sacp::on_receive_request!(),
|
||||
)
|
||||
.connect_to(transport)
|
||||
.unwrap()
|
||||
.run_until({
|
||||
let updates = updates.clone();
|
||||
move |cx: JrConnectionCx<ClientToAgent>| async move {
|
||||
cx.send_request(InitializeRequest::new(ProtocolVersion::LATEST))
|
||||
.block_task()
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let session = cx
|
||||
.send_request(
|
||||
NewSessionRequest::new(work_dir.path().to_path_buf())
|
||||
.mcp_servers(mcp_servers),
|
||||
)
|
||||
.block_task()
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
test_fn(cx.clone(), session.session_id, updates).await;
|
||||
Ok(())
|
||||
}
|
||||
})
|
||||
.await
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
struct Lookup {
|
||||
tool_router: ToolRouter<Lookup>,
|
||||
}
|
||||
|
||||
#[tool_router]
|
||||
impl Lookup {
|
||||
fn new() -> Self {
|
||||
Self {
|
||||
tool_router: Self::tool_router(),
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns a fake code that an LLM couldn't know from memory
|
||||
#[tool(description = "Get the code")]
|
||||
fn get_code(&self) -> Result<CallToolResult, McpError> {
|
||||
Ok(CallToolResult::success(vec![Content::text(FAKE_CODE)]))
|
||||
}
|
||||
}
|
||||
|
||||
#[tool_handler]
|
||||
impl ServerHandler for Lookup {
|
||||
fn get_info(&self) -> ServerInfo {
|
||||
ServerInfo {
|
||||
protocol_version: rmcp::model::ProtocolVersion::V_2025_03_26,
|
||||
capabilities: ServerCapabilities::builder().enable_tools().build(),
|
||||
server_info: Implementation {
|
||||
name: "lookup".into(),
|
||||
version: "1.0.0".into(),
|
||||
..Default::default()
|
||||
},
|
||||
instructions: Some("Lookup server with get_code tool.".into()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async fn spawn_mcp_http_server() -> (String, JoinHandle<()>) {
|
||||
let service = StreamableHttpService::new(
|
||||
|| Ok(Lookup::new()),
|
||||
LocalSessionManager::default().into(),
|
||||
StreamableHttpServerConfig::default(),
|
||||
);
|
||||
let router = axum::Router::new().nest_service("/mcp", service);
|
||||
let listener = tokio::net::TcpListener::bind("127.0.0.1:0").await.unwrap();
|
||||
let addr = listener.local_addr().unwrap();
|
||||
let url = format!("http://{addr}/mcp");
|
||||
|
||||
let handle = tokio::spawn(async move {
|
||||
axum::serve(listener, router).await.unwrap();
|
||||
});
|
||||
|
||||
(url, handle)
|
||||
}
|
||||
+69
-29
@@ -15,11 +15,15 @@ mod tests {
|
||||
use async_trait::async_trait;
|
||||
use chrono::{DateTime, Utc};
|
||||
use goose::agents::platform_tools::PLATFORM_MANAGE_SCHEDULE_TOOL_NAME;
|
||||
use goose::agents::AgentConfig;
|
||||
use goose::config::permission::PermissionManager;
|
||||
use goose::config::GooseMode;
|
||||
use goose::scheduler::{ScheduledJob, SchedulerError};
|
||||
use goose::scheduler_trait::SchedulerTrait;
|
||||
use goose::session::Session;
|
||||
use goose::session::{Session, SessionManager};
|
||||
use std::path::PathBuf;
|
||||
use std::sync::Arc;
|
||||
use tempfile::TempDir;
|
||||
|
||||
struct MockScheduler {
|
||||
jobs: tokio::sync::Mutex<Vec<ScheduledJob>>,
|
||||
@@ -114,12 +118,20 @@ mod tests {
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_schedule_management_tool_list() {
|
||||
let agent = Agent::new();
|
||||
let temp_dir = TempDir::new().unwrap();
|
||||
let data_dir = temp_dir.path().to_path_buf();
|
||||
let session_manager = Arc::new(SessionManager::new(data_dir.clone()));
|
||||
let permission_manager = Arc::new(PermissionManager::new(data_dir));
|
||||
let mock_scheduler = Arc::new(MockScheduler::new());
|
||||
agent.set_scheduler(mock_scheduler.clone()).await;
|
||||
let config = AgentConfig::new(
|
||||
session_manager,
|
||||
permission_manager,
|
||||
Some(mock_scheduler),
|
||||
GooseMode::Auto,
|
||||
);
|
||||
let agent = Agent::with_config(config);
|
||||
|
||||
// Test that the schedule management tool is available in the tools list
|
||||
let tools = agent.list_tools(None).await;
|
||||
let tools = agent.list_tools("test-session-id", None).await;
|
||||
let schedule_tool = tools
|
||||
.iter()
|
||||
.find(|tool| tool.name == PLATFORM_MANAGE_SCHEDULE_TOOL_NAME);
|
||||
@@ -137,7 +149,7 @@ mod tests {
|
||||
async fn test_no_schedule_management_tool_without_scheduler() {
|
||||
let agent = Agent::new();
|
||||
|
||||
let tools = agent.list_tools(None).await;
|
||||
let tools = agent.list_tools("test-session-id", None).await;
|
||||
let schedule_tool = tools
|
||||
.iter()
|
||||
.find(|tool| tool.name == PLATFORM_MANAGE_SCHEDULE_TOOL_NAME);
|
||||
@@ -146,11 +158,22 @@ mod tests {
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_schedule_management_tool_in_platform_tools() {
|
||||
let agent = Agent::new();
|
||||
let temp_dir = TempDir::new().unwrap();
|
||||
let data_dir = temp_dir.path().to_path_buf();
|
||||
let session_manager = Arc::new(SessionManager::new(data_dir.clone()));
|
||||
let permission_manager = Arc::new(PermissionManager::new(data_dir));
|
||||
let mock_scheduler = Arc::new(MockScheduler::new());
|
||||
agent.set_scheduler(mock_scheduler.clone()).await;
|
||||
let config = AgentConfig::new(
|
||||
session_manager,
|
||||
permission_manager,
|
||||
Some(mock_scheduler),
|
||||
GooseMode::Auto,
|
||||
);
|
||||
let agent = Agent::with_config(config);
|
||||
|
||||
let tools = agent.list_tools(Some("platform".to_string())).await;
|
||||
let tools = agent
|
||||
.list_tools("test-session-id", Some("platform".to_string()))
|
||||
.await;
|
||||
|
||||
// Check that the schedule management tool is included in platform tools
|
||||
let schedule_tool = tools
|
||||
@@ -188,11 +211,20 @@ mod tests {
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_schedule_management_tool_schema_validation() {
|
||||
let agent = Agent::new();
|
||||
let temp_dir = TempDir::new().unwrap();
|
||||
let data_dir = temp_dir.path().to_path_buf();
|
||||
let session_manager = Arc::new(SessionManager::new(data_dir.clone()));
|
||||
let permission_manager = Arc::new(PermissionManager::new(data_dir));
|
||||
let mock_scheduler = Arc::new(MockScheduler::new());
|
||||
agent.set_scheduler(mock_scheduler.clone()).await;
|
||||
let config = AgentConfig::new(
|
||||
session_manager,
|
||||
permission_manager,
|
||||
Some(mock_scheduler),
|
||||
GooseMode::Auto,
|
||||
);
|
||||
let agent = Agent::with_config(config);
|
||||
|
||||
let tools = agent.list_tools(None).await;
|
||||
let tools = agent.list_tools("test-session-id", None).await;
|
||||
let schedule_tool = tools
|
||||
.iter()
|
||||
.find(|tool| tool.name == PLATFORM_MANAGE_SCHEDULE_TOOL_NAME);
|
||||
@@ -307,7 +339,6 @@ mod tests {
|
||||
use goose::providers::base::{Provider, ProviderMetadata, ProviderUsage, Usage};
|
||||
use goose::providers::errors::ProviderError;
|
||||
use goose::session::session_manager::SessionType;
|
||||
use goose::session::SessionManager;
|
||||
use rmcp::model::{CallToolRequestParam, Tool};
|
||||
use rmcp::object;
|
||||
use std::path::PathBuf;
|
||||
@@ -379,12 +410,15 @@ mod tests {
|
||||
let provider = Arc::new(MockToolProvider::new());
|
||||
let user_message = Message::user().with_text("Hello");
|
||||
|
||||
let session = SessionManager::create_session(
|
||||
PathBuf::default(),
|
||||
"max-turn-test".to_string(),
|
||||
SessionType::Hidden,
|
||||
)
|
||||
.await?;
|
||||
let session = agent
|
||||
.config
|
||||
.session_manager
|
||||
.create_session(
|
||||
PathBuf::default(),
|
||||
"max-turn-test".to_string(),
|
||||
SessionType::Hidden,
|
||||
)
|
||||
.await?;
|
||||
|
||||
agent.update_provider(provider, &session.id).await?;
|
||||
|
||||
@@ -451,10 +485,14 @@ mod tests {
|
||||
#[cfg(test)]
|
||||
mod extension_manager_tests {
|
||||
use super::*;
|
||||
use goose::agents::extension::{ExtensionConfig, PlatformExtensionContext};
|
||||
use goose::agents::extension::ExtensionConfig;
|
||||
use goose::agents::extension_manager_extension::{
|
||||
MANAGE_EXTENSIONS_TOOL_NAME, SEARCH_AVAILABLE_EXTENSIONS_TOOL_NAME,
|
||||
};
|
||||
use goose::agents::AgentConfig;
|
||||
use goose::config::permission::PermissionManager;
|
||||
use goose::config::GooseMode;
|
||||
use goose::session::SessionManager;
|
||||
|
||||
async fn setup_agent_with_extension_manager() -> Agent {
|
||||
// Add the TODO extension to the config so it can be discovered by search_available_extensions
|
||||
@@ -472,15 +510,17 @@ mod tests {
|
||||
};
|
||||
set_extension(todo_extension_entry);
|
||||
|
||||
let agent = Agent::new();
|
||||
// Create agent with session_id from the start
|
||||
let temp_dir = tempfile::tempdir().unwrap();
|
||||
let session_manager = Arc::new(SessionManager::new(temp_dir.path().to_path_buf()));
|
||||
let config = AgentConfig::new(
|
||||
session_manager,
|
||||
PermissionManager::instance(),
|
||||
None,
|
||||
GooseMode::Auto,
|
||||
);
|
||||
|
||||
agent
|
||||
.extension_manager
|
||||
.set_context(PlatformExtensionContext {
|
||||
session_id: Some("test_session".to_string()),
|
||||
extension_manager: Some(Arc::downgrade(&agent.extension_manager)),
|
||||
})
|
||||
.await;
|
||||
let agent = Agent::with_config(config);
|
||||
|
||||
// Now add the extension manager platform extension
|
||||
let ext_config = ExtensionConfig::Platform {
|
||||
@@ -500,7 +540,7 @@ mod tests {
|
||||
#[tokio::test]
|
||||
async fn test_extension_manager_tools_available() {
|
||||
let agent = setup_agent_with_extension_manager().await;
|
||||
let tools = agent.list_tools(None).await;
|
||||
let tools = agent.list_tools("test-session-id", None).await;
|
||||
|
||||
// Note: Tool names are prefixed with the normalized extension name "extensionmanager"
|
||||
// not the display name "Extension Manager"
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
use std::path::PathBuf;
|
||||
use std::process::Command;
|
||||
use std::sync::LazyLock;
|
||||
|
||||
/// Build a binary from a package and return its path.
|
||||
pub fn build_binary(package: &str, bin_name: &str) -> PathBuf {
|
||||
let output = Command::new("cargo")
|
||||
.args([
|
||||
"build",
|
||||
"-p",
|
||||
package,
|
||||
"--bin",
|
||||
bin_name,
|
||||
"--message-format=json",
|
||||
])
|
||||
.output()
|
||||
.expect("failed to build binary");
|
||||
|
||||
if !output.status.success() {
|
||||
panic!("build failed: {}", String::from_utf8_lossy(&output.stderr));
|
||||
}
|
||||
|
||||
String::from_utf8_lossy(&output.stdout)
|
||||
.lines()
|
||||
.filter_map(|line| serde_json::from_str::<serde_json::Value>(line).ok())
|
||||
.filter(|msg| msg["reason"] == "compiler-artifact")
|
||||
.filter(|msg| msg["target"]["name"] == bin_name)
|
||||
.filter(|msg| {
|
||||
msg["target"]["kind"]
|
||||
.as_array()
|
||||
.map(|k| k.iter().any(|v| v == "bin"))
|
||||
.unwrap_or(false)
|
||||
})
|
||||
.filter_map(|msg| msg["executable"].as_str().map(PathBuf::from))
|
||||
.next()
|
||||
.expect("failed to find binary path in cargo output")
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub static GOOSE_BINARY: LazyLock<PathBuf> = LazyLock::new(|| build_binary("goose-cli", "goose"));
|
||||
#[allow(dead_code)]
|
||||
pub static CAPTURE_BINARY: LazyLock<PathBuf> =
|
||||
LazyLock::new(|| build_binary("goose-test", "capture"));
|
||||
@@ -1,4 +1,4 @@
|
||||
mod common;
|
||||
use serde::Deserialize;
|
||||
|
||||
use std::collections::HashMap;
|
||||
use std::fs::File;
|
||||
@@ -20,6 +20,21 @@ use async_trait::async_trait;
|
||||
use goose::conversation::message::Message;
|
||||
use goose::providers::base::{Provider, ProviderMetadata, ProviderUsage, Usage};
|
||||
use goose::providers::errors::ProviderError;
|
||||
use once_cell::sync::Lazy;
|
||||
use std::process::Command;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct CargoBuildMessage {
|
||||
reason: String,
|
||||
target: Target,
|
||||
executable: String,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct Target {
|
||||
name: String,
|
||||
kind: Vec<String>,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct MockProvider {
|
||||
@@ -60,6 +75,44 @@ impl Provider for MockProvider {
|
||||
}
|
||||
}
|
||||
|
||||
fn build_and_get_binary_path() -> PathBuf {
|
||||
let output = Command::new("cargo")
|
||||
.args([
|
||||
"build",
|
||||
"--frozen",
|
||||
"-p",
|
||||
"goose-test",
|
||||
"--bin",
|
||||
"capture",
|
||||
"--message-format=json",
|
||||
])
|
||||
.output()
|
||||
.expect("failed to build binary");
|
||||
|
||||
if !output.status.success() {
|
||||
panic!("build failed: {}", String::from_utf8_lossy(&output.stderr));
|
||||
}
|
||||
|
||||
String::from_utf8_lossy(&output.stdout)
|
||||
.lines()
|
||||
.map(serde_json::from_str::<CargoBuildMessage>)
|
||||
.filter_map(Result::ok)
|
||||
.filter(|message| message.reason == "compiler-artifact")
|
||||
.filter_map(|message| {
|
||||
if message.target.name == "capture"
|
||||
&& message.target.kind.contains(&String::from("bin"))
|
||||
{
|
||||
Some(PathBuf::from(message.executable))
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
.next()
|
||||
.expect("failed to parse binary path")
|
||||
}
|
||||
|
||||
static REPLAY_BINARY_PATH: Lazy<PathBuf> = Lazy::new(build_and_get_binary_path);
|
||||
|
||||
enum TestMode {
|
||||
Record,
|
||||
Playback,
|
||||
@@ -161,7 +214,7 @@ async fn test_replayed_session(
|
||||
TestMode::Record => "record",
|
||||
TestMode::Playback => "playback",
|
||||
};
|
||||
let cmd = common::CAPTURE_BINARY.to_string_lossy().to_string();
|
||||
let cmd = REPLAY_BINARY_PATH.to_string_lossy().to_string();
|
||||
let mut args = vec!["stdio", mode_arg]
|
||||
.into_iter()
|
||||
.map(str::to_string)
|
||||
@@ -203,7 +256,11 @@ async fn test_replayed_session(
|
||||
let provider = Arc::new(tokio::sync::Mutex::new(Some(Arc::new(MockProvider {
|
||||
model_config: ModelConfig::new("test-model").unwrap(),
|
||||
}) as Arc<dyn Provider>)));
|
||||
let extension_manager = ExtensionManager::new(provider);
|
||||
let temp_dir = tempfile::tempdir().unwrap();
|
||||
let session_manager = Arc::new(goose::session::SessionManager::new(
|
||||
temp_dir.path().to_path_buf(),
|
||||
));
|
||||
let extension_manager = Arc::new(ExtensionManager::new(provider, session_manager));
|
||||
|
||||
#[allow(clippy::redundant_closure_call)]
|
||||
let result = (async || -> Result<(), Box<dyn std::error::Error>> {
|
||||
@@ -215,7 +272,7 @@ async fn test_replayed_session(
|
||||
arguments: tool_call.arguments,
|
||||
};
|
||||
let result = extension_manager
|
||||
.dispatch_tool_call(tool_call, CancellationToken::default())
|
||||
.dispatch_tool_call("test-session-id", tool_call, CancellationToken::default())
|
||||
.await;
|
||||
|
||||
let tool_result = result?;
|
||||
|
||||
+5
-5
@@ -10,17 +10,17 @@ STDERR: at crates/goose-mcp/src/developer/analyze/cache.rs:26
|
||||
STDERR:
|
||||
STDOUT: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-03-26","capabilities":{"prompts":{},"tools":{}},"serverInfo":{"name":"goose-developer","version":"1.16.0"},"instructions":" The developer extension gives you the capabilities to edit code files and run shell commands,\n and can be used to solve a wide range of problems.\n\nYou can use the shell tool to run any command that would work on the relevant operating system.\nUse the shell tool as needed to locate files or interact with the project.\n\nLeverage `analyze` through `return_last_only=true` subagents for deep codebase understanding with lean context\n- delegate analysis, retain summaries\n\nYour windows/screen tools can be used for visual debugging. You should not use these tools unless\nprompted to, but you can mention they are available if they are relevant.\n\nAlways prefer ripgrep (rg -C 3) to grep.\n\noperating system: macos\ncurrent directory: /Users/douwe/proj/goose/crates/goose\nshell: /bin/zsh\n\n \nAdditional Text Editor Tool Instructions:\n\nPerform text editing operations on files.\n\nThe `command` parameter specifies the operation to perform. Allowed options are:\n- `view`: View the content of a file.\n- `write`: Create or overwrite a file with the given content\n- `str_replace`: Replace text in one or more files.\n- `insert`: Insert text at a specific line location in the file.\n- `undo_edit`: Undo the last edit made to a file.\n\nTo use the write command, you must specify `file_text` which will become the new content of the file. Be careful with\nexisting files! This is a full overwrite, so you must include everything - not just sections you are modifying.\n\nTo use the str_replace command to edit multiple files, use the `diff` parameter with a unified diff.\nTo use the str_replace command to edit one file, you must specify both `old_str` and `new_str` - the `old_str` needs to exactly match one\nunique section of the original file, including any whitespace. Make sure to include enough context that the match is not\nambiguous. The entire original string will be replaced with `new_str`\n\nWhen possible, batch file edits together by using a multi-file unified `diff` within a single str_replace tool call.\n\nTo use the insert command, you must specify both `insert_line` (the line number after which to insert, 0 for beginning, -1 for end)\nand `new_str` (the text to insert).\n\n\n\nAdditional Shell Tool Instructions:\nExecute a command in the shell.\n\nThis will return the output and error concatenated into a single string, as\nyou would see from running on the command line. There will also be an indication\nof if the command succeeded or failed.\n\nAvoid commands that produce a large amount of output, and consider piping those outputs to files.\n\n**Important**: Each shell command runs in its own process. Things like directory changes or\nsourcing files do not persist between tool calls. So you may need to repeat them each time by\nstringing together commands.\n\nIf fetching web content, consider adding Accept: text/markdown header\nIf you need to run a long lived command, background it - e.g. `uvicorn main:app &` so that\nthis tool does not run indefinitely.\n\n**Important**: Use ripgrep - `rg` - exclusively when you need to locate a file or a code reference,\nother solutions may produce too large output because of hidden files! For example *do not* use `find` or `ls -r`\n - List files by name: `rg --files | rg <filename>`\n - List files that contain a regex: `rg '<regex>' -l`\n\n - Multiple commands: Use && to chain commands, avoid newlines\n - Example: `cd example && ls` or `source env/bin/activate && pip install numpy`\n"}}
|
||||
STDIN: {"jsonrpc":"2.0","method":"notifications/initialized"}
|
||||
STDIN: {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"_meta":{"progressToken":0},"name":"text_editor","arguments":{"command":"view","path":"/tmp/goose_test/goose.txt"}}}
|
||||
STDIN: {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"_meta":{"goose-session-id":"test-session-id","progressToken":0},"name":"text_editor","arguments":{"command":"view","path":"/tmp/goose_test/goose.txt"}}}
|
||||
STDOUT: {"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"resource","resource":{"uri":"file:///tmp/goose_test/goose.txt","mimeType":"text","text":"# goose\n"},"annotations":{"audience":["assistant"]}},{"type":"text","text":"### /tmp/goose_test/goose.txt\n```\n1: # goose\n```\n","annotations":{"audience":["user"],"priority":0.0}}],"isError":false}}
|
||||
STDIN: {"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"_meta":{"progressToken":1},"name":"text_editor","arguments":{"command":"str_replace","new_str":"# goose (modified by test)","old_str":"# goose","path":"/tmp/goose_test/goose.txt"}}}
|
||||
STDIN: {"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"_meta":{"goose-session-id":"test-session-id","progressToken":1},"name":"text_editor","arguments":{"command":"str_replace","new_str":"# goose (modified by test)","old_str":"# goose","path":"/tmp/goose_test/goose.txt"}}}
|
||||
STDOUT: {"jsonrpc":"2.0","id":2,"result":{"content":[{"type":"text","text":"The file /tmp/goose_test/goose.txt has been edited, and the section now reads:\n```\n# goose (modified by test)\n```\n\nReview the changes above for errors. Undo and edit the file again if necessary!\n","annotations":{"audience":["assistant"]}},{"type":"text","text":"```\n# goose (modified by test)\n```\n","annotations":{"audience":["user"],"priority":0.2}}],"isError":false}}
|
||||
STDIN: {"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"_meta":{"progressToken":2},"name":"shell","arguments":{"command":"cat /tmp/goose_test/goose.txt"}}}
|
||||
STDIN: {"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"_meta":{"goose-session-id":"test-session-id","progressToken":2},"name":"shell","arguments":{"command":"cat /tmp/goose_test/goose.txt"}}}
|
||||
STDERR: 2025-12-11T19:43:39.019022Z DEBUG goose_mcp::developer::rmcp_developer: Shell process spawned with PID: 78321
|
||||
STDERR: at crates/goose-mcp/src/developer/rmcp_developer.rs:997
|
||||
STDERR:
|
||||
STDOUT: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","logger":"shell_tool","data":{"type":"shell_output","stream":"stdout","output":"# goose (modified by test)"}}}
|
||||
STDOUT: {"jsonrpc":"2.0","id":3,"result":{"content":[{"type":"text","text":"# goose (modified by test)\n","annotations":{"audience":["assistant"]}},{"type":"text","text":"# goose (modified by test)\n","annotations":{"audience":["user"],"priority":0.0}}],"isError":false}}
|
||||
STDIN: {"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"_meta":{"progressToken":3},"name":"text_editor","arguments":{"command":"str_replace","new_str":"# goose","old_str":"# goose (modified by test)","path":"/tmp/goose_test/goose.txt"}}}
|
||||
STDIN: {"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"_meta":{"goose-session-id":"test-session-id","progressToken":3},"name":"text_editor","arguments":{"command":"str_replace","new_str":"# goose","old_str":"# goose (modified by test)","path":"/tmp/goose_test/goose.txt"}}}
|
||||
STDOUT: {"jsonrpc":"2.0","id":4,"result":{"content":[{"type":"text","text":"The file /tmp/goose_test/goose.txt has been edited, and the section now reads:\n```\n# goose\n```\n\nReview the changes above for errors. Undo and edit the file again if necessary!\n","annotations":{"audience":["assistant"]}},{"type":"text","text":"```\n# goose\n```\n","annotations":{"audience":["user"],"priority":0.2}}],"isError":false}}
|
||||
STDIN: {"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"_meta":{"progressToken":4},"name":"list_windows","arguments":{}}}
|
||||
STDIN: {"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"_meta":{"goose-session-id":"test-session-id","progressToken":4},"name":"list_windows","arguments":{}}}
|
||||
STDOUT: {"jsonrpc":"2.0","id":5,"result":{"content":[{"type":"text","text":"Available windows:\nMenubar","annotations":{"audience":["assistant"]}},{"type":"text","text":"Available windows:\nMenubar","annotations":{"audience":["user"],"priority":0.0}}],"isError":false}}
|
||||
|
||||
@@ -7,6 +7,6 @@ STDERR: time=2025-12-11T17:58:47.640-05:00 level=INFO msg="server session connec
|
||||
STDOUT: {"jsonrpc":"2.0","id":0,"result":{"capabilities":{"completions":{},"logging":{},"prompts":{"listChanged":true},"resources":{"listChanged":true},"tools":{"listChanged":true}},"instructions":"The GitHub MCP Server provides tools to interact with GitHub platform.\n\nTool selection guidance:\n\t1. Use 'list_*' tools for broad, simple retrieval and pagination of all items of a type (e.g., all issues, all PRs, all branches) with basic filtering.\n\t2. Use 'search_*' tools for targeted queries with specific criteria, keywords, or complex filters (e.g., issues with certain text, PRs by author, code containing functions).\n\nContext management:\n\t1. Use pagination whenever possible with batches of 5-10 items.\n\t2. Use minimal_output parameter set to true if the full information is not needed to accomplish a task.\n\nTool usage guidance:\n\t1. For 'search_*' tools: Use separate 'sort' and 'order' parameters if available for sorting results - do not include 'sort:' syntax in query strings. Query strings should contain only search criteria (e.g., 'org:google language:python'), not sorting instructions. Always call 'get_me' first to understand current user permissions and context. ## Issues\n\nCheck 'list_issue_types' first for organizations to use proper issue types. Use 'search_issues' before creating new issues to avoid duplicates. Always set 'state_reason' when closing issues. ## Pull Requests\n\nPR review workflow: Always use 'pull_request_review_write' with method 'create' to create a pending review, then 'add_comment_to_pending_review' to add comments, and finally 'pull_request_review_write' with method 'submit_pending' to submit the review for complex reviews with line-specific comments.\n\nBefore creating a pull request, search for pull request templates in the repository. Template files are called pull_request_template.md or they're located in '.github/PULL_REQUEST_TEMPLATE' directory. Use the template content to structure the PR description and then call create_pull_request tool.","protocolVersion":"2025-03-26","serverInfo":{"name":"github-mcp-server","title":"GitHub MCP Server","version":"0.24.1"}}}
|
||||
STDIN: {"jsonrpc":"2.0","method":"notifications/initialized"}
|
||||
STDERR: time=2025-12-11T17:58:47.642-05:00 level=INFO msg="session initialized"
|
||||
STDIN: {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"_meta":{"progressToken":0},"name":"get_file_contents","arguments":{"owner":"block","path":"README.md","repo":"goose","sha":"ab62b863c1666232a67048b6c4e10007a2a5b83c"}}}
|
||||
STDIN: {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"_meta":{"goose-session-id":"test-session-id","progressToken":0},"name":"get_file_contents","arguments":{"owner":"block","path":"README.md","repo":"goose","sha":"ab62b863c1666232a67048b6c4e10007a2a5b83c"}}}
|
||||
STDOUT: {"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"successfully downloaded text file (SHA: de9bdde7f260549bf3a083651842f30ab29cf4e9)"},{"type":"resource","resource":{"uri":"repo://block/goose/sha/ab62b863c1666232a67048b6c4e10007a2a5b83c/contents/README.md","mimeType":"text/plain; charset=utf-8","text":"\u003cdiv align=\"center\"\u003e\n\n# goose\n\n_a local, extensible, open source AI agent that automates engineering tasks_\n\n\u003cp align=\"center\"\u003e\n \u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\n \u003cimg src=\"https://img.shields.io/badge/License-Apache_2.0-blue.svg\"\u003e\n \u003c/a\u003e\n \u003ca href=\"https://discord.gg/7GaTvbDwga\"\u003e\n \u003cimg src=\"https://img.shields.io/discord/1287729918100246654?logo=discord\u0026logoColor=white\u0026label=Join+Us\u0026color=blueviolet\" alt=\"Discord\"\u003e\n \u003c/a\u003e\n \u003ca href=\"https://github.com/block/goose/actions/workflows/ci.yml\"\u003e\n \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/block/goose/ci.yml?branch=main\" alt=\"CI\"\u003e\n \u003c/a\u003e\n\u003c/p\u003e\n\u003c/div\u003e\n\ngoose is your on-machine AI agent, capable of automating complex development tasks from start to finish. More than just code suggestions, goose can build entire projects from scratch, write and execute code, debug failures, orchestrate workflows, and interact with external APIs - _autonomously_.\n\nWhether you're prototyping an idea, refining existing code, or managing intricate engineering pipelines, goose adapts to your workflow and executes tasks with precision.\n\nDesigned for maximum flexibility, goose works with any LLM and supports multi-model configuration to optimize performance and cost, seamlessly integrates with MCP servers, and is available as both a desktop app as well as CLI - making it the ultimate AI assistant for developers who want to move faster and focus on innovation.\n\n[](https://youtu.be/D-DpDunrbpo)\n\n# Quick Links\n- [Quickstart](https://block.github.io/goose/docs/quickstart)\n- [Installation](https://block.github.io/goose/docs/getting-started/installation)\n- [Tutorials](https://block.github.io/goose/docs/category/tutorials)\n- [Documentation](https://block.github.io/goose/docs/category/getting-started)\n\n\n# a little goose humor 🦢\n\n\u003e Why did the developer choose goose as their AI agent?\n\u003e \n\u003e Because it always helps them \"migrate\" their code to production! 🚀\n\n# goose around with us\n- [Discord](https://discord.gg/block-opensource)\n- [YouTube](https://www.youtube.com/@goose-oss)\n- [LinkedIn](https://www.linkedin.com/company/goose-oss)\n- [Twitter/X](https://x.com/goose_oss)\n- [Bluesky](https://bsky.app/profile/opensource.block.xyz)\n- [Nostr](https://njump.me/opensource@block.xyz)\n"}}]}}
|
||||
STDERR: time=2025-12-11T17:58:48.133-05:00 level=INFO msg="server session disconnected" session_id=""
|
||||
|
||||
@@ -3,21 +3,21 @@ STDERR: Starting default (STDIO) server...
|
||||
STDERR: Starting logs update interval
|
||||
STDOUT: {"result":{"protocolVersion":"2025-03-26","capabilities":{"prompts":{},"resources":{"subscribe":true},"tools":{},"logging":{},"completions":{}},"serverInfo":{"name":"example-servers/everything","title":"Everything Example Server","version":"1.0.0"},"instructions":"Testing and demonstration server for MCP protocol features.\n\n## Resources\n\nResources 1-100 follow pattern: even IDs contain text, odd IDs contain binary data. Resources are paginated at 10 items per page with cursor-based navigation.\n\n## Key dependencies\n\nProgress notifications require `_meta.progressToken` in tool calls. Resource subscriptions generate updates every 10 seconds.\n\n## Performance characteristics\n\nServer generates automatic log messages every 20 seconds (filtered by current log level), stderr notifications every 30 seconds, and resource update notifications every 10 seconds for active subscriptions. Log level changes affect message filtering in real-time.\n\n## Multi-modal testing\n\n`complex_prompt` includes both text arguments and image content for testing client multi-modal handling. `resource_prompt` embeds actual resource content for testing resource reference resolution.\n\nArgument completion is available for prompt parameters and resource IDs. Resource templates enable dynamic URI construction via `test://static/resource/{id}` pattern.\n\n## Easter egg\n\nIf asked about server instructions, respond with \"🎉 Server instructions are working! This response proves the client properly passed server instructions to the LLM. This demonstrates MCP's instructions feature in action.\"\n"},"jsonrpc":"2.0","id":0}
|
||||
STDIN: {"jsonrpc":"2.0","method":"notifications/initialized"}
|
||||
STDIN: {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"_meta":{"progressToken":0},"name":"echo","arguments":{"message":"Hello, world!"}}}
|
||||
STDIN: {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"_meta":{"goose-session-id":"test-session-id","progressToken":0},"name":"echo","arguments":{"message":"Hello, world!"}}}
|
||||
STDOUT: {"method":"notifications/message","params":{"level":"info","logger":"everything-server","data":"Client does not support MCP roots protocol"},"jsonrpc":"2.0"}
|
||||
STDOUT: {"result":{"content":[{"type":"text","text":"Echo: Hello, world!"}]},"jsonrpc":"2.0","id":1}
|
||||
STDIN: {"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"_meta":{"progressToken":1},"name":"add","arguments":{"a":1,"b":2}}}
|
||||
STDIN: {"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"_meta":{"goose-session-id":"test-session-id","progressToken":1},"name":"add","arguments":{"a":1,"b":2}}}
|
||||
STDOUT: {"result":{"content":[{"type":"text","text":"The sum of 1 and 2 is 3."}]},"jsonrpc":"2.0","id":2}
|
||||
STDIN: {"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"_meta":{"progressToken":2},"name":"longRunningOperation","arguments":{"duration":1,"steps":5}}}
|
||||
STDIN: {"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"_meta":{"goose-session-id":"test-session-id","progressToken":2},"name":"longRunningOperation","arguments":{"duration":1,"steps":5}}}
|
||||
STDOUT: {"method":"notifications/progress","params":{"progress":1,"total":5,"progressToken":2},"jsonrpc":"2.0"}
|
||||
STDOUT: {"method":"notifications/progress","params":{"progress":2,"total":5,"progressToken":2},"jsonrpc":"2.0"}
|
||||
STDOUT: {"method":"notifications/progress","params":{"progress":3,"total":5,"progressToken":2},"jsonrpc":"2.0"}
|
||||
STDOUT: {"method":"notifications/progress","params":{"progress":4,"total":5,"progressToken":2},"jsonrpc":"2.0"}
|
||||
STDOUT: {"method":"notifications/progress","params":{"progress":5,"total":5,"progressToken":2},"jsonrpc":"2.0"}
|
||||
STDOUT: {"result":{"content":[{"type":"text","text":"Long running operation completed. Duration: 1 seconds, Steps: 5."}]},"jsonrpc":"2.0","id":3}
|
||||
STDIN: {"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"_meta":{"progressToken":3},"name":"structuredContent","arguments":{"location":"11238"}}}
|
||||
STDIN: {"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"_meta":{"goose-session-id":"test-session-id","progressToken":3},"name":"structuredContent","arguments":{"location":"11238"}}}
|
||||
STDOUT: {"result":{"content":[{"type":"text","text":"{\"temperature\":22.5,\"conditions\":\"Partly cloudy\",\"humidity\":65}"}],"structuredContent":{"temperature":22.5,"conditions":"Partly cloudy","humidity":65}},"jsonrpc":"2.0","id":4}
|
||||
STDIN: {"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"_meta":{"progressToken":4},"name":"sampleLLM","arguments":{"maxTokens":100,"prompt":"Please provide a quote from The Great Gatsby"}}}
|
||||
STDIN: {"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"_meta":{"goose-session-id":"test-session-id","progressToken":4},"name":"sampleLLM","arguments":{"maxTokens":100,"prompt":"Please provide a quote from The Great Gatsby"}}}
|
||||
STDOUT: {"method":"sampling/createMessage","params":{"messages":[{"role":"user","content":{"type":"text","text":"Resource sampleLLM context: Please provide a quote from The Great Gatsby"}}],"systemPrompt":"You are a helpful test server.","maxTokens":100,"temperature":0.7,"includeContext":"thisServer"},"jsonrpc":"2.0","id":0}
|
||||
STDIN: {"jsonrpc":"2.0","id":0,"result":{"model":"mock","stopReason":"endTurn","role":"assistant","content":{"type":"text","text":"\"So we beat on, boats against the current, borne back ceaselessly into the past.\" — F. Scott Fitzgerald, The Great Gatsby (1925)"}}}
|
||||
STDOUT: {"result":{"content":[{"type":"text","text":"LLM sampling result: \"So we beat on, boats against the current, borne back ceaselessly into the past.\" — F. Scott Fitzgerald, The Great Gatsby (1925)"}]},"jsonrpc":"2.0","id":5}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
STDIN: {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{"sampling":{},"elicitation":{}},"clientInfo":{"name":"goose","version":"0.0.0"}}}
|
||||
STDOUT: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-03-26","capabilities":{"experimental":{},"prompts":{"listChanged":false},"tools":{"listChanged":false}},"serverInfo":{"name":"mcp-fetch","version":"1.23.3"}}}
|
||||
STDIN: {"jsonrpc":"2.0","method":"notifications/initialized"}
|
||||
STDIN: {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"_meta":{"progressToken":0},"name":"fetch","arguments":{"url":"https://example.com"}}}
|
||||
STDIN: {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"_meta":{"goose-session-id":"test-session-id","progressToken":0},"name":"fetch","arguments":{"url":"https://example.com"}}}
|
||||
STDOUT: {"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"Contents of https://example.com/:\nThis domain is for use in documentation examples without needing permission. Avoid use in operations.\n\n[Learn more](https://iana.org/domains/example)"}],"isError":false}}
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
data: {"id":"chatcmpl-test","object":"chat.completion.chunk","created":1766229303,"model":"gpt-5-nano","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}
|
||||
|
||||
data: {"id":"chatcmpl-test","object":"chat.completion.chunk","created":1766229303,"model":"gpt-5-nano","choices":[{"index":0,"delta":{"content":"2"},"finish_reason":null}]}
|
||||
|
||||
data: {"id":"chatcmpl-test","object":"chat.completion.chunk","created":1766229303,"model":"gpt-5-nano","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
|
||||
|
||||
data: {"id":"chatcmpl-test","object":"chat.completion.chunk","created":1766229303,"model":"gpt-5-nano","choices":[],"usage":{"prompt_tokens":100,"completion_tokens":10,"total_tokens":110}}
|
||||
|
||||
data: [DONE]
|
||||
@@ -1,227 +0,0 @@
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"role":"assistant","content":null,"tool_calls":[{"index":0,"id":"call_hcC9QZSyxfjpHmJdtEWe18ay","type":"function","function":{"name":"code_execution__execute_code","arguments":""}}],"refusal":null},"finish_reason":null}],"usage":null,"obfuscation":"b19o47w5ougEAzn"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"rdSrkQ1Cz6"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Osxenpc4x"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"DTBcfoOJ"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"import"}}]},"finish_reason":null}],"usage":null,"obfuscation":"sqbC9nK"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" {"}}]},"finish_reason":null}],"usage":null,"obfuscation":"7A3BEIL77xh"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" get"}}]},"finish_reason":null}],"usage":null,"obfuscation":"AsczaKDd7"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"UjJwIZXo"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" }"}}]},"finish_reason":null}],"usage":null,"obfuscation":"spOTdMkMdlp"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" from"}}]},"finish_reason":null}],"usage":null,"obfuscation":"n2UHITYZ"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \\\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"am1f6FmN"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"lookup"}}]},"finish_reason":null}],"usage":null,"obfuscation":"7smqbS0"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"punuQk0H6"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":";\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"0MlZhMM3Wb"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"qNe4Y7heibZN"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"import"}}]},"finish_reason":null}],"usage":null,"obfuscation":"jAg7bgI"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" {"}}]},"finish_reason":null}],"usage":null,"obfuscation":"7GtakYXk4U1"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" text"}}]},"finish_reason":null}],"usage":null,"obfuscation":"iABvoSVl"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_editor"}}]},"finish_reason":null}],"usage":null,"obfuscation":"WGyvWz"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" }"}}]},"finish_reason":null}],"usage":null,"obfuscation":"kXeb0jURGpD"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" from"}}]},"finish_reason":null}],"usage":null,"obfuscation":"daxDWT2G"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \\\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"p1uq4MMs"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"developer"}}]},"finish_reason":null}],"usage":null,"obfuscation":"ZZJ0"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"2pjhI3CHm"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":";\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"BGPB0Y92qx"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"sPtg1aux9Q7t"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"uzSwsf36Eq"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"const"}}]},"finish_reason":null}],"usage":null,"obfuscation":"q36eyCe4"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Yv253z8V"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Content"}}]},"finish_reason":null}],"usage":null,"obfuscation":"dbtiH2"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ="}}]},"finish_reason":null}],"usage":null,"obfuscation":"V0BBzDO4BnO"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" get"}}]},"finish_reason":null}],"usage":null,"obfuscation":"eV7Z0MBJk"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"qODA1iJ3"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"({"}}]},"finish_reason":null}],"usage":null,"obfuscation":"ZLHVDfQXZIT"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"});"}}]},"finish_reason":null}],"usage":null,"obfuscation":"xkfrxJ0vqN"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Ri1sVVmThdE"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"EaMfvD5zX3O4"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"const"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Ktj0iLMG"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" write"}}]},"finish_reason":null}],"usage":null,"obfuscation":"BuVITia"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Res"}}]},"finish_reason":null}],"usage":null,"obfuscation":"b9iRJbneyy"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ="}}]},"finish_reason":null}],"usage":null,"obfuscation":"gCMQmiR8LDN"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" text"}}]},"finish_reason":null}],"usage":null,"obfuscation":"WywYQ1Wq"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_editor"}}]},"finish_reason":null}],"usage":null,"obfuscation":"APkX6z"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"({"}}]},"finish_reason":null}],"usage":null,"obfuscation":"O04vBMryw3h"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" command"}}]},"finish_reason":null}],"usage":null,"obfuscation":"5jIuc"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":":"}}]},"finish_reason":null}],"usage":null,"obfuscation":"WmdqnCOKVLwM"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \\\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"tV8pBGp7"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"write"}}]},"finish_reason":null}],"usage":null,"obfuscation":"rdlyfaq1"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\\","}}]},"finish_reason":null}],"usage":null,"obfuscation":"SxWxNrDR"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" path"}}]},"finish_reason":null}],"usage":null,"obfuscation":"PeHPMaR6"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":":"}}]},"finish_reason":null}],"usage":null,"obfuscation":"d0y267V7PORM"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"ywEAhNkA9w"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/"}}]},"finish_reason":null}],"usage":null,"obfuscation":"m9RiqrrR4d"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tmp"}}]},"finish_reason":null}],"usage":null,"obfuscation":"KdkE9OEMbk"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"wdawSE"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".txt"}}]},"finish_reason":null}],"usage":null,"obfuscation":"oz5CFKhsF"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\\","}}]},"finish_reason":null}],"usage":null,"obfuscation":"FLJEYU3Z"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" file"}}]},"finish_reason":null}],"usage":null,"obfuscation":"jV9qDKjG"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_text"}}]},"finish_reason":null}],"usage":null,"obfuscation":"UtOfNMdx"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":":"}}]},"finish_reason":null}],"usage":null,"obfuscation":"aQLvI4PhcN71"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"cRS5SnPZ"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Content"}}]},"finish_reason":null}],"usage":null,"obfuscation":"ymts0B"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" });"}}]},"finish_reason":null}],"usage":null,"obfuscation":"HIKXwLPsU"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"IyYG9VM0ay9"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"FcZzRbewbWzs"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"record_result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"yJ0heSJY"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"(writeRes)"}}]},"finish_reason":null}],"usage":null,"obfuscation":"VCJyV87lb5"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"LniNHGfSN9"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"KrXbglgQ"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tool"}}]},"finish_reason":null}],"usage":null,"obfuscation":"KoY7VbKmk"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_graph"}}]},"finish_reason":null}],"usage":null,"obfuscation":"stocohw"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":["}}]},"finish_reason":null}],"usage":null,"obfuscation":"GVtr3ESEB"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"Lickb1U7Hl"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tool"}}]},"finish_reason":null}],"usage":null,"obfuscation":"okyVlrEIz"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"eOvg0xdJ"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"lookup"}}]},"finish_reason":null}],"usage":null,"obfuscation":"ioz46mm"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/get"}}]},"finish_reason":null}],"usage":null,"obfuscation":"lqkgCSvsu"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"JhuyiKVe"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"Q3aHiaKq"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"description"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Ck"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"AEyKl8NF"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Get"}}]},"finish_reason":null}],"usage":null,"obfuscation":"lJJbh0p7Dg"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" the"}}]},"finish_reason":null}],"usage":null,"obfuscation":"uFXa4PzBq"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"fxpxTVDG"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"ajR2a1Ju"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"depends"}}]},"finish_reason":null}],"usage":null,"obfuscation":"qNa3u6"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_on"}}]},"finish_reason":null}],"usage":null,"obfuscation":"PfZBUzLwEU"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":[]"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Kpm5Dl6W"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"},{\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"L8cOSVuZ"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tool"}}]},"finish_reason":null}],"usage":null,"obfuscation":"KAZ6a6RFX"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"bJFlPCmV"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"developer"}}]},"finish_reason":null}],"usage":null,"obfuscation":"KE9I"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/text"}}]},"finish_reason":null}],"usage":null,"obfuscation":"BMnv2YIo"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_editor"}}]},"finish_reason":null}],"usage":null,"obfuscation":"HH3wHg"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"1BSk9J00"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"description"}}]},"finish_reason":null}],"usage":null,"obfuscation":"y0"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"j0kTAnXy"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Write"}}]},"finish_reason":null}],"usage":null,"obfuscation":"9IGJB175"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"qc9bKCEs"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" to"}}]},"finish_reason":null}],"usage":null,"obfuscation":"a0mpsleQne"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" /"}}]},"finish_reason":null}],"usage":null,"obfuscation":"qu1SPcDdrND"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tmp"}}]},"finish_reason":null}],"usage":null,"obfuscation":"iL5qu5xkSZ"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Pw9vab"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".txt"}}]},"finish_reason":null}],"usage":null,"obfuscation":"4s3fq3kik"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"WBE2nHWv"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"depends"}}]},"finish_reason":null}],"usage":null,"obfuscation":"SndKuC"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_on"}}]},"finish_reason":null}],"usage":null,"obfuscation":"bqH02zHaqe"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":["}}]},"finish_reason":null}],"usage":null,"obfuscation":"JQbX8vhhz"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"0"}}]},"finish_reason":null}],"usage":null,"obfuscation":"dZPvLddnRhi4"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"]}"}}]},"finish_reason":null}],"usage":null,"obfuscation":"H6ruWXUkroP"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"]}"}}]},"finish_reason":null}],"usage":null,"obfuscation":"oo1NmN82Wer"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}],"usage":null,"obfuscation":"KHl52jcbk6U"}
|
||||
|
||||
data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":2823,"completion_tokens":1347,"total_tokens":4170,"prompt_tokens_details":{"cached_tokens":2176,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":1216,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"iENdGioMW9"}
|
||||
|
||||
data: [DONE]
|
||||
@@ -1,173 +0,0 @@
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"finish_reason":null}],"usage":null,"obfuscation":"O7AAt"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"I've"},"finish_reason":null}],"usage":null,"obfuscation":"cVL"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" retrieved"},"finish_reason":null}],"usage":null,"obfuscation":"F0LyC2nMxaBxl"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}],"usage":null,"obfuscation":"D0e"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" code"},"finish_reason":null}],"usage":null,"obfuscation":"Fa"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}],"usage":null,"obfuscation":"SVR"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" saved"},"finish_reason":null}],"usage":null,"obfuscation":"Z"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" it"},"finish_reason":null}],"usage":null,"obfuscation":"1wEo"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}],"usage":null,"obfuscation":"DXcu"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" /"},"finish_reason":null}],"usage":null,"obfuscation":"FaGyP"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"tmp"},"finish_reason":null}],"usage":null,"obfuscation":"GZ4i"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"/result"},"finish_reason":null}],"usage":null,"obfuscation":""}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}],"usage":null,"obfuscation":"ph6"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":".\n\n"},"finish_reason":null}],"usage":null,"obfuscation":"tu"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"Details"},"finish_reason":null}],"usage":null,"obfuscation":""}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":":\n"},"finish_reason":null}],"usage":null,"obfuscation":"EvwW"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"4593mu"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" Retrieved"},"finish_reason":null}],"usage":null,"obfuscation":"VKOlyvL1zhIEw"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" code"},"finish_reason":null}],"usage":null,"obfuscation":"rc"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":":"},"finish_reason":null}],"usage":null,"obfuscation":"27XGKW"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" via"},"finish_reason":null}],"usage":null,"obfuscation":"0di"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" lookup"},"finish_reason":null}],"usage":null,"obfuscation":""}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"/get"},"finish_reason":null}],"usage":null,"obfuscation":"olP"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"_code"},"finish_reason":null}],"usage":null,"obfuscation":"Sa"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"\n"},"finish_reason":null}],"usage":null,"obfuscation":"lsb3w"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"ognYvV"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" Saved"},"finish_reason":null}],"usage":null,"obfuscation":"W"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}],"usage":null,"obfuscation":"hYDy"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":":"},"finish_reason":null}],"usage":null,"obfuscation":"1jWh7T"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" /"},"finish_reason":null}],"usage":null,"obfuscation":"ZlVNQ"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"tmp"},"finish_reason":null}],"usage":null,"obfuscation":"I7Jf"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"/result"},"finish_reason":null}],"usage":null,"obfuscation":""}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}],"usage":null,"obfuscation":"sy2"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"\n"},"finish_reason":null}],"usage":null,"obfuscation":"Q5DAw"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"UXGt7Q"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" File"},"finish_reason":null}],"usage":null,"obfuscation":"ca"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" content"},"finish_reason":null}],"usage":null,"obfuscation":"HUApvDcMsMAuxrY"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" ("},"finish_reason":null}],"usage":null,"obfuscation":"PU6QY"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"excerpt"},"finish_reason":null}],"usage":null,"obfuscation":""}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"):\n"},"finish_reason":null}],"usage":null,"obfuscation":"YyY"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}],"usage":null,"obfuscation":"9CPGc5"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" ```\n"},"finish_reason":null}],"usage":null,"obfuscation":"N"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}],"usage":null,"obfuscation":"7w1FAS"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" test"},"finish_reason":null}],"usage":null,"obfuscation":"4m"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"SRFQJN"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"uuid"},"finish_reason":null}],"usage":null,"obfuscation":"DhC"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"dUQSSl"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"123"},"finish_reason":null}],"usage":null,"obfuscation":"O56B"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"45"},"finish_reason":null}],"usage":null,"obfuscation":"7QbIj"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"cZFPqS"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"678"},"finish_reason":null}],"usage":null,"obfuscation":"ANzY"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"90"},"finish_reason":null}],"usage":null,"obfuscation":"d9Bgs"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"\n\n"},"finish_reason":null}],"usage":null,"obfuscation":"no1"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}],"usage":null,"obfuscation":"PlkSe6"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" ```\n"},"finish_reason":null}],"usage":null,"obfuscation":"P"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"If"},"finish_reason":null}],"usage":null,"obfuscation":"qse2x"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" you"},"finish_reason":null}],"usage":null,"obfuscation":"Fx3"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" want"},"finish_reason":null}],"usage":null,"obfuscation":"jp"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" me"},"finish_reason":null}],"usage":null,"obfuscation":"DeeA"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}],"usage":null,"obfuscation":"oKYZ"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" view"},"finish_reason":null}],"usage":null,"obfuscation":"f1"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}],"usage":null,"obfuscation":"Kay"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" saved"},"finish_reason":null}],"usage":null,"obfuscation":"w"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" file"},"finish_reason":null}],"usage":null,"obfuscation":"nV"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":","},"finish_reason":null}],"usage":null,"obfuscation":"U6ECJT"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" modify"},"finish_reason":null}],"usage":null,"obfuscation":""}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}],"usage":null,"obfuscation":"2lX"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" content"},"finish_reason":null}],"usage":null,"obfuscation":"EWuNap9Z0N6SUaV"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":","},"finish_reason":null}],"usage":null,"obfuscation":"di1ZTP"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" or"},"finish_reason":null}],"usage":null,"obfuscation":"cHi4"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" save"},"finish_reason":null}],"usage":null,"obfuscation":"8Y"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}],"usage":null,"obfuscation":"ill7"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" a"},"finish_reason":null}],"usage":null,"obfuscation":"WrWJM"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" different"},"finish_reason":null}],"usage":null,"obfuscation":"M3jGyb9FytIMe"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" path"},"finish_reason":null}],"usage":null,"obfuscation":"3a"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":","},"finish_reason":null}],"usage":null,"obfuscation":"PAdG3e"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" tell"},"finish_reason":null}],"usage":null,"obfuscation":"Z6"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" me"},"finish_reason":null}],"usage":null,"obfuscation":"TWlE"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" what"},"finish_reason":null}],"usage":null,"obfuscation":"IS"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" you"},"finish_reason":null}],"usage":null,"obfuscation":"xrI"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"’d"},"finish_reason":null}],"usage":null,"obfuscation":"nYYvw"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" like"},"finish_reason":null}],"usage":null,"obfuscation":"ss"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" next"},"finish_reason":null}],"usage":null,"obfuscation":"Ko"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"."},"finish_reason":null}],"usage":null,"obfuscation":"yM8hiD"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":null,"obfuscation":"x"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":2997,"completion_tokens":86,"total_tokens":3083,"prompt_tokens_details":{"cached_tokens":2432,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"z42f4eInXrYh3SS"}
|
||||
|
||||
data: [DONE]
|
||||
@@ -1,43 +0,0 @@
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"role":"assistant","content":null},"finish_reason":null}],"obfuscation":"v7"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"id":"call_rS0QksngU4yYIDHrnDJy2EZM","type":"function","function":{"name":"code_execution__read_module","arguments":""}}]},"finish_reason":null}],"obfuscation":"T"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"mo"}}]},"finish_reason":null}],"obfuscation":"nXIpECrF"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"dule_"}}]},"finish_reason":null}],"obfuscation":"B9XWBe6c"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"path\":"}}]},"finish_reason":null}],"obfuscation":"tOSmhh"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \"lo"}}]},"finish_reason":null}],"obfuscation":"Zz3wgAww"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"okup/"}}]},"finish_reason":null}],"obfuscation":"pOpLxr8X"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"get_co"}}]},"finish_reason":null}],"obfuscation":"gCCacjW"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"de\"}"}}]},"finish_reason":null}],"obfuscation":"KY6NDanu"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"id":"call_U0ieDPzZODuxxEWjHgi6s37G","type":"function","function":{"name":"code_execution__read_module","arguments":""}}]},"finish_reason":null}],"obfuscation":"l"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"{\"mo"}}]},"finish_reason":null}],"obfuscation":"cKKL6hIz"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"dule_"}}]},"finish_reason":null}],"obfuscation":"zXnRkr9q"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"path\":"}}]},"finish_reason":null}],"obfuscation":"O17aod"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":" \"de"}}]},"finish_reason":null}],"obfuscation":"Hdkjwpwp"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"velop"}}]},"finish_reason":null}],"obfuscation":"31elhAol"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"er/tex"}}]},"finish_reason":null}],"obfuscation":"JsV3mVA"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"t_ed"}}]},"finish_reason":null}],"obfuscation":"8ZyjkFliU"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"itor\""}}]},"finish_reason":null}],"obfuscation":"waD7mnr"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"}"}}]},"finish_reason":null}],"obfuscation":"ohhnGgMcoCKQ"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}],"usage":null,"obfuscation":"d6Rww4PaZYY"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":2586,"completion_tokens":1665,"total_tokens":4251,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":1600,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"0ofYwl6eisGBK"}
|
||||
|
||||
data: [DONE]
|
||||
@@ -1,27 +0,0 @@
|
||||
data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"role":"assistant","content":null,"tool_calls":[{"index":0,"id":"call_dINW7AmExfpt2yitCRgIgnDk","type":"function","function":{"name":"code_execution__search_modules","arguments":""}}],"refusal":null},"finish_reason":null}],"usage":null,"obfuscation":"xjFTVJsrOLFKC"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"OXXTjGoceY"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"terms"}}]},"finish_reason":null}],"usage":null,"obfuscation":"MhlBIuai"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":[\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"Q7ZAiod"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"get"}}]},"finish_reason":null}],"usage":null,"obfuscation":"QRDc1u5Ps1"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"1A5TssiT"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"IdoT3Umt"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"text"}}]},"finish_reason":null}],"usage":null,"obfuscation":"B2kd2ESuG"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_editor"}}]},"finish_reason":null}],"usage":null,"obfuscation":"rq0SWi"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"]"}}]},"finish_reason":null}],"usage":null,"obfuscation":"y2zYEl2xLX"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}],"usage":null,"obfuscation":"uSVgtytSzxV7"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}],"usage":null,"obfuscation":"dKRdDeNi7Ag"}
|
||||
|
||||
data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":2476,"completion_tokens":1887,"total_tokens":4363,"prompt_tokens_details":{"cached_tokens":2176,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":1856,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"ZHkygmUrjh"}
|
||||
|
||||
data: [DONE]
|
||||
@@ -1 +0,0 @@
|
||||
{"id":"chatcmpl-test","object":"chat.completion","created":1766229622,"model":"gpt-5-nano","choices":[{"index":0,"message":{"role":"assistant","content":"Test session"},"finish_reason":"stop"}],"usage":{"prompt_tokens":79,"completion_tokens":10,"total_tokens":89}}
|
||||
@@ -1,10 +0,0 @@
|
||||
data: {"id":"chatcmpl-CqqCVVtD16yj37EZocLFkGNMhHZFS","object":"chat.completion.chunk","created":1766709751,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"role":"assistant","content":null,"tool_calls":[{"index":0,"id":"call_eLXEeL8ZQBgXACKp78eNmyNp","type":"function","function":{"name":"lookup__get_code","arguments":""}}],"refusal":null},"finish_reason":null}],"usage":null,"obfuscation":"FobexttCIQY"}
|
||||
|
||||
data: {"id":"chatcmpl-CqqCVVtD16yj37EZocLFkGNMhHZFS","object":"chat.completion.chunk","created":1766709751,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{}"}}]},"finish_reason":null}],"usage":null,"obfuscation":"01EkRUrgMxo"}
|
||||
|
||||
data: {"id":"chatcmpl-CqqCVVtD16yj37EZocLFkGNMhHZFS","object":"chat.completion.chunk","created":1766709751,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}],"usage":null,"obfuscation":"k965c2jCwUF"}
|
||||
|
||||
data: {"id":"chatcmpl-CqqCVVtD16yj37EZocLFkGNMhHZFS","object":"chat.completion.chunk","created":1766709751,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":2320,"completion_tokens":149,"total_tokens":2469,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":128,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"7Wxwg9X1OBwbjfE"}
|
||||
|
||||
data: [DONE]
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
data: {"id":"chatcmpl-CqqCXO3JYXwnwTystVUj2AuyW9xgV","object":"chat.completion.chunk","created":1766709753,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"finish_reason":null}],"usage":null,"obfuscation":"p0yzG"}
|
||||
|
||||
data: {"id":"chatcmpl-CqqCXO3JYXwnwTystVUj2AuyW9xgV","object":"chat.completion.chunk","created":1766709753,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"test"},"finish_reason":null}],"usage":null,"obfuscation":"ASB"}
|
||||
|
||||
data: {"id":"chatcmpl-CqqCXO3JYXwnwTystVUj2AuyW9xgV","object":"chat.completion.chunk","created":1766709753,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"b2XPf4"}
|
||||
|
||||
data: {"id":"chatcmpl-CqqCXO3JYXwnwTystVUj2AuyW9xgV","object":"chat.completion.chunk","created":1766709753,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"uuid"},"finish_reason":null}],"usage":null,"obfuscation":"88h"}
|
||||
|
||||
data: {"id":"chatcmpl-CqqCXO3JYXwnwTystVUj2AuyW9xgV","object":"chat.completion.chunk","created":1766709753,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"MunLmd"}
|
||||
|
||||
data: {"id":"chatcmpl-CqqCXO3JYXwnwTystVUj2AuyW9xgV","object":"chat.completion.chunk","created":1766709753,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"123"},"finish_reason":null}],"usage":null,"obfuscation":"iyKy"}
|
||||
|
||||
data: {"id":"chatcmpl-CqqCXO3JYXwnwTystVUj2AuyW9xgV","object":"chat.completion.chunk","created":1766709753,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"45"},"finish_reason":null}],"usage":null,"obfuscation":"MGSUp"}
|
||||
|
||||
data: {"id":"chatcmpl-CqqCXO3JYXwnwTystVUj2AuyW9xgV","object":"chat.completion.chunk","created":1766709753,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"swF2Pu"}
|
||||
|
||||
data: {"id":"chatcmpl-CqqCXO3JYXwnwTystVUj2AuyW9xgV","object":"chat.completion.chunk","created":1766709753,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"678"},"finish_reason":null}],"usage":null,"obfuscation":"TPtP"}
|
||||
|
||||
data: {"id":"chatcmpl-CqqCXO3JYXwnwTystVUj2AuyW9xgV","object":"chat.completion.chunk","created":1766709753,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"90"},"finish_reason":null}],"usage":null,"obfuscation":"1UrvC"}
|
||||
|
||||
data: {"id":"chatcmpl-CqqCXO3JYXwnwTystVUj2AuyW9xgV","object":"chat.completion.chunk","created":1766709753,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":null,"obfuscation":"e"}
|
||||
|
||||
data: {"id":"chatcmpl-CqqCXO3JYXwnwTystVUj2AuyW9xgV","object":"chat.completion.chunk","created":1766709753,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":2357,"completion_tokens":274,"total_tokens":2631,"prompt_tokens_details":{"cached_tokens":2048,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":256,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"qFAKS6Oew9eV"}
|
||||
|
||||
data: [DONE]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
use anyhow::{anyhow, Result};
|
||||
use async_trait::async_trait;
|
||||
use goose::config::GooseMode;
|
||||
use goose::conversation::message::{Message, ToolRequest};
|
||||
use goose::tool_inspection::{
|
||||
InspectionAction, InspectionResult, ToolInspectionManager, ToolInspector,
|
||||
@@ -26,6 +27,7 @@ impl ToolInspector for MockInspectorOk {
|
||||
&self,
|
||||
_tool_requests: &[ToolRequest],
|
||||
_messages: &[Message],
|
||||
_goose_mode: GooseMode,
|
||||
) -> Result<Vec<InspectionResult>> {
|
||||
Ok(self.results.clone())
|
||||
}
|
||||
@@ -43,6 +45,7 @@ impl ToolInspector for MockInspectorErr {
|
||||
&self,
|
||||
_tool_requests: &[ToolRequest],
|
||||
_messages: &[Message],
|
||||
_goose_mode: GooseMode,
|
||||
) -> Result<Vec<InspectionResult>> {
|
||||
Err(anyhow!("simulated failure"))
|
||||
}
|
||||
@@ -83,7 +86,7 @@ async fn test_inspect_tools_aggregates_and_handles_errors() {
|
||||
|
||||
// Act
|
||||
let results = manager
|
||||
.inspect_tools(&tool_requests, &messages)
|
||||
.inspect_tools(&tool_requests, &messages, GooseMode::Approve)
|
||||
.await
|
||||
.expect("inspect_tools should not fail when one inspector errors");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user