Commit Graph

1880 Commits

Author SHA1 Message Date
Will Pfleger 40ccd927f8 fix: address round-4 crossfire review findings for typed config
Hidden extension bypass: filter `is_hidden_extension` on both the
write path (`apply_to_config`) and read path (`from_config`), not
just the HTTP response layer.

Type safety: add `deserialize_string_or_number` for 8 DATABRICKS/GCP
retry fields so the API accepts both `"5"` and `5` without silent
data loss.

Security hardening: make `GOOSE_DISABLE_KEYRING` read-only via the
typed API to prevent downgrading secret storage from keyring to
plaintext. Guard `active_provider` batch-write to avoid double-write
when `GOOSE_PROVIDER` is also set.

Error propagation: `push_if_some!` and `push_secret!` macros now
propagate serialization errors via `?` instead of swallowing them.

Test maintainability: replace 48-entry hardcoded `non_string_keys`
exclusion set with schema-derived type detection using
`schema_for!(GooseConfigSchema)` property types.

Signed-off-by: Will Pfleger <wpfleger@block.xyz>
2026-05-21 12:07:37 -04:00
Will Pfleger 3b6bf2b5e5 fix: address round-3 crossfire review findings for typed config
The crossfire review (Codex + Gemini) confirmed 4 P1/P2 bugs from
automated PR comments plus identified two additional gaps.

Fix 1 (P1): apply_to_config fell back to the current active provider's
model when switching GOOSE_PROVIDER without GOOSE_MODEL, cross-
contaminating provider entries. Now reads the target provider's saved
model via get_provider_entry.

Fix 2 (P2): ANTHROPIC_THINKING_BUDGET was missing from GooseConfigSchema
despite being the primary key read by Anthropic request construction.

Fix 3 (P2): GooseConfigUpdate wrote non-secrets to config.yaml before
attempting keyring secret writes. Reordered to write secrets first so a
keyring failure leaves no partial config.yaml state.

Fix 4 (P2): set_goose_model was a silent no-op when no active provider
existed. Now falls back to writing the legacy flat GOOSE_MODEL key.

Fix 5: check-config-schema now uses the --check flag instead of
regenerating and diffing, avoiding workspace mutation during CI checks.

Fix 6: GET/PATCH /config/typed responses now filter hidden extensions,
matching the existing GET /config/extensions behavior.

Signed-off-by: Will Pfleger <wpfleger@block.xyz>
2026-05-18 16:39:14 -04:00
Will Pfleger f055a64418 feat: add providers and active_provider to typed config schema
PR #8977 introduced structured per-provider config (`providers:` block + `active_provider` key). Wire these into GooseConfigSchema so they flow through the typed API endpoints and both JSON schemas.

GOOSE_PROVIDER/GOOSE_MODEL reads now use the resolution-chain accessors (env → active_provider → legacy flat key), and writes route through set_active_provider to keep the providers block canonical.

Signed-off-by: Will Pfleger <wpfleger@block.xyz>
2026-05-18 15:42:45 -04:00
Will Pfleger 9a35065574 fix: address round-2 crossfire review findings and pin openapi-ts
Round-2 crossfire review (3 Claude agents + Codex + Gemini) surfaced
a missing config key, a CLI display bug, incomplete test coverage, and
the root cause of the CI codegen mismatch. This commit addresses all
actionable findings and eliminates the manual TS codegen patching.

Key changes:
- Add GOOSE_DISABLE_TOOL_CALL_SUMMARY to GooseConfigSchema
- Add NANOGPT_API_KEY and LITELLM_CUSTOM_HEADERS to GooseConfigUpdate
- Fix configure.rs keyring status display for boolean GOOSE_DISABLE_KEYRING
- Add exhaustive from_config/apply_to_config coverage test
- Add CI check-config-schema job + Justfile targets
- Fix generate-config-schema error message (underscores → hyphens)
- Pin @hey-api/openapi-ts to 0.93.1, matching the lockfile
- Update PATCH endpoint docs (sparse semantics, nested replacement, env caution)

Signed-off-by: Will Pfleger <wpfleger@block.xyz>
2026-05-18 15:14:02 -04:00
Will Pfleger fdd6d18d99 fix: address crossfire review findings for typed config endpoints
Flatten GooseConfigUpdate to embed GooseConfigSchema via #[serde(flatten)],
eliminating ~500 lines of duplication and reducing edit sites from 6 to 3
per new config key. Fix GOOSE_DISABLE_KEYRING type (String → bool), add
7 missing provider secret keys, make ALL_KEYS test bidirectional, add
config roundtrip test, and log warnings on serialization failures.

Signed-off-by: Will Pfleger <wpfleger@block.xyz>
2026-05-18 15:14:01 -04:00
Will Pfleger c3614598cb feat: add typed config endpoints with dual schema generation
Single GooseConfigSchema struct derives both utoipa::ToSchema (for
OpenAPI → TypeScript type safety) and schemars::JsonSchema (for
standalone config.schema.json consumed by downstream tools).

Adds GET/PATCH /config/typed endpoints alongside existing per-key
endpoints. GooseConfigUpdate struct includes secret fields routed
through the keyring. Existing UI and endpoints are unchanged.

Signed-off-by: Will Pfleger <wpfleger@block.xyz>
2026-05-18 15:14:01 -04:00
ayourk badb97a01e Structured per-provider config block, non-destructive provider switching (#8977)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Signed-off-by: Aaron Yourk <ayourk@gmail.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-18 18:22:50 +00:00
Joah Gerstenberg 60c482de25 feat(cli): add goose review local code review command (#9114)
Signed-off-by: Joah Gerstenberg <joahg@squareup.com>
Signed-off-by: Joah Gerstenberg <joah@squareup.com>
Co-authored-by: Joah Gerstenberg <joahg@squareup.com>
Co-authored-by: Amp <amp@ampcode.com>
2026-05-18 15:21:40 +00:00
Douwe Osinga 3a2f4ea269 fix(otel): emit trace_output as span attribute instead of event (#9255)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-18 14:47:36 +00:00
Sheikh Limon 92eb1b6d9c fix(config): check file fallback when keyring has no entry (#9279)
Signed-off-by: sheikhlimon <sheikhlimon404@gmail.com>
2026-05-18 14:32:39 +00:00
Maksim 809a82ea53 Add documentation for new provider SaladCloud AI Gateway (#9253) 2026-05-18 14:27:03 +00:00
Matt Toohey 688b6d706e fix: use current_exe() instead of PATH lookup when spawning goose (#9236)
Signed-off-by: Matt Toohey <contact@matttoohey.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-18 14:20:48 +00:00
Hugues Clouâtre c3b4f78daf fix(extension_manager): set TCP_USER_TIMEOUT on streamable HTTP clients (#9207)
Signed-off-by: Hugues Clouâtre <hugues@linux.com>
2026-05-18 14:15:42 +00:00
Douwe Osinga 7bce91e5eb fix: activate custom provider after adding via configure (#9213)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-18 13:52:33 +00:00
Douwe Osinga 64edb978cd Flush OTLP traces reliably on exit with configurable timeout (#9228)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-18 09:58:05 -04:00
Kalvin C bf54314b67 feat(acp): pass session cwd param to acp providers (#9229)
Signed-off-by: Matt Toohey <contact@matttoohey.com>
Signed-off-by: Kalvin Chau <kalvin@block.xyz>
2026-05-18 05:47:23 +00:00
Douwe Osinga 2eb4685c2c fix: improve Telegram gateway error reporting and connection reliability (#9223)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-18 02:08:06 +00:00
Douwe Osinga 565c0e5773 fix(cli): enable VT processing on Windows Console Host (#9248)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-18 01:30:38 +00:00
Michael Neale 027137ce59 feat(chatgpt_codex): add gpt-5.5 to known models (#9292)
Signed-off-by: Michael Neale <michael.neale@gmail.com>
2026-05-18 01:17:12 +00:00
Douwe Osinga daf11f5b96 fix: zero out cost for local providers (ollama, local) (#9219)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-17 23:47:51 +00:00
Lifei Zhou 1fafd74413 mount acp in the goosed server to migrate using acp protocols iteratively (#9097) 2026-05-17 23:43:30 +00:00
Alex Hancock ca9f98d1cd feat: opt-in to vercel ai gateway leaderboard (#9259) 2026-05-16 18:29:40 +00:00
dependabot[bot] 4b88eabac1 chore(deps): bump the cargo-minor-and-patch group with 6 updates (#9266)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-15 14:05:39 -04:00
dependabot[bot] d730785ca8 chore(deps): bump tokio-cron-scheduler from 0.14.0 to 0.15.1 (#9267)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-15 14:05:35 -04:00
dependabot[bot] 594d8bc3be chore(deps): bump tokio-tungstenite from 0.28.0 to 0.29.0 (#9271)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-15 14:05:30 -04:00
dependabot[bot] 7753573a22 chore(deps): bump cliclack from 0.3.8 to 0.5.4 (#8966)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-15 14:01:17 -04:00
Douwe Osinga 3022f0549b fix(autovisualiser): use appInfo instead of clientInfo in MCP Apps init handshake (#9249)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-15 17:02:20 +00:00
Alex Hancock c75b54dc88 docs: add blog post for hooks feature (#9227) 2026-05-15 15:20:48 +00:00
Douwe Osinga 001dcd7e9d fix: replace Venice custom provider with declarative config (#9234)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-15 14:38:11 +00:00
Douwe Osinga be0f69cf84 fix: widen MOIM allowlist to suppress expected fix_conversation warnings (#9226)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-15 14:08:57 +00:00
Douwe Osinga b9ecd0a556 fix: zero out cost for local providers (ollama, local) (#9222)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-15 14:03:09 +00:00
jh-block 537eb23fb2 Preserve thinking content for providers that require it (#8857)
Signed-off-by: jh-block <jhugo@block.xyz>
2026-05-15 10:36:25 +00:00
Douwe Osinga 401f8e86ba Dynamically refresh skill instructions each turn (#9217)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-14 20:00:04 +00:00
yanalialiuk e187fcddf7 feat: add Atomic Chat as declarative OpenAI-compatible provider (#9210)
Co-authored-by: Yana Lyalyuk <yanalyalyuk@MacBook-Pro-Yana.local>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 19:29:56 +00:00
Douwe Osinga 2143cd3596 feat: support GOOSE_OAUTH_CALLBACK_PORT for stable OAuth redirect_uri (#9209)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-14 17:26:26 +00:00
Vincenzo Palazzo edb5b84a48 [RFC] feat(oauth): proactive token refresh to avoid re-auth on every session (#8386)
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-14 17:26:07 +00:00
Douwe Osinga 6b47e012f7 fix: resolve Azure CLI on Windows by using az.cmd (#9215)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-14 17:25:50 +00:00
Douwe Osinga 44b1e74bd6 fix: handle non-interactive terminal in goose configure on Windows (#9214)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-14 17:25:43 +00:00
Douwe Osinga 4671053985 fix: persist accumulated cost in session DB to survive reload (#9191)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-14 16:57:06 +00:00
Eugenio 7fc3537751 fix: prevent tool-use marker leakage in toolshim output (#8310)
Signed-off-by: Eugenio La Cava <eugeniolcv@gmail.com>
Signed-off-by: Michael Neale <michael.neale@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Michael Neale <michael.neale@gmail.com>
2026-05-14 05:49:37 +00:00
dorien-koelemeijer 826cce0257 Prompt injection mitigation: update pattern-based detection (#9198) 2026-05-14 02:19:48 +00:00
Kyle E DeFreitas 79675ac3b7 fix(summon): re-apply canonical limits when delegate overrides model (#9183)
Signed-off-by: Kyle De Freitas <kdefreitas@squareup.com>
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-13 19:03:01 +00:00
Rodolfo Olivieri 4de5fcdff8 refactor(logging): consolidate logging setup into shared helper in goose crate (#8817)
Signed-off-by: Rodolfo Olivieri <rolivier@redhat.com>
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-13 18:35:41 +00:00
Bright Zheng 9ca29a1047 fix(cli): report cumulative total_tokens in stream-json/json output (#8910)
Signed-off-by: Trinity <trinity@multica.ai>
Signed-off-by: Bright Zheng <bzqzheng@gmail.com>
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-13 18:35:39 +00:00
Jack Amadeo 09d7f98001 plugins: add open plugins (just skills for now) (#9063)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-13 18:35:27 +00:00
Tom Birch 81c59e013d fix(providers): refresh GCP metadata server token on expiration (#8929)
Signed-off-by: Tom Birch <tom@neara.com>
Co-authored-by: Tom Birch <tom@neara.com>
2026-05-13 16:16:11 +00:00
dependabot[bot] 2edfc3075d chore(deps): bump the cargo-minor-and-patch group across 1 directory with 14 updates (#9178)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-13 15:01:58 -04:00
dependabot[bot] 1d47416f2d chore(deps): bump bzip2 from 0.5.2 to 0.6.1 (#8964)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-13 16:15:35 +00:00
Lucas Alvares Gomes 9a061e5b2f Add Location column to CLI skills table (#8785)
Signed-off-by: Lucas Alvares Gomes <lucasagomes@gmail.com>
2026-05-13 15:43:20 +00:00
9qeklajc a14fcc6873 (feat): add routstr as a declarative provider (#9175)
Signed-off-by: 9qeklajc <9qeklajc>
Co-authored-by: 9qeklajc <9qeklajc>
2026-05-13 13:53:57 -04:00