* perf(tools): remove unconditional params clone in shared execution
* Update src/tools/execute.rs
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* chore(fmt): apply rustfmt in worker container tool execution
* fix(tools): restore owned param call sites
* fix(tools): pass normalized_params to tool.execute() instead of raw params
The ownership refactor accidentally passed the un-coerced `params` to
`tool.execute()` while validation ran against the coerced
`normalized_params`. This meant tools received un-normalized input
(e.g. stringified JSON arrays instead of actual arrays). Since
`normalized_params` is owned and unused after the execute call, passing
it directly achieves the original zero-clone goal without breaking
parameter coercion.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
* fix(tools): update empty-tool-name test for owned params signature
Adapts the test_execute_empty_tool_name_returns_not_found test (added
on staging) to pass owned Value instead of &Value, matching the new
execute_tool_with_safety signature.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: [email protected] <[email protected]>
Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
* perf(agent): avoid preview allocation on non-truncated strings
* Update src/worker/container.rs
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* chore(ci): annotate test assertions for no-panics gate
* fix: remove unnecessary allocation and consolidate tests
- Remove redundant `.to_string()` on `&String` in container.rs error arm
- Bind `format!()` result to a let in job.rs to avoid Cow borrowing from temporary
- Merge borrowed/owned Cow assertions into existing tests, drop misleading comments
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
* fix: restore separate test functions for CI regression check
Keep dedicated `test_truncate_short_string_borrows` and
`test_truncate_long_string_owns` tests so the PR diff contains
new `#[test]` functions, satisfying the regression test enforcement check.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: [email protected] <[email protected]>
Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
* perf(safety): make XML attribute escaping single-pass
* test(safety): annotate assertion for no-panics CI
* test(safety): inline no-panics suppression comment
* fix(auth): avoid false success and block chat while auth pending
* fix(web): clear stale auth UI on failure and add setup regression test
* Update src/agent/thread_ops.rs
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* fix(fmt): place auth activation comment on separate line
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Illia Polosukhin <[email protected]>
* fix(mcp): cache oauth client init error as AuthError
* Update src/tools/mcp/auth.rs
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* fix(mcp): use AuthError::Http in oauth client cache and add regression test
* test(mcp): annotate test assert for no-panics CI matcher
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* fix(llm): add stop_sequences parity for tool completions
* refactor(web-openai): dedupe request builders and satisfy no-panics gate
* test(llm): mark multiline assert with safety comment for CI gate
* test(llm): make safety-marked assert formatting-stable
* ci(staging): use default branch instead of hardcoded main
* feat(web-chat): add hover copy button for message bubbles
* fix(web-chat): address Gemini review for copy state and streaming safety
* chore(pr): drop unrelated staging workflow change from #948