Commit Graph

39960 Commits

Author SHA1 Message Date
Omar Shahine e430a1beb2 feat(approvals): emit bold headers and labels in approval prompts (#113193)
* feat(approvals): emit bold headers and labels in approval prompts

Approval prompts carried plain-text labels, so iMessage showed no formatting
even though its send path now translates markdown into attributed-body ranges
(the markdown-core profile refactor, #113002). Emit bold on the headers and
field labels so channels that render markdown show formatted approval text:
iMessage into native ranges, other markdown channels into their native bold,
and channels that downgrade drop the markers cleanly.

Closes #85954.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7d86Ww4vJwxJwY4z1AVx6

* test(approvals): update prompt-text assertions for bold labels

* feat(approvals): bold the auto-review rationale in reaction prompts

The rationale is the reason for the interruption, so it should stand out.
Generated text, but the reaction-runtime renderers parse to an IR that
tolerates stray markers, so a rationale containing a lone marker degrades
gracefully rather than breaking the emphasis span.

* fix(approvals): preserve reaction binding and Signal rendering for bold prompts

Codex + local ClawSweeper caught that bolding the prompt headers/labels broke
downstream consumers of the visible approval text:

- Reaction/tapback binding on iMessage, Signal, and WhatsApp anchors on the
  plain `Exec approval required` / `ID:` format. Strip `**` markers in each
  channel's binding parser before matching, so binding still correlates the
  delivered prompt. Adds an iMessage bold-format binding regression test.
- Signal sent the approval payload with textMode "plain", so the markers would
  reach users literally. Switch Signal's approval sends to markdown mode;
  markdownToSignalText renders the headers as native bold. WhatsApp already
  renders markdown by default; iMessage renders via extractMarkdownFormatRuns.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7d86Ww4vJwxJwY4z1AVx6

* style(approvals): oxfmt the touched approval files

---------

Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 08:06:05 -07:00
Peter Steinberger 10484486a0 test: restore shared runtime state (#113334) 2026-07-24 07:51:10 -07:00
Peter Steinberger 3b3a3d1d56 test(plugin-sdk): restore memory-host timers (#113339) 2026-07-24 07:46:18 -07:00
Gio Della-Libera f88e7e46a1 feat: bind signed ClawHub default feed trust (#101981)
* feat: bind signed ClawHub feed trust

* fix(feeds): preserve trust and enforce expiry

* fix(feeds): enforce signed catalog HTTP contract

* fix(feeds): align signed feed validation

* fix: preserve hosted catalog trust boundaries

* fix(feeds): stage custom feed identity binding

* fix(feeds): require complete entry trust authority

* fix(feeds): retain feed schema trust context

* fix(feeds): enforce schema trust before overlays

* fix(feeds): satisfy catalog trust CI checks

---------

Co-authored-by: Gio Della-Libera <giodl@microsoft.com>
2026-07-24 07:27:09 -07:00
Peter Steinberger 07e3855b46 refactor(heartbeat): remove legacy HEARTBEAT.md runtime fallback and template repair (#113131)
The database scratch migration (3e2b3ea4) left two named upgrade bridges:
the revision-0 read-only HEARTBEAT.md fallback in the heartbeat runner and
the doctor heartbeat-template repair contribution. This deletes both; the
doctor scratch migration remains the sole upgrade path.

Merge gate: hold until the next stable release containing 3e2b3ea4 has
shipped and completed its upgrade window.
2026-07-24 07:11:19 -07:00
Vincent Koc ebf2306c1d fix(sqlite): normalize Windows verification paths (#113313)
* fix(sqlite): normalize Windows verification paths

* test(windows): normalize backup archive fixture paths

* test(windows): separate backslash and traversal archive cases
2026-07-24 21:00:15 +08:00
Vincent Koc d2200f64af fix(doctor): apply compatibility after plugin repair (#113317) 2026-07-24 20:25:10 +08:00
Vincent Koc 48d65f94a1 fix(test): release SQLite fixtures before Windows cleanup (#113316)
* fix(test): close SQLite fixtures before Windows cleanup

* test(windows): extend fixture cleanup retries

* fix(test): avoid registry reads during fixture cleanup
2026-07-24 20:04:57 +08:00
Peter Steinberger 4cd327e31f refactor(agents): split subagent registry internals (#113297)
* refactor(agents): split subagent registry

* fix(agents): defer registry restore until exports initialize
2026-07-24 04:44:37 -07:00
Vincent Koc 3bfc23c676 fix(backup): publish archives durably (#113302) 2026-07-24 19:12:11 +08:00
Vincent Koc 218c2fe3a5 fix(update): preserve JSON output during resume (#113298) 2026-07-24 18:56:20 +08:00
Peter Steinberger b614661646 fix(test): satisfy no-map-spread in exec approvals (#113303) 2026-07-24 03:36:19 -07:00
Pavan Kumar Gondhi 76af831155 fix: keep OAuth refresh failures terminal [AI] (#112957)
* fix: fail closed on oauth refresh errors

* fix: keep prepared auth refresh failures terminal

* fix: preserve prepared auth profile fallback
2026-07-24 15:50:49 +05:30
Pavan Kumar Gondhi 1fc81c2054 fix: reusable exec approvals apply to approved arguments (#112946)
* fix: bind allow-always exec approvals to argv

* test: update exec approval persistence expectations

* fix: hash reusable exec approval arguments

* test: pin POSIX exec approval hash expectation

* fix: match hashed exec approvals in macOS

* fix: encode exec approval argv hashes unambiguously

* fix: bind native exec approval grants to argv

* test: expect hashed exec approval patterns

* fix: ignore legacy broad exec approval grants

* fix: hash shell script allow-always grants

* fix: require argv binding for package manager grants

* fix: bind positional carrier approval grants

* fix: address approval check failures

* fix: format approval policy test

* fix: reject context-changing package manager grants

* fix: keep build-enabled pnpm dlx grants one-shot

* fix: reject npm exec context grants

* fix: catch npm exec tail context options

* fix: block npm package context approvals

* fix: block leading pnpm dlx context grants

* fix: restrict durable positional carrier grants

* docs: clarify generated exec approvals

* fix: block post-dlx pnpm context grants
2026-07-24 15:38:38 +05:30
Peter Steinberger 050475b9de refactor(agents): split tool search internals (#113296) 2026-07-24 03:04:14 -07:00
Pavan Kumar Gondhi dc4c5887fa fix: keep inline eval approvals one-shot [AI] (#112956)
* fix: classify inline eval interpreters

* fix: cover inline eval flag variants

* fix: handle snippet eval option aliases

* fix: classify debugger and runtime callbacks

* fix: tighten interpreter eval matching

* fix: cover gdb early init eval flags

* fix: cover bundled eval option forms

* fix: cover gdb eval abbreviations

* fix: cover iex and guile eval forms
2026-07-24 15:21:24 +05:30
ooiuuii 89643f6401 fix(openai): fail fast on invalid TLS certificates (#111818)
* fix(openai): stop retrying TLS certificate failures

* fix(ai): centralize TLS certificate failover policy

---------

Co-authored-by: Altay <altay@hey.com>
2026-07-24 12:34:01 +03:00
Pavan Kumar Gondhi 2628fae0da fix: recognize more shell wrappers [AI] (#112955)
* fix: recognize more shell wrappers

* fix: cover windows shell wrapper aliases

* fix: limit shell rewrite parsing set

* fix: recognize yash cmdline option

* fix: fail closed for opaque shell rewrites

* fix: recognize nushell execute mode

* fix: fail opaque shell allowlist matches closed

* fix: suppress opaque shell positional previews

* fix: parse nushell value options before commands

* fix: block opaque shell script fallbacks

* fix: keep nushell startup configs bound

* fix: preserve plus-option shell script binding

* fix: fail opaque shell fallback paths closed

* fix: reject shell inline flags in script fallback

* fix: block nushell startup option binding

* fix: fail opaque system run transports closed

* fix: deny hidden opaque shell approvals

* fix: keep startup shell payloads opaque

* fix: keep osh shell payloads opaque

* fix: use analysis result in allowlist test

* fix: parse nushell attached command flags

* fix: keep nushell attached parsing local
2026-07-24 15:03:58 +05:30
Pavan Kumar Gondhi 7fc9a7c465 fix: block opaque exec dispatch wrappers (#112953) 2026-07-24 14:47:21 +05:30
Vincent Koc f5b3f2a89d fix(backup): validate canonical sqlite ownership (#113287) 2026-07-24 17:10:58 +08:00
Peter Steinberger b233faa057 refactor(tasks): split task registry internals (#113279)
* refactor(tasks): split task registry internals

* test(tasks): align registry ownership boundary
2026-07-24 02:09:04 -07:00
Vincent Koc 741ed2d6a8 fix(update): migrate config before plugin convergence (#113280) 2026-07-24 16:55:38 +08:00
Pavan Kumar Gondhi 91ea4e03fa fix: redact additional GitLab token prefixes [AI] (#112954)
* fix: redact additional GitLab token prefixes

* fix: cover GitLab runner token variants

* test: construct GitLab redaction fixtures

* fix: consume full GitLab OAuth tokens

* fix: preserve long GitLab OAuth redaction

* fix: keep legacy OAuth token masking
2026-07-24 14:15:15 +05:30
Vincent Koc adf78cefbd refactor(daemon): centralize environment source lookup (#113283) 2026-07-24 16:45:03 +08:00
Peter Steinberger 73bba03e4c refactor: canonicalize session delivery state (#113225)
* refactor: canonicalize session delivery state

* test: canonicalize reply persistence fixtures

* test: canonicalize talk delivery fixtures

* test: canonicalize voice session routes

* test: canonicalize attachment delivery fixtures

* test: migrate gateway delivery fixtures

* fix: skip invalid session delivery rows

* test: align delivery SDK surface gates

* fix: preserve legacy delivery precedence

* test: canonicalize heartbeat delivery fixtures

* fix: preserve delivery route prompt identity

* test: canonicalize session delivery fixtures

* fix: preserve recoverable legacy delivery routes

* fix: canonicalize remaining session state

* fix: preserve canonical session classification

* style: format delivery state changes

* test: refresh plugin SDK delivery baseline

* test: avoid mutating session fixture input

* style: simplify delivery identity check

* style: simplify delivery origin spread

* fix: preserve fresh delivery route metadata

* test: assert canonical surface route switch

* fix: canonicalize doctor file-store imports

* fix: preserve transitional delivery migration state

* fix: satisfy canonical delivery CI gates

* ci: scope GitHub App token permissions

* test: infer canonical delivery projections

* test: canonicalize ACP requester delivery fixtures

* test: canonicalize harness rollback fixture

* style: apply pinned formatter
2026-07-24 01:01:19 -07:00
Vincent Koc d29b11300f refactor(gateway): centralize approval request delivery (#113268) 2026-07-24 15:58:56 +08:00
Peter Steinberger 5e6a15b1bd test: consolidate outbound delivery fixtures (#113238) 2026-07-24 00:52:52 -07:00
Peter Steinberger d79537d651 refactor: drop obsolete async resolution opt-ins (#113234) 2026-07-24 00:51:20 -07:00
Peter Steinberger ce1db4e94e refactor(tasks): reduce task registry test duplication (#113239)
* test(tasks): consolidate task registry fixtures

* test(tasks): keep fixture helper behind boundary
2026-07-24 00:51:15 -07:00
Jason (Json) aee46707ba feat(plugins): support manifest-declared MCP Apps in native plugins (#113224)
* feat(plugins): load native manifest MCP servers

* fix(gateway): advertise proxied plugin surface ports

* fix(codex): retain MCP App transcript previews

* fix(codex): render native MCP apps inline

* fix(mcp-apps): resolve harness-native views by session

* fix(codex): normalize null MCP result metadata

* fix(ui): give inline MCP apps full message width

* test(codex): use generic native MCP App fixtures

* chore(plugin-sdk): refresh harness runtime baseline

* refactor(codex): isolate native MCP App contracts

* fix(codex): satisfy native app CI contracts

* fix(ci): scope automation app tokens

* chore(ci): defer token scopes to current main
2026-07-24 01:43:48 -06:00
Peter Steinberger 418b79f31a test(plugins): consolidate update fixtures (#113243) 2026-07-24 00:42:55 -07:00
Peter Steinberger aae10cade5 refactor(markdown): unify format profile declarations (#113254)
* refactor(markdown): unify format profile declarations

* test(markdown): avoid suppression inventory drift
2026-07-24 00:37:59 -07:00
Vincent Koc dce0d71b92 fix(sqlite): repair all canonical unique indexes (#113261) 2026-07-24 15:29:26 +08:00
Peter Steinberger eac10a01d5 refactor(cli): split config command implementation (#113248)
* refactor(cli): split config command implementation

* refactor(cli): keep split helpers private

* style(cli): format private unset result
2026-07-24 00:27:00 -07:00
Vincent Koc 342816a58d fix(i18n): publish Android flavor locale artifacts 2026-07-24 15:26:58 +08:00
Vincent Koc 772e320a8d refactor(qa): remove duplicate report renderer (#113258) 2026-07-24 15:02:44 +08:00
Peter Steinberger 3f53286c95 test: consolidate reply session fixtures (#113250) 2026-07-23 23:59:12 -07:00
Peter Steinberger 64b9fafc75 refactor(agents): split subagent registry machinery (#113247) 2026-07-23 23:36:36 -07:00
Vincent Koc f5cc8b6da6 fix(sqlite): support long Windows snapshot paths (#113228)
* fix(sqlite): support long Windows snapshot paths

* test(sqlite): run snapshot paths in Windows CI

* fix(sqlite): normalize long Windows VFS paths
2026-07-24 14:34:51 +08:00
joshavant 71c558edbd fix(cron): explain CLI cap upgrade failures 2026-07-24 01:24:03 -05:00
joshavant 29bf235e6a fix(cron): keep self-management context private 2026-07-24 01:24:03 -05:00
joshavant 30ef341c54 fix(cron): preserve scheduled self-management 2026-07-24 01:24:03 -05:00
joshavant 90b53ec2d9 fix(cron): bind scheduled authority to creator session 2026-07-24 01:24:03 -05:00
joshavant 96539d1c3c test(cron): align generated and compatibility gates 2026-07-24 01:24:03 -05:00
joshavant a325467557 fix(cron): preserve scheduled caps across CLI and worker upgrades 2026-07-24 01:24:03 -05:00
joshavant 9df64e55a1 refactor(doctor): collect scheduled policy outcomes 2026-07-24 01:24:03 -05:00
joshavant bd559a98ed fix(cron): migrate scheduled authority provenance 2026-07-24 01:24:03 -05:00
joshavant f24361a32a fix(cron): scope declarations by owner account 2026-07-24 01:24:03 -05:00
joshavant 6fc390c260 refactor(agents): isolate client capability filter 2026-07-24 01:24:03 -05:00
joshavant 00b3b4f8e5 fix(agents): keep plugin delivery account scoped 2026-07-24 01:24:03 -05:00