Commit graph

22661 commits

Author SHA1 Message Date
JK
323030594e
fix(agents): resolve model aliases in sessions_spawn (#59681)
* fix(agents): resolve model aliases in sessions_spawn

normalizeModelSelection() only trims the input — it never resolves
aliases through the model alias index. When a user passes an alias
like 'opus' to sessions_spawn, the child session gets patched with
the raw string, which the gateway cannot match to any provider.

Add resolveModelThroughAliases() to check bare strings against the
configured alias map before returning from
resolveSubagentSpawnModelSelection().

Fixes #57532
Refs #50736

* refactor: address review feedback on alias resolution

- Accept pre-built ModelAliasIndex instead of rebuilding per call
- Narrow helper signature to (string, ModelAliasIndex) → string
- Remove unreachable ?? raw fallback

Co-Authored-By: greptile-apps[bot]

* fix(agents): resolve sessions_spawn model aliases

---------

Co-authored-by: HowdyDooToYou <HowdyDooToYou@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
2026-04-27 15:44:56 -07:00
neilofneils404
482ff924ef
fix: pass directories to provider stream wrappers (#67843)
* fix: pass directories to provider stream wrappers

* fix: pass directories to provider stream wrappers

---------

Co-authored-by: neilofneils404 <258699186+neilofneils404@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
2026-04-27 15:43:38 -07:00
Peter Steinberger
39e3d8d31d
ci: shard release validation reruns 2026-04-27 23:38:13 +01:00
Peter Steinberger
d2320e4d4b
fix(models): keep user model switches strict 2026-04-27 23:32:44 +01:00
Peter Steinberger
496a5eb56f
fix: dedupe silent reply prompt guidance 2026-04-27 23:31:13 +01:00
volcano303
f3e8c50df3
fix(agents): redact Control UI tool payload secrets (#72319)
Fixes #72283.

- Redacts Control UI tool start args, partial/final result payloads, derived exec output, and patch summaries before event emission.
- Forces tool/UI payload redaction to include built-in patterns plus configured custom `logging.redactPatterns`.
- Covers object, details-only, primitive string, and top-level array tool-result shapes.

Tests:
- `pnpm test src/agents/pi-embedded-subscribe.tools.test.ts src/agents/pi-embedded-subscribe.handlers.tools.test.ts`
- `pnpm check:changed`

Co-authored-by: volcano303 <75143900+volcano303@users.noreply.github.com>
Co-authored-by: Val Alexander <bunsthedev@gmail.com>
2026-04-27 23:30:50 +01:00
Peter Steinberger
dd0f5937d2
fix(doctor): avoid companion gateway service false positives 2026-04-27 23:30:29 +01:00
Peter Steinberger
36d3722a96
fix(cli): disable source checkout compile cache 2026-04-27 23:28:17 +01:00
Peter Steinberger
0cc3c027a8
test: avoid slow home lookups in service audit tests 2026-04-27 23:23:15 +01:00
Peter Steinberger
48e91f09d5
fix(cli): fail empty local model probes
Some checks are pending
CI / -4 (push) Blocked by required conditions
CI / -5 (push) Blocked by required conditions
CI / checks-node-core (push) Blocked by required conditions
CI / check-additional-extension-channels (push) Blocked by required conditions
CI / check-lint (push) Blocked by required conditions
CI / check-policy-guards (push) Blocked by required conditions
CI / check-preflight-guards (push) Blocked by required conditions
CI / check-prod-types (push) Blocked by required conditions
CI / check-strict-smoke (push) Blocked by required conditions
CI / check-test-types (push) Blocked by required conditions
CI / check (push) Blocked by required conditions
CI / check-additional-boundaries (push) Blocked by required conditions
CI / check-additional-extension-bundled (push) Blocked by required conditions
CI / check-additional-extension-package-boundary (push) Blocked by required conditions
CI / check-additional-runtime-topology-architecture (push) Blocked by required conditions
CI / check-additional (push) Blocked by required conditions
CI / check-docs (push) Blocked by required conditions
CI / skills-python (push) Blocked by required conditions
CI / -6 (push) Blocked by required conditions
CI / -7 (push) Blocked by required conditions
CI / macos-swift (push) Blocked by required conditions
CI / -8 (push) Blocked by required conditions
Docs Sync Publish Repo / sync-publish-repo (push) Waiting to run
Docs / docs (push) Waiting to run
Plugin NPM Release / preview_plugins_npm (push) Waiting to run
Plugin NPM Release / preview_plugin_pack (push) Blocked by required conditions
Plugin NPM Release / publish_plugins_npm (push) Blocked by required conditions
Workflow Sanity / no-tabs (push) Waiting to run
Workflow Sanity / actionlint (push) Waiting to run
Workflow Sanity / generated-doc-baselines (push) Waiting to run
2026-04-27 23:16:39 +01:00
Peter Steinberger
81390c643b
fix(update): restart Windows startup gateway after update 2026-04-27 23:16:20 +01:00
Peter Steinberger
abf5dea7dd
fix(daemon): filter missing service path fallbacks 2026-04-27 23:16:04 +01:00
Peter Steinberger
bf4306d1b0
refactor: route plugin test helpers through sdk 2026-04-27 23:12:21 +01:00
Peter Steinberger
7975305a89 test: cover trusted-proxy secret surfaces 2026-04-27 23:10:22 +01:00
Peter Steinberger
1a98938479 fix: allow trusted-proxy local password fallback 2026-04-27 23:10:22 +01:00
Vincent Koc
61a18e5596
fix(agent): preserve default-agent session routing compatibility (#72414)
* fix(agent): preserve default-agent session routing compatibility

* fix(clownfish): address review for ghcrawl-207038-agentic-merge (1)

* fix(agent): migrate legacy default-agent sessions

* fix(slack): use narrow agent runtime import
2026-04-27 15:09:01 -07:00
Peter Steinberger
42dddbbe78
fix(cli): streamline local model probes 2026-04-27 23:02:26 +01:00
Peter Steinberger
8599fdda4a
test: keep extension mocks on sdk seams 2026-04-27 22:55:09 +01:00
Peter Steinberger
24b45a038c
fix(gateway): bound supervised lock recovery 2026-04-27 22:44:37 +01:00
Peter Steinberger
43ababf96b
fix(gateway): keep startup sidecars responsive 2026-04-27 22:44:37 +01:00
Peter Steinberger
7807e8118c
perf(test): slim codex web search test imports 2026-04-27 22:34:48 +01:00
Peter Steinberger
46ba8e7cce
feat(plugin-sdk): expose extension test seams 2026-04-27 22:34:21 +01:00
Peter Steinberger
2216ce3018
test: use narrow config sdk imports 2026-04-27 22:22:34 +01:00
Omar Shahine
da3d17e1ca
fix(tts): pre-transcode synthesized audio to opus-in-CAF for native iMessage voice-memo bubbles via BlueBubbles (#72586)
End-to-end testing on macOS + BlueBubbles + ElevenLabs walked through three CAF flavors before landing on the format Apple's Messages.app actually emits when a user records a native iMessage voice memo:

- PCM int16 @ 44.1 kHz CAF: BlueBubbles' internal `afconvert -f m4af -d aac` conversion fails; the original CAF reaches iMessage but renders with 0 s duration.
- AAC @ 22.05 kHz mono CAF: BlueBubbles' conversion succeeds and the server silently downgrades the delivery, sending the converted MP3 as a generic audio attachment.
- **Opus @ 24 kHz mono CAF**: byte-identical to the descriptor block Apple's Messages.app produces; BlueBubbles passes it through unchanged and iMessage renders a native voice-memo bubble with proper duration and waveform UI.

Adds an opt-in `tts.voice.preferAudioFileFormat` channel capability and a macOS `afconvert`-backed pre-transcode in the speech-core pipeline. BlueBubbles declares `preferAudioFileFormat: "caf"`. Other channels are unaffected. Falls back to the original buffer when the host platform, the source/target pair, or the transcoder process can't produce the preferred container — so non-Darwin hosts and unsupported provider combinations are unchanged.

Also adds a `caff` magic-byte sniff in `src/media/mime.ts` so the auto-reply host-local-media validator (which uses `file-type` and didn't recognize CAF natively) accepts the buffer instead of dropping it as "⚠️ Media failed."

Fixes #72506.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 14:15:16 -07:00
Peter Steinberger
1eea534ddb
fix(channels): handle generated dock commands 2026-04-27 21:59:15 +01:00
Peter Steinberger
662de55e07
refactor: expose extension sdk boundary seams 2026-04-27 21:58:48 +01:00
Peter Steinberger
3e497f5e2b
fix: accept cron delivery thread ids 2026-04-27 21:56:47 +01:00
Peter Steinberger
18ef83c0da
fix(feishu): preserve disabled group policy for explicit groups 2026-04-27 21:55:33 +01:00
Vincent Koc
bd51f82efa
fix(security): harden CodeQL secret ref validation
Remediate current-profile CodeQL findings for file SecretRef id validation and release workflow job permissions. Includes changelog credit. Thanks @vincentkoc.
2026-04-27 13:53:27 -07:00
Peter Steinberger
1787d3be07
fix(gateway): scope startup provider discovery 2026-04-27 21:45:54 +01:00
Peter Steinberger
28d9fc5f20
fix(test): include cron delivery thread id in schema keys 2026-04-27 21:43:12 +01:00
Peter Steinberger
db622c67d1
perf(test): slim directive and run-param imports 2026-04-27 21:42:31 +01:00
Peter Steinberger
b6be422306
fix(cron): accept threaded delivery in gateway schema 2026-04-27 21:37:18 +01:00
Peter Steinberger
599b1b8462
fix(cloudflare-ai-gateway): strip anthropic thinking prefill 2026-04-27 21:36:50 +01:00
Vincent Koc
013939cfc7
fix(gateway): preserve repeated characters in chat stream merge (#72400)
* fix(gateway): preserve repeated characters in chat stream merge

* fix(gateway): cap live chat stream buffers
2026-04-27 13:35:57 -07:00
Peter Steinberger
59faa023fe
fix(gateway): unblock sidecar startup 2026-04-27 21:34:44 +01:00
Peter Steinberger
7d2d8af3ab
fix(plugins): fast-path strict manifest json 2026-04-27 21:27:02 +01:00
Peter Steinberger
11e6928b3e
fix: keep runtime context out of user turns 2026-04-27 21:24:56 +01:00
Peter Steinberger
346d5c28c1 test(acp): use typed attachment root fixture 2026-04-27 21:19:45 +01:00
Peter Steinberger
8cc06fff2c test(acp): cover media agent dir dispatch 2026-04-27 21:19:45 +01:00
luyao618
2b578c3a9e fix(agents): pass agentDir to media understanding in ACP dispatch path
The ACP dispatch path calls applyMediaUnderstanding without the agentDir
parameter. This prevents the media understanding pipeline from locating
agent-specific models.json and auth profiles, causing image understanding
to fail silently for non-visual models configured with a separate image
understanding model.

The non-ACP reply path (get-reply.ts) already passes agentDir correctly.
This aligns the ACP path with the same behavior.

Closes #55046

AI-assisted (built with Hermes orchestration).
2026-04-27 21:19:45 +01:00
Peter Steinberger
be2196c6cb test(plugins): cover hook plugin config context 2026-04-27 21:19:41 +01:00
Ayumi Server
c1187109c8 fix: shallow-copy event to avoid mutating shared hook object
Address review feedback on PR #72888. triggerInternalHook passes the
same event reference to all handlers sequentially. Mutating evt.context
leaks pluginConfig to subsequent handlers and causes cross-plugin
overwrites. Shallow-copy event and context instead.
2026-04-27 21:19:41 +01:00
Ayumi Server
ed0b098d75 fix: inject pluginConfig into hook handler event context
When plugins register hooks via api.registerHook(), pluginConfig from
openclaw.json was not available in the hook event context. Plugins that
accessed ctx.pluginConfig or event.context.pluginConfig received
undefined, causing silent failures or fallback to defaults.

Changes:
- Add pluginConfig parameter to registerHook() function
- Wrap handler to inject pluginConfig into event.context before invocation
- Pass params.pluginConfig through createApi() call site

Fixes #72880
2026-04-27 21:19:41 +01:00
iot2edge
98928388db fix(cli): clarify completion cache timeout message after openclaw update
When the post-update completion cache refresh times out (slow disk,
large bundled plugin tree, Docker overlayfs), the user previously saw
the opaque 'Completion cache update failed: Error: spawnSync
/usr/bin/node ETIMEDOUT'. Detect ETIMEDOUT specifically, surface
'timed out after 30s', and append a manual refresh hint pointing at
'openclaw completion --write-state' so users know it's non-fatal and
how to recover.

Fixes #72842
2026-04-27 21:19:18 +01:00
Peter Steinberger
71c74b766e
fix(plugins): avoid hand-built extension path markers 2026-04-27 21:12:09 +01:00
Peter Steinberger
465b621cf1
fix(sessions): avoid guarded route-only entries 2026-04-27 21:11:12 +01:00
Maho Pan
1dbc250b1a fix: keep bare reset transcript prompt non-empty 2026-04-27 21:08:50 +01:00
Peter Steinberger
03bfdbb052
fix: stage mirrored bundled runtime deps 2026-04-27 21:07:40 +01:00
Peter Steinberger
ff52e281aa
perf(test): slim responses payload policy imports 2026-04-27 21:06:40 +01:00