Commit Graph

37819 Commits

Author SHA1 Message Date
Vincent Koc
46848ee4f6 refactor(infra): remove JSONL socket testing alias (#105510) 2026-07-12 18:11:18 +02:00
Vincent Koc
6d2eabc9ea refactor(cli): remove config guard testing alias (#105506) 2026-07-12 18:04:09 +02:00
Vincent Koc
bb7f71c7b3 refactor(logging): remove dead diagnostic testing export (#105505) 2026-07-12 17:56:59 +02:00
Jesse Merhi
90008b081b fix(signal): preserve native quote replies from agent sends (#105347)
* fix(signal): persist native reply context

* fix(signal): retain implicit native reply context

* fix(signal): inherit current reply in message tool

* fix(signal): preserve implicit reply provenance

* fix(signal): match equivalent reply targets

* test(signal): narrow threading context

* fix(signal): retain effective reply mode

* fix(signal): preserve explicit reply provenance

* fix(signal): carry reply provenance

* fix(signal): retain reply context on no-op merge

* fix(signal): honor disabled implicit replies

* fix(signal): keep reply policy plugin-local

* docs(changelog): note Signal native quote replies
2026-07-13 01:41:20 +10:00
Alix-007
bbac74685d fix(dashscope): apply request policy to video requests (#102094)
* fix(dashscope): apply request policy to video requests

* fix(dashscope): apply request policy to task follow-ups
2026-07-12 11:11:15 -04:00
qingminlong
4ecc67678d fix(cli): reject malformed attach ttl values (#105103)
* fix(cli): reject malformed attach ttl values

* fix(cli): clarify attach ttl grammar
2026-07-12 17:44:44 +03:00
Vincent Koc
5482421f14 refactor(sessions): route updates through patch path (#105469) 2026-07-12 16:41:26 +02:00
Vincent Koc
a124c18c5f refactor(doctor): localize database bloat collector (#105468) 2026-07-12 16:33:49 +02:00
Vincent Koc
9fbee6edb0 refactor(infra): localize APNS response body limit (#105459) 2026-07-12 16:25:43 +02:00
Vincent Koc
dca992cb21 refactor(cli): share precomputed help dispatch (#105409) 2026-07-12 16:24:52 +02:00
NIO
92db88e36b fix(github-copilot): bound Copilot token exchange fetch timeout (#104488)
* fix(github-copilot): bound Copilot token exchange fetch timeout

* fix(github-copilot): harden token exchange deadline

Co-authored-by: hugenshen <hu.genshen@xydigit.com>

* chore: remove release-owned changelog entry

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 15:24:39 +01:00
Vincent Koc
e479a3ba68 test(update): include ClawHub sync summary fixtures 2026-07-12 16:23:35 +02:00
Vincent Koc
1ac22971f7 fix(update): skip plugins switched through ClawHub 2026-07-12 16:23:35 +02:00
Vincent Koc
71e4ff5e80 refactor(agents): simplify apply patch matching (#105395) 2026-07-12 16:20:58 +02:00
Vincent Koc
baa9eb4d7b refactor(audit): remove unused recorder reset (#105446) 2026-07-12 16:16:59 +02:00
Peter Steinberger
5da7dbd4c4 fix(clawhub): restore bounded promotions refresh and lint (#105411)
* fix(clawhub): remove useless query body assignment

* docs(agents): note delegated Testbox lifecycle

* docs(agents): clarify delegated Testbox sync

* fix(clawhub): bound promotions feed refresh latency
2026-07-12 15:08:07 +01:00
Peter Steinberger
1c3ab38f16 fix(sqlite): canonicalize migration target aliases (#105390)
* fix(sqlite): canonicalize migration target aliases

* chore: keep release changelog owned
2026-07-12 15:02:25 +01:00
Vincent Koc
ef196b68b4 refactor(sqlite): centralize verified snapshot publication (#105412)
Co-authored-by: Gio Della-Libera <giodl73@gmail.com>
2026-07-12 15:47:03 +02:00
Peter Steinberger
1b313dc4d4 chore(tooling): enforce indexed access in core tests (#105375)
* test(tooling): enforce indexed access in core tests

* test(tui): constrain theme environment overrides

* test(doctor): enforce indexed access in migration fixtures
2026-07-12 14:29:52 +01:00
Vincent Koc
2c98b21584 fix(clawhub): retry transient package reads (#105388) 2026-07-12 15:25:55 +02:00
Vincent Koc
58d55ca0f5 fix(gateway): allow iOS watch relay commands 2026-07-12 15:22:19 +02:00
Vincent Koc
b84f42c27f refactor(channels): remove obsolete testing alias (#105385) 2026-07-12 15:18:03 +02:00
Vincent Koc
720774aa67 fix(sqlite): preserve complete database file sets during recovery (#105370)
* fix(sqlite): harden agent database recovery

* chore(sqlite): allow recovery maintenance primitive
2026-07-12 15:10:11 +02:00
Vincent Koc
a8b3a51f01 refactor(wizard): remove obsolete testing alias (#105377) 2026-07-12 15:05:21 +02:00
Peter Steinberger
4289c6c16c feat(cloud-workers): replayable worker live-event streaming into the session fanout (#105275)
* feat(protocol): add worker live-event frames

* feat(gateway): fan out replayable worker live events

* feat(gateway): add worker live-event replay receiver

* docs(protocol): document worker live events

* fix(gateway): preserve deferred worker live events

* test(gateway): cover deferred worker event projection

* refactor(gateway): revert async projection layer

* fix(gateway): retain buffered worker live events

* fix(gateway): guard buffered terminal admission

* fix(plugin-sdk): trim worker live-event declarations
2026-07-12 13:47:59 +01:00
Vincent Koc
15b539a381 refactor(commands): remove obsolete testing aliases (#105369) 2026-07-12 14:47:29 +02:00
Vincent Koc
165651fb79 refactor(skills): remove obsolete testing aliases (#105363) 2026-07-12 14:26:54 +02:00
Vincent Koc
3dc38267cd fix(sqlite): harden session migration restore (#105358) 2026-07-12 14:23:42 +02:00
Vincent Koc
e357203be5 refactor(doctor): remove obsolete testing aliases (#105355) 2026-07-12 14:13:14 +02:00
snowzlmbot
84fb7a664d feat(android): manage skills from settings (#101864)
* feat(android): manage skills from settings

Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com>

* fix(android): scope skill install claims

* chore(android): refresh native i18n inventory

* chore(android): refresh native locale artifacts

* fix(android): localize skill management state

* chore(android): refresh skill localization artifacts

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com>
2026-07-12 13:12:43 +01:00
Peter Steinberger
f9cc26c17d docs(plugin-sdk): correct beta compatibility contract (#105341)
* docs(plugin-sdk): correct beta compatibility contract

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>

* docs(agents): note scripts pr usage

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-12 13:06:26 +01:00
Peter Steinberger
c6dc5bc764 fix(canvas): hosted pages fail on macOS with scoped Gateway auth (#105336)
* fix(canvas): harden hosted Canvas on macOS

Resolve Gateway-hosted Canvas and A2UI targets through refreshed node capabilities, keep bridge and live-reload behavior correct, and restrict native action dispatch to the exact trusted main-frame document.

Preserve scalar evaluation results, secure action IDs, and hidden state-directory watching.

Co-authored-by: GuoJiaming <804436395@qq.com>
Co-authored-by: Lucenx9 <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: zeng-weihan <ceng.weihan@xydigit.com>

* chore(canvas): defer release note

* chore(canvas): refresh native i18n inventory

* refactor(canvas): isolate hosted surface resolution

---------

Co-authored-by: GuoJiaming <804436395@qq.com>
Co-authored-by: Lucenx9 <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: zeng-weihan <ceng.weihan@xydigit.com>
2026-07-12 13:02:27 +01:00
Vincent Koc
5819f837a9 refactor(infra): remove obsolete git testing alias (#105345) 2026-07-12 13:47:33 +02:00
Vincent Koc
5e453f3c72 fix(ci): restore repo e2e and beta plugin compatibility (#105287) 2026-07-12 13:43:25 +02:00
Vincent Koc
0dc19bbb2b refactor(auto-reply): remove obsolete testing aliases (#105332) 2026-07-12 13:29:04 +02:00
Peter Steinberger
91175d0662 fix(gateway): accept shared macOS platform pins (#105311)
* fix(gateway): accept shared macOS platform pins

* chore(pr): keep release notes in PR body
2026-07-12 12:12:58 +01:00
Vincent Koc
98f2dc89df refactor(gateway): remove stale testing aliases (#105312) 2026-07-12 13:11:35 +02:00
Vincent Koc
ff4b4517d2 refactor(agents): remove stale testing aliases (#105293) 2026-07-12 12:47:30 +02:00
Peter Steinberger
feff4c7824 fix(plugin-sdk): isolate expect declaration surface 2026-07-12 11:23:43 +01:00
Peter Steinberger
0350b87f06 test(ci): repair plugin prerelease contracts (#105272)
* test(ci): repair plugin prerelease contracts

* docs(agents): clarify stale Testbox recovery

* docs(agents): require Bash for Testbox compounds
2026-07-12 11:13:08 +01:00
Peter Steinberger
a824078101 fix(channels): tombstone corrupt ingress rows (#105259)
* fix(infra): guard channel ingress queue parseJson against corrupted JSON

* fix(infra): fix type assertion in ingress queue test

* fix(infra): use tagged parse result and validate payload before claiming

* fix(infra): remove unnecessary non-null assertion in ingress queue test

* fix(infra): scan corrupt ingress rows in claimNext

* test(gateway): avoid typed empty mock call tuple access

* fix(infra): tombstone corrupt ingress rows on duplicate enqueue and stale recovery

Two P1 gaps: enqueue() threw on duplicate when the existing row had corrupt
payload_json, and recoverStaleClaims() silently skipped corrupt claimed rows,
leaving them invisible to recovery. Both paths now tombstone the unrecoverable
row as failed with reason "corrupt_payload" and return a proper result.

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

* fix(infra): resolve lint shadow and await-thenable in recoverStaleClaims

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

* fix(channels): tombstone corrupt ingress rows

* test(channels): use explicit placeholder claim tokens

* refactor(channels): name claim token values

* refactor(channels): keep claim projection direct

* fix(channels): preserve active ingress claims

* fix(channels): make corrupt recovery policy-aware

* refactor(channels): name corrupt claim token

* fix(channels): bound corrupt ingress reconciliation

* fix(channels): paginate pending ingress by key

* refactor(telegram): return live owner check directly

* build(plugin-sdk): refresh public export budget

---------

Co-authored-by: Pick-cat <huang.ting3@xydigit.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-12 11:09:52 +01:00
Vincent Koc
4c077df1b1 fix(sqlite): repair canonical unique index drift (#105260)
* fix(sqlite): repair canonical unique index drift

* chore(sqlite): allow schema repair DDL
2026-07-12 18:08:16 +08:00
Vincent Koc
34205aabf9 refactor(plugins): remove obsolete runtime helpers (#105273) 2026-07-12 18:05:22 +08:00
Peter Steinberger
1999935108 fix(config): restore canonical flat streaming-key resolution and preserve discord preview mode in doctor migration (#105054)
* fix(config): keep flat streaming keys resolving for canonical-flat channels and pin discord preview default in doctor migration

* fix(discord): pin inherited streaming mode for account alias migration and align core streaming test
2026-07-12 11:00:24 +01:00
Peter Steinberger
5b56a1f664 feat(gateway): land remaining durable-approvals stack and repair main gates (#104837)
* feat(gateway): propagate approvals to ancestor sessions with replay

Squash-rebased #103921 segment onto the native-clients tip on current main.
Session-scoped approval events publish sanitized pending/terminal
transitions to opted-in session audiences, with authoritative pending
replay on stream subscribe and durable-expiry reconciliation through the
owning manager. SessionApprovalEvent/Replay wire types export from the
approvals owner module; Swift models regenerated.

(cherry picked from commit 2d1dcf9747044710111d0c730fc46ba6013a165c)
(cherry picked from commit ccf88efd56b513d07599ffcee997bf0cddaf9adc)
(cherry picked from commit 8eb33f59f00ec9ee4625259b76bd7ae60d2cd480)
(cherry picked from commit c297cbc93c8401e9c79c20f242245a194f5dd236)
(cherry picked from commit 93d68f28601ff37d863da4db009504993a22533a)
(cherry picked from commit d285ccd8b2f212bb57e814107e7709c896e96b7d)
(cherry picked from commit 5c536982231402b1b58d1683794ea9948b32d077)
(cherry picked from commit 1646e5b6dc4dd20de54e10f110a5909be18d7d50)
(cherry picked from commit 35cf1b705b247fb282f4d56ffe74bd2fb238221f)
(cherry picked from commit 4f8ef3699d)
(cherry picked from commit 74fbdcc99d5fff062d67760a51dba4ee9e84479b)
(cherry picked from commit 222b285502681d2be14b1819798e9ee5555f431e)
(cherry picked from commit b9e744951f676b600e7c5322bfd04b0e99797c07)
(cherry picked from commit 9e904efde5)
(cherry picked from commit 678f2384fa)
(cherry picked from commit 72842e5cf6)
(cherry picked from commit be74c25e80e84a1f065053766f23efb84822e811)
(cherry picked from commit 93ba8c4b09)
(cherry picked from commit 8f23761372)

* feat(gateway): fail-closed plugin and tool approval gates

Squash-rebased #103932 segment onto the ancestor-propagation tip on
current main. Plugin node.invoke approvals claim a one-shot allow-once
decision before handing execution authority to the policy, so observation
or retry cannot replay a consumed approval; sibling tool gates bind
approval ids to their originating reviewer identity.

(cherry picked from commit 122df0d75281f572c012b6484ed5daf085d1d577)
(cherry picked from commit f23d8ac240a8dcf2a42c4daaae962263975a0ae8)
(cherry picked from commit 8632fb6436a224dac7a9a9ef0216884530de2c24)
(cherry picked from commit d9fe2dd5c53665e5732f5f3da5ed1907a686ade8)
(cherry picked from commit bb139f2c8aa36ddad70413e1ef79ff491a6f2ecd)
(cherry picked from commit 9b3e056b68ea515c7d4baef269289b6670570480)
(cherry picked from commit b11e66b59a7af1f3b08712de06864aed64d349e4)
(cherry picked from commit a12916ee592d03dfa35e86a2aaede4476a5d4e5d)
(cherry picked from commit d699de840fc8346892b9ae244fe3c3e8c4413032)
(cherry picked from commit 9b7e5a9608)
(cherry picked from commit 4b507593f1b2f10b4496984c84a2803b853e5c5e)
(cherry picked from commit 56408a186733c4eeb5aa76bd5907cde7b0cd3d5b)
(cherry picked from commit a4051d6d8353d39d6fa0b5d69c36e06c3cd3e796)
(cherry picked from commit 76829805a7)
(cherry picked from commit a8b493f934)
(cherry picked from commit aceb990597)
(cherry picked from commit a29b0e75482470c53a9fb4fe3f204e14cf71868f)
(cherry picked from commit 2e3be08653)
(cherry picked from commit c9ae3d7202)

* fix: main-gate repairs for the durable-approvals stack

- android: capture createdAtMs on the pending exec-approval write at
  registration; canonical readback after a refresh that already replaced
  the visible rows was dropping the approval instead of surfacing the
  still-pending reconciliation message (#104913 merged without this)
- android: generous CI timeout ceilings in GatewayExecApprovalRuntimeTest
- agents: hermetic model-discovery test via the plugins/provider-runtime
  boundary (lazy plugin-runtime resolution hangs vitest workers since #104770)
- cli: usage-cost settle-budget test asserts the budget bound on every call
  instead of pinning the poll count (fast hosts fit a second poll in 50ms)
- protocol coverage: allowlist session.approval for ios/android (native
  review rides exec.approval push/nudge delivery)
- docs map, native i18n inventory, plugin-sdk api baseline regenerated
2026-07-12 10:51:38 +01:00
Peter Steinberger
ce562c3511 test(openai): align prerelease contracts (#105256) 2026-07-12 10:49:48 +01:00
Peter Steinberger
c4b41c1e4a fix: clear transcript search data when sessions are deleted (#105249)
* fix: delete session transcript search state

* chore: keep release note in PR body
2026-07-12 10:43:53 +01:00
Peter Steinberger
1bea458124 test(plugins): align prerelease contracts (#105252) 2026-07-12 10:42:34 +01:00
Vincent Koc
a67b124f10 refactor(sessions): remove unused transcript helpers (#105245) 2026-07-12 17:40:54 +08:00
Peter Steinberger
48e7f76e3a fix(nodes): expose typed executable lookup to agents (#105182)
* fix(nodes): add typed executable lookup action

* test(nodes): refresh executable lookup snapshots
2026-07-12 10:36:33 +01:00