Commit Graph

81271 Commits

Author SHA1 Message Date
Amp 8c6b8537e4 fix(microsoft-foundry): bound Entra token cache 2026-08-21 14:14:48 +00:00
Peter Steinberger 75c44b2b98 fix(ui): recover cloud worker saves after reconnect (#127150)
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 03:50:40 -07:00
Peter Steinberger 7fd243326f fix(process): retain live children after signal errors (#127154) 2026-08-21 03:49:55 -07:00
Vincent Koc 67630f6854 fix(ci): isolate candidate cache authority (#127149) 2026-08-21 03:47:41 -07:00
wanyongstar 2c7936414e fix(comfy): forward req.timeoutMs in music generation (#123444)
The Comfy music provider dropped req.timeoutMs when calling
runComfyWorkflow, while the image and video providers forward it.
Request-level timeouts (mediaModels.music.timeoutMs, tool parameter)
were silently ignored: shorter values had no effect and longer ones
still failed at the hardcoded 300s default.

Punchcard-Session: coral-harbor-river-yv
2026-08-21 03:46:42 -07:00
Peter Steinberger 5016e6519f perf(clickclack): avoid duplicate upload buffer (#127152)
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f5-984a-7628-a30c-491c166ff247

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 03:43:21 -07:00
Peter Steinberger 7ecc9f6049 perf(test): speed up server preference observations (#127144) 2026-08-21 03:40:30 -07:00
mjzcng 8f8895c141 Cron: bound cross-tick admission (#119195)
* 修复 Cron 跨批次有界准入

* 修复 Cron 收据冲突后的容量唤醒

* 适配最新主线的 Cron 运行态测试

* 拆分 Cron 容量边界测试

* 满足 Cron 即时重检返回类型约束

* fix(cron): track independent timer tick roots

Amp-Thread-ID: https://ampcode.com/threads/T-01a0223e-d6cf-70c1-b0f8-5ea0193d09c0

* fix(cron): retain delayed capacity wake ownership

Amp-Thread-ID: https://ampcode.com/threads/T-01a0223e-d6cf-70c1-b0f8-5ea0193d09c0

* test(cron): await deferred cleanup runs

Amp-Thread-ID: https://ampcode.com/threads/T-01a0223e-d6cf-70c1-b0f8-5ea0193d09c0

* fix(cron): keep admission helper within lint budget

Amp-Thread-ID: https://ampcode.com/threads/T-01a0223e-d6cf-70c1-b0f8-5ea0193d09c0

* test(mcp): restore stderr routing after supervision tests

Amp-Thread-ID: https://ampcode.com/threads/T-01a0223e-d6cf-70c1-b0f8-5ea0193d09c0

* fix(cron): restore partial wake admission context

Amp-Thread-ID: https://ampcode.com/threads/T-01a0223e-d6cf-70c1-b0f8-5ea0193d09c0

---------

Co-authored-by: zhangcheng <zhangcheng@cpe-fund.com>
Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: mjzcng <6001731+mjzcng@users.noreply.github.com>
2026-08-21 03:37:13 -07:00
Peter Steinberger 9b37e538a8 perf(process): make command queues constant time (#127145)
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f5-984a-7628-a30c-491c166ff247

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 03:19:16 -07:00
Peter Steinberger d2d63a2c3f fix: announce Worktrees operation failures (#127114)
* fix(ui): announce Worktrees operation failures

Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b

* test(ui): stabilize attachment URL lifecycle proof

Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 03:16:43 -07:00
Peter Steinberger 81628db1d7 refactor(outbound): remove beta queue reply migration (#127133)
* refactor(outbound): remove beta queue reply migration

* test(outbound): retain legacy reply migration coverage

* test(outbound): type legacy migration fixture
2026-08-21 02:54:42 -07:00
Vincent Koc 225aa5a178 fix(ci): isolate Actions cache writes (#127107) 2026-08-21 02:45:06 -07:00
Peter Steinberger 5d8cd4c819 perf(test): speed up model setup state observations (#127134) 2026-08-21 02:40:20 -07:00
Peter Steinberger e17c858bae perf(gateway): scope startup model catalog planning (#127117)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 02:34:02 -07:00
Peter Steinberger f7cbe9e5da fix(slack): preserve partial reply delivery (#127130) 2026-08-21 02:32:05 -07:00
Peter Steinberger f14efd2a40 perf(gateway): avoid repeated legacy delivery scans (#127129)
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f5-984a-7628-a30c-491c166ff247

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 02:30:29 -07:00
Peter Steinberger 9c3335a1a4 fix(qa): restore failed-tool recovery scenarios (#126971)
* fix(qa): sync cron failed-tool honesty fixture

* fix(qa): sync channel failed-tool honesty fixture

Amp-Thread-ID: https://ampcode.com/threads/T-01a02218-492f-73b8-8514-ef342917e129

* test(qa): sync OTEL failed-tool assertion

---------

Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: Dallin Romney <dallinromney@gmail.com>
2026-08-21 02:20:53 -07:00
Peter Steinberger 782a7d7aed refactor(discord): remove obsolete action runtime wrapper (#127123) 2026-08-21 02:07:48 -07:00
Peter Steinberger be2f7c6a3d perf(test): speed up Tasks page state observations (#127121) 2026-08-21 01:58:21 -07:00
Peter Steinberger d17bbfc31a feat(nodes): expose plugin duplex channels (#126961)
* feat(nodes): expose plugin duplex channels

* fix(nodes): enforce duplex declarations
2026-08-21 01:52:06 -07:00
Peter Steinberger 32fb2fc766 fix(cli): render task flow JSON failures (#127080)
* fix(cli): render task flow JSON failures

* test(cli): stabilize entry console capture

* fix(cli): keep JSON terminal resets off stdout

* fix(cli): keep task JSON resets off stdout
2026-08-21 01:48:16 -07:00
Peter Steinberger 5edc2a7f21 fix(twitch): retire client managers before disconnect (#127103) 2026-08-21 01:33:26 -07:00
Peter Steinberger 627f862e8e perf(test): speed up new-session model control observations (#127101) 2026-08-21 01:20:01 -07:00
Peter Steinberger f28bb5e79d refactor(telegram): remove obsolete progress summary collapse (#127089) 2026-08-21 01:19:49 -07:00
Peter Steinberger 0a0d343cf2 fix(ui): refresh active agent file content (#127086)
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 01:13:55 -07:00
Peter Steinberger 426a3d1be8 fix(cron): revalidate caller scope at mutation commit (#127042)
Amp-Thread-ID: https://ampcode.com/threads/T-01a02218-21a3-720e-82e4-5c16d962084a

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 01:10:55 -07:00
Peter Steinberger dfce5f6958 perf(skills): reuse plugin metadata for watcher refresh (#127088)
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f5-984a-7628-a30c-491c166ff247

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 01:06:23 -07:00
Peter Steinberger fd3a919063 fix(media): clean failed temporary staging (#127092) 2026-08-21 01:02:27 -07:00
parthjayaram a049fe8c9b fix(cron): count isolated setup as execution progress (#93914)
Amp-Thread-ID: https://ampcode.com/threads/T-01a0220e-0046-742a-bdd8-2883b9305619

Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: Cadbury <cadbury@localclaw.local>
2026-08-21 00:58:30 -07:00
Peter Steinberger c7b216edef fix(cron): use selected account for CLI announce delivery (#126995)
* fix(cron): preserve CLI delivery account

Amp-Thread-ID: https://ampcode.com/threads/T-01a02218-35bb-715b-b40d-f918b943bbb7

* test(cron): prove CLI account-bound message sends

Amp-Thread-ID: https://ampcode.com/threads/T-01a02218-35bb-715b-b40d-f918b943bbb7

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 00:46:18 -07:00
Peter Steinberger 76af07b735 fix(onboard): redact gateway health failures (#127071)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 00:43:16 -07:00
Peter Steinberger 8ac7dd254c perf(test): speed up model provider page observation polling (#127085) 2026-08-21 00:40:36 -07:00
Peter Steinberger 58127fa73e fix(agents): remove a deleted agent's cron jobs on the offline delete path (#127075)
* fix(agents): remove a deleted agent's cron jobs on the offline delete path

Follow-up to #127037, which fixed the exec-approvals half of the same gap and
named this one explicitly.

`agents delete` tries the Gateway first and falls back to a local path. The
Gateway handler nests two transactional cleanups around the roster commit --
cron wrapping approvals wrapping the config write. After #127037 the offline
path did the inner one; it still skipped cron. So deleting an agent without a
Gateway left its scheduled jobs enabled:

    $ openclaw agents delete cronprobe --force
    Deleted agent: cronprobe            <- no mention of cron
    $ sqlite3 <state>/state/openclaw.sqlite "select job_id, name, agent_id, enabled from cron_jobs"
    975cb750-... | cronprobe-job | cronprobe | 1
    $ openclaw cron list
    cronprobe-job   every 1h   Next: in 59m   idle

To be accurate about severity: this is not silent. Each firing records
`error: "cron job agent is unavailable: cronprobe"` and `cron list` flips to
`error`. The defect is that the job keeps its schedule forever, and that
recreating an agent with the same id points it at the new agent.

The fallback had collapsed two different reasons into one `null` return, which
is what made the fix look unsafe at first: credential failures happen *before*
transport, so a live scheduler may still own the cron store, while an
unreachable Gateway means nothing else is holding it. `maybeDeleteAgentThroughGateway`
now returns a discriminated union, and only the unreachable branch mutates the
store directly. The credentials branch commits the roster, warns, and sets
`cronCleanupSkipped: true` in JSON.

The local `CronService` construction already existed inside
`local-request-context.ts`; it moves to `src/cron/local-service.ts` and both
callers share it rather than growing a second cron mutation path. That
extraction also switches the default-owner resolver from
`tryResolveLegacyCompatibilityAgentId` to `tryResolveAmbientOwnerAgentId`, which
is a superset -- it honors an explicitly configured
`agents.defaults.systemAgent.agentId` and otherwise falls back to exactly the
previous function. Live testing showed agentless memory-dreaming jobs need it to
load under explicit agent ownership.

Production +89/-62.

* test(agents): split the delete suite so the new cron coverage stays under the cap

The 40-line cron regression test added in the previous commit pushed
`src/commands/agents.delete.test.ts` to 1018 code lines, over the 1000 cap, and
`check-lint-core-3` went red. Repo policy forbids a `max-lines` suppression.

Unlike the earlier `cron/view.test.ts` split there was no describe-level seam --
23 flat tests in a single describe -- so the split follows subject instead. The
seven workspace-lifecycle tests (trashing, sharing, overlap, symlink reachability,
workspace-state cleanup) move to `agents.delete.workspace.test.ts`.

`vi.mock` and `vi.hoisted` are per-file and cannot be imported, so the mock
preamble and the shared `beforeEach` are declared in both files; the helper block
above them is unchanged in each. Each file then imports only what it uses, which
is why the import lists differ.

Trimming to a hair under the cap by moving only the new test was possible and
rejected: it would have left the file at ~978 code lines, back at the cap within
a couple of changes. This leaves 749 and 603 physical lines.

No test content changed: 27 passed before, 27 after.
2026-08-21 00:31:17 -07:00
Vincent Koc fa86caf94f fix(release): keep protected tooling trusted after main moves (#126881)
* fix(release): keep protected tooling trusted after main moves

* fix(release): cover protected tooling recovery paths

* fix(release): honor live tooling contracts

* fix(release): revalidate tooling at npm publish

* fix(release): bind npm publishers to live tooling

* fix(release): preserve trusted dispatch identity

* fix(release): revalidate parent authorization

* fix(release): bind ClawHub to release parent

* docs(release): define frozen tooling identity

* test(release): align ClawHub protected dispatch ref

* fix(release): trust protected plugin npm preflight tooling

* docs(release): scope protected writer guarantees

* fix(release): keep protected tooling foundation npm-only

* test(release): cover trusted npm preflight tooling
2026-08-21 07:24:31 +00:00
Vishal Doshi b470422371 fix(cron): surface Code Mode MCP resolution failures (#121796)
Amp-Thread-ID: https://ampcode.com/threads/T-01a0220e-1365-736f-b0f8-bfe122e23a8f

Co-authored-by: Grynn <grynn@users.noreply.github.com>
2026-08-21 00:15:35 -07:00
Peter Steinberger fc019c52b8 fix(gateway): return runtime-owned task results (#127045)
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 00:13:46 -07:00
Peter Steinberger e7e1c53250 fix(auto-reply): surface missing final replies after progress updates (#127070)
* fix(auto-reply): distinguish follow-up progress from final delivery

* test(auto-reply): compact follow-up delivery evidence cases
2026-08-21 00:07:45 -07:00
Ayaan Zaidi 190f2edd7f fix(qa): stop Mantis skipping visible Telegram changes (#127032)
Remove the premature visibility classifier and let one proof agent configure and exercise the disposable Telegram gateway. Align mock response timing with the 15-minute lane budget while preserving credential isolation through the alias-token proxy.
2026-08-21 12:33:38 +05:30
Peter Steinberger c83d212c7f perf(plugins): narrow installed index normalization imports (#127067)
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f5-984a-7628-a30c-491c166ff247

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 00:03:27 -07:00
Peter Steinberger c021295233 fix(clawhub): clean failed archive staging (#127065) 2026-08-20 23:57:35 -07:00
Peter Steinberger 46d09d1a28 perf(test): speed up Agents page observation polling (#127063) 2026-08-20 23:55:44 -07:00
Vincent Koc 2405b98b05 fix(android): explicitly target notification intents (#127055) 2026-08-20 23:48:16 -07:00
Yuval Dinodia 8ec5ae0693 fix(agents): preserve literal Unicode-space paths (#126797)
Preserve model-supplied filename identity for mutations while keeping existence-checked Unicode-equivalent fallback for reads.

Co-authored-by: yetval <yetvald@gmail.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-21 12:18:11 +05:30
Vincent Koc 73ff2d2f45 fix(agents): distinguish review routing from enforcement (#126216) 2026-08-20 23:47:14 -07:00
Shakker faa1cfc598 fix(ui): associate steering work by target run (#126997) 2026-08-21 07:45:40 +01:00
Shakker b2d49afd8e fix(ui): collapse completed pre-steer work 2026-08-21 07:45:40 +01:00
Shakker 69fa1a8eab fix(codex): preserve steering transcript order 2026-08-21 07:45:40 +01:00
Peter Steinberger 72c8bf9946 fix(gateway): retain Bonjour cleanup on startup failure (#127062) 2026-08-20 23:39:12 -07:00
Vincent Koc 750f2f3762 fix(release): require concrete validation retry groups (#127012)
* fix(release): require concrete validation retry groups

* fix(release): reject mismatched retry filters

* fix(release): align retry controller vocabulary

* fix(release): preserve historical validation evidence

* fix(release): validate retry filters before scheduling

* test(release): follow shared filter validator

* docs(testing): clarify release QA retry groups
2026-08-20 23:35:16 -07:00
Peter Steinberger 5570c5ffac fix(file-transfer): expose directory page tokens (#127051) 2026-08-20 23:28:31 -07:00