Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0dcb08ac30
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Cargo.toml
Outdated
|
|
||
| [workspace.dependencies] | ||
| rmcp = { version = "0.16", features = ["schemars", "auth"] } | ||
| rmcp = { path = "../rust-sdk/crates/rmcp", features = ["schemars", "auth"] } |
There was a problem hiding this comment.
Use a published rmcp source for workspace dependency
Pointing rmcp to ../rust-sdk/crates/rmcp makes this repo non-self-contained: any clone/build environment that does not also have that sibling checkout will fail dependency resolution before compilation. This blocks standard cargo build/test workflows for contributors and CI jobs that only fetch this repository.
Useful? React with 👍 / 👎.
| title: tool.title, | ||
| meta: Some(rmcp::model::Meta(meta_map)), | ||
| }); | ||
| tools.push(Tool::new_with_raw(public_name, tool.description, tool.input_schema)); |
There was a problem hiding this comment.
Preserve tool ownership metadata when caching tools
This now computes meta_map but drops it when constructing the tool, so cached tools no longer carry goose_extension metadata. resolve_tool falls back to get_tool_owner for unprefixed tool names, and without this metadata those calls fail with "Tool '' has no owner", breaking dispatch for first-class/unprefixed extensions.
Useful? React with 👍 / 👎.
| content: filtered_content, | ||
| ..result.clone() | ||
| }), | ||
| tool_result: Ok(CallToolResult::success(filtered_content)), |
There was a problem hiding this comment.
Keep original tool-result status when filtering audience
Rebuilding every filtered tool response with CallToolResult::success(...) unconditionally clears error state and drops non-content fields from the original result. When a tool call returns an error (or structured/meta payload), agent_visible_content() now turns it into a successful empty/plain result, which changes model-visible semantics and can cause incorrect follow-up behavior.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c1979e2af2
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| name: Cow::Owned(name), | ||
| arguments, | ||
| }; | ||
| let tool_call = CallToolRequestParams::new(Cow::Owned(name)); |
There was a problem hiding this comment.
Preserve parsed tool-call arguments for local inference
This path now parses tool-call arguments into _arguments but then builds CallToolRequestParams with CallToolRequestParams::new(...) and never reattaches them, so local-inference tool calls are emitted with arguments == None. Any tool requiring inputs (for example developer__shell needing command) will fail validation or execute incorrectly even when the model supplied valid arguments; the same regression is also present in extract_xml_tool_call_messages where _args is ignored.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6438230f71
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| let _ = handler.try_send(ServerNotification::ProgressNotification( | ||
| ProgressNotification { | ||
| params: params.clone(), | ||
| method: ProgressNotificationMethod, | ||
| extensions: context.extensions.clone(), | ||
| }, | ||
| Notification::new(params.clone()), | ||
| )); |
There was a problem hiding this comment.
Preserve notification extensions when forwarding events
This now constructs forwarded progress notifications with Notification::new(params.clone()) while ignoring NotificationContext, which strips any server-provided notification extensions before subscribers receive ServerNotification. For MCP servers that attach vendor metadata in notification extensions, downstream handlers subscribed via McpClient::subscribe() will silently lose that data on progress/logging updates, changing runtime behavior compared with the previous forwarding path.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d58ed076ea
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| method: LoggingMessageNotificationMethod, | ||
| extensions: context.extensions.clone(), | ||
| }, | ||
| Notification::new(params.clone()), |
There was a problem hiding this comment.
Preserve extensions when forwarding logging notifications
Forwarding logging notifications with Notification::new(params.clone()) drops the server-provided NotificationContext extensions, because this path no longer copies context.extensions into the emitted ServerNotification. Any MCP server that encodes vendor metadata (for example correlation IDs or custom routing hints) in notification extensions will lose that data for subscribers using McpClient::subscribe(), which is a behavior regression from the previous implementation.
Useful? React with 👍 / 👎.
alexhancock
left a comment
There was a problem hiding this comment.
LGTM other than the lint issue!
* origin/main: Update to rmcp 1.1.0 (#7619)
* origin/main: (29 commits) Update to rmcp 1.1.0 (#7619) Fix max turns configuration (#7612) feat: add base path field to custom provider configuration (#7614) fix: compare extension configs before skipping add_extension (#7650) chore(release): release version 1.27.0 (minor) (#7611) feat: better private channel detection, bot version debugging (#7680) chore(deps): bump svgo from 3.3.2 to 3.3.3 in /documentation (#7667) fix: only add viewable channels to bot context (#7678) chore: added a recipe to help identify high risk change prs for testing (#7651) fix: make sure platform binary exists (#7676) fix(shell): replace global static output buffer with per-instance TempDir (#7632) opt: remove timestamped config file backup (#7618) chore(deps): bump @hono/node-server from 1.19.9 to 1.19.10 in /ui/desktop (#7662) chore(deps): bump hono from 4.12.3 to 4.12.5 in /evals/open-model-gym/mcp-harness (#7661) chore(deps): bump hono from 4.12.2 to 4.12.5 in /ui/desktop (#7660) fix: resolve parameters in initial message with autosubmit (#7659) fix: this should not be blocked (#7656) Relax the assertion for the model list ACP test (#7653) fix: add analyzer extension in recipe to maintain backwards compatibility (#7652) docs: add GOOSE_INPUT_LIMIT environment variable documentation (#7299) ...
* origin/main: (40 commits) fix: make TLS configurable in goosed agent via GOOSE_TLS env var (#7686) Update to rmcp 1.1.0 (#7619) Fix max turns configuration (#7612) feat: add base path field to custom provider configuration (#7614) fix: compare extension configs before skipping add_extension (#7650) chore(release): release version 1.27.0 (minor) (#7611) feat: better private channel detection, bot version debugging (#7680) chore(deps): bump svgo from 3.3.2 to 3.3.3 in /documentation (#7667) fix: only add viewable channels to bot context (#7678) chore: added a recipe to help identify high risk change prs for testing (#7651) fix: make sure platform binary exists (#7676) fix(shell): replace global static output buffer with per-instance TempDir (#7632) opt: remove timestamped config file backup (#7618) chore(deps): bump @hono/node-server from 1.19.9 to 1.19.10 in /ui/desktop (#7662) chore(deps): bump hono from 4.12.3 to 4.12.5 in /evals/open-model-gym/mcp-harness (#7661) chore(deps): bump hono from 4.12.2 to 4.12.5 in /ui/desktop (#7660) fix: resolve parameters in initial message with autosubmit (#7659) fix: this should not be blocked (#7656) Relax the assertion for the model list ACP test (#7653) fix: add analyzer extension in recipe to maintain backwards compatibility (#7652) ...
Co-authored-by: Alex Hancock <[email protected]>
* origin/main: (59 commits) fix: restore smart-approve mode (#7690) fix: make TLS configurable in goosed agent via GOOSE_TLS env var (#7686) Update to rmcp 1.1.0 (#7619) Fix max turns configuration (#7612) feat: add base path field to custom provider configuration (#7614) fix: compare extension configs before skipping add_extension (#7650) chore(release): release version 1.27.0 (minor) (#7611) feat: better private channel detection, bot version debugging (#7680) chore(deps): bump svgo from 3.3.2 to 3.3.3 in /documentation (#7667) fix: only add viewable channels to bot context (#7678) chore: added a recipe to help identify high risk change prs for testing (#7651) fix: make sure platform binary exists (#7676) fix(shell): replace global static output buffer with per-instance TempDir (#7632) opt: remove timestamped config file backup (#7618) chore(deps): bump @hono/node-server from 1.19.9 to 1.19.10 in /ui/desktop (#7662) chore(deps): bump hono from 4.12.3 to 4.12.5 in /evals/open-model-gym/mcp-harness (#7661) chore(deps): bump hono from 4.12.2 to 4.12.5 in /ui/desktop (#7660) fix: resolve parameters in initial message with autosubmit (#7659) fix: this should not be blocked (#7656) Relax the assertion for the model list ACP test (#7653) ...
…e-issue * origin/main: feat: combine TUI UX from alexhancock/tui-goodness with publishing config from jackamadeo/package-tui (#7683) chore: cleanup old sandbox (#7700) Correct windows artifact (#7699) gh fall back (#7695) fix: restore smart-approve mode (#7690) fix: make TLS configurable in goosed agent via GOOSE_TLS env var (#7686) Update to rmcp 1.1.0 (#7619)
…deps * origin/main: (34 commits) fix: reduce server log verbosity — skip session in instrument, defaul… (#7729) fix: provider test infrastructure (#7738) fix: sanitize streamable HTTP extension names derived from URLs (#7740) refactor: derive GooseMode string conversions with strum (#7706) docs: Add Spraay Batch Payments MCP Extension Tutorial (#7525) fix: flake.nix (#7224) delete goose web (#7696) Add @angiejones as CODEOWNER for documentation (#7711) Add MLflow integration guide (#7563) docs: LM Studio availability (#7698) feat: add Avian as an LLM provider (#7561) Adds `linux-mcp-server` to the goose registry (#6979) fix: add #[serde(default)] to description field on 4 ExtensionConfig variants (#7708) feat: combine TUI UX from alexhancock/tui-goodness with publishing config from jackamadeo/package-tui (#7683) chore: cleanup old sandbox (#7700) Correct windows artifact (#7699) gh fall back (#7695) fix: restore smart-approve mode (#7690) fix: make TLS configurable in goosed agent via GOOSE_TLS env var (#7686) Update to rmcp 1.1.0 (#7619) ... # Conflicts: # Cargo.lock
Bumps goose to the pre-release of v1 of rmcp