Commit Graph

49066 Commits

Author SHA1 Message Date
Peter Steinberger 8ebb18416a test: dedupe shell env exec mock read 2026-05-13 07:44:38 +01:00
Peter Steinberger e898ea67b4 test: dedupe marketplace command mock read 2026-05-13 07:42:52 +01:00
Peter Steinberger 23856156e2 test: dedupe inbound claim log mock read 2026-05-13 07:41:24 +01:00
Peter Steinberger 21aaa9ed81 test: dedupe google video download mock read 2026-05-13 07:39:14 +01:00
Peter Steinberger 6b4333ae6b test: dedupe xiaomi speech fetch mock read 2026-05-13 07:37:35 +01:00
Peter Steinberger 3bc433c179 fix(config): normalize per-agent Gemini preview refs 2026-05-13 07:35:56 +01:00
Jesse Merhi 87eb450047 Check ClawHub trust before plugin installs (#81307)
Merged via squash.

Prepared head SHA: 273fd7c20e
Co-authored-by: jesse-merhi <79823012+jesse-merhi@users.noreply.github.com>
Co-authored-by: jesse-merhi <79823012+jesse-merhi@users.noreply.github.com>
Reviewed-by: @jesse-merhi
2026-05-13 16:31:52 +10:00
Peter Steinberger cf68115e6e test: dedupe synology client mock reads 2026-05-13 07:25:03 +01:00
Peter Steinberger ef78fc9534 test: dedupe synology route mock read 2026-05-13 07:23:36 +01:00
Ayaan Zaidi 8879c671e3 docs(changelog): note Telegram polling stall fix 2026-05-13 11:53:00 +05:30
Ayaan Zaidi 56873b6065 fix(telegram): detect polling stalls from getUpdates 2026-05-13 11:53:00 +05:30
Peter Steinberger 7899b70c18 test: dedupe whatsapp close mock read 2026-05-13 07:21:41 +01:00
Peter Steinberger 0b4f0129df test: dedupe qwen video request mock reads 2026-05-13 07:19:44 +01:00
Peter Steinberger 63ee74109e test: dedupe ollama embedding fetch mock read 2026-05-13 07:18:13 +01:00
Peter Steinberger 4cf6971130 test: dedupe gradium tts fetch mock read 2026-05-13 07:15:45 +01:00
Peter Steinberger dd127ba0ba test: dedupe google image fetch mock read 2026-05-13 07:14:29 +01:00
Peter Steinberger 6932c66ffe test: dedupe minimax speech fetch mock reads 2026-05-13 07:12:39 +01:00
Peter Steinberger 7e1e4c5f78 test: dedupe memory wiki cli mock read 2026-05-13 07:11:04 +01:00
Peter Steinberger 6ced971cf1 test: dedupe minimax image fetch mock reads 2026-05-13 07:09:24 +01:00
Peter Steinberger b430270429 test: dedupe copilot model fetch mock reads 2026-05-13 07:07:56 +01:00
Peter Steinberger 29ac94b0e4 test: dedupe device pair qr mock read 2026-05-13 07:06:34 +01:00
Ayaan Zaidi bfbb9c6f9f docs(changelog): note ACP Claude timeout fix (#80812) (thanks @sxxtony) 2026-05-13 11:35:36 +05:30
Ayaan Zaidi a146bf03db refactor(acpx): distill ACP command detection 2026-05-13 11:35:36 +05:30
sxxtony bf8f5d991c fix(acp): drop unsupported timeout config option for claude-agent-acp
`runtime-options.buildRuntimeConfigOptionPairs` translated
`AcpSessionRuntimeOptions.timeoutSeconds` into a
`session/set_config_option(configId: "timeout")` pair on every turn. Both the
control plane (`AcpSessionManager.applyManagerRuntimeControls`) and the ACPX
wrapper (`AcpxRuntime.setConfigOption`) sit between that pair and the backend:

- The control plane validates pairs against the backend's advertised
  config-option keys and throws `ACP_BACKEND_UNSUPPORTED_CONTROL` for any
  pair the backend did not advertise. claude-agent-acp does not advertise a
  `timeout` alias.
- The wrapper then forwards remaining pairs to the delegate. The Codex ACP
  command was already short-circuited there; every other command, including
  claude-agent-acp, fell through.

Net effect on the reporter's scenario:
`sessions_spawn({ runtime:"acp", agentId:"claude", timeoutSeconds: 60 })`
failed at the control-plane validation with `ACP_BACKEND_UNSUPPORTED_CONTROL`
(and, had it reached the wire, claude-agent-acp would have answered
`-32603 Internal error / Unknown config option: timeout`, surfacing as
`ACP_TURN_FAILED: Internal error`).

Fix two layers:

1. Control plane (`src/acp/control-plane/runtime-options.ts`): add
   `isTimeoutConfigOptionAdvertised(advertisedConfigOptionKeys)` and gate the
   timeout pair on it. When advertised keys are unknown (`undefined` or
   empty), keep emitting the pair — this preserves current behavior for
   backends that have not produced a capability list yet. When advertised
   keys are present but exclude every alias in
   `RUNTIME_CONFIG_OPTION_ALIASES.timeoutSeconds`, skip the pair. The
   per-turn timeout is still enforced in-process via
   `AcpSessionManager.resolveTurnTimeoutMs` in `manager.core.ts`.

2. ACPX wrapper (`extensions/acpx/src/runtime.ts`): hoist the Codex
   `timeout` / `timeout_seconds` suppression so it also applies to
   claude-agent-acp commands. Add `isClaudeAcpCommand` mirroring
   `isCodexAcpCommand` (package spec, binary, generated wrapper script).
   This layer is defense in depth — relevant when callers reach the wrapper
   without going through `applyManagerRuntimeControls`, or when advertised
   keys are not yet known.

Coverage:

- `src/acp/control-plane/runtime-options.test.ts` (new) asserts:
  - the timeout pair is omitted when advertised keys exclude every alias,
  - the pair is kept when `timeout` or `timeout_seconds` is advertised,
  - the pair is kept when advertised keys are unknown,
  - model/thinking emission is unaffected.
- `extensions/acpx/src/runtime.test.ts` flips the previous
  `forwards timeout config controls for non-Codex ACP agents` test, which
  codified the buggy behavior, into a suppression assertion. Adds a
  positive `still forwards non-timeout config controls for claude-agent-acp`
  test and an `isClaudeAcpCommand` detector test.

Closes #81127
2026-05-13 11:35:36 +05:30
Peter Steinberger 50cb5ae089 test: dedupe openrouter stream mock read 2026-05-13 07:05:03 +01:00
Peter Steinberger 6a589017ca test: dedupe memory wiki gateway mock reads 2026-05-13 07:03:45 +01:00
Peter Steinberger 3945fd5812 test: dedupe tokenjuice mock read 2026-05-13 07:02:06 +01:00
Peter Steinberger 53032505bd test: dedupe memory lancedb provider assertion 2026-05-13 07:00:59 +01:00
Peter Steinberger b8727202a5 test: dedupe inworld tts mock read 2026-05-13 06:59:47 +01:00
Peter Steinberger 7de4c47da2 test: dedupe qa credential lease mock read 2026-05-13 06:57:56 +01:00
Peter Steinberger 2a931b5906 test: dedupe google meet oauth mock read 2026-05-13 06:56:44 +01:00
Peter Steinberger be343e3134 test: dedupe zalouser pairing mock reads 2026-05-13 06:55:30 +01:00
Peter Steinberger 0e3347cba6 test: dedupe reply flow mock read 2026-05-13 06:54:15 +01:00
Peter Steinberger dccb382283 test: dedupe hook security mock read 2026-05-13 06:51:28 +01:00
Peter Steinberger 134461723e test: dedupe session hook mock read 2026-05-13 06:49:45 +01:00
Peter Steinberger 4a6e46152a test: dedupe sandbox media mock read 2026-05-13 06:48:05 +01:00
Peter Steinberger 6de17fcb75 test: dedupe exec host mock read 2026-05-13 06:46:29 +01:00
Peter Steinberger 560679a2ad test: dedupe outbound channel mock read 2026-05-13 06:45:08 +01:00
Peter Steinberger af21973ea2 test: dedupe outbound send mock read 2026-05-13 06:43:10 +01:00
Peter Steinberger 07ffc2b955 test: dedupe outbound media mock read 2026-05-13 06:41:47 +01:00
Peter Steinberger 2b5d9bb47c test: dedupe cron owner auth mock read 2026-05-13 06:39:53 +01:00
Peter Steinberger cd993f4584 test: dedupe cron fast mode mock read 2026-05-13 06:38:15 +01:00
Peter Steinberger 210f606be8 test: dedupe lmstudio stream mock read 2026-05-13 06:36:48 +01:00
Peter Steinberger 93233b2c6b test: dedupe azure speech mock reads 2026-05-13 06:35:12 +01:00
Peter Steinberger f513c3f0dd test: dedupe qa manual lane mock reads 2026-05-13 06:32:35 +01:00
Peter Steinberger b21630d6d1 test: dedupe memory watcher mock reads 2026-05-13 06:30:58 +01:00
Peter Steinberger 61268e8117 test: dedupe memory search mock read 2026-05-13 06:29:31 +01:00
Peter Steinberger df9c9adeff test: dedupe mantle anthropic mock read 2026-05-13 06:27:58 +01:00
Peter Steinberger 87109e5fb5 test: dedupe anthropic vertex mock reads 2026-05-13 06:26:33 +01:00
Peter Steinberger a282bdc601 test: dedupe openai image mock reads 2026-05-13 06:25:08 +01:00