Commit Graph

81321 Commits

Author SHA1 Message Date
Dallin Romney 41194dadb9 test(qa): prove Slack pagination request budget 2026-08-24 16:23:48 -07:00
Dallin Romney 7e69a9111b qa: retain required Slack history timestamps 2026-08-24 16:06:00 -07:00
Dallin Romney c5bbd85297 qa: paginate Slack channel observations 2026-08-24 15:53:57 -07:00
Dallin Romney bc0cfeba6c fix(qa): retain Slack presentation history 2026-08-21 10:07:20 -07:00
Peter Steinberger 781ded80d6 fix(plugins): register static node-host commands without activation (#127043)
The node host resolves its plugin registry via loadPluginRegistryHandle
(activate:false). Since #117587 static definition.nodeHostCommands only
registered under runFullActivationOnlyRegistrations, so headless nodes
silently lost browser.proxy (and the browser/file caps), breaking the
meeting-bot chain with 'No connected Google Meet-capable node with
browser proxy'. Register node-host commands in every load mode; each
command keeps its own isAvailable gate. reload and security audit
collectors stay activation-only.
2026-08-21 09:52:20 -07:00
Peter Steinberger 4343b38ce7 perf(googlechat): render bullet markers in one pass (#127274)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 09:34:18 -07:00
Onur Solmaz 1319e1e606 fix(providers): report request acceptance consistently (#126028)
* fix(providers): restore provider acceptance lifecycle

* fix(providers): cancel streams on acceptance failure

* test(amazon-bedrock): split stream lifecycle coverage

* refactor(providers): keep acceptance lifecycle private

* refactor(providers): make acceptance observation synchronous

* refactor(providers): narrow private observer safely

* fix(google): keep response hook within retry deadline

* test(ui): tolerate subpixel spacing variance

* test(ui): wait for durable draft before reload
2026-08-21 19:32:07 +03:00
Eden 830196c628 fix(scripts): keep Windows lint runs from failing before any file is checked (#126274)
* fix(scripts): keep Windows lint runs from failing before any file is checked

`pnpm lint:extensions` aborts on Windows whenever the plugin SDK boundary
cache is cold: the boundary prep spawns `node_modules/.bin/tsgo` directly,
and Windows cannot execute the extensionless pnpm shim, so the run dies with
ENOENT before oxlint checks a single file. The stylelint runner reached by
`check-changed` fails the same way for the same reason.

Both now build their child process with `createManagedCommandInvocation`,
the launcher every other repo tool runner already uses, which routes the shim
through cmd.exe on Windows and returns the command unchanged everywhere else.

Off Windows the spawned command, arguments, and options are byte-identical to
before, so only the broken platform changes behavior.

* fix(scripts): stop the lint pipeline from spawning a tool shim directly

`pnpm lint` reaches stylelint through the same raw shim spawn that broke the
boundary prep, so the pipeline dies on Windows after oxlint succeeds. Route it
through the managed launcher like every other tool runner.

The remaining hazard is structural: the resolver hands out a path that only
some callers know to normalize, and the three sites that forgot were spread
across two spawn shapes. Add a static guard so a shim can only flow into a
launcher that understands the platform, and so the next occurrence fails on
Linux CI instead of on a contributor's Windows machine.

* test(scripts): trim Windows shim regression coverage

Punchcard-Session: cobalt-orchard-willow-2q

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-21 09:31:50 -07:00
Dallin Romney c4d07b398b fix(release): allow unreleased changelog in SHA preflight (#127019) 2026-08-21 09:28:36 -07:00
Dallin Romney 7600b2a36a test(release): honor Codex ultra request mapping (#127058) 2026-08-21 09:27:28 -07:00
Vincent Koc d993742d2c test(gateway): repair release-validation fixtures (#127263)
* test(onboard): preserve prompt defaults in inference E2E

* test(clawhub): identify skill fixture source
2026-08-21 09:20:56 -07:00
ClawSweeper 975027aee9 fix(ui): remove redundant mobile header alerts (#127235)
Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-08-21 09:18:52 -07:00
Vincent Koc a2f0b84e8a fix(release): report blockers before diagnostics finish (#127014)
* fix(release): separate decisions from diagnostic drain

* test(release): align decision drain fixtures

* fix(release): pin artifact downloads to valid v8 SHA

* fix(release): default empty evidence paths in plans

* fix(release): bind complete evidence reuse selection

* fix(release): harden retry artifact integrity

* fix(release): canonicalize reused validation evidence

* fix(release): bind manifest children to execution plan

* test(release): fix validation fixture types

* fix(release): retry transient decision artifact reads
2026-08-21 09:14:39 -07:00
Dallin Romney 8091f7ceb3 test(qa): align failed-tool recovery oracle (#127077)
* test(qa): bound OTEL runtime timeout evidence

* test(qa): identify OTEL runtime wait stage

* test(qa): align failed-tool recovery oracle

* test(qa): bound recent OTEL trace evidence

* test(qa): keep trace summary type private
2026-08-21 09:11:17 -07:00
Dallin Romney ef91c818c4 fix(agents): preserve built plugin artifacts in prepared runtimes (#125957)
* fix(agents): preserve built plugin artifacts in prepared runtimes

* test(agents): update prepared runtime loader contract

* fix(agents): preserve built preference for deferred plugins

* fix(plugins): carry artifact preference through load context

* fix(plugins): keep artifact context optional

* test(plugins): prove prepared built artifact projection

* fix(agents): scope built artifacts to gateway runtimes

* test(agents): preserve standalone loader call shape

* fix(agents): retain prepared artifact choice on reuse

* test(plugins): update prepared load context expectation

Amp-Thread-ID: https://ampcode.com/threads/T-01a023b8-1041-7686-975f-c9f3ef91755d

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 09:10:48 -07:00
Dallin Romney 566b0e53d5 fix(ai): retain compaction-only replay checkpoints (#127106)
* test(gateway): publish runtime in agent E2Es

* test(gateway): leave replay fix to owner PR

* fix(ai): retain compaction-only replay checkpoints

* fix(ai): preserve empty compaction replay checkpoints
2026-08-21 09:10:10 -07:00
Peter Steinberger 7085604a26 fix(ui): correct Automations row semantics (#127252)
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 09:05:52 -07:00
Dallin Romney 8531da1993 fix(gateway): run transcript cursor E2E with full startup (#127094)
* test(gateway): publish runtime in agent E2Es

* test(gateway): leave replay fix to owner PR
2026-08-21 09:05:05 -07:00
Dallin Romney 2fe6b67871 fix(test): read migrated Codex auth from shared owner (#127097) 2026-08-21 09:04:39 -07:00
WhatsSkiLL 407930cb6a feat(wear): add direct agent, session, and model pickers (#126863)
* feat(wear): add searchable context pickers

* fix(wear): simplify context picker rows

* fix(wear): prioritize chat actions over context

* fix(wear): keep chat follow above context controls

* fix(wear): keep context labels localized

* fix(wear): refine context picker layout and close

* fix(wear): sync picker locale resources

* fix(wear): negotiate picker search support

---------

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
2026-08-21 11:54:47 -04:00
Peter Steinberger 870f936851 perf(sessions): avoid full key tokenization (#127249)
Amp-Thread-ID: https://ampcode.com/threads/T-01a02481-e149-77dd-a132-a2797e238ef8

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 08:52:12 -07:00
Dallin Romney 9c64ed87e9 test(agents): keep fallback E2E runtime coherent (#127079) 2026-08-21 08:50:34 -07:00
Yuval Dinodia 5eb28a3b40 fix(outbound): retry queued deliveries when a channel adapter is unavailable (#126800)
* fix(outbound): retry queued deliveries when a channel adapter is unavailable

Delivery queue recovery classified "Outbound not configured for channel" as a
permanent provider rejection, so a queued message and its spooled attachment
were dead-lettered on the first attempt whenever the channel adapter was
momentarily unresolvable. That string is a local adapter-resolution failure
thrown by createChannelHandler, not a provider verdict, and the live send path
already treats it as retryable.

Remove the pattern so adapter unavailability consumes the normal retry budget.

* fix(outbound): type adapter lookup failures

---------

Co-authored-by: Altay <altay@hey.com>
2026-08-21 18:41:42 +03:00
Peter Steinberger 0095168ae6 fix(cli): render Nodes validation failures (#127223) 2026-08-21 08:38:57 -07:00
Shakker f65b7e06ea fix: persist manual Codex compactions (#127230) 2026-08-21 16:24:53 +01:00
Shakker 7b5430a2d3 test: cover durable compaction activity 2026-08-21 16:24:53 +01:00
Shakker a5bac03e51 fix: preserve Codex compaction activity 2026-08-21 16:24:53 +01:00
Peter Steinberger 3ae7ba3194 fix(ui): copy Lobsterdex links through clipboard fallback (#127194)
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 08:13:49 -07:00
Vincent Koc 15664db855 refactor(approvals): unify native client setup (#127189) 2026-08-21 07:56:38 -07:00
Vincent Koc 7833e242cb fix(ci): isolate performance candidate trust (#127160) 2026-08-21 07:54:56 -07:00
Vyctor H. Brzezowski 03d4b8a9c3 fix(ui): expose active split pane to assistive tech (#127213) 2026-08-21 11:37:36 -03:00
Peter Steinberger 7d83ff7c8f improve(terminal): speed up fitting table rendering (#127221)
* test(terminal): cover fitting table cell rendering

Amp-Thread-ID: https://ampcode.com/threads/T-01a0242a-0302-708f-a777-ec7c0a5c9c60

* perf(terminal): skip wrapping work for fitting ASCII cells

Amp-Thread-ID: https://ampcode.com/threads/T-01a021f5-984a-7628-a30c-491c166ff247

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 07:37:16 -07:00
Peter Steinberger 2cbfade48b fix(ui): copy task results through clipboard fallback (#127181)
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f4-b547-7788-a916-d4a94cbd3e3b

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 07:31:58 -07:00
Yiğit ERDOĞAN ff83e3efe8 test(extensions): close cached agent databases before removing fixture state dirs (#126352)
Doctor migrations and auth-profile writes open per-agent and shared state
databases under the fixture's temporary directory. Clearing the plugin
state store or the runtime auth snapshots does not release those handles,
so Windows fails the directory removal with EBUSY while Linux unlinks the
open files and stays green.

Close the cached databases before each removal, matching the ordering the
zalouser and zalo fixtures already use.
2026-08-21 07:22:57 -07:00
ClawSweeper f94f945314 improve(ui): declutter Automations across desktop and mobile (#127198)
* improve(ui): declutter automations list

* test: align automation UI and process cleanup

Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>

---------

Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-08-21 06:56:43 -07:00
ClawSweeper 7498391c81 improve: show condition activity in automation history (#127200)
Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-08-21 06:55:32 -07:00
ClawSweeper ebdb6115dd feat(ui): compact mobile chat header (#126788)
* feat(ui): compact mobile chat header

* refactor(ui): move mobile status into session menu

* fix(ui): close mobile status menu before details

* test(ui): follow compact header actions

Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>

---------

Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-08-21 06:54:41 -07:00
Peter Steinberger 2644dfd651 perf(agents): avoid duplicate tool catalog fingerprinting (#127188)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 06:49:31 -07:00
ClawSweeper 9050d9b0a7 fix(ui): align configured automation trigger status (#126784)
Vertically center the configured trigger label with the Advanced heading and cover the rendered geometry in Chromium.

Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-08-21 06:23:18 -07:00
Hüseyin 6132c6f6cb fix: exec treats empty workdir from models as omitted (#126509)
* fix(exec): treat exact empty workdir as omitted

Small tool-calling models fill every optional field of the exec schema,
so exec arrives with workdir: "" instead of omitting the field. The
empty string was treated as a literal path and the command was refused,
wasting agent turns and surfacing misleading failures (e.g. the model
concluding the runtime is unavailable).

Normalize only the exact empty string to omitted at the workdir input
boundary; whitespace-only and nonempty invalid paths remain fail-closed.

Closes #126390

* fix(exec): align exec schema with empty-workdir behavior

The shared model-facing schema still declared blank and whitespace
workdirs invalid while the resolver now treats an exact empty string as
omitted. Update the schema description to state that an empty string
means omitted and only whitespace-only values are invalid, and update
the schema assertion accordingly.
2026-08-21 06:14:42 -07:00
ruel225 587c7524e5 fix(normalization-core): preserve non-Error object causes with extra keys in formatErrorMessage (#126654)
* fix(normalization-core): preserve non-Error object causes with extra keys

The cause-chain branch of formatErrorMessage called only
formatStatusAndCode(cause) with no stringifyUnknown fallback, while the
top-level branch used formatStatusAndCode(value) ?? stringifyUnknown(value).
formatStatusAndCode returns undefined for any object whose keys are not
exactly status/code, so a non-Error object cause carrying extra keys (e.g.
{ statusCode: 429 } or { status: 503, code: "UNAVAILABLE", requestId: "abc" })
was silently dropped — appendCauseMessage(undefined) no-op'd and the loop
broke, losing the diagnostic/retryable detail.

Mirror the top-level branch: appendCauseMessage(formatStatusAndCode(cause) ??
stringifyUnknown(cause)). Behavior-neutral for causes that already render;
restores the dropped detail for the asymmetric case. stringifyUnknown is a
local helper in the same file.

Closes #126652

Co-Authored-By: Claude <noreply@anthropic.com>

* test(normalization-core): assert structured cause metadata

---------

Co-authored-by: ruel225 <ruel225@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Altay <altay@hey.com>
2026-08-21 16:09:25 +03:00
Jesse Merhi efbcb57569 fix(control-ui): autocomplete model thinking levels (#123507)
* fix(control-ui): autocomplete model thinking levels

* fix(control-ui): keep thinking options model-current

* fix(control-ui): execute catalog thinking levels

* fix(control-ui): close stale think picker

---------

Co-authored-by: Jesse Merhi <openclaw@users.noreply.github.com>
2026-08-21 23:02:33 +10:00
Peter Steinberger e66d7c5cac fix(qa): index scenario execution paths (#127185) 2026-08-21 05:49:27 -07:00
Goutam Adwant 17d1204b76 fix(gateway): avoid session lookup for stream events (#125872) 2026-08-21 15:31:24 +03:00
Ayaan Zaidi e8d2b8cb18 fix(mantis): keep Telegram proof running and honest (#127108)
Make long, free-form Telegram proof runs truthful and resilient. Keep the trusted mock harness current across historical SUTs, preserve intentional silence and blocked outcomes, remove fixed attempt/lifetime caps, and export cropped motion proof without the prior memory spike.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-21 17:53:54 +05:30
Peter Steinberger 085044cd5f perf(plugins): reuse provider ownership metadata (#127178)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 05:21:44 -07:00
Peter Steinberger 02bba8ee84 fix(heartbeat): honor configured session for monitor wakes (#127153)
Sessionless interval heartbeat monitor and task wakes now defer to the
configured heartbeat session, while explicit user sessions and ordinary cron
event queue ownership remain unchanged.

Maintainer replacement for #116373 because the external fork cannot satisfy
the strict Clownfish landing transaction. The replacement preserves the
accepted patch exactly on current main.

Fixes #116205.
Thanks @sloptop-the-terrible for the original patch and @QQSHI13 for the report.

Co-authored-by: sloptop-the-terrible <310909503+sloptop-the-terrible@users.noreply.github.com>
2026-08-21 05:11:01 -07:00
Peter Steinberger 498471396f fix(gateway): refresh health after runtime inspection failure (#127174) 2026-08-21 05:04:20 -07:00
Peter Steinberger 1dbcbb2fb0 fix(ui): keep segmented selections visible in forced colors (#127165)
* test(ui): cover segmented controls in forced colors

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

* fix(ui): preserve segmented selection in forced colors

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

* fix(ui): separate forced-color selection and focus

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

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 04:53:52 -07:00
Peter Steinberger cb563bb16d perf(test): speed up board provider snapshot observations (#127163) 2026-08-21 04:26:39 -07:00