Altay
627813aba4
fix(heartbeat): scope exec wake dispatch to session key ( #32724 )
...
Merged via squash.
Prepared head SHA: 563fee0e65
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com >
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com >
Reviewed-by: @altaywtf
2026-03-03 14:47:40 +03:00
Sid
4ffe15c6b2
fix(telegram): warn when accounts.default is missing in multi-account setup ( #32544 )
...
Merged via squash.
Prepared head SHA: 7ebc3f65b2
Co-authored-by: Sid-Qin <201593046+Sid-Qin@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-03-03 03:27:19 -05:00
Gustavo Madeira Santana
2370ea5d1b
agents: propagate config for embedded skill loading
2026-03-03 02:44:56 -05:00
Eugene
5341b5c71c
Diffs: Migrate tool usage guidance from before_prompt_build to a plugin skill ( #32630 )
...
Merged via squash.
Prepared head SHA: 585697a4e1
Co-authored-by: sircrumpet <4436535+sircrumpet@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-03-03 01:50:59 -05:00
JT
de9031da22
fix: improve compaction summary instructions to preserve active work ( #8903 )
...
fix: improve compaction summary instructions to preserve active work
Expand staged-summary merge instructions to preserve active task status, batch progress, latest user request, and follow-up commitments so compaction handoffs retain in-flight work context.
Co-authored-by: joetomasone <56984887+joetomasone@users.noreply.github.com >
Co-authored-by: Josh Lehman <josh@martian.engineering >
2026-03-02 22:36:19 -08:00
Peter Steinberger
fe92113472
test(e2e): isolate module mocks across harnesses
2026-03-03 05:52:14 +00:00
Viz
a9ec75fe81
fix(gateway): flush throttled delta before emitChatFinal ( #24856 )
...
* fix(gateway): flush throttled delta before emitChatFinal
The 150ms throttle in emitChatDelta can suppress the last text chunk
before emitChatFinal fires, causing streaming clients (e.g. ACP) to
receive truncated responses. The final event carries the complete text,
but clients that build responses incrementally from deltas miss the
tail end.
Flush one last unthrottled delta with the complete buffered text
immediately before sending the final event. This ensures all streaming
consumers have the full response without needing to reconcile deltas
against the final payload.
* fix(gateway): avoid duplicate delta flush when buffer unchanged
Track the text length at the time of the last broadcast. The flush in
emitChatFinal now only sends a delta if the buffer has grown since the
last broadcast, preventing duplicate sends when the final delta passed
the 150ms throttle and was already broadcast.
* fix(gateway): honor heartbeat suppression in final delta flush
* test(gateway): add final delta flush and dedupe coverage
* fix(gateway): skip final flush for silent lead fragments
* docs(changelog): note gateway final-delta flush fix credits
---------
Co-authored-by: Jonathan Taylor <visionik@pobox.com >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-03-02 23:45:46 -05:00
Peter Steinberger
17bb87f432
fix(venice): retry model discovery on transient fetch failures
2026-03-03 03:21:00 +00:00
Josh Avant
806803b7ef
feat(secrets): expand SecretRef coverage across user-supplied credentials ( #29580 )
...
* feat(secrets): expand secret target coverage and gateway tooling
* docs(secrets): align gateway and CLI secret docs
* chore(protocol): regenerate swift gateway models for secrets methods
* fix(config): restore talk apiKey fallback and stabilize runner test
* ci(windows): reduce test worker count for shard stability
* ci(windows): raise node heap for test shard stability
* test(feishu): make proxy env precedence assertion windows-safe
* fix(gateway): resolve auth password SecretInput refs for clients
* fix(gateway): resolve remote SecretInput credentials for clients
* fix(secrets): skip inactive refs in command snapshot assignments
* fix(secrets): scope gateway.remote refs to effective auth surfaces
* fix(secrets): ignore memory defaults when enabled agents disable search
* fix(secrets): honor Google Chat serviceAccountRef inheritance
* fix(secrets): address tsgo errors in command and gateway collectors
* fix(secrets): avoid auth-store load in providers-only configure
* fix(gateway): defer local password ref resolution by precedence
* fix(secrets): gate telegram webhook secret refs by webhook mode
* fix(secrets): gate slack signing secret refs to http mode
* fix(secrets): skip telegram botToken refs when tokenFile is set
* fix(secrets): gate discord pluralkit refs by enabled flag
* fix(secrets): gate discord voice tts refs by voice enabled
* test(secrets): make runtime fixture modes explicit
* fix(cli): resolve local qr password secret refs
* fix(cli): fail when gateway leaves command refs unresolved
* fix(gateway): fail when local password SecretRef is unresolved
* fix(gateway): fail when required remote SecretRefs are unresolved
* fix(gateway): resolve local password refs only when password can win
* fix(cli): skip local password SecretRef resolution on qr token override
* test(gateway): cast SecretRef fixtures to OpenClawConfig
* test(secrets): activate mode-gated targets in runtime coverage fixture
* fix(cron): support SecretInput webhook tokens safely
* fix(bluebubbles): support SecretInput passwords across config paths
* fix(msteams): make appPassword SecretInput-safe in onboarding/token paths
* fix(bluebubbles): align SecretInput schema helper typing
* fix(cli): clarify secrets.resolve version-skew errors
* refactor(secrets): return structured inactive paths from secrets.resolve
* refactor(gateway): type onboarding secret writes as SecretInput
* chore(protocol): regenerate swift models for secrets.resolve
* feat(secrets): expand extension credential secretref support
* fix(secrets): gate web-search refs by active provider
* fix(onboarding): detect SecretRef credentials in extension status
* fix(onboarding): allow keeping existing ref in secret prompt
* fix(onboarding): resolve gateway password SecretRefs for probe and tui
* fix(onboarding): honor secret-input-mode for local gateway auth
* fix(acp): resolve gateway SecretInput credentials
* fix(secrets): gate gateway.remote refs to remote surfaces
* test(secrets): cover pattern matching and inactive array refs
* docs(secrets): clarify secrets.resolve and remote active surfaces
* fix(bluebubbles): keep existing SecretRef during onboarding
* fix(tests): resolve CI type errors in new SecretRef coverage
* fix(extensions): replace raw fetch with SSRF-guarded fetch
* test(secrets): mark gateway remote targets active in runtime coverage
* test(infra): normalize home-prefix expectation across platforms
* fix(cli): only resolve local qr password refs in password mode
* test(cli): cover local qr token mode with unresolved password ref
* docs(cli): clarify local qr password ref resolution behavior
* refactor(extensions): reuse sdk SecretInput helpers
* fix(wizard): resolve onboarding env-template secrets before plaintext
* fix(cli): surface secrets.resolve diagnostics in memory and qr
* test(secrets): repair post-rebase runtime and fixtures
* fix(gateway): skip remote password ref resolution when token wins
* fix(secrets): treat tailscale remote gateway refs as active
* fix(gateway): allow remote password fallback when token ref is unresolved
* fix(gateway): ignore stale local password refs for none and trusted-proxy
* fix(gateway): skip remote secret ref resolution on local call paths
* test(cli): cover qr remote tailscale secret ref resolution
* fix(secrets): align gateway password active-surface with auth inference
* fix(cli): resolve inferred local gateway password refs in qr
* fix(gateway): prefer resolvable remote password over token ref pre-resolution
* test(gateway): cover none and trusted-proxy stale password refs
* docs(secrets): sync qr and gateway active-surface behavior
* fix: restore stability blockers from pre-release audit
* Secrets: fix collector/runtime precedence contradictions
* docs: align secrets and web credential docs
* fix(rebase): resolve integration regressions after main rebase
* fix(node-host): resolve gateway secret refs for auth
* fix(secrets): harden secretinput runtime readers
* gateway: skip inactive auth secretref resolution
* cli: avoid gateway preflight for inactive secret refs
* extensions: allow unresolved refs in onboarding status
* tests: fix qr-cli module mock hoist ordering
* Security: align audit checks with SecretInput resolution
* Gateway: resolve local-mode remote fallback secret refs
* Node host: avoid resolving inactive password secret refs
* Secrets runtime: mark Slack appToken inactive for HTTP mode
* secrets: keep inactive gateway remote refs non-blocking
* cli: include agent memory secret targets in runtime resolution
* docs(secrets): sync docs with active-surface and web search behavior
* fix(secrets): keep telegram top-level token refs active for blank account tokens
* fix(daemon): resolve gateway password secret refs for probe auth
* fix(secrets): skip IRC NickServ ref resolution when NickServ is disabled
* fix(secrets): align token inheritance and exec timeout defaults
* docs(secrets): clarify active-surface notes in cli docs
* cli: require secrets.resolve gateway capability
* gateway: log auth secret surface diagnostics
* secrets: remove dead provider resolver module
* fix(secrets): restore gateway auth precedence and fallback resolution
* fix(tests): align plugin runtime mock typings
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-03-03 02:58:20 +00:00
Peter Steinberger
6408b7f81c
refactor(agents): dedupe steer restart test replacement flow
2026-03-03 02:53:14 +00:00
Peter Steinberger
1538813096
refactor(agents): dedupe ollama provider test scaffolding
2026-03-03 02:53:14 +00:00
Peter Steinberger
1a52d943ed
refactor(tests): dedupe model compat assertions
2026-03-03 02:53:13 +00:00
Peter Steinberger
6472e03412
refactor(agents): share failover error matchers
2026-03-03 02:51:00 +00:00
Peter Steinberger
2d033d2aa8
refactor(agents): split tool-result char estimator
2026-03-03 02:42:43 +00:00
Ayaan Zaidi
87977d7a19
fix: unblock build type errors
2026-03-03 08:11:51 +05:30
AI南柯(KingMo)
30ab9b2068
fix(agents): recognize connection errors as retryable timeout failures ( #31697 )
...
* fix(agents): recognize connection errors as retryable timeout failures
## Problem
When a model endpoint becomes unreachable (e.g., local proxy down,
relay server offline), the failover system fails to switch to the
next candidate model. Errors like "Connection error." are not
classified as retryable, causing the session to hang on a broken
endpoint instead of falling back to healthy alternatives.
## Root Cause
Connection/network errors are not recognized by the current failover
classifier:
- Text patterns like "Connection error.", "fetch failed", "network error"
- Error codes like ECONNREFUSED, ENOTFOUND, EAI_AGAIN (in message text)
While `failover-error.ts` handles these as error codes (err.code),
it misses them when they appear as plain text in error messages.
## Solution
Extend timeout error patterns to include connection/network failures:
**In `errors.ts` (ERROR_PATTERNS.timeout):**
- Text: "connection error", "network error", "fetch failed", etc.
- Regex: /\beconn(?:refused|reset|aborted)\b/i, /\benotfound\b/i, /\beai_again\b/i
**In `failover-error.ts` (TIMEOUT_HINT_RE):**
- Same patterns for non-assistant error paths
## Testing
Added test cases covering:
- "Connection error."
- "fetch failed"
- "network error: ECONNREFUSED"
- "ENOTFOUND" / "EAI_AGAIN" in message text
## Impact
- **Compatibility:** High - only expands retryable error detection
- **Behavior:** Connection failures now trigger automatic fallback
- **Risk:** Low - changes are additive and well-tested
* style: fix code formatting for test file
2026-03-03 02:37:23 +00:00
AaronWander
4c32411bee
fix(exec): suggest increasing timeout on timeouts
2026-03-03 02:35:10 +00:00
Gustavo Madeira Santana
91cdb703bd
Agents: add context metadata warmup retry backoff
2026-03-02 21:34:55 -05:00
Peter Steinberger
62582fc088
perf(agents): cache per-pass context char estimates
2026-03-03 02:32:13 +00:00
Peter Steinberger
6ab9e00e17
fix: resolve pi-tools typing regressions
2026-03-03 02:27:59 +00:00
Peter Steinberger
d380ed710d
refactor(agents): split pi-tools param and host-edit wrappers
2026-03-03 02:19:34 +00:00
Peter Steinberger
70db52de71
test(agents): centralize AgentMessage fixtures and remove unsafe casts
2026-03-03 02:14:15 +00:00
倪汉杰0668001185
0fb3f188b2
fix(agents): only recover edit when oldText no longer in file (review feedback)
2026-03-03 02:06:59 +00:00
倪汉杰0668001185
bf6aa7ca67
fix(agents): treat host edit tool as success when file contains newText after upstream throw ( fixes #32333 )
2026-03-03 02:06:59 +00:00
nico-hoff
3eec79bd6c
feat(memory): add Ollama embedding provider ( #26349 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: ac41386543
Co-authored-by: nico-hoff <43175972+nico-hoff@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-03-02 20:56:40 -05:00
Peter Steinberger
39520ad21b
test(agents): tighten pi message typing and dedupe malformed tool-call cases
2026-03-03 01:44:21 +00:00
Sk Akram
bd8c3230e8
fix: force supportsDeveloperRole=false for non-native OpenAI endpoints ( #29479 )
...
Merged via squash.
Prepared head SHA: 1416c584ac
Co-authored-by: akramcodez <179671552+akramcodez@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-03-02 20:43:49 -05:00
David Rudduck
11e1363d2d
feat(hooks): add trigger and channelId to plugin hook agent context ( #28623 )
...
* feat(hooks): add trigger and channelId to plugin hook agent context
Adds `trigger` and `channelId` fields to `PluginHookAgentContext` so
plugins can determine what initiated the agent run and which channel
it originated from, without session-key parsing or Redis bridging.
trigger values: "user", "heartbeat", "cron", "memory"
channelId values: "telegram", "discord", "whatsapp", etc.
Both fields are threaded through run.ts and attempt.ts hookCtx so all
hook phases receive them (before_model_resolve, before_prompt_build,
before_agent_start, llm_input, llm_output, agent_end).
channelId falls back from messageChannel to messageProvider when the
former is not set. followup-runner passes originatingChannel so queued
followup runs also carry channel context.
* docs(changelog): note hook context parity fix for #28623
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-03-02 17:39:20 -08:00
Peter Steinberger
6b6af1a64f
refactor(tests): dedupe web fetch and embedded tool hook fixtures
2026-03-03 01:37:12 +00:00
Peter Steinberger
c1b37f29f0
refactor(tests): dedupe browser and telegram tool test fixtures
2026-03-03 01:37:12 +00:00
Peter Steinberger
a3b674cc98
refactor(tests): dedupe agent lock and loop detection fixtures
2026-03-03 01:37:12 +00:00
Vincent Koc
747902a26a
fix(hooks): propagate run/tool IDs for tool hook correlation ( #32360 )
...
* Plugin SDK: add run and tool call fields to tool hooks
* Agents: propagate runId and toolCallId in before_tool_call
* Agents: thread runId through tool wrapper context
* Runner: pass runId into tool hook context
* Compaction: pass runId into tool hook context
* Agents: scope after_tool_call start data by run
* Tests: cover run and tool IDs in before_tool_call hooks
* Tests: add run-scoped after_tool_call collision coverage
* Hooks: scope adjusted tool params by run
* Tests: cover run-scoped adjusted param collisions
* Hooks: preserve active tool start metadata until end
* Changelog: add tool-hook correlation note
2026-03-02 17:23:08 -08:00
Peter Steinberger
61adcea68e
fix(test): tighten tool result typing in context pruning tests
2026-03-03 01:18:29 +00:00
Peter Steinberger
1b4062defd
refactor(tests): dedupe pi embedded test harness
2026-03-03 01:15:09 +00:00
Peter Steinberger
ddd71bc9f6
fix: guard gemini schema null properties ( #32332 ) (thanks @webdevtodayjason)
2026-03-03 01:12:06 +00:00
webdevtodayjason
1a7a18d0bc
fix(agents): guard gemini tool schema properties against null
2026-03-03 01:12:06 +00:00
Peter Steinberger
f0640b0100
fix(test): align gateway and session spawn hook typings
2026-03-03 01:12:01 +00:00
Peter Steinberger
57e1534df8
refactor(tests): consolidate repeated setup helpers
2026-03-03 01:06:00 +00:00
Peter Steinberger
a48a3dbdda
refactor(tests): dedupe tool, projector, and delivery fixtures
2026-03-03 01:06:00 +00:00
Peter Steinberger
1bd20dbdb6
fix(failover): treat stop reason error as timeout
2026-03-03 01:05:24 +00:00
Peter Steinberger
a2fdc3415f
fix(failover): handle unhandled stop reason error
2026-03-03 01:05:24 +00:00
Peter Steinberger
ced267c5cb
fix(moonshot): apply native thinking payload compatibility
2026-03-03 01:05:24 +00:00
Gustavo Madeira Santana
f26853f14c
CLI: dedupe config validate errors and expose allowed values
2026-03-02 20:05:12 -05:00
Peter Steinberger
f3e6578e6c
fix(test): tighten websocket and runner fixture typing
2026-03-03 00:55:01 +00:00
Peter Steinberger
47083460ea
refactor: unify inbound debounce policy and split gateway/models helpers
2026-03-03 00:54:33 +00:00
Peter Steinberger
6649c22471
fix(agents): harden openai ws tool call id handling
2026-03-03 00:43:48 +00:00
Peter Steinberger
77ecef1fde
feat(models): support minimax highspeed across onboarding
2026-03-03 00:40:15 +00:00
Peter Steinberger
1e8afa16f0
fix: apply config env vars before model discovery ( #32295 ) (thanks @hsiaoa)
2026-03-03 00:25:24 +00:00
hsiaoa
65dc3ee76c
models-config: apply config env vars before implicit provider discovery
2026-03-03 00:25:24 +00:00
Peter Steinberger
fd3ca8a34c
refactor: dedupe agent and browser cli helpers
2026-03-03 00:15:00 +00:00