Skip to content

Commit 6122ce4

Browse files
committed
Merge origin/main into main
2 parents f5baec1 + b26d7af commit 6122ce4

File tree

127 files changed

+5750
-3183
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

127 files changed

+5750
-3183
lines changed

.github/workflows/bundle-desktop-windows.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
name: "Bundle Desktop (Windows)"
22

33
on:
4+
workflow_dispatch:
45
workflow_call:
56
inputs:
67
version:

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ crates/goose/tests/mcp_replays/*errors.txt
7171
# Nix build output
7272
result
7373

74+
# direnv
75+
.direnv/
76+
7477
# Goose self-test artifacts
7578
gooseselftest/
7679
.tasks/

Cargo.lock

Lines changed: 50 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/goose-acp/src/server.rs

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use anyhow::Result;
22
use fs_err as fs;
33
use goose::agents::extension::{Envs, PLATFORM_EXTENSIONS};
4-
use goose::agents::{Agent, AgentConfig, ExtensionConfig, SessionConfig};
4+
use goose::agents::{Agent, AgentConfig, ExtensionConfig, GoosePlatform, SessionConfig};
55
use goose::builtin_extension::register_builtin_extensions;
66
use goose::config::base::CONFIG_YAML_NAME;
77
use goose::config::extensions::get_enabled_extensions_with_config;
@@ -325,6 +325,7 @@ impl GooseAcpAgent {
325325
None,
326326
self.goose_mode,
327327
self.disable_session_naming,
328+
GoosePlatform::GooseCli,
328329
));
329330
let agent = Arc::new(agent);
330331

@@ -737,7 +738,8 @@ impl GooseAcpAgent {
737738
let config_path = self.config_dir.join(CONFIG_YAML_NAME);
738739
let config = Config::new(&config_path, "goose")?;
739740
let model_id = config.get_goose_model()?;
740-
goose::model::ModelConfig::new(&model_id)?
741+
let provider_name = config.get_goose_provider()?;
742+
goose::model::ModelConfig::new(&model_id)?.with_canonical_limits(&provider_name)
741743
}
742744
};
743745
let provider = (self.provider_factory)(model_config, Vec::new()).await?;
@@ -955,9 +957,18 @@ impl GooseAcpAgent {
955957
session_id: &str,
956958
model_id: &str,
957959
) -> Result<SetSessionModelResponse, sacp::Error> {
958-
let model_config = goose::model::ModelConfig::new(model_id).map_err(|e| {
959-
sacp::Error::invalid_params().data(format!("Invalid model config: {}", e))
960+
let config_path = self.config_dir.join(CONFIG_YAML_NAME);
961+
let config = Config::new(&config_path, "goose").map_err(|e| {
962+
sacp::Error::internal_error().data(format!("Failed to read config: {}", e))
963+
})?;
964+
let provider_name = config.get_goose_provider().map_err(|_| {
965+
sacp::Error::internal_error().data("No provider configured".to_string())
960966
})?;
967+
let model_config = goose::model::ModelConfig::new(model_id)
968+
.map_err(|e| {
969+
sacp::Error::invalid_params().data(format!("Invalid model config: {}", e))
970+
})?
971+
.with_canonical_limits(&provider_name);
961972
let provider = (self.provider_factory)(model_config, Vec::new())
962973
.await
963974
.map_err(|e| {
@@ -1278,20 +1289,14 @@ print(\"hello, world\")
12781289
"mock"
12791290
}
12801291

1281-
async fn complete_with_model(
1292+
async fn stream(
12821293
&self,
1283-
_session_id: Option<&str>,
12841294
_model_config: &goose::model::ModelConfig,
1295+
_session_id: &str,
12851296
_system: &str,
12861297
_messages: &[goose::conversation::message::Message],
12871298
_tools: &[rmcp::model::Tool],
1288-
) -> Result<
1289-
(
1290-
goose::conversation::message::Message,
1291-
goose::providers::base::ProviderUsage,
1292-
),
1293-
ProviderError,
1294-
> {
1299+
) -> Result<goose::providers::base::MessageStream, ProviderError> {
12951300
unimplemented!()
12961301
}
12971302

crates/goose-acp/src/server_factory.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,7 @@ impl AcpServer {
3838
Box::pin(async move {
3939
let config_path = config_dir.join(goose::config::base::CONFIG_YAML_NAME);
4040
let config = goose::config::Config::new(&config_path, "goose")?;
41-
let provider_name = config
42-
.get_goose_provider()
43-
.map_err(|_| anyhow::anyhow!("No provider configured"))?;
41+
let provider_name = config.get_goose_provider()?;
4442
goose::providers::create(&provider_name, model_config, extensions).await
4543
})
4644
});

crates/goose-acp/tests/common_tests/mod.rs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ pub async fn run_config_mcp<C: Connection>() {
2525
let mcp = McpFixture::new(Some(expected_session_id.clone())).await;
2626

2727
let config_yaml = format!(
28-
"GOOSE_MODEL: {TEST_MODEL}\nextensions:\n mcp-fixture:\n enabled: true\n type: streamable_http\n name: mcp-fixture\n description: MCP fixture\n uri: \"{}\"\n",
28+
"GOOSE_MODEL: {TEST_MODEL}\nGOOSE_PROVIDER: openai\nextensions:\n mcp-fixture:\n enabled: true\n type: streamable_http\n name: mcp-fixture\n description: MCP fixture\n uri: \"{}\"\n",
2929
mcp.url
3030
);
3131
fs::write(temp_dir.path().join(CONFIG_YAML_NAME), config_yaml).unwrap();
@@ -142,7 +142,6 @@ pub async fn run_model_list<C: Connection>() {
142142
"gpt-5-codex",
143143
"gpt-5",
144144
"gpt-5-2025-08-07",
145-
"gpt-5-chat-latest",
146145
"gpt-5-mini",
147146
"gpt-5-mini-2025-08-07",
148147
TEST_MODEL,
@@ -172,16 +171,10 @@ pub async fn run_model_list<C: Connection>() {
172171
"gpt-4o-2024-05-13",
173172
"gpt-4o-2024-08-06",
174173
"gpt-4o-2024-11-20",
175-
"text-embedding-3-large",
176-
"text-embedding-3-small",
177174
"gpt-4",
178175
"gpt-4-0613",
179176
"gpt-4-turbo",
180177
"gpt-4-turbo-2024-04-09",
181-
"gpt-3.5-turbo",
182-
"gpt-3.5-turbo-0125",
183-
"gpt-3.5-turbo-1106",
184-
"text-embedding-ada-002",
185178
]
186179
.iter()
187180
.map(|id| ModelInfo::new(ModelId::new(*id), *id))

crates/goose-acp/tests/fixtures/mod.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,11 @@ pub async fn spawn_acp_server_in_process(
199199
fs::create_dir_all(data_root).unwrap();
200200
let config_path = data_root.join(goose::config::base::CONFIG_YAML_NAME);
201201
if !config_path.exists() {
202-
fs::write(&config_path, format!("GOOSE_MODEL: {TEST_MODEL}\n")).unwrap();
202+
fs::write(
203+
&config_path,
204+
format!("GOOSE_MODEL: {TEST_MODEL}\nGOOSE_PROVIDER: openai\n"),
205+
)
206+
.unwrap();
203207
}
204208
let provider_factory = provider_factory.unwrap_or_else(|| {
205209
let base_url = openai_base_url.to_string();

crates/goose-cli/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ open = "5.3.2"
6161
url = { workspace = true }
6262
urlencoding = { workspace = true }
6363
clap_complete = "4.5.62"
64+
comfy-table = "7.2.2"
6465

6566
[target.'cfg(target_os = "windows")'.dependencies]
6667
winapi = { version = "0.3", features = ["wincred"] }

0 commit comments

Comments
 (0)