Compaction overhaul (#5186)
Co-authored-by: Douwe Osinga <douwe@squareup.com> Co-authored-by: David Katz <dkatz@squareup.com> Co-authored-by: Alex Hancock <alexhancock@block.xyz>
This commit is contained in:
@@ -567,28 +567,6 @@ async fn process_message_streaming(
|
||||
))
|
||||
.await;
|
||||
}
|
||||
MessageContent::ContextLengthExceeded(msg) => {
|
||||
let mut sender = sender.lock().await;
|
||||
let _ = sender
|
||||
.send(Message::Text(
|
||||
serde_json::to_string(
|
||||
&WebSocketMessage::ContextExceeded {
|
||||
message: msg.msg.clone(),
|
||||
},
|
||||
)
|
||||
.unwrap()
|
||||
.into(),
|
||||
))
|
||||
.await;
|
||||
|
||||
let (summarized_messages, _, _) =
|
||||
agent.summarize_context(messages.messages()).await?;
|
||||
SessionManager::replace_conversation(
|
||||
&session_id,
|
||||
&summarized_messages,
|
||||
)
|
||||
.await?;
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
+286
-1
@@ -1 +1,286 @@
|
||||
{}
|
||||
{
|
||||
"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal.\ngoose is being developed as an open-source software project.\n\nThe current date is 2025-10-15 21:59:27.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o,\nclaude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10\nmonths prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and\ntools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level\nproblems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable\nextensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from\nthe search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n\n## weather_extension\n\n\n\n\n\n\n\n\n\n# Suggestion\n\n\"\"\n\n\n\n\n# sub agents\n\nExecute self contained tasks where step-by-step visibility is not important through subagents.\n\n- Delegate via `dynamic_task__create_task` for: result-only operations, parallelizable work, multi-part requests,\n verification, exploration\n- Parallel subagents for multiple operations, single subagents for independent work\n- Explore solutions in parallel — launch parallel subagents with different approaches (if non-interfering)\n- Provide all needed context — subagents cannot see your context\n- Use extension filters to limit resource access\n- Use return_last_only when only a summary or simple answer is required — inform subagent of this choice.\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic\n links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the\n language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [],
|
||||
"tools": [
|
||||
{
|
||||
"name": "weather_extension__get_weather",
|
||||
"description": "Get the weather for a location",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"location": {
|
||||
"description": "The city and state, e.g. San Francisco, CA",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"location"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__search_available_extensions",
|
||||
"description": "Searches for additional extensions available to help complete tasks.\n Use this tool when you're unable to find a specific feature or functionality you need to complete your task, or when standard approaches aren't working.\n These extensions might provide the exact tools needed to solve your problem.\n If you find a relevant one, consider using your tools to enable it.",
|
||||
"inputSchema": {
|
||||
"properties": {},
|
||||
"required": [],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Discover extensions",
|
||||
"readOnlyHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__manage_extensions",
|
||||
"description": "Tool to manage extensions and tools in goose context.\n Enable or disable extensions to help complete tasks.\n Enable or disable an extension by providing the extension name.\n ",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"description": "The action to perform",
|
||||
"enum": [
|
||||
"enable",
|
||||
"disable"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"extension_name": {
|
||||
"description": "The name of the extension to enable",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"action",
|
||||
"extension_name"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Enable or disable an extension",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__manage_schedule",
|
||||
"description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"enum": [
|
||||
"list",
|
||||
"create",
|
||||
"run_now",
|
||||
"pause",
|
||||
"unpause",
|
||||
"delete",
|
||||
"kill",
|
||||
"inspect",
|
||||
"sessions",
|
||||
"session_content"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"cron_expression": {
|
||||
"description": "A cron expression for create action. Supports both 5-field (minute hour day month weekday) and 6-field (second minute hour day month weekday) formats. 5-field expressions are automatically converted to 6-field by prepending '0' for seconds.",
|
||||
"type": "string"
|
||||
},
|
||||
"execution_mode": {
|
||||
"default": "background",
|
||||
"description": "Execution mode for create action: 'foreground' or 'background'",
|
||||
"enum": [
|
||||
"foreground",
|
||||
"background"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"job_id": {
|
||||
"description": "Job identifier for operations on existing jobs",
|
||||
"type": "string"
|
||||
},
|
||||
"limit": {
|
||||
"default": 50,
|
||||
"description": "Limit for sessions list",
|
||||
"type": "integer"
|
||||
},
|
||||
"recipe_path": {
|
||||
"description": "Path to recipe file for create action",
|
||||
"type": "string"
|
||||
},
|
||||
"session_id": {
|
||||
"description": "Session identifier for session_content action",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"action"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Manage scheduled recipes",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Create tasks with instructions or prompt. For simple tasks, only include the instructions field. Extensions control: omit field = use all current extensions; empty array [] = no extensions; array with names = only those extensions. Specify extensions as shortnames (the prefixes for your tools). Specify return_last_only as true and have your subagent summarize its work in its last message to conserve your own context. Optional: title, description, extensions, settings, retry, response schema, context, activities. Arrays for multiple tasks.",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"description": "How to execute multiple tasks (default: parallel for multiple tasks, sequential for single task)",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_parameters": {
|
||||
"description": "Array of tasks. Each task must have either 'instructions' OR 'prompt' field (at least one is required).",
|
||||
"items": {
|
||||
"properties": {
|
||||
"activities": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"context": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"extensions": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"instructions": {
|
||||
"description": "Task instructions (required if prompt is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"parameters": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"prompt": {
|
||||
"description": "Initial prompt (required if instructions is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"response": {
|
||||
"type": "object"
|
||||
},
|
||||
"retry": {
|
||||
"type": "object"
|
||||
},
|
||||
"return_last_only": {
|
||||
"description": "If true, return only the last message from the subagent (default: false, returns full conversation)",
|
||||
"type": "boolean"
|
||||
},
|
||||
"settings": {
|
||||
"type": "object"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_parameters"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Create Dynamic Tasks",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "subagent__execute_task",
|
||||
"description": "Only use the subagent__execute_task tool when you execute sub recipe task or dynamic task.\n EXECUTION STRATEGY DECISION:\n 1. If the tasks are created with execution_mode, use the execution_mode.\n 2. Execute tasks sequentially unless user explicitly requests parallel execution. PARALLEL: User uses keywords like 'parallel', 'simultaneously', 'at the same time', 'concurrently'\n\n IMPLEMENTATION:\n - Sequential execution: Call this tool multiple times, passing exactly ONE task per call\n - Parallel execution: Call this tool once, passing an ARRAY of all tasks\n\n EXAMPLES:\n User Intent Based:\n - User: 'get weather and tell me a joke' → Sequential (2 separate tool calls, 1 task each)\n - User: 'get weather and joke in parallel' → Parallel (1 tool call with array of 2 tasks)\n - User: 'run these simultaneously' → Parallel (1 tool call with task array)\n - User: 'do task A then task B' → Sequential (2 separate tool calls)",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"default": "sequential",
|
||||
"description": "Execution strategy for multiple tasks. Use 'sequential' (default) unless user explicitly requests parallel execution with words like 'parallel', 'simultaneously', 'at the same time', or 'concurrently'.",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_ids": {
|
||||
"items": {
|
||||
"description": "Unique identifier for the task",
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_ids"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Run tasks in parallel",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"output": {
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1760565573,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "I understand. How can I help you today?"
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"model": "claude-sonnet-4-20250514",
|
||||
"usage": {
|
||||
"input_tokens": 2702,
|
||||
"output_tokens": 13,
|
||||
"total_tokens": 2715
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -1,18 +1,22 @@
|
||||
{
|
||||
"1bc400a528c54b25f4f1f609481e98e44222b3deaf7eee2c9e640e6345c73861": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:04:16.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal.\ngoose is being developed as an open-source software project.\n\nThe current date is 2025-10-15 21:57:45.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o,\nclaude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10\nmonths prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and\ntools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level\nproblems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable\nextensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from\nthe search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n\n## weather_extension\n\n\n\n\n\n\n\n\n\n# Suggestion\n\n\"\"\n\n\n\n\n# sub agents\n\nExecute self contained tasks where step-by-step visibility is not important through subagents.\n\n- Delegate via `dynamic_task__create_task` for: result-only operations, parallelizable work, multi-part requests,\n verification, exploration\n- Parallel subagents for multiple operations, single subagents for independent work\n- Explore solutions in parallel — launch parallel subagents with different approaches (if non-interfering)\n- Provide all needed context — subagents cannot see your context\n- Use extension filters to limit resource access\n- Use return_last_only when only a summary or simple answer is required — inform subagent of this choice.\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic\n links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the\n language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1753704256,
|
||||
"created": 1760565465,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "tell me what the weather is in Berlin, Germany"
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
@@ -146,32 +150,88 @@
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Use this tool to create one or more dynamic tasks from a shared text instruction and varying parameters.How it works:\n - Provide a single text instruction\n - Use the 'task_parameters' field to pass an array of parameter sets\n - Each resulting task will use the same instruction with different parameter values\n This is useful when performing the same operation across many inputs (e.g., getting weather for multiple cities, searching multiple slack channels, iterating through various linear tickets, etc).\n Once created, these tasks should be passed to the 'subagent__execute_task' tool for execution. Tasks can run sequentially or in parallel.\n ---\n What is a 'subagent'?\n A 'subagent' is a stateless sub-process that executes a single task independently. Use subagents when:\n - You want to parallelize similar work across different inputs\n - You are not sure your search or operation will succeed on the first try\n Each subagent receives a task with a defined payload and returns a result, which is not visible to the user unless explicitly summarized by the system.\n ---\n Examples of 'task_parameters' for a single task:\n text_instruction: Search for the config file in the root directory.\n Examples of 'task_parameters' for multiple tasks:\n text_instruction: Get weather for Melbourne.\n text_instruction: Get weather for Los Angeles.\n text_instruction: Get weather for San Francisco.\n ",
|
||||
"description": "Create tasks with instructions or prompt. For simple tasks, only include the instructions field. Extensions control: omit field = use all current extensions; empty array [] = no extensions; array with names = only those extensions. Specify extensions as shortnames (the prefixes for your tools). Specify return_last_only as true and have your subagent summarize its work in its last message to conserve your own context. Optional: title, description, extensions, settings, retry, response schema, context, activities. Arrays for multiple tasks.",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"description": "How to execute multiple tasks (default: parallel for multiple tasks, sequential for single task)",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_parameters": {
|
||||
"description": "Array of parameter sets for creating tasks. For a single task, provide an array with one element. For multiple tasks, provide an array with multiple elements, each with different parameter values. If there is no parameter set, provide an empty array.",
|
||||
"description": "Array of tasks. Each task must have either 'instructions' OR 'prompt' field (at least one is required).",
|
||||
"items": {
|
||||
"properties": {
|
||||
"text_instruction": {
|
||||
"description": "The text instruction to execute",
|
||||
"activities": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"context": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"extensions": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"instructions": {
|
||||
"description": "Task instructions (required if prompt is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"parameters": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"prompt": {
|
||||
"description": "Initial prompt (required if instructions is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"response": {
|
||||
"type": "object"
|
||||
},
|
||||
"retry": {
|
||||
"type": "object"
|
||||
},
|
||||
"return_last_only": {
|
||||
"description": "If true, return only the last message from the subagent (default: false, returns full conversation)",
|
||||
"type": "boolean"
|
||||
},
|
||||
"settings": {
|
||||
"type": "object"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text_instruction"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_parameters"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Dynamic Task Creation",
|
||||
"title": "Create Dynamic Tasks",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
@@ -217,15 +277,15 @@
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704259,
|
||||
"created": 1760565468,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "I'll help you check the weather in Berlin, Germany using the weather extension."
|
||||
"text": "I'll check the current weather in Berlin, Germany for you."
|
||||
},
|
||||
{
|
||||
"type": "toolRequest",
|
||||
"id": "toolu_01ABW2NhcBGvKL6nBj3T3fhv",
|
||||
"id": "toolu_013JNt4Fn6i4Ls8HTbn8bQjG",
|
||||
"toolCall": {
|
||||
"status": "success",
|
||||
"value": {
|
||||
@@ -236,45 +296,53 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"model": "claude-sonnet-4-20250514",
|
||||
"usage": {
|
||||
"input_tokens": 2562,
|
||||
"output_tokens": 76,
|
||||
"total_tokens": 2638
|
||||
"input_tokens": 2710,
|
||||
"output_tokens": 73,
|
||||
"total_tokens": 2783
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"d51c15f1ede58b5496bba746a4bdffd8ce84526749ce0021969d6ed6f2538a6d": {
|
||||
"c6f73996d107f0ca731493c3e18108043693c0e63d377190c9359c599a7ef254": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:04:16.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal.\ngoose is being developed as an open-source software project.\n\nThe current date is 2025-10-15 21:57:45.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o,\nclaude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10\nmonths prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and\ntools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level\nproblems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable\nextensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from\nthe search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n\n## weather_extension\n\n\n\n\n\n\n\n\n\n# Suggestion\n\n\"\"\n\n\n\n\n# sub agents\n\nExecute self contained tasks where step-by-step visibility is not important through subagents.\n\n- Delegate via `dynamic_task__create_task` for: result-only operations, parallelizable work, multi-part requests,\n verification, exploration\n- Parallel subagents for multiple operations, single subagents for independent work\n- Explore solutions in parallel — launch parallel subagents with different approaches (if non-interfering)\n- Provide all needed context — subagents cannot see your context\n- Use extension filters to limit resource access\n- Use return_last_only when only a summary or simple answer is required — inform subagent of this choice.\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic\n links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the\n language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1753704256,
|
||||
"created": 1760565465,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "tell me what the weather is in Berlin, Germany"
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704259,
|
||||
"created": 1760565468,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "I'll help you check the weather in Berlin, Germany using the weather extension."
|
||||
"text": "I'll check the current weather in Berlin, Germany for you."
|
||||
},
|
||||
{
|
||||
"type": "toolRequest",
|
||||
"id": "toolu_01ABW2NhcBGvKL6nBj3T3fhv",
|
||||
"id": "toolu_013JNt4Fn6i4Ls8HTbn8bQjG",
|
||||
"toolCall": {
|
||||
"status": "success",
|
||||
"value": {
|
||||
@@ -285,16 +353,20 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": null,
|
||||
"id": "msg_17216282-dde0-4344-a137-1e89c85623ad",
|
||||
"role": "user",
|
||||
"created": 1753704259,
|
||||
"created": 1760565468,
|
||||
"content": [
|
||||
{
|
||||
"type": "toolResponse",
|
||||
"id": "toolu_01ABW2NhcBGvKL6nBj3T3fhv",
|
||||
"id": "toolu_013JNt4Fn6i4Ls8HTbn8bQjG",
|
||||
"toolResult": {
|
||||
"status": "success",
|
||||
"value": [
|
||||
@@ -305,7 +377,11 @@
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
@@ -439,32 +515,88 @@
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Use this tool to create one or more dynamic tasks from a shared text instruction and varying parameters.How it works:\n - Provide a single text instruction\n - Use the 'task_parameters' field to pass an array of parameter sets\n - Each resulting task will use the same instruction with different parameter values\n This is useful when performing the same operation across many inputs (e.g., getting weather for multiple cities, searching multiple slack channels, iterating through various linear tickets, etc).\n Once created, these tasks should be passed to the 'subagent__execute_task' tool for execution. Tasks can run sequentially or in parallel.\n ---\n What is a 'subagent'?\n A 'subagent' is a stateless sub-process that executes a single task independently. Use subagents when:\n - You want to parallelize similar work across different inputs\n - You are not sure your search or operation will succeed on the first try\n Each subagent receives a task with a defined payload and returns a result, which is not visible to the user unless explicitly summarized by the system.\n ---\n Examples of 'task_parameters' for a single task:\n text_instruction: Search for the config file in the root directory.\n Examples of 'task_parameters' for multiple tasks:\n text_instruction: Get weather for Melbourne.\n text_instruction: Get weather for Los Angeles.\n text_instruction: Get weather for San Francisco.\n ",
|
||||
"description": "Create tasks with instructions or prompt. For simple tasks, only include the instructions field. Extensions control: omit field = use all current extensions; empty array [] = no extensions; array with names = only those extensions. Specify extensions as shortnames (the prefixes for your tools). Specify return_last_only as true and have your subagent summarize its work in its last message to conserve your own context. Optional: title, description, extensions, settings, retry, response schema, context, activities. Arrays for multiple tasks.",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"description": "How to execute multiple tasks (default: parallel for multiple tasks, sequential for single task)",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_parameters": {
|
||||
"description": "Array of parameter sets for creating tasks. For a single task, provide an array with one element. For multiple tasks, provide an array with multiple elements, each with different parameter values. If there is no parameter set, provide an empty array.",
|
||||
"description": "Array of tasks. Each task must have either 'instructions' OR 'prompt' field (at least one is required).",
|
||||
"items": {
|
||||
"properties": {
|
||||
"text_instruction": {
|
||||
"description": "The text instruction to execute",
|
||||
"activities": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"context": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"extensions": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"instructions": {
|
||||
"description": "Task instructions (required if prompt is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"parameters": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"prompt": {
|
||||
"description": "Initial prompt (required if instructions is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"response": {
|
||||
"type": "object"
|
||||
},
|
||||
"retry": {
|
||||
"type": "object"
|
||||
},
|
||||
"return_last_only": {
|
||||
"description": "If true, return only the last message from the subagent (default: false, returns full conversation)",
|
||||
"type": "boolean"
|
||||
},
|
||||
"settings": {
|
||||
"type": "object"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text_instruction"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_parameters"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Dynamic Task Creation",
|
||||
"title": "Create Dynamic Tasks",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
@@ -510,20 +642,24 @@
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704261,
|
||||
"created": 1760565471,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "The current weather in Berlin, Germany is cloudy with a temperature of 18°C (64.4°F)."
|
||||
"text": "The current weather in **Berlin, Germany** is:\n\n- **Temperature**: 18°C (64°F)\n- **Conditions**: Cloudy\n\nIt's a mild day with overcast skies in Berlin right now."
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"model": "claude-sonnet-4-20250514",
|
||||
"usage": {
|
||||
"input_tokens": 2663,
|
||||
"output_tokens": 29,
|
||||
"total_tokens": 2692
|
||||
"input_tokens": 2809,
|
||||
"output_tokens": 53,
|
||||
"total_tokens": 2862
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,22 @@
|
||||
{
|
||||
"1b998117eba523901ae6a4dbf8caa81a95ea88ef7a84d0434c9b41a26164a2b9": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:04:16.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal.\ngoose is being developed as an open-source software project.\n\nThe current date is 2025-10-15 21:57:44.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o,\nclaude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10\nmonths prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and\ntools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level\nproblems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable\nextensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from\nthe search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n\n## weather_extension\n\n\n\n\n\n\n\n\n\n# Suggestion\n\n\"\"\n\n\n\n\n# sub agents\n\nExecute self contained tasks where step-by-step visibility is not important through subagents.\n\n- Delegate via `dynamic_task__create_task` for: result-only operations, parallelizable work, multi-part requests,\n verification, exploration\n- Parallel subagents for multiple operations, single subagents for independent work\n- Explore solutions in parallel — launch parallel subagents with different approaches (if non-interfering)\n- Provide all needed context — subagents cannot see your context\n- Use extension filters to limit resource access\n- Use return_last_only when only a summary or simple answer is required — inform subagent of this choice.\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic\n links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the\n language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1753704256,
|
||||
"created": 1760565464,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "what is your name"
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
@@ -146,32 +150,88 @@
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Use this tool to create one or more dynamic tasks from a shared text instruction and varying parameters.How it works:\n - Provide a single text instruction\n - Use the 'task_parameters' field to pass an array of parameter sets\n - Each resulting task will use the same instruction with different parameter values\n This is useful when performing the same operation across many inputs (e.g., getting weather for multiple cities, searching multiple slack channels, iterating through various linear tickets, etc).\n Once created, these tasks should be passed to the 'subagent__execute_task' tool for execution. Tasks can run sequentially or in parallel.\n ---\n What is a 'subagent'?\n A 'subagent' is a stateless sub-process that executes a single task independently. Use subagents when:\n - You want to parallelize similar work across different inputs\n - You are not sure your search or operation will succeed on the first try\n Each subagent receives a task with a defined payload and returns a result, which is not visible to the user unless explicitly summarized by the system.\n ---\n Examples of 'task_parameters' for a single task:\n text_instruction: Search for the config file in the root directory.\n Examples of 'task_parameters' for multiple tasks:\n text_instruction: Get weather for Melbourne.\n text_instruction: Get weather for Los Angeles.\n text_instruction: Get weather for San Francisco.\n ",
|
||||
"description": "Create tasks with instructions or prompt. For simple tasks, only include the instructions field. Extensions control: omit field = use all current extensions; empty array [] = no extensions; array with names = only those extensions. Specify extensions as shortnames (the prefixes for your tools). Specify return_last_only as true and have your subagent summarize its work in its last message to conserve your own context. Optional: title, description, extensions, settings, retry, response schema, context, activities. Arrays for multiple tasks.",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"description": "How to execute multiple tasks (default: parallel for multiple tasks, sequential for single task)",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_parameters": {
|
||||
"description": "Array of parameter sets for creating tasks. For a single task, provide an array with one element. For multiple tasks, provide an array with multiple elements, each with different parameter values. If there is no parameter set, provide an empty array.",
|
||||
"description": "Array of tasks. Each task must have either 'instructions' OR 'prompt' field (at least one is required).",
|
||||
"items": {
|
||||
"properties": {
|
||||
"text_instruction": {
|
||||
"description": "The text instruction to execute",
|
||||
"activities": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"context": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"extensions": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"instructions": {
|
||||
"description": "Task instructions (required if prompt is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"parameters": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"prompt": {
|
||||
"description": "Initial prompt (required if instructions is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"response": {
|
||||
"type": "object"
|
||||
},
|
||||
"retry": {
|
||||
"type": "object"
|
||||
},
|
||||
"return_last_only": {
|
||||
"description": "If true, return only the last message from the subagent (default: false, returns full conversation)",
|
||||
"type": "boolean"
|
||||
},
|
||||
"settings": {
|
||||
"type": "object"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text_instruction"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_parameters"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Dynamic Task Creation",
|
||||
"title": "Create Dynamic Tasks",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
@@ -217,20 +277,24 @@
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704259,
|
||||
"created": 1760565467,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "I am goose, an AI agent created by Block (the parent company of Square, CashApp, and Tidal). I'm being developed as an open-source software project.\n\nI can help you with various tasks using different tools and extensions. While I have a defined identity as goose, I aim to be helpful, direct, and efficient in assisting you with your needs. Is there something specific I can help you with today?"
|
||||
"text": "My name is **goose**. I'm a general-purpose AI agent created by Block, the parent company of Square, CashApp, and Tidal. I'm being developed as an open-source software project and can help you with various tasks using different extensions and tools.\n\nIs there something specific you'd like help with today?"
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"model": "claude-sonnet-4-20250514",
|
||||
"usage": {
|
||||
"input_tokens": 2556,
|
||||
"output_tokens": 97,
|
||||
"total_tokens": 2653
|
||||
"input_tokens": 2704,
|
||||
"output_tokens": 74,
|
||||
"total_tokens": 2778
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,294 +1,22 @@
|
||||
{
|
||||
"21e33b98670d23e1bad3f21da667502d0930b42e34431395e266a4c524620cf1": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:28.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1753704328,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "tell me what the weather is in Berlin, Germany"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704329,
|
||||
"content": [
|
||||
{
|
||||
"type": "toolRequest",
|
||||
"id": "call_C91rmWZSSnUaKx0AtBdwO4Zw",
|
||||
"toolCall": {
|
||||
"status": "success",
|
||||
"value": {
|
||||
"name": "weather_extension__get_weather",
|
||||
"arguments": {
|
||||
"location": "Berlin, Germany"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1753704329,
|
||||
"content": [
|
||||
{
|
||||
"type": "toolResponse",
|
||||
"id": "call_C91rmWZSSnUaKx0AtBdwO4Zw",
|
||||
"toolResult": {
|
||||
"status": "success",
|
||||
"value": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "The weather in Berlin, Germany is cloudy and 18°C"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
{
|
||||
"name": "weather_extension__get_weather",
|
||||
"description": "Get the weather for a location",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"location": {
|
||||
"description": "The city and state, e.g. San Francisco, CA",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"location"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__search_available_extensions",
|
||||
"description": "Searches for additional extensions available to help complete tasks.\n Use this tool when you're unable to find a specific feature or functionality you need to complete your task, or when standard approaches aren't working.\n These extensions might provide the exact tools needed to solve your problem.\n If you find a relevant one, consider using your tools to enable it.",
|
||||
"inputSchema": {
|
||||
"properties": {},
|
||||
"required": [],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Discover extensions",
|
||||
"readOnlyHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__manage_extensions",
|
||||
"description": "Tool to manage extensions and tools in goose context.\n Enable or disable extensions to help complete tasks.\n Enable or disable an extension by providing the extension name.\n ",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"description": "The action to perform",
|
||||
"enum": [
|
||||
"enable",
|
||||
"disable"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"extension_name": {
|
||||
"description": "The name of the extension to enable",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"action",
|
||||
"extension_name"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Enable or disable an extension",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__manage_schedule",
|
||||
"description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"enum": [
|
||||
"list",
|
||||
"create",
|
||||
"run_now",
|
||||
"pause",
|
||||
"unpause",
|
||||
"delete",
|
||||
"kill",
|
||||
"inspect",
|
||||
"sessions",
|
||||
"session_content"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"cron_expression": {
|
||||
"description": "A cron expression for create action. Supports both 5-field (minute hour day month weekday) and 6-field (second minute hour day month weekday) formats. 5-field expressions are automatically converted to 6-field by prepending '0' for seconds.",
|
||||
"type": "string"
|
||||
},
|
||||
"execution_mode": {
|
||||
"default": "background",
|
||||
"description": "Execution mode for create action: 'foreground' or 'background'",
|
||||
"enum": [
|
||||
"foreground",
|
||||
"background"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"job_id": {
|
||||
"description": "Job identifier for operations on existing jobs",
|
||||
"type": "string"
|
||||
},
|
||||
"limit": {
|
||||
"default": 50,
|
||||
"description": "Limit for sessions list",
|
||||
"type": "integer"
|
||||
},
|
||||
"recipe_path": {
|
||||
"description": "Path to recipe file for create action",
|
||||
"type": "string"
|
||||
},
|
||||
"session_id": {
|
||||
"description": "Session identifier for session_content action",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"action"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Manage scheduled recipes",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Use this tool to create one or more dynamic tasks from a shared text instruction and varying parameters.How it works:\n - Provide a single text instruction\n - Use the 'task_parameters' field to pass an array of parameter sets\n - Each resulting task will use the same instruction with different parameter values\n This is useful when performing the same operation across many inputs (e.g., getting weather for multiple cities, searching multiple slack channels, iterating through various linear tickets, etc).\n Once created, these tasks should be passed to the 'subagent__execute_task' tool for execution. Tasks can run sequentially or in parallel.\n ---\n What is a 'subagent'?\n A 'subagent' is a stateless sub-process that executes a single task independently. Use subagents when:\n - You want to parallelize similar work across different inputs\n - You are not sure your search or operation will succeed on the first try\n Each subagent receives a task with a defined payload and returns a result, which is not visible to the user unless explicitly summarized by the system.\n ---\n Examples of 'task_parameters' for a single task:\n text_instruction: Search for the config file in the root directory.\n Examples of 'task_parameters' for multiple tasks:\n text_instruction: Get weather for Melbourne.\n text_instruction: Get weather for Los Angeles.\n text_instruction: Get weather for San Francisco.\n ",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"task_parameters": {
|
||||
"description": "Array of parameter sets for creating tasks. For a single task, provide an array with one element. For multiple tasks, provide an array with multiple elements, each with different parameter values. If there is no parameter set, provide an empty array.",
|
||||
"items": {
|
||||
"properties": {
|
||||
"text_instruction": {
|
||||
"description": "The text instruction to execute",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text_instruction"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Dynamic Task Creation",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "subagent__execute_task",
|
||||
"description": "Only use the subagent__execute_task tool when you execute sub recipe task or dynamic task.\n EXECUTION STRATEGY DECISION:\n 1. If the tasks are created with execution_mode, use the execution_mode.\n 2. Execute tasks sequentially unless user explicitly requests parallel execution. PARALLEL: User uses keywords like 'parallel', 'simultaneously', 'at the same time', 'concurrently'\n\n IMPLEMENTATION:\n - Sequential execution: Call this tool multiple times, passing exactly ONE task per call\n - Parallel execution: Call this tool once, passing an ARRAY of all tasks\n\n EXAMPLES:\n User Intent Based:\n - User: 'get weather and tell me a joke' → Sequential (2 separate tool calls, 1 task each)\n - User: 'get weather and joke in parallel' → Parallel (1 tool call with array of 2 tasks)\n - User: 'run these simultaneously' → Parallel (1 tool call with task array)\n - User: 'do task A then task B' → Sequential (2 separate tool calls)",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"default": "sequential",
|
||||
"description": "Execution strategy for multiple tasks. Use 'sequential' (default) unless user explicitly requests parallel execution with words like 'parallel', 'simultaneously', 'at the same time', or 'concurrently'.",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_ids": {
|
||||
"items": {
|
||||
"description": "Unique identifier for the task",
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_ids"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Run tasks in parallel",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"output": {
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704331,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "### Current Weather in Berlin, Germany\n\n- **Condition:** Cloudy\n- **Temperature:** 18°C\n\nIf you need more information or forecasts, let me know!"
|
||||
}
|
||||
]
|
||||
},
|
||||
"usage": {
|
||||
"model": "gpt-4o-mini-2024-07-18",
|
||||
"usage": {
|
||||
"input_tokens": 1722,
|
||||
"output_tokens": 37,
|
||||
"total_tokens": 1759
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"1bc400a528c54b25f4f1f609481e98e44222b3deaf7eee2c9e640e6345c73861": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:28.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal.\ngoose is being developed as an open-source software project.\n\nThe current date is 2025-10-15 21:57:51.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o,\nclaude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10\nmonths prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and\ntools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level\nproblems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable\nextensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from\nthe search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n\n## weather_extension\n\n\n\n\n\n\n\n\n\n# Suggestion\n\n\"\"\n\n\n\n\n# sub agents\n\nExecute self contained tasks where step-by-step visibility is not important through subagents.\n\n- Delegate via `dynamic_task__create_task` for: result-only operations, parallelizable work, multi-part requests,\n verification, exploration\n- Parallel subagents for multiple operations, single subagents for independent work\n- Explore solutions in parallel — launch parallel subagents with different approaches (if non-interfering)\n- Provide all needed context — subagents cannot see your context\n- Use extension filters to limit resource access\n- Use return_last_only when only a summary or simple answer is required — inform subagent of this choice.\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic\n links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the\n language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1753704328,
|
||||
"created": 1760565471,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "tell me what the weather is in Berlin, Germany"
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
@@ -422,32 +150,88 @@
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Use this tool to create one or more dynamic tasks from a shared text instruction and varying parameters.How it works:\n - Provide a single text instruction\n - Use the 'task_parameters' field to pass an array of parameter sets\n - Each resulting task will use the same instruction with different parameter values\n This is useful when performing the same operation across many inputs (e.g., getting weather for multiple cities, searching multiple slack channels, iterating through various linear tickets, etc).\n Once created, these tasks should be passed to the 'subagent__execute_task' tool for execution. Tasks can run sequentially or in parallel.\n ---\n What is a 'subagent'?\n A 'subagent' is a stateless sub-process that executes a single task independently. Use subagents when:\n - You want to parallelize similar work across different inputs\n - You are not sure your search or operation will succeed on the first try\n Each subagent receives a task with a defined payload and returns a result, which is not visible to the user unless explicitly summarized by the system.\n ---\n Examples of 'task_parameters' for a single task:\n text_instruction: Search for the config file in the root directory.\n Examples of 'task_parameters' for multiple tasks:\n text_instruction: Get weather for Melbourne.\n text_instruction: Get weather for Los Angeles.\n text_instruction: Get weather for San Francisco.\n ",
|
||||
"description": "Create tasks with instructions or prompt. For simple tasks, only include the instructions field. Extensions control: omit field = use all current extensions; empty array [] = no extensions; array with names = only those extensions. Specify extensions as shortnames (the prefixes for your tools). Specify return_last_only as true and have your subagent summarize its work in its last message to conserve your own context. Optional: title, description, extensions, settings, retry, response schema, context, activities. Arrays for multiple tasks.",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"description": "How to execute multiple tasks (default: parallel for multiple tasks, sequential for single task)",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_parameters": {
|
||||
"description": "Array of parameter sets for creating tasks. For a single task, provide an array with one element. For multiple tasks, provide an array with multiple elements, each with different parameter values. If there is no parameter set, provide an empty array.",
|
||||
"description": "Array of tasks. Each task must have either 'instructions' OR 'prompt' field (at least one is required).",
|
||||
"items": {
|
||||
"properties": {
|
||||
"text_instruction": {
|
||||
"description": "The text instruction to execute",
|
||||
"activities": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"context": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"extensions": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"instructions": {
|
||||
"description": "Task instructions (required if prompt is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"parameters": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"prompt": {
|
||||
"description": "Initial prompt (required if instructions is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"response": {
|
||||
"type": "object"
|
||||
},
|
||||
"retry": {
|
||||
"type": "object"
|
||||
},
|
||||
"return_last_only": {
|
||||
"description": "If true, return only the last message from the subagent (default: false, returns full conversation)",
|
||||
"type": "boolean"
|
||||
},
|
||||
"settings": {
|
||||
"type": "object"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text_instruction"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_parameters"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Dynamic Task Creation",
|
||||
"title": "Create Dynamic Tasks",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
@@ -493,11 +277,11 @@
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704329,
|
||||
"created": 1760565472,
|
||||
"content": [
|
||||
{
|
||||
"type": "toolRequest",
|
||||
"id": "call_C91rmWZSSnUaKx0AtBdwO4Zw",
|
||||
"id": "call_QK2Zg4k9kTxaNXCyOVPbQ8Pc",
|
||||
"toolCall": {
|
||||
"status": "success",
|
||||
"value": {
|
||||
@@ -508,14 +292,366 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"model": "gpt-4o-mini-2024-07-18",
|
||||
"usage": {
|
||||
"input_tokens": 1680,
|
||||
"input_tokens": 1708,
|
||||
"output_tokens": 20,
|
||||
"total_tokens": 1700
|
||||
"total_tokens": 1728
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"198b76aab4abc29c526ddd37cf906dcf9161c94423d8ca772908bef353ece3e8": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal.\ngoose is being developed as an open-source software project.\n\nThe current date is 2025-10-15 21:57:51.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o,\nclaude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10\nmonths prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and\ntools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level\nproblems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable\nextensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from\nthe search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n\n## weather_extension\n\n\n\n\n\n\n\n\n\n# Suggestion\n\n\"\"\n\n\n\n\n# sub agents\n\nExecute self contained tasks where step-by-step visibility is not important through subagents.\n\n- Delegate via `dynamic_task__create_task` for: result-only operations, parallelizable work, multi-part requests,\n verification, exploration\n- Parallel subagents for multiple operations, single subagents for independent work\n- Explore solutions in parallel — launch parallel subagents with different approaches (if non-interfering)\n- Provide all needed context — subagents cannot see your context\n- Use extension filters to limit resource access\n- Use return_last_only when only a summary or simple answer is required — inform subagent of this choice.\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic\n links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the\n language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1760565471,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "tell me what the weather is in Berlin, Germany"
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1760565472,
|
||||
"content": [
|
||||
{
|
||||
"type": "toolRequest",
|
||||
"id": "call_QK2Zg4k9kTxaNXCyOVPbQ8Pc",
|
||||
"toolCall": {
|
||||
"status": "success",
|
||||
"value": {
|
||||
"name": "weather_extension__get_weather",
|
||||
"arguments": {
|
||||
"location": "Berlin, Germany"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "msg_85357fa1-4622-4b5c-bc66-ce79f12038dd",
|
||||
"role": "user",
|
||||
"created": 1760565472,
|
||||
"content": [
|
||||
{
|
||||
"type": "toolResponse",
|
||||
"id": "call_QK2Zg4k9kTxaNXCyOVPbQ8Pc",
|
||||
"toolResult": {
|
||||
"status": "success",
|
||||
"value": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "The weather in Berlin, Germany is cloudy and 18°C"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
{
|
||||
"name": "weather_extension__get_weather",
|
||||
"description": "Get the weather for a location",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"location": {
|
||||
"description": "The city and state, e.g. San Francisco, CA",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"location"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__search_available_extensions",
|
||||
"description": "Searches for additional extensions available to help complete tasks.\n Use this tool when you're unable to find a specific feature or functionality you need to complete your task, or when standard approaches aren't working.\n These extensions might provide the exact tools needed to solve your problem.\n If you find a relevant one, consider using your tools to enable it.",
|
||||
"inputSchema": {
|
||||
"properties": {},
|
||||
"required": [],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Discover extensions",
|
||||
"readOnlyHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__manage_extensions",
|
||||
"description": "Tool to manage extensions and tools in goose context.\n Enable or disable extensions to help complete tasks.\n Enable or disable an extension by providing the extension name.\n ",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"description": "The action to perform",
|
||||
"enum": [
|
||||
"enable",
|
||||
"disable"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"extension_name": {
|
||||
"description": "The name of the extension to enable",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"action",
|
||||
"extension_name"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Enable or disable an extension",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__manage_schedule",
|
||||
"description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"enum": [
|
||||
"list",
|
||||
"create",
|
||||
"run_now",
|
||||
"pause",
|
||||
"unpause",
|
||||
"delete",
|
||||
"kill",
|
||||
"inspect",
|
||||
"sessions",
|
||||
"session_content"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"cron_expression": {
|
||||
"description": "A cron expression for create action. Supports both 5-field (minute hour day month weekday) and 6-field (second minute hour day month weekday) formats. 5-field expressions are automatically converted to 6-field by prepending '0' for seconds.",
|
||||
"type": "string"
|
||||
},
|
||||
"execution_mode": {
|
||||
"default": "background",
|
||||
"description": "Execution mode for create action: 'foreground' or 'background'",
|
||||
"enum": [
|
||||
"foreground",
|
||||
"background"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"job_id": {
|
||||
"description": "Job identifier for operations on existing jobs",
|
||||
"type": "string"
|
||||
},
|
||||
"limit": {
|
||||
"default": 50,
|
||||
"description": "Limit for sessions list",
|
||||
"type": "integer"
|
||||
},
|
||||
"recipe_path": {
|
||||
"description": "Path to recipe file for create action",
|
||||
"type": "string"
|
||||
},
|
||||
"session_id": {
|
||||
"description": "Session identifier for session_content action",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"action"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Manage scheduled recipes",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Create tasks with instructions or prompt. For simple tasks, only include the instructions field. Extensions control: omit field = use all current extensions; empty array [] = no extensions; array with names = only those extensions. Specify extensions as shortnames (the prefixes for your tools). Specify return_last_only as true and have your subagent summarize its work in its last message to conserve your own context. Optional: title, description, extensions, settings, retry, response schema, context, activities. Arrays for multiple tasks.",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"description": "How to execute multiple tasks (default: parallel for multiple tasks, sequential for single task)",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_parameters": {
|
||||
"description": "Array of tasks. Each task must have either 'instructions' OR 'prompt' field (at least one is required).",
|
||||
"items": {
|
||||
"properties": {
|
||||
"activities": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"context": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"extensions": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"instructions": {
|
||||
"description": "Task instructions (required if prompt is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"parameters": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"prompt": {
|
||||
"description": "Initial prompt (required if instructions is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"response": {
|
||||
"type": "object"
|
||||
},
|
||||
"retry": {
|
||||
"type": "object"
|
||||
},
|
||||
"return_last_only": {
|
||||
"description": "If true, return only the last message from the subagent (default: false, returns full conversation)",
|
||||
"type": "boolean"
|
||||
},
|
||||
"settings": {
|
||||
"type": "object"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_parameters"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Create Dynamic Tasks",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "subagent__execute_task",
|
||||
"description": "Only use the subagent__execute_task tool when you execute sub recipe task or dynamic task.\n EXECUTION STRATEGY DECISION:\n 1. If the tasks are created with execution_mode, use the execution_mode.\n 2. Execute tasks sequentially unless user explicitly requests parallel execution. PARALLEL: User uses keywords like 'parallel', 'simultaneously', 'at the same time', 'concurrently'\n\n IMPLEMENTATION:\n - Sequential execution: Call this tool multiple times, passing exactly ONE task per call\n - Parallel execution: Call this tool once, passing an ARRAY of all tasks\n\n EXAMPLES:\n User Intent Based:\n - User: 'get weather and tell me a joke' → Sequential (2 separate tool calls, 1 task each)\n - User: 'get weather and joke in parallel' → Parallel (1 tool call with array of 2 tasks)\n - User: 'run these simultaneously' → Parallel (1 tool call with task array)\n - User: 'do task A then task B' → Sequential (2 separate tool calls)",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"default": "sequential",
|
||||
"description": "Execution strategy for multiple tasks. Use 'sequential' (default) unless user explicitly requests parallel execution with words like 'parallel', 'simultaneously', 'at the same time', or 'concurrently'.",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_ids": {
|
||||
"items": {
|
||||
"description": "Unique identifier for the task",
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_ids"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Run tasks in parallel",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"output": {
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1760565473,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "The current weather in Berlin, Germany, is cloudy with a temperature of 18°C."
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"model": "gpt-4o-mini-2024-07-18",
|
||||
"usage": {
|
||||
"input_tokens": 1750,
|
||||
"output_tokens": 20,
|
||||
"total_tokens": 1770
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+82
-18
@@ -1,18 +1,22 @@
|
||||
{
|
||||
"1b998117eba523901ae6a4dbf8caa81a95ea88ef7a84d0434c9b41a26164a2b9": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:25.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal.\ngoose is being developed as an open-source software project.\n\nThe current date is 2025-10-15 21:57:47.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o,\nclaude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10\nmonths prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and\ntools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level\nproblems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable\nextensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from\nthe search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n\n## weather_extension\n\n\n\n\n\n\n\n\n\n# Suggestion\n\n\"\"\n\n\n\n\n# sub agents\n\nExecute self contained tasks where step-by-step visibility is not important through subagents.\n\n- Delegate via `dynamic_task__create_task` for: result-only operations, parallelizable work, multi-part requests,\n verification, exploration\n- Parallel subagents for multiple operations, single subagents for independent work\n- Explore solutions in parallel — launch parallel subagents with different approaches (if non-interfering)\n- Provide all needed context — subagents cannot see your context\n- Use extension filters to limit resource access\n- Use return_last_only when only a summary or simple answer is required — inform subagent of this choice.\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic\n links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the\n language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1753704325,
|
||||
"created": 1760565467,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "what is your name"
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
@@ -146,32 +150,88 @@
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Use this tool to create one or more dynamic tasks from a shared text instruction and varying parameters.How it works:\n - Provide a single text instruction\n - Use the 'task_parameters' field to pass an array of parameter sets\n - Each resulting task will use the same instruction with different parameter values\n This is useful when performing the same operation across many inputs (e.g., getting weather for multiple cities, searching multiple slack channels, iterating through various linear tickets, etc).\n Once created, these tasks should be passed to the 'subagent__execute_task' tool for execution. Tasks can run sequentially or in parallel.\n ---\n What is a 'subagent'?\n A 'subagent' is a stateless sub-process that executes a single task independently. Use subagents when:\n - You want to parallelize similar work across different inputs\n - You are not sure your search or operation will succeed on the first try\n Each subagent receives a task with a defined payload and returns a result, which is not visible to the user unless explicitly summarized by the system.\n ---\n Examples of 'task_parameters' for a single task:\n text_instruction: Search for the config file in the root directory.\n Examples of 'task_parameters' for multiple tasks:\n text_instruction: Get weather for Melbourne.\n text_instruction: Get weather for Los Angeles.\n text_instruction: Get weather for San Francisco.\n ",
|
||||
"description": "Create tasks with instructions or prompt. For simple tasks, only include the instructions field. Extensions control: omit field = use all current extensions; empty array [] = no extensions; array with names = only those extensions. Specify extensions as shortnames (the prefixes for your tools). Specify return_last_only as true and have your subagent summarize its work in its last message to conserve your own context. Optional: title, description, extensions, settings, retry, response schema, context, activities. Arrays for multiple tasks.",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"description": "How to execute multiple tasks (default: parallel for multiple tasks, sequential for single task)",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_parameters": {
|
||||
"description": "Array of parameter sets for creating tasks. For a single task, provide an array with one element. For multiple tasks, provide an array with multiple elements, each with different parameter values. If there is no parameter set, provide an empty array.",
|
||||
"description": "Array of tasks. Each task must have either 'instructions' OR 'prompt' field (at least one is required).",
|
||||
"items": {
|
||||
"properties": {
|
||||
"text_instruction": {
|
||||
"description": "The text instruction to execute",
|
||||
"activities": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"context": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"extensions": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"instructions": {
|
||||
"description": "Task instructions (required if prompt is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"parameters": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"prompt": {
|
||||
"description": "Initial prompt (required if instructions is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"response": {
|
||||
"type": "object"
|
||||
},
|
||||
"retry": {
|
||||
"type": "object"
|
||||
},
|
||||
"return_last_only": {
|
||||
"description": "If true, return only the last message from the subagent (default: false, returns full conversation)",
|
||||
"type": "boolean"
|
||||
},
|
||||
"settings": {
|
||||
"type": "object"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text_instruction"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_parameters"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Dynamic Task Creation",
|
||||
"title": "Create Dynamic Tasks",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
@@ -217,20 +277,24 @@
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704327,
|
||||
"created": 1760565468,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "My name is goose, an AI agent created by Block, the parent company of Square, CashApp, and Tidal. How can I assist you today?"
|
||||
"text": "My name is Goose. I'm an AI agent created by Block, the parent company of Square, CashApp, and Tidal. How can I assist you today?"
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"model": "gpt-4o-mini-2024-07-18",
|
||||
"usage": {
|
||||
"input_tokens": 1674,
|
||||
"output_tokens": 34,
|
||||
"total_tokens": 1708
|
||||
"input_tokens": 1702,
|
||||
"output_tokens": 35,
|
||||
"total_tokens": 1737
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
@@ -1,18 +1,22 @@
|
||||
{
|
||||
"1b998117eba523901ae6a4dbf8caa81a95ea88ef7a84d0434c9b41a26164a2b9": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:27.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal.\ngoose is being developed as an open-source software project.\n\nThe current date is 2025-10-15 21:57:49.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o,\nclaude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10\nmonths prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and\ntools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level\nproblems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable\nextensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from\nthe search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n\n## weather_extension\n\n\n\n\n\n\n\n\n\n# Suggestion\n\n\"\"\n\n\n\n\n# sub agents\n\nExecute self contained tasks where step-by-step visibility is not important through subagents.\n\n- Delegate via `dynamic_task__create_task` for: result-only operations, parallelizable work, multi-part requests,\n verification, exploration\n- Parallel subagents for multiple operations, single subagents for independent work\n- Explore solutions in parallel — launch parallel subagents with different approaches (if non-interfering)\n- Provide all needed context — subagents cannot see your context\n- Use extension filters to limit resource access\n- Use return_last_only when only a summary or simple answer is required — inform subagent of this choice.\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic\n links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the\n language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1753704327,
|
||||
"created": 1760565469,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "what is your name"
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
@@ -146,32 +150,88 @@
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Use this tool to create one or more dynamic tasks from a shared text instruction and varying parameters.How it works:\n - Provide a single text instruction\n - Use the 'task_parameters' field to pass an array of parameter sets\n - Each resulting task will use the same instruction with different parameter values\n This is useful when performing the same operation across many inputs (e.g., getting weather for multiple cities, searching multiple slack channels, iterating through various linear tickets, etc).\n Once created, these tasks should be passed to the 'subagent__execute_task' tool for execution. Tasks can run sequentially or in parallel.\n ---\n What is a 'subagent'?\n A 'subagent' is a stateless sub-process that executes a single task independently. Use subagents when:\n - You want to parallelize similar work across different inputs\n - You are not sure your search or operation will succeed on the first try\n Each subagent receives a task with a defined payload and returns a result, which is not visible to the user unless explicitly summarized by the system.\n ---\n Examples of 'task_parameters' for a single task:\n text_instruction: Search for the config file in the root directory.\n Examples of 'task_parameters' for multiple tasks:\n text_instruction: Get weather for Melbourne.\n text_instruction: Get weather for Los Angeles.\n text_instruction: Get weather for San Francisco.\n ",
|
||||
"description": "Create tasks with instructions or prompt. For simple tasks, only include the instructions field. Extensions control: omit field = use all current extensions; empty array [] = no extensions; array with names = only those extensions. Specify extensions as shortnames (the prefixes for your tools). Specify return_last_only as true and have your subagent summarize its work in its last message to conserve your own context. Optional: title, description, extensions, settings, retry, response schema, context, activities. Arrays for multiple tasks.",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"description": "How to execute multiple tasks (default: parallel for multiple tasks, sequential for single task)",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_parameters": {
|
||||
"description": "Array of parameter sets for creating tasks. For a single task, provide an array with one element. For multiple tasks, provide an array with multiple elements, each with different parameter values. If there is no parameter set, provide an empty array.",
|
||||
"description": "Array of tasks. Each task must have either 'instructions' OR 'prompt' field (at least one is required).",
|
||||
"items": {
|
||||
"properties": {
|
||||
"text_instruction": {
|
||||
"description": "The text instruction to execute",
|
||||
"activities": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"context": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"extensions": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"instructions": {
|
||||
"description": "Task instructions (required if prompt is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"parameters": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"prompt": {
|
||||
"description": "Initial prompt (required if instructions is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"response": {
|
||||
"type": "object"
|
||||
},
|
||||
"retry": {
|
||||
"type": "object"
|
||||
},
|
||||
"return_last_only": {
|
||||
"description": "If true, return only the last message from the subagent (default: false, returns full conversation)",
|
||||
"type": "boolean"
|
||||
},
|
||||
"settings": {
|
||||
"type": "object"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text_instruction"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_parameters"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Dynamic Task Creation",
|
||||
"title": "Create Dynamic Tasks",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
@@ -217,20 +277,24 @@
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704329,
|
||||
"created": 1760565470,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "My name is goose. I am a general-purpose AI agent created by Block, the parent company of Square, CashApp, and Tidal. I am being developed as an open-source software project."
|
||||
"text": "My name is Goose."
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"model": "gemini-2.5-flash",
|
||||
"usage": {
|
||||
"input_tokens": 1967,
|
||||
"output_tokens": 41,
|
||||
"total_tokens": 2038
|
||||
"input_tokens": 2140,
|
||||
"output_tokens": 5,
|
||||
"total_tokens": 2145
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
@@ -1,294 +1,22 @@
|
||||
{
|
||||
"09dddf56be462d1861d5a56de6ec2d79b76e1b6f8f8ba9da8d837aae55c7e70b": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:31.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1753704331,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "tell me what the weather is in Berlin, Germany"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704331,
|
||||
"content": [
|
||||
{
|
||||
"type": "toolRequest",
|
||||
"id": "rnxgf8akg",
|
||||
"toolCall": {
|
||||
"status": "success",
|
||||
"value": {
|
||||
"name": "weather_extension__get_weather",
|
||||
"arguments": {
|
||||
"location": "Berlin, Germany"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1753704331,
|
||||
"content": [
|
||||
{
|
||||
"type": "toolResponse",
|
||||
"id": "rnxgf8akg",
|
||||
"toolResult": {
|
||||
"status": "success",
|
||||
"value": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "The weather in Berlin, Germany is cloudy and 18°C"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
{
|
||||
"name": "weather_extension__get_weather",
|
||||
"description": "Get the weather for a location",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"location": {
|
||||
"description": "The city and state, e.g. San Francisco, CA",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"location"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__search_available_extensions",
|
||||
"description": "Searches for additional extensions available to help complete tasks.\n Use this tool when you're unable to find a specific feature or functionality you need to complete your task, or when standard approaches aren't working.\n These extensions might provide the exact tools needed to solve your problem.\n If you find a relevant one, consider using your tools to enable it.",
|
||||
"inputSchema": {
|
||||
"properties": {},
|
||||
"required": [],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Discover extensions",
|
||||
"readOnlyHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__manage_extensions",
|
||||
"description": "Tool to manage extensions and tools in goose context.\n Enable or disable extensions to help complete tasks.\n Enable or disable an extension by providing the extension name.\n ",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"description": "The action to perform",
|
||||
"enum": [
|
||||
"enable",
|
||||
"disable"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"extension_name": {
|
||||
"description": "The name of the extension to enable",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"action",
|
||||
"extension_name"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Enable or disable an extension",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__manage_schedule",
|
||||
"description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"enum": [
|
||||
"list",
|
||||
"create",
|
||||
"run_now",
|
||||
"pause",
|
||||
"unpause",
|
||||
"delete",
|
||||
"kill",
|
||||
"inspect",
|
||||
"sessions",
|
||||
"session_content"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"cron_expression": {
|
||||
"description": "A cron expression for create action. Supports both 5-field (minute hour day month weekday) and 6-field (second minute hour day month weekday) formats. 5-field expressions are automatically converted to 6-field by prepending '0' for seconds.",
|
||||
"type": "string"
|
||||
},
|
||||
"execution_mode": {
|
||||
"default": "background",
|
||||
"description": "Execution mode for create action: 'foreground' or 'background'",
|
||||
"enum": [
|
||||
"foreground",
|
||||
"background"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"job_id": {
|
||||
"description": "Job identifier for operations on existing jobs",
|
||||
"type": "string"
|
||||
},
|
||||
"limit": {
|
||||
"default": 50,
|
||||
"description": "Limit for sessions list",
|
||||
"type": "integer"
|
||||
},
|
||||
"recipe_path": {
|
||||
"description": "Path to recipe file for create action",
|
||||
"type": "string"
|
||||
},
|
||||
"session_id": {
|
||||
"description": "Session identifier for session_content action",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"action"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Manage scheduled recipes",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Use this tool to create one or more dynamic tasks from a shared text instruction and varying parameters.How it works:\n - Provide a single text instruction\n - Use the 'task_parameters' field to pass an array of parameter sets\n - Each resulting task will use the same instruction with different parameter values\n This is useful when performing the same operation across many inputs (e.g., getting weather for multiple cities, searching multiple slack channels, iterating through various linear tickets, etc).\n Once created, these tasks should be passed to the 'subagent__execute_task' tool for execution. Tasks can run sequentially or in parallel.\n ---\n What is a 'subagent'?\n A 'subagent' is a stateless sub-process that executes a single task independently. Use subagents when:\n - You want to parallelize similar work across different inputs\n - You are not sure your search or operation will succeed on the first try\n Each subagent receives a task with a defined payload and returns a result, which is not visible to the user unless explicitly summarized by the system.\n ---\n Examples of 'task_parameters' for a single task:\n text_instruction: Search for the config file in the root directory.\n Examples of 'task_parameters' for multiple tasks:\n text_instruction: Get weather for Melbourne.\n text_instruction: Get weather for Los Angeles.\n text_instruction: Get weather for San Francisco.\n ",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"task_parameters": {
|
||||
"description": "Array of parameter sets for creating tasks. For a single task, provide an array with one element. For multiple tasks, provide an array with multiple elements, each with different parameter values. If there is no parameter set, provide an empty array.",
|
||||
"items": {
|
||||
"properties": {
|
||||
"text_instruction": {
|
||||
"description": "The text instruction to execute",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text_instruction"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Dynamic Task Creation",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "subagent__execute_task",
|
||||
"description": "Only use the subagent__execute_task tool when you execute sub recipe task or dynamic task.\n EXECUTION STRATEGY DECISION:\n 1. If the tasks are created with execution_mode, use the execution_mode.\n 2. Execute tasks sequentially unless user explicitly requests parallel execution. PARALLEL: User uses keywords like 'parallel', 'simultaneously', 'at the same time', 'concurrently'\n\n IMPLEMENTATION:\n - Sequential execution: Call this tool multiple times, passing exactly ONE task per call\n - Parallel execution: Call this tool once, passing an ARRAY of all tasks\n\n EXAMPLES:\n User Intent Based:\n - User: 'get weather and tell me a joke' → Sequential (2 separate tool calls, 1 task each)\n - User: 'get weather and joke in parallel' → Parallel (1 tool call with array of 2 tasks)\n - User: 'run these simultaneously' → Parallel (1 tool call with task array)\n - User: 'do task A then task B' → Sequential (2 separate tool calls)",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"default": "sequential",
|
||||
"description": "Execution strategy for multiple tasks. Use 'sequential' (default) unless user explicitly requests parallel execution with words like 'parallel', 'simultaneously', 'at the same time', or 'concurrently'.",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_ids": {
|
||||
"items": {
|
||||
"description": "Unique identifier for the task",
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_ids"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Run tasks in parallel",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"output": {
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704332,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "The weather in Berlin, Germany is cloudy with a temperature of 18°C."
|
||||
}
|
||||
]
|
||||
},
|
||||
"usage": {
|
||||
"model": "llama-3.3-70b-versatile",
|
||||
"usage": {
|
||||
"input_tokens": 2856,
|
||||
"output_tokens": 17,
|
||||
"total_tokens": 2873
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"1bc400a528c54b25f4f1f609481e98e44222b3deaf7eee2c9e640e6345c73861": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:31.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal.\ngoose is being developed as an open-source software project.\n\nThe current date is 2025-10-15 21:57:53.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o,\nclaude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10\nmonths prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and\ntools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level\nproblems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable\nextensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from\nthe search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n\n## weather_extension\n\n\n\n\n\n\n\n\n\n# Suggestion\n\n\"\"\n\n\n\n\n# sub agents\n\nExecute self contained tasks where step-by-step visibility is not important through subagents.\n\n- Delegate via `dynamic_task__create_task` for: result-only operations, parallelizable work, multi-part requests,\n verification, exploration\n- Parallel subagents for multiple operations, single subagents for independent work\n- Explore solutions in parallel — launch parallel subagents with different approaches (if non-interfering)\n- Provide all needed context — subagents cannot see your context\n- Use extension filters to limit resource access\n- Use return_last_only when only a summary or simple answer is required — inform subagent of this choice.\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic\n links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the\n language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1753704331,
|
||||
"created": 1760565473,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "tell me what the weather is in Berlin, Germany"
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
@@ -422,32 +150,88 @@
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Use this tool to create one or more dynamic tasks from a shared text instruction and varying parameters.How it works:\n - Provide a single text instruction\n - Use the 'task_parameters' field to pass an array of parameter sets\n - Each resulting task will use the same instruction with different parameter values\n This is useful when performing the same operation across many inputs (e.g., getting weather for multiple cities, searching multiple slack channels, iterating through various linear tickets, etc).\n Once created, these tasks should be passed to the 'subagent__execute_task' tool for execution. Tasks can run sequentially or in parallel.\n ---\n What is a 'subagent'?\n A 'subagent' is a stateless sub-process that executes a single task independently. Use subagents when:\n - You want to parallelize similar work across different inputs\n - You are not sure your search or operation will succeed on the first try\n Each subagent receives a task with a defined payload and returns a result, which is not visible to the user unless explicitly summarized by the system.\n ---\n Examples of 'task_parameters' for a single task:\n text_instruction: Search for the config file in the root directory.\n Examples of 'task_parameters' for multiple tasks:\n text_instruction: Get weather for Melbourne.\n text_instruction: Get weather for Los Angeles.\n text_instruction: Get weather for San Francisco.\n ",
|
||||
"description": "Create tasks with instructions or prompt. For simple tasks, only include the instructions field. Extensions control: omit field = use all current extensions; empty array [] = no extensions; array with names = only those extensions. Specify extensions as shortnames (the prefixes for your tools). Specify return_last_only as true and have your subagent summarize its work in its last message to conserve your own context. Optional: title, description, extensions, settings, retry, response schema, context, activities. Arrays for multiple tasks.",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"description": "How to execute multiple tasks (default: parallel for multiple tasks, sequential for single task)",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_parameters": {
|
||||
"description": "Array of parameter sets for creating tasks. For a single task, provide an array with one element. For multiple tasks, provide an array with multiple elements, each with different parameter values. If there is no parameter set, provide an empty array.",
|
||||
"description": "Array of tasks. Each task must have either 'instructions' OR 'prompt' field (at least one is required).",
|
||||
"items": {
|
||||
"properties": {
|
||||
"text_instruction": {
|
||||
"description": "The text instruction to execute",
|
||||
"activities": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"context": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"extensions": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"instructions": {
|
||||
"description": "Task instructions (required if prompt is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"parameters": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"prompt": {
|
||||
"description": "Initial prompt (required if instructions is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"response": {
|
||||
"type": "object"
|
||||
},
|
||||
"retry": {
|
||||
"type": "object"
|
||||
},
|
||||
"return_last_only": {
|
||||
"description": "If true, return only the last message from the subagent (default: false, returns full conversation)",
|
||||
"type": "boolean"
|
||||
},
|
||||
"settings": {
|
||||
"type": "object"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text_instruction"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_parameters"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Dynamic Task Creation",
|
||||
"title": "Create Dynamic Tasks",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
@@ -493,11 +277,11 @@
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704331,
|
||||
"created": 1760565474,
|
||||
"content": [
|
||||
{
|
||||
"type": "toolRequest",
|
||||
"id": "rnxgf8akg",
|
||||
"id": "04fqdf70k",
|
||||
"toolCall": {
|
||||
"status": "success",
|
||||
"value": {
|
||||
@@ -508,14 +292,366 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"model": "llama-3.3-70b-versatile",
|
||||
"usage": {
|
||||
"input_tokens": 2815,
|
||||
"input_tokens": 2698,
|
||||
"output_tokens": 20,
|
||||
"total_tokens": 2835
|
||||
"total_tokens": 2718
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"54bbc046e4ff83dd29df1fa575c6d39f6195a259106666dfefd1b10ed662bd45": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal.\ngoose is being developed as an open-source software project.\n\nThe current date is 2025-10-15 21:57:53.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o,\nclaude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10\nmonths prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and\ntools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level\nproblems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable\nextensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from\nthe search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n\n## weather_extension\n\n\n\n\n\n\n\n\n\n# Suggestion\n\n\"\"\n\n\n\n\n# sub agents\n\nExecute self contained tasks where step-by-step visibility is not important through subagents.\n\n- Delegate via `dynamic_task__create_task` for: result-only operations, parallelizable work, multi-part requests,\n verification, exploration\n- Parallel subagents for multiple operations, single subagents for independent work\n- Explore solutions in parallel — launch parallel subagents with different approaches (if non-interfering)\n- Provide all needed context — subagents cannot see your context\n- Use extension filters to limit resource access\n- Use return_last_only when only a summary or simple answer is required — inform subagent of this choice.\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic\n links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the\n language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1760565473,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "tell me what the weather is in Berlin, Germany"
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1760565474,
|
||||
"content": [
|
||||
{
|
||||
"type": "toolRequest",
|
||||
"id": "04fqdf70k",
|
||||
"toolCall": {
|
||||
"status": "success",
|
||||
"value": {
|
||||
"name": "weather_extension__get_weather",
|
||||
"arguments": {
|
||||
"location": "Berlin, Germany"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "msg_7256b4f2-18dd-4477-98b7-cde7102e8a46",
|
||||
"role": "user",
|
||||
"created": 1760565474,
|
||||
"content": [
|
||||
{
|
||||
"type": "toolResponse",
|
||||
"id": "04fqdf70k",
|
||||
"toolResult": {
|
||||
"status": "success",
|
||||
"value": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "The weather in Berlin, Germany is cloudy and 18°C"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
{
|
||||
"name": "weather_extension__get_weather",
|
||||
"description": "Get the weather for a location",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"location": {
|
||||
"description": "The city and state, e.g. San Francisco, CA",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"location"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__search_available_extensions",
|
||||
"description": "Searches for additional extensions available to help complete tasks.\n Use this tool when you're unable to find a specific feature or functionality you need to complete your task, or when standard approaches aren't working.\n These extensions might provide the exact tools needed to solve your problem.\n If you find a relevant one, consider using your tools to enable it.",
|
||||
"inputSchema": {
|
||||
"properties": {},
|
||||
"required": [],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Discover extensions",
|
||||
"readOnlyHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__manage_extensions",
|
||||
"description": "Tool to manage extensions and tools in goose context.\n Enable or disable extensions to help complete tasks.\n Enable or disable an extension by providing the extension name.\n ",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"description": "The action to perform",
|
||||
"enum": [
|
||||
"enable",
|
||||
"disable"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"extension_name": {
|
||||
"description": "The name of the extension to enable",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"action",
|
||||
"extension_name"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Enable or disable an extension",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__manage_schedule",
|
||||
"description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"enum": [
|
||||
"list",
|
||||
"create",
|
||||
"run_now",
|
||||
"pause",
|
||||
"unpause",
|
||||
"delete",
|
||||
"kill",
|
||||
"inspect",
|
||||
"sessions",
|
||||
"session_content"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"cron_expression": {
|
||||
"description": "A cron expression for create action. Supports both 5-field (minute hour day month weekday) and 6-field (second minute hour day month weekday) formats. 5-field expressions are automatically converted to 6-field by prepending '0' for seconds.",
|
||||
"type": "string"
|
||||
},
|
||||
"execution_mode": {
|
||||
"default": "background",
|
||||
"description": "Execution mode for create action: 'foreground' or 'background'",
|
||||
"enum": [
|
||||
"foreground",
|
||||
"background"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"job_id": {
|
||||
"description": "Job identifier for operations on existing jobs",
|
||||
"type": "string"
|
||||
},
|
||||
"limit": {
|
||||
"default": 50,
|
||||
"description": "Limit for sessions list",
|
||||
"type": "integer"
|
||||
},
|
||||
"recipe_path": {
|
||||
"description": "Path to recipe file for create action",
|
||||
"type": "string"
|
||||
},
|
||||
"session_id": {
|
||||
"description": "Session identifier for session_content action",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"action"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Manage scheduled recipes",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Create tasks with instructions or prompt. For simple tasks, only include the instructions field. Extensions control: omit field = use all current extensions; empty array [] = no extensions; array with names = only those extensions. Specify extensions as shortnames (the prefixes for your tools). Specify return_last_only as true and have your subagent summarize its work in its last message to conserve your own context. Optional: title, description, extensions, settings, retry, response schema, context, activities. Arrays for multiple tasks.",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"description": "How to execute multiple tasks (default: parallel for multiple tasks, sequential for single task)",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_parameters": {
|
||||
"description": "Array of tasks. Each task must have either 'instructions' OR 'prompt' field (at least one is required).",
|
||||
"items": {
|
||||
"properties": {
|
||||
"activities": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"context": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"extensions": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"instructions": {
|
||||
"description": "Task instructions (required if prompt is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"parameters": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"prompt": {
|
||||
"description": "Initial prompt (required if instructions is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"response": {
|
||||
"type": "object"
|
||||
},
|
||||
"retry": {
|
||||
"type": "object"
|
||||
},
|
||||
"return_last_only": {
|
||||
"description": "If true, return only the last message from the subagent (default: false, returns full conversation)",
|
||||
"type": "boolean"
|
||||
},
|
||||
"settings": {
|
||||
"type": "object"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_parameters"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Create Dynamic Tasks",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "subagent__execute_task",
|
||||
"description": "Only use the subagent__execute_task tool when you execute sub recipe task or dynamic task.\n EXECUTION STRATEGY DECISION:\n 1. If the tasks are created with execution_mode, use the execution_mode.\n 2. Execute tasks sequentially unless user explicitly requests parallel execution. PARALLEL: User uses keywords like 'parallel', 'simultaneously', 'at the same time', 'concurrently'\n\n IMPLEMENTATION:\n - Sequential execution: Call this tool multiple times, passing exactly ONE task per call\n - Parallel execution: Call this tool once, passing an ARRAY of all tasks\n\n EXAMPLES:\n User Intent Based:\n - User: 'get weather and tell me a joke' → Sequential (2 separate tool calls, 1 task each)\n - User: 'get weather and joke in parallel' → Parallel (1 tool call with array of 2 tasks)\n - User: 'run these simultaneously' → Parallel (1 tool call with task array)\n - User: 'do task A then task B' → Sequential (2 separate tool calls)",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"default": "sequential",
|
||||
"description": "Execution strategy for multiple tasks. Use 'sequential' (default) unless user explicitly requests parallel execution with words like 'parallel', 'simultaneously', 'at the same time', or 'concurrently'.",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_ids": {
|
||||
"items": {
|
||||
"description": "Unique identifier for the task",
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_ids"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Run tasks in parallel",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"output": {
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1760565474,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "The weather in Berlin, Germany is cloudy and 18°C."
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"model": "llama-3.3-70b-versatile",
|
||||
"usage": {
|
||||
"input_tokens": 2739,
|
||||
"output_tokens": 14,
|
||||
"total_tokens": 2753
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,22 @@
|
||||
{
|
||||
"1b998117eba523901ae6a4dbf8caa81a95ea88ef7a84d0434c9b41a26164a2b9": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:29.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal.\ngoose is being developed as an open-source software project.\n\nThe current date is 2025-10-15 21:57:50.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o,\nclaude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10\nmonths prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and\ntools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level\nproblems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable\nextensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from\nthe search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n\n## weather_extension\n\n\n\n\n\n\n\n\n\n# Suggestion\n\n\"\"\n\n\n\n\n# sub agents\n\nExecute self contained tasks where step-by-step visibility is not important through subagents.\n\n- Delegate via `dynamic_task__create_task` for: result-only operations, parallelizable work, multi-part requests,\n verification, exploration\n- Parallel subagents for multiple operations, single subagents for independent work\n- Explore solutions in parallel — launch parallel subagents with different approaches (if non-interfering)\n- Provide all needed context — subagents cannot see your context\n- Use extension filters to limit resource access\n- Use return_last_only when only a summary or simple answer is required — inform subagent of this choice.\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic\n links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the\n language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1753704329,
|
||||
"created": 1760565470,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "what is your name"
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
@@ -146,32 +150,88 @@
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Use this tool to create one or more dynamic tasks from a shared text instruction and varying parameters.How it works:\n - Provide a single text instruction\n - Use the 'task_parameters' field to pass an array of parameter sets\n - Each resulting task will use the same instruction with different parameter values\n This is useful when performing the same operation across many inputs (e.g., getting weather for multiple cities, searching multiple slack channels, iterating through various linear tickets, etc).\n Once created, these tasks should be passed to the 'subagent__execute_task' tool for execution. Tasks can run sequentially or in parallel.\n ---\n What is a 'subagent'?\n A 'subagent' is a stateless sub-process that executes a single task independently. Use subagents when:\n - You want to parallelize similar work across different inputs\n - You are not sure your search or operation will succeed on the first try\n Each subagent receives a task with a defined payload and returns a result, which is not visible to the user unless explicitly summarized by the system.\n ---\n Examples of 'task_parameters' for a single task:\n text_instruction: Search for the config file in the root directory.\n Examples of 'task_parameters' for multiple tasks:\n text_instruction: Get weather for Melbourne.\n text_instruction: Get weather for Los Angeles.\n text_instruction: Get weather for San Francisco.\n ",
|
||||
"description": "Create tasks with instructions or prompt. For simple tasks, only include the instructions field. Extensions control: omit field = use all current extensions; empty array [] = no extensions; array with names = only those extensions. Specify extensions as shortnames (the prefixes for your tools). Specify return_last_only as true and have your subagent summarize its work in its last message to conserve your own context. Optional: title, description, extensions, settings, retry, response schema, context, activities. Arrays for multiple tasks.",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"description": "How to execute multiple tasks (default: parallel for multiple tasks, sequential for single task)",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_parameters": {
|
||||
"description": "Array of parameter sets for creating tasks. For a single task, provide an array with one element. For multiple tasks, provide an array with multiple elements, each with different parameter values. If there is no parameter set, provide an empty array.",
|
||||
"description": "Array of tasks. Each task must have either 'instructions' OR 'prompt' field (at least one is required).",
|
||||
"items": {
|
||||
"properties": {
|
||||
"text_instruction": {
|
||||
"description": "The text instruction to execute",
|
||||
"activities": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"context": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"extensions": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"instructions": {
|
||||
"description": "Task instructions (required if prompt is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"parameters": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"prompt": {
|
||||
"description": "Initial prompt (required if instructions is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"response": {
|
||||
"type": "object"
|
||||
},
|
||||
"retry": {
|
||||
"type": "object"
|
||||
},
|
||||
"return_last_only": {
|
||||
"description": "If true, return only the last message from the subagent (default: false, returns full conversation)",
|
||||
"type": "boolean"
|
||||
},
|
||||
"settings": {
|
||||
"type": "object"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text_instruction"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_parameters"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Dynamic Task Creation",
|
||||
"title": "Create Dynamic Tasks",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
@@ -217,20 +277,24 @@
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704329,
|
||||
"created": 1760565471,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "My name is goose, and I am a general-purpose AI agent developed by Block, the parent company of Square, CashApp, and Tidal."
|
||||
"text": "My name is **goose**. I am a general-purpose AI agent created by Block, the parent company of Square, CashApp, and Tidal."
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"model": "llama-3.3-70b-versatile",
|
||||
"usage": {
|
||||
"input_tokens": 2809,
|
||||
"output_tokens": 31,
|
||||
"total_tokens": 2840
|
||||
"input_tokens": 2692,
|
||||
"output_tokens": 33,
|
||||
"total_tokens": 2725
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,294 +1,22 @@
|
||||
{
|
||||
"e546a32d4a2c9d41338b6725f317c4d4f462ce7cc04c79f3f24dd47a1a32a795": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:24.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1753704324,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "tell me what the weather is in Berlin, Germany"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704326,
|
||||
"content": [
|
||||
{
|
||||
"type": "toolRequest",
|
||||
"id": "call_5hvVKt0aj0RGRmrKEZECeJKV",
|
||||
"toolCall": {
|
||||
"status": "success",
|
||||
"value": {
|
||||
"name": "weather_extension__get_weather",
|
||||
"arguments": {
|
||||
"location": "Berlin, Germany"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1753704326,
|
||||
"content": [
|
||||
{
|
||||
"type": "toolResponse",
|
||||
"id": "call_5hvVKt0aj0RGRmrKEZECeJKV",
|
||||
"toolResult": {
|
||||
"status": "success",
|
||||
"value": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "The weather in Berlin, Germany is cloudy and 18°C"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
{
|
||||
"name": "weather_extension__get_weather",
|
||||
"description": "Get the weather for a location",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"location": {
|
||||
"description": "The city and state, e.g. San Francisco, CA",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"location"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__search_available_extensions",
|
||||
"description": "Searches for additional extensions available to help complete tasks.\n Use this tool when you're unable to find a specific feature or functionality you need to complete your task, or when standard approaches aren't working.\n These extensions might provide the exact tools needed to solve your problem.\n If you find a relevant one, consider using your tools to enable it.",
|
||||
"inputSchema": {
|
||||
"properties": {},
|
||||
"required": [],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Discover extensions",
|
||||
"readOnlyHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__manage_extensions",
|
||||
"description": "Tool to manage extensions and tools in goose context.\n Enable or disable extensions to help complete tasks.\n Enable or disable an extension by providing the extension name.\n ",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"description": "The action to perform",
|
||||
"enum": [
|
||||
"enable",
|
||||
"disable"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"extension_name": {
|
||||
"description": "The name of the extension to enable",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"action",
|
||||
"extension_name"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Enable or disable an extension",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__manage_schedule",
|
||||
"description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"enum": [
|
||||
"list",
|
||||
"create",
|
||||
"run_now",
|
||||
"pause",
|
||||
"unpause",
|
||||
"delete",
|
||||
"kill",
|
||||
"inspect",
|
||||
"sessions",
|
||||
"session_content"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"cron_expression": {
|
||||
"description": "A cron expression for create action. Supports both 5-field (minute hour day month weekday) and 6-field (second minute hour day month weekday) formats. 5-field expressions are automatically converted to 6-field by prepending '0' for seconds.",
|
||||
"type": "string"
|
||||
},
|
||||
"execution_mode": {
|
||||
"default": "background",
|
||||
"description": "Execution mode for create action: 'foreground' or 'background'",
|
||||
"enum": [
|
||||
"foreground",
|
||||
"background"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"job_id": {
|
||||
"description": "Job identifier for operations on existing jobs",
|
||||
"type": "string"
|
||||
},
|
||||
"limit": {
|
||||
"default": 50,
|
||||
"description": "Limit for sessions list",
|
||||
"type": "integer"
|
||||
},
|
||||
"recipe_path": {
|
||||
"description": "Path to recipe file for create action",
|
||||
"type": "string"
|
||||
},
|
||||
"session_id": {
|
||||
"description": "Session identifier for session_content action",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"action"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Manage scheduled recipes",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Use this tool to create one or more dynamic tasks from a shared text instruction and varying parameters.How it works:\n - Provide a single text instruction\n - Use the 'task_parameters' field to pass an array of parameter sets\n - Each resulting task will use the same instruction with different parameter values\n This is useful when performing the same operation across many inputs (e.g., getting weather for multiple cities, searching multiple slack channels, iterating through various linear tickets, etc).\n Once created, these tasks should be passed to the 'subagent__execute_task' tool for execution. Tasks can run sequentially or in parallel.\n ---\n What is a 'subagent'?\n A 'subagent' is a stateless sub-process that executes a single task independently. Use subagents when:\n - You want to parallelize similar work across different inputs\n - You are not sure your search or operation will succeed on the first try\n Each subagent receives a task with a defined payload and returns a result, which is not visible to the user unless explicitly summarized by the system.\n ---\n Examples of 'task_parameters' for a single task:\n text_instruction: Search for the config file in the root directory.\n Examples of 'task_parameters' for multiple tasks:\n text_instruction: Get weather for Melbourne.\n text_instruction: Get weather for Los Angeles.\n text_instruction: Get weather for San Francisco.\n ",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"task_parameters": {
|
||||
"description": "Array of parameter sets for creating tasks. For a single task, provide an array with one element. For multiple tasks, provide an array with multiple elements, each with different parameter values. If there is no parameter set, provide an empty array.",
|
||||
"items": {
|
||||
"properties": {
|
||||
"text_instruction": {
|
||||
"description": "The text instruction to execute",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text_instruction"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Dynamic Task Creation",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "subagent__execute_task",
|
||||
"description": "Only use the subagent__execute_task tool when you execute sub recipe task or dynamic task.\n EXECUTION STRATEGY DECISION:\n 1. If the tasks are created with execution_mode, use the execution_mode.\n 2. Execute tasks sequentially unless user explicitly requests parallel execution. PARALLEL: User uses keywords like 'parallel', 'simultaneously', 'at the same time', 'concurrently'\n\n IMPLEMENTATION:\n - Sequential execution: Call this tool multiple times, passing exactly ONE task per call\n - Parallel execution: Call this tool once, passing an ARRAY of all tasks\n\n EXAMPLES:\n User Intent Based:\n - User: 'get weather and tell me a joke' → Sequential (2 separate tool calls, 1 task each)\n - User: 'get weather and joke in parallel' → Parallel (1 tool call with array of 2 tasks)\n - User: 'run these simultaneously' → Parallel (1 tool call with task array)\n - User: 'do task A then task B' → Sequential (2 separate tool calls)",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"default": "sequential",
|
||||
"description": "Execution strategy for multiple tasks. Use 'sequential' (default) unless user explicitly requests parallel execution with words like 'parallel', 'simultaneously', 'at the same time', or 'concurrently'.",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_ids": {
|
||||
"items": {
|
||||
"description": "Unique identifier for the task",
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_ids"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Run tasks in parallel",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"output": {
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704328,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "The weather in Berlin, Germany is currently cloudy with a temperature of 18°C."
|
||||
}
|
||||
]
|
||||
},
|
||||
"usage": {
|
||||
"model": "gpt-4o-2024-08-06",
|
||||
"usage": {
|
||||
"input_tokens": 1722,
|
||||
"output_tokens": 18,
|
||||
"total_tokens": 1740
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"1bc400a528c54b25f4f1f609481e98e44222b3deaf7eee2c9e640e6345c73861": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:24.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal.\ngoose is being developed as an open-source software project.\n\nThe current date is 2025-10-15 21:57:42.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o,\nclaude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10\nmonths prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and\ntools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level\nproblems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable\nextensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from\nthe search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n\n## weather_extension\n\n\n\n\n\n\n\n\n\n# Suggestion\n\n\"\"\n\n\n\n\n# sub agents\n\nExecute self contained tasks where step-by-step visibility is not important through subagents.\n\n- Delegate via `dynamic_task__create_task` for: result-only operations, parallelizable work, multi-part requests,\n verification, exploration\n- Parallel subagents for multiple operations, single subagents for independent work\n- Explore solutions in parallel — launch parallel subagents with different approaches (if non-interfering)\n- Provide all needed context — subagents cannot see your context\n- Use extension filters to limit resource access\n- Use return_last_only when only a summary or simple answer is required — inform subagent of this choice.\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic\n links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the\n language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1753704324,
|
||||
"created": 1760565462,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "tell me what the weather is in Berlin, Germany"
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
@@ -422,32 +150,88 @@
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Use this tool to create one or more dynamic tasks from a shared text instruction and varying parameters.How it works:\n - Provide a single text instruction\n - Use the 'task_parameters' field to pass an array of parameter sets\n - Each resulting task will use the same instruction with different parameter values\n This is useful when performing the same operation across many inputs (e.g., getting weather for multiple cities, searching multiple slack channels, iterating through various linear tickets, etc).\n Once created, these tasks should be passed to the 'subagent__execute_task' tool for execution. Tasks can run sequentially or in parallel.\n ---\n What is a 'subagent'?\n A 'subagent' is a stateless sub-process that executes a single task independently. Use subagents when:\n - You want to parallelize similar work across different inputs\n - You are not sure your search or operation will succeed on the first try\n Each subagent receives a task with a defined payload and returns a result, which is not visible to the user unless explicitly summarized by the system.\n ---\n Examples of 'task_parameters' for a single task:\n text_instruction: Search for the config file in the root directory.\n Examples of 'task_parameters' for multiple tasks:\n text_instruction: Get weather for Melbourne.\n text_instruction: Get weather for Los Angeles.\n text_instruction: Get weather for San Francisco.\n ",
|
||||
"description": "Create tasks with instructions or prompt. For simple tasks, only include the instructions field. Extensions control: omit field = use all current extensions; empty array [] = no extensions; array with names = only those extensions. Specify extensions as shortnames (the prefixes for your tools). Specify return_last_only as true and have your subagent summarize its work in its last message to conserve your own context. Optional: title, description, extensions, settings, retry, response schema, context, activities. Arrays for multiple tasks.",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"description": "How to execute multiple tasks (default: parallel for multiple tasks, sequential for single task)",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_parameters": {
|
||||
"description": "Array of parameter sets for creating tasks. For a single task, provide an array with one element. For multiple tasks, provide an array with multiple elements, each with different parameter values. If there is no parameter set, provide an empty array.",
|
||||
"description": "Array of tasks. Each task must have either 'instructions' OR 'prompt' field (at least one is required).",
|
||||
"items": {
|
||||
"properties": {
|
||||
"text_instruction": {
|
||||
"description": "The text instruction to execute",
|
||||
"activities": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"context": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"extensions": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"instructions": {
|
||||
"description": "Task instructions (required if prompt is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"parameters": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"prompt": {
|
||||
"description": "Initial prompt (required if instructions is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"response": {
|
||||
"type": "object"
|
||||
},
|
||||
"retry": {
|
||||
"type": "object"
|
||||
},
|
||||
"return_last_only": {
|
||||
"description": "If true, return only the last message from the subagent (default: false, returns full conversation)",
|
||||
"type": "boolean"
|
||||
},
|
||||
"settings": {
|
||||
"type": "object"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text_instruction"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_parameters"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Dynamic Task Creation",
|
||||
"title": "Create Dynamic Tasks",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
@@ -493,11 +277,11 @@
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704326,
|
||||
"created": 1760565463,
|
||||
"content": [
|
||||
{
|
||||
"type": "toolRequest",
|
||||
"id": "call_5hvVKt0aj0RGRmrKEZECeJKV",
|
||||
"id": "call_NSF9KSX2tCz8i8qb41WU6GHT",
|
||||
"toolCall": {
|
||||
"status": "success",
|
||||
"value": {
|
||||
@@ -508,14 +292,366 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"model": "gpt-4o-2024-08-06",
|
||||
"usage": {
|
||||
"input_tokens": 1680,
|
||||
"input_tokens": 1708,
|
||||
"output_tokens": 19,
|
||||
"total_tokens": 1699
|
||||
"total_tokens": 1727
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"4166a5a4297f1a6c903edc1c3232d12e2503190a3d4f98486d1a61d721bb0952": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal.\ngoose is being developed as an open-source software project.\n\nThe current date is 2025-10-15 21:57:42.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o,\nclaude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10\nmonths prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and\ntools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level\nproblems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable\nextensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from\nthe search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n\n## weather_extension\n\n\n\n\n\n\n\n\n\n# Suggestion\n\n\"\"\n\n\n\n\n# sub agents\n\nExecute self contained tasks where step-by-step visibility is not important through subagents.\n\n- Delegate via `dynamic_task__create_task` for: result-only operations, parallelizable work, multi-part requests,\n verification, exploration\n- Parallel subagents for multiple operations, single subagents for independent work\n- Explore solutions in parallel — launch parallel subagents with different approaches (if non-interfering)\n- Provide all needed context — subagents cannot see your context\n- Use extension filters to limit resource access\n- Use return_last_only when only a summary or simple answer is required — inform subagent of this choice.\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic\n links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the\n language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1760565462,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "tell me what the weather is in Berlin, Germany"
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1760565463,
|
||||
"content": [
|
||||
{
|
||||
"type": "toolRequest",
|
||||
"id": "call_NSF9KSX2tCz8i8qb41WU6GHT",
|
||||
"toolCall": {
|
||||
"status": "success",
|
||||
"value": {
|
||||
"name": "weather_extension__get_weather",
|
||||
"arguments": {
|
||||
"location": "Berlin, Germany"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "msg_926cf617-03cf-4027-ab42-d9bf44831517",
|
||||
"role": "user",
|
||||
"created": 1760565463,
|
||||
"content": [
|
||||
{
|
||||
"type": "toolResponse",
|
||||
"id": "call_NSF9KSX2tCz8i8qb41WU6GHT",
|
||||
"toolResult": {
|
||||
"status": "success",
|
||||
"value": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "The weather in Berlin, Germany is cloudy and 18°C"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
{
|
||||
"name": "weather_extension__get_weather",
|
||||
"description": "Get the weather for a location",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"location": {
|
||||
"description": "The city and state, e.g. San Francisco, CA",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"location"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__search_available_extensions",
|
||||
"description": "Searches for additional extensions available to help complete tasks.\n Use this tool when you're unable to find a specific feature or functionality you need to complete your task, or when standard approaches aren't working.\n These extensions might provide the exact tools needed to solve your problem.\n If you find a relevant one, consider using your tools to enable it.",
|
||||
"inputSchema": {
|
||||
"properties": {},
|
||||
"required": [],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Discover extensions",
|
||||
"readOnlyHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__manage_extensions",
|
||||
"description": "Tool to manage extensions and tools in goose context.\n Enable or disable extensions to help complete tasks.\n Enable or disable an extension by providing the extension name.\n ",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"description": "The action to perform",
|
||||
"enum": [
|
||||
"enable",
|
||||
"disable"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"extension_name": {
|
||||
"description": "The name of the extension to enable",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"action",
|
||||
"extension_name"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Enable or disable an extension",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "platform__manage_schedule",
|
||||
"description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"enum": [
|
||||
"list",
|
||||
"create",
|
||||
"run_now",
|
||||
"pause",
|
||||
"unpause",
|
||||
"delete",
|
||||
"kill",
|
||||
"inspect",
|
||||
"sessions",
|
||||
"session_content"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"cron_expression": {
|
||||
"description": "A cron expression for create action. Supports both 5-field (minute hour day month weekday) and 6-field (second minute hour day month weekday) formats. 5-field expressions are automatically converted to 6-field by prepending '0' for seconds.",
|
||||
"type": "string"
|
||||
},
|
||||
"execution_mode": {
|
||||
"default": "background",
|
||||
"description": "Execution mode for create action: 'foreground' or 'background'",
|
||||
"enum": [
|
||||
"foreground",
|
||||
"background"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"job_id": {
|
||||
"description": "Job identifier for operations on existing jobs",
|
||||
"type": "string"
|
||||
},
|
||||
"limit": {
|
||||
"default": 50,
|
||||
"description": "Limit for sessions list",
|
||||
"type": "integer"
|
||||
},
|
||||
"recipe_path": {
|
||||
"description": "Path to recipe file for create action",
|
||||
"type": "string"
|
||||
},
|
||||
"session_id": {
|
||||
"description": "Session identifier for session_content action",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"action"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Manage scheduled recipes",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Create tasks with instructions or prompt. For simple tasks, only include the instructions field. Extensions control: omit field = use all current extensions; empty array [] = no extensions; array with names = only those extensions. Specify extensions as shortnames (the prefixes for your tools). Specify return_last_only as true and have your subagent summarize its work in its last message to conserve your own context. Optional: title, description, extensions, settings, retry, response schema, context, activities. Arrays for multiple tasks.",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"description": "How to execute multiple tasks (default: parallel for multiple tasks, sequential for single task)",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_parameters": {
|
||||
"description": "Array of tasks. Each task must have either 'instructions' OR 'prompt' field (at least one is required).",
|
||||
"items": {
|
||||
"properties": {
|
||||
"activities": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"context": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"extensions": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"instructions": {
|
||||
"description": "Task instructions (required if prompt is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"parameters": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"prompt": {
|
||||
"description": "Initial prompt (required if instructions is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"response": {
|
||||
"type": "object"
|
||||
},
|
||||
"retry": {
|
||||
"type": "object"
|
||||
},
|
||||
"return_last_only": {
|
||||
"description": "If true, return only the last message from the subagent (default: false, returns full conversation)",
|
||||
"type": "boolean"
|
||||
},
|
||||
"settings": {
|
||||
"type": "object"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_parameters"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Create Dynamic Tasks",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "subagent__execute_task",
|
||||
"description": "Only use the subagent__execute_task tool when you execute sub recipe task or dynamic task.\n EXECUTION STRATEGY DECISION:\n 1. If the tasks are created with execution_mode, use the execution_mode.\n 2. Execute tasks sequentially unless user explicitly requests parallel execution. PARALLEL: User uses keywords like 'parallel', 'simultaneously', 'at the same time', 'concurrently'\n\n IMPLEMENTATION:\n - Sequential execution: Call this tool multiple times, passing exactly ONE task per call\n - Parallel execution: Call this tool once, passing an ARRAY of all tasks\n\n EXAMPLES:\n User Intent Based:\n - User: 'get weather and tell me a joke' → Sequential (2 separate tool calls, 1 task each)\n - User: 'get weather and joke in parallel' → Parallel (1 tool call with array of 2 tasks)\n - User: 'run these simultaneously' → Parallel (1 tool call with task array)\n - User: 'do task A then task B' → Sequential (2 separate tool calls)",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"default": "sequential",
|
||||
"description": "Execution strategy for multiple tasks. Use 'sequential' (default) unless user explicitly requests parallel execution with words like 'parallel', 'simultaneously', 'at the same time', or 'concurrently'.",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_ids": {
|
||||
"items": {
|
||||
"description": "Unique identifier for the task",
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_ids"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Run tasks in parallel",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"output": {
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1760565465,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "The current weather in Berlin, Germany is cloudy with a temperature of 18°C."
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"model": "gpt-4o-2024-08-06",
|
||||
"usage": {
|
||||
"input_tokens": 1750,
|
||||
"output_tokens": 18,
|
||||
"total_tokens": 1768
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,22 @@
|
||||
{
|
||||
"1b998117eba523901ae6a4dbf8caa81a95ea88ef7a84d0434c9b41a26164a2b9": {
|
||||
"input": {
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:24.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal.\ngoose is being developed as an open-source software project.\n\nThe current date is 2025-10-15 21:57:42.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o,\nclaude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10\nmonths prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and\ntools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level\nproblems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable\nextensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from\nthe search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n\n## weather_extension\n\n\n\n\n\n\n\n\n\n# Suggestion\n\n\"\"\n\n\n\n\n# sub agents\n\nExecute self contained tasks where step-by-step visibility is not important through subagents.\n\n- Delegate via `dynamic_task__create_task` for: result-only operations, parallelizable work, multi-part requests,\n verification, exploration\n- Parallel subagents for multiple operations, single subagents for independent work\n- Explore solutions in parallel — launch parallel subagents with different approaches (if non-interfering)\n- Provide all needed context — subagents cannot see your context\n- Use extension filters to limit resource access\n- Use return_last_only when only a summary or simple answer is required — inform subagent of this choice.\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic\n links using angle brackets (e.g., <http://example.com/>).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the\n language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.",
|
||||
"messages": [
|
||||
{
|
||||
"id": null,
|
||||
"role": "user",
|
||||
"created": 1753704324,
|
||||
"created": 1760565462,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "what is your name"
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
@@ -146,32 +150,88 @@
|
||||
},
|
||||
{
|
||||
"name": "dynamic_task__create_task",
|
||||
"description": "Use this tool to create one or more dynamic tasks from a shared text instruction and varying parameters.How it works:\n - Provide a single text instruction\n - Use the 'task_parameters' field to pass an array of parameter sets\n - Each resulting task will use the same instruction with different parameter values\n This is useful when performing the same operation across many inputs (e.g., getting weather for multiple cities, searching multiple slack channels, iterating through various linear tickets, etc).\n Once created, these tasks should be passed to the 'subagent__execute_task' tool for execution. Tasks can run sequentially or in parallel.\n ---\n What is a 'subagent'?\n A 'subagent' is a stateless sub-process that executes a single task independently. Use subagents when:\n - You want to parallelize similar work across different inputs\n - You are not sure your search or operation will succeed on the first try\n Each subagent receives a task with a defined payload and returns a result, which is not visible to the user unless explicitly summarized by the system.\n ---\n Examples of 'task_parameters' for a single task:\n text_instruction: Search for the config file in the root directory.\n Examples of 'task_parameters' for multiple tasks:\n text_instruction: Get weather for Melbourne.\n text_instruction: Get weather for Los Angeles.\n text_instruction: Get weather for San Francisco.\n ",
|
||||
"description": "Create tasks with instructions or prompt. For simple tasks, only include the instructions field. Extensions control: omit field = use all current extensions; empty array [] = no extensions; array with names = only those extensions. Specify extensions as shortnames (the prefixes for your tools). Specify return_last_only as true and have your subagent summarize its work in its last message to conserve your own context. Optional: title, description, extensions, settings, retry, response schema, context, activities. Arrays for multiple tasks.",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"execution_mode": {
|
||||
"description": "How to execute multiple tasks (default: parallel for multiple tasks, sequential for single task)",
|
||||
"enum": [
|
||||
"sequential",
|
||||
"parallel"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"task_parameters": {
|
||||
"description": "Array of parameter sets for creating tasks. For a single task, provide an array with one element. For multiple tasks, provide an array with multiple elements, each with different parameter values. If there is no parameter set, provide an empty array.",
|
||||
"description": "Array of tasks. Each task must have either 'instructions' OR 'prompt' field (at least one is required).",
|
||||
"items": {
|
||||
"properties": {
|
||||
"text_instruction": {
|
||||
"description": "The text instruction to execute",
|
||||
"activities": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"context": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"extensions": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"instructions": {
|
||||
"description": "Task instructions (required if prompt is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"parameters": {
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"prompt": {
|
||||
"description": "Initial prompt (required if instructions is not provided)",
|
||||
"type": "string"
|
||||
},
|
||||
"response": {
|
||||
"type": "object"
|
||||
},
|
||||
"retry": {
|
||||
"type": "object"
|
||||
},
|
||||
"return_last_only": {
|
||||
"description": "If true, return only the last message from the subagent (default: false, returns full conversation)",
|
||||
"type": "boolean"
|
||||
},
|
||||
"settings": {
|
||||
"type": "object"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text_instruction"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task_parameters"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"title": "Dynamic Task Creation",
|
||||
"title": "Create Dynamic Tasks",
|
||||
"readOnlyHint": false,
|
||||
"destructiveHint": true,
|
||||
"destructiveHint": false,
|
||||
"idempotentHint": false,
|
||||
"openWorldHint": true
|
||||
}
|
||||
@@ -217,20 +277,24 @@
|
||||
"message": {
|
||||
"id": null,
|
||||
"role": "assistant",
|
||||
"created": 1753704325,
|
||||
"created": 1760565463,
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "My name is goose. I'm an AI agent developed by Block, the parent company of Square, Cash App, and Tidal. How can I assist you today?"
|
||||
"text": "My name is goose. I'm an AI agent developed by Block, the parent company of Square, CashApp, and Tidal. How can I assist you today?"
|
||||
}
|
||||
]
|
||||
],
|
||||
"metadata": {
|
||||
"userVisible": true,
|
||||
"agentVisible": true
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"model": "gpt-4o-2024-08-06",
|
||||
"usage": {
|
||||
"input_tokens": 1674,
|
||||
"input_tokens": 1702,
|
||||
"output_tokens": 34,
|
||||
"total_tokens": 1708
|
||||
"total_tokens": 1736
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ mod tests {
|
||||
use crate::scenario_tests::mock_client::WEATHER_TYPE;
|
||||
use crate::scenario_tests::scenario_runner::run_scenario;
|
||||
use anyhow::Result;
|
||||
use goose::conversation::message::Message;
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_what_is_your_name() -> Result<()> {
|
||||
@@ -76,30 +75,24 @@ mod tests {
|
||||
.await
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_context_length_exceeded_error() -> Result<()> {
|
||||
run_scenario(
|
||||
"context_length_exceeded",
|
||||
Box::new(|provider| {
|
||||
let model_config = provider.get_model_config();
|
||||
let context_length = model_config.context_limit.unwrap_or(300_000);
|
||||
// "hello " is only one token in most models, since the hello and space often
|
||||
// occur together in the training data.
|
||||
let large_message = "hello ".repeat(context_length + 100);
|
||||
Message::user().with_text(&large_message)
|
||||
}),
|
||||
Some(&["OpenAI"]),
|
||||
|result| {
|
||||
// this is unfortunate; we don't seem to actually catch the errors in this path,
|
||||
// but instead eat it:
|
||||
assert_eq!(
|
||||
result.messages.len(),
|
||||
0,
|
||||
"Expected no messages due to compaction"
|
||||
);
|
||||
Ok(())
|
||||
},
|
||||
)
|
||||
.await
|
||||
}
|
||||
// #[tokio::test]
|
||||
// async fn test_context_length_exceeded_error() -> Result<()> {
|
||||
// run_scenario(
|
||||
// "context_length_exceeded",
|
||||
// Box::new(|provider| {
|
||||
// let model_config = provider.get_model_config();
|
||||
// let context_length = model_config.context_limit.unwrap_or(300_000);
|
||||
// // "hello " is only one token in most models, since the hello and space often
|
||||
// // occur together in the training data.
|
||||
// let large_message = "hello ".repeat(context_length + 100);
|
||||
// Message::user().with_text(&large_message)
|
||||
// }),
|
||||
// Some(&["OpenAI"]),
|
||||
// |result| {
|
||||
// assert_eq!(result.messages.len(), 2, "One message after compaction");
|
||||
// Ok(())
|
||||
// },
|
||||
// )
|
||||
// .await
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -369,7 +369,7 @@ pub fn message_to_markdown(message: &Message, export_all_content: bool) -> Strin
|
||||
md.push_str("**Thinking:**\n");
|
||||
md.push_str("> *Thinking was redacted*\n\n");
|
||||
}
|
||||
MessageContent::SummarizationRequested(summarization) => {
|
||||
MessageContent::ConversationCompacted(summarization) => {
|
||||
md.push_str(&format!("*{}*\n\n", summarization.msg));
|
||||
}
|
||||
_ => {
|
||||
|
||||
@@ -47,6 +47,7 @@ use std::sync::Arc;
|
||||
use std::time::Instant;
|
||||
use tokio;
|
||||
use tokio_util::sync::CancellationToken;
|
||||
use tracing::warn;
|
||||
|
||||
pub enum RunMode {
|
||||
Normal,
|
||||
@@ -158,19 +159,6 @@ impl CliSession {
|
||||
self.session_id.as_ref()
|
||||
}
|
||||
|
||||
async fn summarize_context_messages(
|
||||
messages: &mut Conversation,
|
||||
agent: &Agent,
|
||||
message_suffix: &str,
|
||||
) -> Result<()> {
|
||||
let (summarized_messages, _, _) = agent.summarize_context(messages.messages()).await?;
|
||||
let msg = format!("Context maxed out\n{}\n{}", "-".repeat(50), message_suffix);
|
||||
output::render_text(&msg, Some(Color::Yellow), true);
|
||||
*messages = summarized_messages;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Add a stdio extension to the session
|
||||
///
|
||||
/// # Arguments
|
||||
@@ -674,10 +662,24 @@ impl CliSession {
|
||||
// Get the provider for summarization
|
||||
let _provider = self.agent.provider().await?;
|
||||
|
||||
// Get session metadata if available
|
||||
let session_metadata_for_compact =
|
||||
if let Some(ref session_id) = self.session_id {
|
||||
SessionManager::get_session(session_id, false).await.ok()
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
// Call the summarize_context method
|
||||
let (summarized_messages, _token_counts, summarization_usage) = self
|
||||
.agent
|
||||
.summarize_context(self.messages.messages())
|
||||
let (_, summarized_messages, _token_counts, summarization_usage) =
|
||||
goose::context_mgmt::check_and_compact_messages(
|
||||
&self.agent,
|
||||
self.messages.messages(),
|
||||
true,
|
||||
false,
|
||||
None,
|
||||
session_metadata_for_compact.as_ref(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
// Update the session messages with the summarized ones
|
||||
@@ -937,84 +939,7 @@ impl CliSession {
|
||||
permission,
|
||||
},).await;
|
||||
}
|
||||
} else if let Some(MessageContent::ContextLengthExceeded(_)) = message.content.first() {
|
||||
output::hide_thinking();
|
||||
|
||||
// Check for user-configured default context strategy
|
||||
let config = Config::global();
|
||||
let context_strategy = config.get_param::<String>("GOOSE_CONTEXT_STRATEGY")
|
||||
.unwrap_or_else(|_| if interactive { "prompt".to_string() } else { "summarize".to_string() });
|
||||
|
||||
let selected = match context_strategy.as_str() {
|
||||
"clear" => "clear",
|
||||
"truncate" => "truncate",
|
||||
"summarize" => "summarize",
|
||||
_ => {
|
||||
if interactive {
|
||||
// In interactive mode with no default, ask the user what to do
|
||||
let prompt = "The model's context length is maxed out. You will need to reduce the # msgs. Do you want to?".to_string();
|
||||
cliclack::select(prompt)
|
||||
.item("clear", "Clear Session", "Removes all messages from Goose's memory")
|
||||
.item("truncate", "Truncate Messages", "Removes old messages till context is within limits")
|
||||
.item("summarize", "Summarize Session", "Summarize the session to reduce context length")
|
||||
.interact()?
|
||||
} else {
|
||||
// In headless mode, default to summarize
|
||||
"summarize"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
match selected {
|
||||
"clear" => {
|
||||
self.messages.clear();
|
||||
let msg = if context_strategy == "clear" {
|
||||
format!("Context maxed out - automatically cleared session.\n{}", "-".repeat(50))
|
||||
} else {
|
||||
format!("Session cleared.\n{}", "-".repeat(50))
|
||||
};
|
||||
output::render_text(&msg, Some(Color::Yellow), true);
|
||||
break; // exit the loop to hand back control to the user
|
||||
}
|
||||
"truncate" => {
|
||||
// Truncate messages to fit within context length
|
||||
let (truncated_messages, _) = self.agent.truncate_context(self.messages.messages()).await?;
|
||||
let msg = if context_strategy == "truncate" {
|
||||
format!("Context maxed out - automatically truncated messages.\n{}\nGoose tried its best to truncate messages for you.", "-".repeat(50))
|
||||
} else {
|
||||
format!("Context maxed out\n{}\nGoose tried its best to truncate messages for you.", "-".repeat(50))
|
||||
};
|
||||
output::render_text("", Some(Color::Yellow), true);
|
||||
output::render_text(&msg, Some(Color::Yellow), true);
|
||||
self.messages = truncated_messages;
|
||||
}
|
||||
"summarize" => {
|
||||
// Use the helper function to summarize context
|
||||
let message_suffix = if context_strategy == "summarize" {
|
||||
"Goose automatically summarized messages for you."
|
||||
} else if interactive {
|
||||
"Goose summarized messages for you."
|
||||
} else {
|
||||
"Goose automatically summarized messages to continue processing."
|
||||
};
|
||||
Self::summarize_context_messages(&mut self.messages, &self.agent, message_suffix).await?;
|
||||
}
|
||||
_ => {
|
||||
unreachable!()
|
||||
}
|
||||
}
|
||||
|
||||
// Restart the stream after handling ContextLengthExceeded
|
||||
stream = self
|
||||
.agent
|
||||
.reply(
|
||||
self.messages.clone(),
|
||||
session_config.clone(),
|
||||
None
|
||||
)
|
||||
.await?;
|
||||
}
|
||||
// otherwise we have a model/tool to render
|
||||
else {
|
||||
for content in &message.content {
|
||||
if let MessageContent::ToolRequest(tool_request) = content {
|
||||
@@ -1171,10 +1096,10 @@ impl CliSession {
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
Some(Ok(AgentEvent::HistoryReplaced(new_messages))) => {
|
||||
self.messages = Conversation::new_unvalidated(new_messages.clone());
|
||||
}
|
||||
Some(Ok(AgentEvent::ModelChange { model, mode })) => {
|
||||
Some(Ok(AgentEvent::HistoryReplaced(updated_conversation))) => {
|
||||
self.messages = updated_conversation;
|
||||
}
|
||||
Some(Ok(AgentEvent::ModelChange { model, mode })) => {
|
||||
// Log model change if in debug mode
|
||||
if self.debug {
|
||||
eprintln!("Model changed to {} in {} mode", model, mode);
|
||||
@@ -1182,94 +1107,24 @@ impl CliSession {
|
||||
}
|
||||
|
||||
Some(Err(e)) => {
|
||||
// TODO(Douwe): Delete this
|
||||
// Check if it's a ProviderError::ContextLengthExceeded
|
||||
if e.downcast_ref::<goose::providers::errors::ProviderError>()
|
||||
.map(|provider_error| matches!(provider_error, goose::providers::errors::ProviderError::ContextLengthExceeded(_)))
|
||||
.unwrap_or(false) {
|
||||
|
||||
output::render_text(
|
||||
"Context limit reached. Performing auto-compaction...",
|
||||
"Compaction requested. Should have happened in the agent!",
|
||||
Some(Color::Yellow),
|
||||
true
|
||||
);
|
||||
|
||||
// Try auto-compaction first - keep the stream alive!
|
||||
if let Ok(compact_result) = goose::context_mgmt::auto_compact::perform_compaction(&self.agent, self.messages.messages()).await {
|
||||
self.messages = compact_result.messages;
|
||||
if let Some(session_id) = &self.session_id {
|
||||
SessionManager::replace_conversation(session_id, &self.messages).await?;
|
||||
}
|
||||
|
||||
output::render_text(
|
||||
"Compaction complete. Conversation has been automatically compacted to continue.",
|
||||
Some(Color::Yellow),
|
||||
true
|
||||
);
|
||||
|
||||
// Restart the stream after successful compaction - keep the stream alive!
|
||||
stream = self
|
||||
.agent
|
||||
.reply(
|
||||
self.messages.clone(),
|
||||
session_config.clone(),
|
||||
Some(cancel_token.clone())
|
||||
)
|
||||
.await?;
|
||||
continue;
|
||||
}
|
||||
// Auto-compaction failed, fall through to common error handling below
|
||||
warn!("Compaction requested. Should have happened in the agent!");
|
||||
}
|
||||
eprintln!("Error: {}", e);
|
||||
cancel_token_clone.cancel();
|
||||
drop(stream);
|
||||
if let Err(e) = self.handle_interrupted_messages(false).await {
|
||||
eprintln!("Error handling interruption: {}", e);
|
||||
}
|
||||
|
||||
// Check if it's a ProviderError::ContextLengthExceeded
|
||||
if e.downcast_ref::<goose::providers::errors::ProviderError>()
|
||||
.map(|provider_error| matches!(provider_error, goose::providers::errors::ProviderError::ContextLengthExceeded(_)))
|
||||
.unwrap_or(false) {
|
||||
output::render_error(&format!("Error: Context length exceeded: {}", e));
|
||||
|
||||
let prompt = "The tool calling loop was interrupted. How would you like to proceed?";
|
||||
let selected = match cliclack::select(prompt.to_string())
|
||||
.item("clear", "Clear Session", "Removes all messages from Goose's memory")
|
||||
.item("summarize", "Summarize Session", "Summarize the session to reduce context length")
|
||||
.interact()
|
||||
{
|
||||
Ok(choice) => Some(choice),
|
||||
Err(e) => {
|
||||
if e.kind() == std::io::ErrorKind::Interrupted {
|
||||
// If interrupted, do nothing and let user handle it manually
|
||||
output::render_text("Operation cancelled. You can use /clear or /summarize to continue.", Some(Color::Yellow), true);
|
||||
None
|
||||
} else {
|
||||
return Err(e.into());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if let Some(choice) = selected {
|
||||
match choice {
|
||||
"clear" => {
|
||||
self.messages.clear();
|
||||
let msg = format!("Session cleared.\n{}", "-".repeat(50));
|
||||
output::render_text(&msg, Some(Color::Yellow), true);
|
||||
}
|
||||
"summarize" => {
|
||||
// Use the helper function to summarize context
|
||||
let message_suffix = "Goose summarized messages for you.";
|
||||
if let Err(e) = Self::summarize_context_messages(&mut self.messages, &self.agent, message_suffix).await {
|
||||
output::render_error(&format!("Failed to summarize: {}", e));
|
||||
output::render_text("Consider using /clear to start fresh.", Some(Color::Yellow), true);
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
unreachable!()
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
output::render_error(
|
||||
"The error above was an exception we were not able to handle.\n\
|
||||
|
||||
@@ -185,7 +185,7 @@ pub fn render_message(message: &Message, debug: bool) {
|
||||
println!("\n{}", style("Thinking:").dim().italic());
|
||||
print_markdown("Thinking was redacted", theme);
|
||||
}
|
||||
MessageContent::SummarizationRequested(summarization) => {
|
||||
MessageContent::ConversationCompacted(summarization) => {
|
||||
println!("\n{}", style(&summarization.msg).yellow());
|
||||
}
|
||||
_ => {
|
||||
|
||||
Reference in New Issue
Block a user