licheer-zte
f24e164f69
fix(recovery): reclaim proven-stale reply-only ownership with zero queued backlog ( #122265 )
...
* fix(recovery): reclaim proven-stale reply-only ownership with zero queued backlog
Stuck-session recovery kept reply-only ownership forever when the queued
backlog was empty: isActiveRunProgressStale short-circuits to false at
queueDepth 0, so stale active_reply_work was never reclaimed even after
the durable session became killed. Evaluate staleness for reply-only
ownership without the queue gate (the gate stays for run-handle paths),
so proven-stale reply work expires through the existing abort-and-drain
owner path while global-lane and deferred-maintenance exemptions and
live reply work with recent progress are preserved.
Closes #122227
* fix(recovery): keep maintenance phases out of zero-backlog stale reclaim
The zero-backlog reclaim path (requireQueueBacklog: false) applied to
every reply-only operation, including preflight_compacting and
memory_flushing. Those phases are explicitly recognized as compaction
and may honor a configured timeout above the stale threshold, so a valid
long-running maintenance operation could be force-cleared early.
Restore the queue-backlog guard for the maintenance phases so an
unqueued compaction or memory flush is never reclaimed by this path;
ordinary reply-only ownership keeps the zero-backlog expiry. Adds
regressions for both maintenance phases.
2026-08-12 17:42:48 -07:00
Vincent Koc
8733dcd05f
fix(ci): expose AI pack diagnostics ( #122786 )
2026-08-13 08:25:58 +08:00
Josh Lehman
41f4b5f673
fix(ui): archived sessions leave sidebar after navigation ( #122876 )
...
* oc-ad0.1: fix archived child session retention
* oc-37c: evict archived child on navigation
2026-08-13 00:25:38 +00:00
Peter Steinberger
f3f203f31d
refactor(agents): split subagent-control.ts into owner modules ( #122875 )
2026-08-12 17:23:39 -07:00
Peter Steinberger
abe0cd691d
refactor(media): remove orphan generation facades ( #122874 )
2026-08-12 17:19:22 -07:00
Josh Lehman
542ac9ac68
fix: make live updater checkout portable (oc-237) ( #122873 )
2026-08-12 17:17:18 -07:00
Josh Lehman
a3207b574c
fix(ui): show progress during new session startup ( #122713 )
...
* fix(ui): show progress during new session startup
Refs #122703
* oc-1fa: keep new-session progress through handoff
* fix(ui): keep new-session handoff live
* fix(ui): preserve navigation callback contract
2026-08-13 00:17:12 +00:00
Jacqueline Henriksen
800328f14e
feat(cli): allow editing automation display names ( #122702 )
...
* feat(cli): allow editing automation display names
* feat(cli): allow clearing automation display names
2026-08-12 17:15:21 -07:00
Peter Steinberger
2abe2e29bb
test(cron): focus runtime config composition ( #122867 )
...
Co-authored-by: Amp <amp@ampcode.com >
2026-08-12 17:13:40 -07:00
Vyctor H. Brzezowski
a5ff8f5c33
fix(ui): keep composer capability menus within the viewport ( #122296 )
...
* fix(ui): constrain composer capability menus
* fix(ui): cap composer capability menu height
* test(ui): cover long capability menu states
* test(ui): capture capability menu interaction states
* fix(ui): keep dark capability states legible
2026-08-12 17:10:57 -07:00
Peter Steinberger
08b134324f
feat: continue web sessions in the terminal ( #122870 )
...
* feat: continue sessions in terminal
Add a credential-free Control UI continuation command and allow openclaw resume to reuse current-profile authentication only for byte-exact configured Gateway targets.
* fix(gateway): separate public origin TLS ownership
Allow exact public-origin resume targets to reuse local authentication without inheriting the direct local listener certificate fingerprint.
* fix(gateway): scope exact targets to gateway mode
Prevent remote profiles from reusing dormant local Gateway authentication for explicit loopback or public-origin targets.
* fix(cli): encode terminal resume handoffs
Replace shell-specific quoting with a strict credential-free base64url handoff, gate configured auth reuse to validated handoffs, and skip unused session discovery.
* fix(gateway): isolate handoff auth identity
Suppress ambient Gateway auth fallback for validated handoffs while preserving explicit credentials, configured SecretRefs, stored device auth, and exact-target TLS ownership.
* fix(cli): harden terminal resume handoffs
* fix(cli): parse terminal handoff outcomes
* fix(cli): bind handoffs to resolved agent
* test(ui): align terminal continuation proof
* docs(plan): track terminal continuation
* refactor(ui): keep terminal handoff result local
2026-08-12 17:07:48 -07:00
Peter Steinberger
52cda537a4
test(discord): move ready abort proof to lifecycle ( #122869 )
2026-08-12 16:54:20 -07:00
Peter Steinberger
7c7c7524ad
feat: add paired-device worker provider foundation ( #122769 )
...
* feat(worker-provider): add core device lease foundation
* feat(gateway): dispatch sessions to paired devices
* test(gateway): cover node-ready lifecycle edge
* fix(gateway): defer device worker installation prep
* chore(plugin-sdk): refresh API baseline
* test(gateway): isolate worker turn state database
* docs(runners): refresh milestone table format
* test(gateway): track device dispatch temp state
2026-08-12 16:50:09 -07:00
Peter Steinberger
5c2e099374
fix(codex): restore promoted approval regression coverage ( #122861 )
...
* test(codex): align projector fixtures with verbose policy
* test(codex): supply admitted host context to hook relay fixtures
2026-08-12 16:30:30 -07:00
Peter Steinberger
8ffb97cdd2
test(ui): remove duplicate stale recovery case ( #122860 )
2026-08-12 16:26:36 -07:00
Peter Steinberger
ae6f813e73
refactor(agents): split subagent announce delivery ( #122853 )
...
* refactor(agents): split subagent announce delivery
* fix(agents): defer announce runtime dependency reads
2026-08-12 16:23:34 -07:00
Peter Steinberger
be600d0a24
fix: restore Telegram release isolation checks ( #122843 )
...
* fix(release): repair isolated Telegram QA runtime
sticky runner/SUT suite root permits config locks without config replacement; add PS1 after attested env verification for nested login shells.
* test(node-host): own desktop teardown resets
2026-08-12 16:21:45 -07:00
Josh Lehman
bb5ef9872a
fix: resume sessions interrupted by gateway restarts ( #122644 )
...
* fix: resume sessions interrupted by gateway restarts
* fix: make session recovery retry-safe
* refactor: isolate restart session recovery
* test: track recovery temp directories
* fix: inherit recovery state under lifecycle lock
* fix: surface rejected recovery continuation
* fix: fence recovery continuation authority
* chore: regenerate plugin sdk api baselines
* test(gateway): track sessions.recover release train
2026-08-12 16:18:58 -07:00
Peter Steinberger
01a5bcc5c0
test: avoid provider policy loading in media reply tests ( #122857 )
...
Co-authored-by: Amp <amp@ampcode.com >
2026-08-12 16:07:23 -07:00
Peter Steinberger
a8b05c66d7
test(macos): remove residual smoke probes ( #122856 )
2026-08-12 16:04:32 -07:00
Peter Steinberger
75332a2671
fix(tooling): fail deadcode report on scan errors ( #122847 )
2026-08-12 15:59:37 -07:00
Peter Steinberger
adf8e254ab
fix(ui): let read-only operators copy task results ( #122841 )
...
* fix(ui): let read-only operators copy task results
* refactor(ui): consolidate operator scope checks
2026-08-12 15:58:55 -07:00
Peter Steinberger
1ca60fbc3a
refactor(agents): make multi-agent ownership explicit (H2-1 core) ( #114388 )
...
* refactor(agents): make roster ownership explicit
* feat(config): materialize legacy agent roles
* fix(cron): migrate legacy owners at startup
* feat(gateway): expose agent selection contracts
* fix(gateway): enforce agent-scoped authorization
* docs(config): document explicit agent ownership
* fix(config): pin retained owner workspace
* fix(gateway): target hook wakes at effective agent
* fix(sessions): preserve fixed-store ownership
* fix: preserve retained agent ownership
* fix: preserve legacy agent ownership across runtime surfaces
* fix: fail closed on ambiguous session ownership
* fix: preserve compatibility owners across dispatch and writes
* fix: preserve retained agent projections
* fix: preserve agent ownership compatibility
* fix: preserve per-agent heartbeat guidance
* fix: preserve compatibility owners in generic paths
* fix: enforce configured ownership in session paths
* fix: defer remote roster selection
* fix: preserve ownership across session and config writes
* fix: fail closed on ambiguous restored ownership
* fix: preserve explicit ACP and legacy ownership
* fix: honor durable fixed-store ownership
* fix: enforce fixed-store owner authority
* fix: preserve ownership evidence boundaries
* fix: honor resolved session ownership
* fix: align compatibility ownership paths
* fix: persist legacy main store ownership
* fix: close ownership fallback gaps
* fix(agents): close retained owner compatibility gaps
* fix(agents): enforce session owner resolution
* fix(agents): complete session owner resolution sweep
* fix(agents): preserve durable session ownership
* fix: complete persisted session owner routing
* fix: thread prepared session owners
* fix: preserve stable session ownership
* fix: enforce session ownership boundaries
* fix: close session ownership delta gaps
* fix: reconcile session ownership after rebase
* fix: reconcile ownership with current main
* fix: align session store path imports
* fix: align session store config path import
* fix: reconcile explicit ownership CI
* fix: reconcile ownership rebase checks
* fix: align ownership ci contracts
* fix: align ownership rebase checks
* fix: preserve compatibility owner during setup
* fix(doctor): migrate ownerless heartbeat monitors
* fix(gateway): preserve explicit session ownership
* test: align ownership fixtures after rebase
* test: complete plugin manifest fixture
* test: align runtime context mocks
* fix(gateway): preserve alias routing for existing sessions
* style: format agent routing update
* fix(gateway): preserve selected owner during alias routing
* style: normalize rebased ownership files
* fix(gateway): preserve owner through global alias routing
* fix(gateway): preserve explicit ownership at HTTP boundaries
* fix(gateway): validate compatibility model ownership
* fix(agents): reconcile strict session ownership
* fix(agents): contain media yield callback failures
* fix(agents): avoid eager bare-key owner resolution
* chore: refresh rebased ownership baselines
* chore: align hosted plugin SDK baseline
* chore: refresh ownership baselines after main sync
* chore: refresh ownership baselines after main sync
* test: align routed event owner fixtures
* chore: retrigger CI after runner startup failure
* chore: refresh ownership SDK budgets after main sync
* fix(tasks): require agent identity for bare owners
* chore: align Linux plugin SDK baseline
* chore: remove release-owned changelog entry
2026-08-12 15:55:16 -07:00
Peter Steinberger
9b9f2ab403
test(core): remove duplicate assertions ( #122848 )
2026-08-12 15:43:12 -07:00
Peter Steinberger
ef0cb2ed95
test: avoid provider discovery in btw tests ( #122835 )
...
Co-authored-by: Amp <amp@ampcode.com >
2026-08-12 15:38:45 -07:00
Peter Steinberger
f8c0e1b832
ci: ignore OpenClaw metadata in dependency fingerprint ( #122839 )
...
Co-authored-by: Amp <amp@ampcode.com >
2026-08-12 15:33:56 -07:00
Peter Steinberger
d003e08756
refactor(plugin-sdk): remove final test-only facades ( #122844 )
2026-08-12 15:28:22 -07:00
Peter Steinberger
9ed96868eb
refactor(worker): streamline live preview delivery ( #122830 )
...
* refactor(worker): streamline live preview delivery
* refactor(worker): internalize live response error type
2026-08-12 15:25:23 -07:00
Peter Steinberger
6b9bea84f0
feat(node-host): supervise durable worker launches ( #122829 )
...
* feat(node-host): add worker launch supervision
* fix(node-host): harden worker lifecycle ownership
* fix(node-host): harden worker execution boundary
* fix(node-host): preserve worker trust settings
* chore(plugin-sdk): refresh worker lifecycle baselines
* docs(plan): track runner implementation slices
* test(node-host): await runtime shutdown owner
2026-08-12 15:24:05 -07:00
Peter Steinberger
93f5e0f1f6
fix(build): restore exact cache output snapshots ( #122837 )
2026-08-12 15:20:11 -07:00
Peter Steinberger
87b503675a
fix(ui): recover failed bundled plugin views ( #122823 )
...
* fix(ui): recover failed bundled plugin views
* fix(ui): guard automatic plugin chunk reloads
2026-08-12 15:10:21 -07:00
Peter Steinberger
5bcbbcf6fd
test(gateway): move OpenAI usage fallback coverage ( #122825 )
2026-08-12 15:03:18 -07:00
Peter Steinberger
307021eca4
refactor(agents): split subagent-registry-run-manager.ts into owner modules ( #122826 )
2026-08-12 14:54:10 -07:00
Kimi Yu
f9316c4697
fix(slack): stop repeated outage notices in active threads ( #122782 )
2026-08-12 14:41:41 -07:00
Peter Steinberger
431b8ec4a4
fix(cron): stop retrying permanent delivery rejection ( #122821 )
2026-08-12 14:32:11 -07:00
Peter Steinberger
c58dbaff22
fix(slack): session card stuck on Working after concurrent mentions ( #122816 )
...
* fix(slack): terminalize a progress card detached by a concurrent mention
Rapid mentions in one Slack conversation fire the draft-message boundary
notifier, which calls forceNewMessage and clears the draft stream's message
identity so later output lands below the human message. The already-posted
Working card survives in Slack but becomes unreachable: finalize(), clear(),
and the drop-on-failed-finalize fallback all key on the stream's current
identity, so the card stays at Working forever.
Retain messages the draft stream abandons while un-finalized, expose
dropDetachedMessages(), and drain it from the card's finalize path so final
delivery, error closeout, and turn rotation all terminalize. Also implement
onQueuedFollowupSettled so a queued turn draining after its dispatch already
returned cannot leave a card in Working state. Both cleanups are gated on the
session-card mode: partial/append previews hold streamed assistant text the
human already replied to and must stay visible.
* fix(slack): drain detached cards appended during an in-flight delete
The detached-card drain snapshotted its queue, so a human message routed
synchronously through the conversation boundary during an awaited delete
appended a card the same drain would never remove. The silent-turn closeout
also dropped before its clear(), leaving that window unowned.
Drain until the queue is stable and make the drain the last act on the silent
exit path, so a card detached mid-cleanup still reaches removal.
2026-08-12 14:31:46 -07:00
Peter Steinberger
25121bdb45
perf(ci): tail-balance compact large shards ( #122818 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-019ff3db-c467-70ad-8ed3-81f2ba94b0c0
Co-authored-by: Amp <amp@ampcode.com >
2026-08-12 14:25:14 -07:00
Peter Steinberger
b6548e509a
refactor(state): retire commitments schema ( #122176 )
...
* refactor(state): retire commitments schema
* fix(state): complete commitments retirement safeguards
* test(state): expect doctor retirement report
* test(state): prove doctor v7 markers atomically
* fix(state): align schema support metadata
* fix(state): report actual commitments retirement
* fix(state): validate retired commitments schema
* fix(state): preserve early commitments upgrades
* fix(state): require exact commitments index set
* fix(state): reject non-exact retired schemas
* fix(state): recognize supported retirement layouts
* fix(state): expose commitments retirement to doctor
* fix(voice-call): describe commitments retirement
* test(state): align v7 rebase proof
* fix(state): protect commitments retirement dependencies
* fix(state): accept partial commitments layouts
* chore(docs): refresh v7 api baselines
2026-08-12 14:21:34 -07:00
Peter Steinberger
2335332a5b
refactor(ai): remove Azure provider testing export ( #122819 )
2026-08-12 14:16:26 -07:00
Peter Steinberger
27c6b97d6a
test: parallelize web fetch CLI checks ( #122811 )
...
Co-authored-by: Amp <amp@ampcode.com >
2026-08-12 14:11:49 -07:00
Peter Steinberger
5fda9d09f0
feat(deploy): add experimental Cloudflare deployment template ( #122768 )
...
* feat(deploy): add experimental Cloudflare template
* fix(deploy): keep container SSH debug access opt-in
* fix(deploy): satisfy scripts tsgo lane and model wrangler entrypoint in knip
* fix(deploy): model wrangler-consumed exports and isolated dependency in knip
The Worker default export and Durable Object class are instantiated by
wrangler from wrangler.jsonc, and @cloudflare/containers lives in the
template's isolated package.json — modeled per the deadcode checks' own
guidance rather than root-manifest changes.
* docs(deploy): align SSH bootstrap flow with the disabled-by-default policy
2026-08-12 14:07:48 -07:00
sunlit-deng
120a75da51
fix(slack): surface unavailable forwarded images ( #122108 )
...
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-08-12 16:07:18 -05:00
Peter Steinberger
79380000e0
refactor(plugin-sdk): remove test-only facades ( #122807 )
2026-08-12 13:57:07 -07:00
Peter Steinberger
468dc55a39
fix(matrix): silence empty inbound dedupe migration receipt on fresh installs ( #122808 )
...
On a pristine profile, onboarding/doctor printed "Auto-migrated legacy
state: Recorded Matrix inbound dedupe migration completion (0 SQLite
roots, 0 JSON roots scanned)" even though nothing was migrated. Keep
the durable empty-scan receipt (it still prevents later historical
databases from being opened) but only emit the user-visible change line
when at least one SQLite/JSON root was scanned.
2026-08-12 13:56:04 -07:00
Peter Steinberger
391b8ae0a5
test(markdown): remove native profile self-checks ( #122803 )
2026-08-12 13:53:28 -07:00
Peter Steinberger
be124de8fb
test: slim gateway session creation coverage ( #122789 )
...
* test: slim gateway session creation coverage
* test: move incognito initialization to its owner
---------
Co-authored-by: Amp <amp@ampcode.com >
2026-08-12 13:43:47 -07:00
Peter Steinberger
99a9827077
fix(cron): retain deleted job history by agent ( #122791 )
2026-08-12 13:32:15 -07:00
Peter Steinberger
7595d6f432
test(tooling): remove helper replays ( #122790 )
...
* test(tooling): remove helper replays
* refactor(tooling): inline fixture json serialization
2026-08-12 13:31:23 -07:00
Kimi Yu
e1b8150a06
fix(codex): let owners install plugins from discovered marketplaces ( #122389 )
...
* fix(codex): allow owner-approved marketplace plugins
* fix(codex): preserve marketplace validation and remove unused exports
* docs(codex): clarify already-installed plugin authorization
2026-08-12 20:29:40 +00:00
Josh Lehman
88d6b571b0
fix(ui): keep tool failure state on individual calls ( #122681 )
2026-08-12 13:20:58 -07:00