Dakshay Mehta
23f5cc80a4
Agents: wire command poll backoff into process poll
2026-02-16 23:32:12 +01:00
Vignesh Natarajan
5a26d1c622
Agent: guard reminder promises behind cron scheduling
2026-02-16 14:07:16 -08:00
Shadow
c593709d25
Discord: add per-button component allowlist
2026-02-16 15:15:00 -06:00
Shadow
05a83b9e97
Discord: add reusable component option
2026-02-16 14:22:49 -06:00
Sk Akram
e5eb5b3e43
feat: add stuck loop detection and exponential backoff infrastructure for agent polling ( #17118 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: eebabf679b983e5a660fb3cef371e1303f11f615
Co-authored-by: akramcodez <179671552+akramcodez@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-02-16 15:16:35 -05:00
Shadow
72e228e14b
Heartbeat: allow suppressing tool warnings ( #18497 )
...
* Heartbeat: allow suppressing tool warnings
* Changelog: note heartbeat tool-warning suppression
2026-02-16 13:29:24 -06:00
nabbilkhan
250896cf6e
fix: correct contradictory test name (Greptile review)
...
The test verifies that cooldownUntil IS cleared when it equals exactly
`now` (>= comparison), but the test name said "does not clear". Fixed
the name to match the actual assertion behavior.
2026-02-16 12:53:45 -06:00
nabbilkhan
03cadc4b7a
fix(auth): auto-expire stale auth profile cooldowns and reset error count
...
When an auth profile hits a rate limit, `errorCount` is incremented and
`cooldownUntil` is set with exponential backoff. After the cooldown
expires, the time-based check correctly returns false — but `errorCount`
persists. The next transient failure immediately escalates to a much
longer cooldown because the backoff formula uses the stale count:
60s × 5^(errorCount-1), max 1h
This creates a positive feedback loop where profiles appear permanently
stuck after rate limits, requiring manual JSON editing to recover.
Add `clearExpiredCooldowns()` which sweeps all profiles on every call to
`resolveAuthProfileOrder()` and clears expired `cooldownUntil` /
`disabledUntil` values along with resetting `errorCount` and
`failureCounts` — giving the profile a fair retry window (circuit-breaker
half-open → closed transition).
Key design decisions:
- `cooldownUntil` and `disabledUntil` handled independently (a profile
can have both; only the expired one is cleared)
- `errorCount` reset only when ALL unusable windows have expired
- `lastFailureAt` preserved for the existing failureWindowMs decay logic
- In-memory mutation; disk persistence happens lazily on the next store
write, matching the existing save pattern
Fixes #3604
Related: #13623 , #15851 , #11972 , #8434
2026-02-16 12:53:45 -06:00
Vignesh
b0a01fe482
Agents/Tools: preflight exec script files for shell var injection ( #18457 )
...
* fix(agents): don't force store=true for codex responses
* test: stabilize respawn + subagent usage assertions
* Agents/Tools: preflight exec to detect shell variable injection in scripts
* Changelog: fix merge marker formatting
2026-02-16 10:34:29 -08:00
Peter Steinberger
b0035a1e49
refactor(test): table-drive web tool defaults checks
2026-02-16 18:31:27 +00:00
Peter Steinberger
9ff473fa05
refactor(test): share sandbox config test helpers
2026-02-16 18:25:04 +00:00
Peter Steinberger
74c49c943d
refactor(test): share web fetch e2e setup helpers
2026-02-16 18:09:45 +00:00
Ayaan Zaidi
16327f21da
feat(telegram): support inline button styles ( #18241 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 239cb3552e4eaf2597b8e1f4af82ab2ffd1d446c
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
2026-02-16 22:48:47 +05:30
Gustavo Madeira Santana
8a67016646
Agents: raise bootstrap total cap and warn on /context truncation ( #18229 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: f6620526df231b571a8821edf9fc5f76c3994583
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-02-16 12:04:53 -05:00
Mariano
44ef045614
fix(canvas): port remaining iOS branch stability fixes ( #18228 )
...
* fix(canvas): prevent snapshot disconnects on proxied gateways
(cherry picked from commit 2a3c9f746a65f3301c0cfe58ebe6596fed06230f)
* fix(canvas): accept url alias for present and navigate
(cherry picked from commit 674ee86a0b776cbb738add1920a4031246125312)
---------
Co-authored-by: Nimrod Gutman <nimrod.g@singular.net>
2026-02-16 16:42:28 +00:00
Ayaan Zaidi
c8a536e30a
fix(agents): scope message tool schema by channel ( #18215 )
...
Co-authored-by: Shadow <shadow@openclaw.ai>
2026-02-16 10:34:18 -06:00
Peter Steinberger
df6d0ee92b
refactor(core): dedupe tool policy and IPv4 matcher logic
2026-02-16 16:14:54 +00:00
Peter Steinberger
1d37389490
test: annotate harness mocks to avoid TS2742 in CI
2026-02-16 15:19:11 +00:00
Peter Steinberger
a1ca9291f3
test(agents): fix reasoning replay input assertion helper
2026-02-16 14:59:31 +00:00
Peter Steinberger
f717a13039
refactor(agent): dedupe harness and command workflows
2026-02-16 14:59:30 +00:00
Hongwei Ma
dddb1bc942
fix(telegram): fix streaming with extended thinking models overwriting previous messages/ also happens to Execution error ( #17973 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 34b52eead8faeb64995f61b9e7ab102711acd37b
Co-authored-by: Marvae <11957602+Marvae@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
2026-02-16 18:54:34 +05:30
sebslight
553d17f8af
refactor(agents): use silent token constant in prompts
2026-02-16 08:20:24 -05:00
sebslight
3a277e394e
test(agents): add cooldown expiry helper regressions
2026-02-16 08:10:52 -05:00
sebslight
d224776ffb
refactor(agents): extract cooldown probe decision helper
2026-02-16 08:10:52 -05:00
zerone0x
c2a0cf0c28
fix(tts): update tool description to prevent duplicate audio delivery ( #18046 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 70c096abaa37fa506c4d86526e696828bf1acd86
Co-authored-by: zerone0x <39543393+zerone0x@users.noreply.github.com>
Co-authored-by: sebslight <19554889+sebslight@users.noreply.github.com>
Reviewed-by: @sebslight
2026-02-16 08:09:02 -05:00
Ítalo Souza
39bb1b3322
fix: auto-recover primary model after rate-limit cooldown expires ( #17478 ) ( #18045 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: f7a7865727a9aee0aaa3d929cce65dc46c3db234
Co-authored-by: PlayerGhost <28265945+PlayerGhost@users.noreply.github.com>
Co-authored-by: sebslight <19554889+sebslight@users.noreply.github.com>
Reviewed-by: @sebslight
2026-02-16 08:03:35 -05:00
Advait Paliwal
bc67af6ad8
cron: separate webhook POST delivery from announce ( #17901 )
...
* cron: split webhook delivery from announce mode
* cron: validate webhook delivery target
* cron: remove legacy webhook fallback config
* fix: finalize cron webhook delivery prep (#17901 ) (thanks @advaitpaliwal)
---------
Co-authored-by: Tyler Yust <TYTYYUST@YAHOO.COM>
2026-02-16 02:36:00 -08:00
Peter Steinberger
15f8c57797
test: speed up subagent announce e2e and drop duplicate defer case
2026-02-16 09:10:11 +00:00
the sun gif man
68ea063958
🤖 fix: preserve openai reasoning replay ids ( #17792 )
...
What:
- disable tool-call id sanitization for OpenAI/OpenAI Codex transcript policy
- gate id sanitization in image sanitizer to full mode only
- keep orphan reasoning downgrade scoped to OpenAI model-switch replay path
- update transcript policy, session-history, sanitizer, and reasoning replay tests
- document OpenAI model-switch orphan-reasoning cleanup behavior in transcript hygiene reference
Why:
- OpenAI Responses replay depends on canonical call_id|fc_id pairings for reasoning followers
- strict id rewriting in OpenAI path breaks follower matching and triggers rs_* orphan 400s
- limiting scope avoids behavior expansion while fixing the identified regression
Tests:
- pnpm vitest run src/agents/transcript-policy.test.ts src/agents/pi-embedded-runner.sanitize-session-history.test.ts src/agents/openai-responses.reasoning-replay.test.ts
- pnpm vitest run --config vitest.e2e.config.ts src/agents/transcript-policy.e2e.test.ts src/agents/pi-embedded-runner.sanitize-session-history.e2e.test.ts src/agents/pi-embedded-helpers.sanitize-session-messages-images.removes-empty-assistant-text-blocks-but-preserves.e2e.test.ts src/agents/pi-embedded-helpers.sanitizeuserfacingtext.e2e.test.ts
- pnpm lint
- pnpm format:check
- pnpm check:docs
- pnpm test (fails in current macOS bash 3.2 env at test/git-hooks-pre-commit.integration.test.ts: mapfile not found)
2026-02-15 22:45:01 -08:00
Peter Steinberger
0895bb6de6
test: move skills-install fallback suite to e2e lane
2026-02-16 06:11:01 +00:00
Peter Steinberger
5212d1c79e
test: make sandbox symlink-escape assertion platform-aware
2026-02-16 06:26:08 +01:00
Peter Steinberger
e8a50e41a5
test: reuse fixtures in skills install fallback suite
2026-02-16 04:03:24 +00:00
Peter Steinberger
25dc4293bf
test: speed up isolated-agent and pty test suites
2026-02-16 03:58:43 +00:00
Peter Steinberger
ae6fe67550
test: align e2e coverage with supervisor session flow
2026-02-16 03:41:58 +00:00
Peter Steinberger
b5a63e18f9
test(sandbox): add array-order hash and recreate regression tests
2026-02-16 04:36:24 +01:00
Peter Steinberger
d1fca442b4
refactor(sandbox): centralize sha256 helpers
2026-02-16 04:33:47 +01:00
Sebastian
3c467baa2d
test(skills): add status-to-install apt fallback coverage
2026-02-15 22:32:51 -05:00
Sebastian
c8e110e2e3
refactor(skills): extract installer strategy helpers
2026-02-15 22:32:51 -05:00
Peter Steinberger
41ded303b4
fix(sandbox): preserve array order in config hashing
2026-02-16 04:32:03 +01:00
Vignesh Natarajan
cbf58d2e1c
fix(memory): harden context window cache collisions
2026-02-15 19:31:52 -08:00
Peter Steinberger
559c8d9930
fix: replace deprecated SHA-1 in sandbox config hash
2026-02-16 04:30:59 +01:00
Peter Steinberger
aef1d55300
fix(cron): normalize skill-filter snapshots and split isolated run helpers
2026-02-16 04:27:12 +01:00
McRolly NWANGWU
d19b746928
feat(skills): add cross-platform install fallback for non-brew environments ( #17687 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 3ed4850838578b90140cc11c6fd23be6953c87ea
Co-authored-by: mcrolly <60803337+mcrolly@users.noreply.github.com>
Co-authored-by: sebslight <19554889+sebslight@users.noreply.github.com>
Reviewed-by: @sebslight
2026-02-15 22:25:26 -05:00
Shadow
a61c2dc4bd
Discord: add component v2 UI tool support ( #17419 )
2026-02-15 21:19:25 -06:00
Vignesh Natarajan
799049f586
fix (agents/sandbox): clarify container-vs-host workspace paths in prompt
2026-02-15 19:16:02 -08:00
Peter Steinberger
82333add95
test(sessions): cover sandbox session-tools context
2026-02-16 03:00:25 +00:00
Peter Steinberger
7a4a068124
test(sessions): add access and resolution helper coverage
2026-02-16 02:59:30 +00:00
Peter Steinberger
1a03aad246
refactor(sessions): split access and resolution helpers
2026-02-16 03:56:49 +01:00
Peter Steinberger
c876d24d89
test: expand prompt and update hint coverage
2026-02-16 02:54:06 +00:00
Peter Steinberger
17a148c8a8
fix: always include long-wait polling guidance in prompt
2026-02-16 03:51:38 +01:00