Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
6c97adf
First post
Aug 5, 2025
1a938d7
Merge branch 'main' into goose-apps
Aug 7, 2025
7191f75
What
Aug 7, 2025
7a6e6ff
Merge branch 'main' into goose-apps
Aug 17, 2025
a63775c
Make them launchable
Aug 17, 2025
fd93127
At least it compiles
Aug 18, 2025
424b3e8
Merge branch 'main' into goose-apps
Sep 26, 2025
2d34098
Throw
Sep 27, 2025
9266aca
One step
Sep 27, 2025
9922462
Spawn a recipe
Sep 27, 2025
b8c55ee
Extension support -ish
Sep 27, 2025
7af960f
Merge branch 'main' into goose-apps
Nov 1, 2025
5cf680b
Include the clock
Nov 1, 2025
5bfe874
I dont know
Nov 1, 2025
19ac055
WIP
Nov 1, 2025
e2c0269
WIP 3
Nov 1, 2025
b5f5754
WIP 5
Nov 2, 2025
01cda27
Serving
Nov 2, 2025
514593a
Fix image processing
Nov 3, 2025
d1c36dd
Remove print
Nov 4, 2025
e2d242d
Actually save
Nov 5, 2025
2c27388
Merge branch 'main' into goose-apps
Nov 7, 2025
14d12a6
Say more
Nov 7, 2025
aaa3ffa
External clock
Nov 7, 2025
6082aa6
Report errors
Nov 7, 2025
02b040c
Merge branch 'main' into goose-apps
Nov 15, 2025
ef4af72
Merge
Nov 15, 2025
2fea66d
Merge branch 'main' into goose-apps
Dec 5, 2025
ebdcc40
That's a lot
Dec 10, 2025
5941fe5
More
Dec 10, 2025
e64e8bd
Bla
Dec 10, 2025
65744d4
WIP
Dec 11, 2025
4c8b1d4
Merge branch 'main' into tool-reply-meta
Dec 11, 2025
630982a
Revert a bunch
Dec 11, 2025
25828bc
Merge branch 'main' into tool-reply-meta
Dec 11, 2025
4224831
api
Dec 11, 2025
63cbab6
recordings
Dec 11, 2025
634577e
Hmm, what?
Dec 11, 2025
79b3d98
Maybe now?
Dec 11, 2025
43f6d58
Also the other
Dec 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ impl Evaluation for DeveloperImage {
if let MessageContent::ToolResponse(tool_resp) = content {
if let Ok(result) = &tool_resp.tool_result {
// Check each item in the result list
for item in result {
for item in &result.content {
if let Some(image) = item.as_image() {
// Image content already contains mime_type and data
if image.mime_type.starts_with("image/")
Expand Down
11 changes: 6 additions & 5 deletions crates/goose-cli/src/commands/acp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use goose::mcp_utils::ToolResult;
use goose::providers::create;
use goose::session::session_manager::SessionType;
use goose::session::SessionManager;
use rmcp::model::{Content, RawContent, ResourceContents, Role};
use rmcp::model::{CallToolResult, RawContent, ResourceContents, Role};
use std::collections::{HashMap, HashSet};
use std::fs;
use std::sync::Arc;
Expand Down Expand Up @@ -74,8 +74,8 @@ fn extract_tool_locations(
.and_then(|c| c.as_str());

// Extract line numbers from the response content
if let Ok(content_items) = &tool_response.tool_result {
for content in content_items {
if let Ok(result) = &tool_response.tool_result {
for content in &result.content {
if let RawContent::Text(text_content) = &content.raw {
let text = &text_content.text;

Expand Down Expand Up @@ -491,9 +491,10 @@ impl GooseAcpAgent {
}

/// Build tool call content from tool result
fn build_tool_call_content(tool_result: &ToolResult<Vec<Content>>) -> Vec<ToolCallContent> {
fn build_tool_call_content(tool_result: &ToolResult<CallToolResult>) -> Vec<ToolCallContent> {
match tool_result {
Ok(content_items) => content_items
Ok(result) => result
.content
.iter()
.filter_map(|content| match &content.raw {
RawContent::Text(val) => Some(ToolCallContent::Content {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"74a3cc715c4c65dcae4ecec084d962947e4ce3cf02a8b639ee23b080e88bf6ec": {
"1b90ffd4b16eab7aef1c24e9b61f6b6cc6f0d9b04e8a4f4344454a45b0793284": {
"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\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.\n\nIf the Extension Manager extension is enabled, you can use the search_available_extensions tool to discover additional\nextensions that can help with your task. To enable or disable extensions, use the manage_extensions tool with the\nextension_name. You should only enable extensions found from the search_available_extensions tool.\nIf Extension Manager is not available, you can only work with currently enabled extensions and cannot dynamically load\nnew ones.\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# 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.",
"messages": [
{
"id": "msg_20251124_8_0",
"id": "msg_20251211_27_0",
"role": "user",
"created": 1763989805,
"created": 1765495263,
"content": [
{
"type": "text",
Expand All @@ -19,13 +19,13 @@
}
},
{
"id": "msg_b4135f6c-9a29-4904-a59f-632ea849ef5a",
"id": "msg_9076da8a-a3b1-4cfc-b5d9-0ffc2a7879c9",
"role": "assistant",
"created": 1763989808,
"created": 1765495266,
"content": [
{
"type": "toolRequest",
"id": "toolu_01VxSzmLcPK7UNNE4ms8XRa6",
"id": "toolu_01CDkt9pjh8oC9C1984uhvuG",
"toolCall": {
"status": "success",
"value": {
Expand All @@ -43,21 +43,23 @@
}
},
{
"id": "msg_253b4067-0c08-4807-8b36-23b576f138b5",
"id": "msg_d7b3db5e-0402-42a8-937c-2ccf68a3e4e0",
"role": "user",
"created": 1763989808,
"created": 1765495266,
"content": [
{
"type": "toolResponse",
"id": "toolu_01VxSzmLcPK7UNNE4ms8XRa6",
"id": "toolu_01CDkt9pjh8oC9C1984uhvuG",
"toolResult": {
"status": "success",
"value": [
{
"type": "text",
"text": "The weather in Berlin, Germany is cloudy and 18°C"
}
]
"value": {
"content": [
{
"type": "text",
"text": "The weather in Berlin, Germany is cloudy and 18°C"
}
]
}
}
}
],
Expand Down Expand Up @@ -305,11 +307,11 @@
"message": {
"id": null,
"role": "assistant",
"created": 1763989811,
"created": 1765495269,
"content": [
{
"type": "text",
"text": "The weather in Berlin, Germany is currently **cloudy** with a temperature of **18°C** (64°F)."
"text": "# Weather in Berlin, Germany\n\nThe current weather in Berlin, Germany is:\n- **Conditions**: Cloudy\n- **Temperature**: 18°C (64°F)\n\nIt's a mild day with overcast conditions in Berlin!"
}
],
"metadata": {
Expand All @@ -321,8 +323,56 @@
"model": "claude-sonnet-4-20250514",
"usage": {
"input_tokens": 2406,
"output_tokens": 29,
"total_tokens": 2435
"output_tokens": 55,
"total_tokens": 2461
}
}
}
},
"8b1b8633232ca390cb3ff37a48daf74168b58f13e2943efcb17957129ee34d1a": {
"input": {
"system": "Reply with only a description in four words or less",
"messages": [
{
"id": null,
"role": "user",
"created": 1765495263,
"content": [
{
"type": "text",
"text": "Here are the first few user messages:\ntell me what the weather is in Berlin, Germany\n\nBased on the conversation so far, provide a concise description of this session in 4 words or less. This will be used for finding the session later in a UI with limited space - reply *ONLY* with the description"
}
],
"metadata": {
"userVisible": true,
"agentVisible": true
}
}
],
"tools": []
},
"output": {
"message": {
"id": null,
"role": "assistant",
"created": 1765495265,
"content": [
{
"type": "text",
"text": "Berlin weather inquiry"
}
],
"metadata": {
"userVisible": true,
"agentVisible": true
}
},
"usage": {
"model": "claude-sonnet-4-20250514",
"usage": {
"input_tokens": 84,
"output_tokens": 6,
"total_tokens": 90
}
}
}
Expand All @@ -332,9 +382,9 @@
"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\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.\n\nIf the Extension Manager extension is enabled, you can use the search_available_extensions tool to discover additional\nextensions that can help with your task. To enable or disable extensions, use the manage_extensions tool with the\nextension_name. You should only enable extensions found from the search_available_extensions tool.\nIf Extension Manager is not available, you can only work with currently enabled extensions and cannot dynamically load\nnew ones.\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# 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.",
"messages": [
{
"id": "msg_20251124_8_0",
"id": "msg_20251211_27_0",
"role": "user",
"created": 1763989805,
"created": 1765495263,
"content": [
{
"type": "text",
Expand Down Expand Up @@ -585,15 +635,15 @@
"message": {
"id": null,
"role": "assistant",
"created": 1763989808,
"created": 1765495266,
"content": [
{
"type": "text",
"text": "I'll get the current weather information for Berlin, Germany."
"text": "I'll get the current weather information for Berlin, Germany for you."
},
{
"type": "toolRequest",
"id": "toolu_01VxSzmLcPK7UNNE4ms8XRa6",
"id": "toolu_01CDkt9pjh8oC9C1984uhvuG",
"toolCall": {
"status": "success",
"value": {
Expand All @@ -614,56 +664,8 @@
"model": "claude-sonnet-4-20250514",
"usage": {
"input_tokens": 2320,
"output_tokens": 72,
"total_tokens": 2392
}
}
}
},
"8b1b8633232ca390cb3ff37a48daf74168b58f13e2943efcb17957129ee34d1a": {
"input": {
"system": "Reply with only a description in four words or less",
"messages": [
{
"id": null,
"role": "user",
"created": 1763989805,
"content": [
{
"type": "text",
"text": "Here are the first few user messages:\ntell me what the weather is in Berlin, Germany\n\nBased on the conversation so far, provide a concise description of this session in 4 words or less. This will be used for finding the session later in a UI with limited space - reply *ONLY* with the description"
}
],
"metadata": {
"userVisible": true,
"agentVisible": true
}
}
],
"tools": []
},
"output": {
"message": {
"id": null,
"role": "assistant",
"created": 1763989810,
"content": [
{
"type": "text",
"text": "Berlin weather inquiry"
}
],
"metadata": {
"userVisible": true,
"agentVisible": true
}
},
"usage": {
"model": "claude-sonnet-4-20250514",
"usage": {
"input_tokens": 84,
"output_tokens": 6,
"total_tokens": 90
"output_tokens": 74,
"total_tokens": 2394
}
}
}
Expand Down
Loading
Loading