Commit Graph

19174 Commits

Author SHA1 Message Date
Syu b316c9cacf fix(channels): honor explicit preview streaming settings
Explicit Telegram and Discord preview modes now override inherited block streaming while explicit channel block settings remain authoritative.

Co-authored-by: Syu <zhuqimo@gmail.com>
2026-08-05 09:04:49 +05:30
Peter Steinberger ad37e91fbb refactor(telegram): consolidate outbound contracts and targets (#119438) 2026-08-04 20:33:45 -07:00
Peter Steinberger b5d99c1f06 fix(qa): retry transport cleanup and always stop owned labs (#119442) 2026-08-04 20:31:28 -07:00
Peter Steinberger b5237ac86a fix(qa): preserve scenario isolation in serial suites (#119439) 2026-08-04 20:26:47 -07:00
Vincent Koc e35d22807e perf(xai): lazy-load optional capability runtimes (#119374)
Punchcard-Session: coral-workshop-workshop-3f
2026-08-05 11:26:40 +08:00
Peter Steinberger 767dc7019d refactor(browser): consolidate browser CLI and normalization helpers (#119432) 2026-08-04 20:26:21 -07:00
Peter Steinberger bf1bdb429e fix(qa): require ready transport accounts (#119431) 2026-08-04 20:23:31 -07:00
Jason (Json) ab7b3ffd1f fix: retry delivery when outbound adapter is unavailable (#119371)
* fix(outbound): preserve pre-dispatch retryability

* test(outbound): assert lazy runtime sender

* fix(feishu): preflight direct message runtime

* test(gateway): preserve scoped registry fixture
2026-08-04 21:22:07 -06:00
Peter Steinberger 0ef1911192 refactor(signal): share outbound and reaction transport (#119415) 2026-08-04 20:19:33 -07:00
Vincent Koc 1ee0564b09 fix(discord): avoid doctor runtime loading (#119391)
* fix(discord): publish doctor capability metadata

Punchcard-Session: amber-workshop-river-yr

* fix(doctor): read packaged channel metadata

Punchcard-Session: amber-workshop-river-yr
2026-08-05 11:05:35 +08:00
Peter Steinberger 847e6eea8e fix(slack): infer upload filename extensions from MIME types (#119399)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-04 19:57:10 -07:00
Peter Steinberger 4707934b30 refactor(google-meet): unify gateway and tool dispatch (#119413) 2026-08-04 19:52:26 -07:00
mushuiyu886 e8eb765ab7 fix(chutes): honor serving context limits (#119196) 2026-08-04 19:42:54 -07:00
Dinesh H Suthar 50c7444edf fix(sessions): preserve compatible auth profiles on model changes (#117550)
* fix(model-picker): preserve compatible auth profiles
* chore(plugin-sdk): refresh API baseline
* fix(model-picker): keep profile policy core-owned
* fix(model-picker): preserve profiles across auth aliases
* chore(plugin-sdk): update public surface budgets
* fix(model-picker): honor explicit profile clearing
* fix: preserve compatible auth profiles on model changes
* perf: reuse prepared auth profile metadata
* docs(plugin-sdk): document direct model persistence fallback
* test: expose auth snapshot in directive mock

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
Co-authored-by: Dinesh Suthar <dineshsld20@gmail.com>
2026-08-05 07:40:00 +05:30
Vincent Koc 9f8270dedc fix(qa): stop zombie-only gateway process groups (#119396)
Punchcard-Session: amber-orchard-valley-s4
2026-08-05 10:07:28 +08:00
Vincent Koc 6a8e11e63c fix(qa): repair release validation scenarios (#119150)
* fix(qa): repair parity and matrix media setup

Punchcard-Session: silver-valley-valley-dt

* test(qa): accept token-budgeted compaction suffix

Punchcard-Session: silver-valley-valley-dt

* test(qa): scope request diagnostics

Punchcard-Session: silver-valley-valley-dt

* test(qa): prove thread-memory causality

Punchcard-Session: silver-valley-valley-dt

* test(qa): configure Matrix image generation and fail fast

Punchcard-Session: silver-valley-valley-dt

* fix(qa): require memory get before thread recall

Punchcard-Session: silver-valley-valley-dt

* fix(qa): unify mock provider dispatch

Punchcard-Session: silver-valley-valley-dt

* fix(qa): repair Anthropic IDs and compaction causality

Punchcard-Session: silver-valley-valley-dt

* fix(qa): authenticate compaction wire causality

Punchcard-Session: silver-valley-valley-dt

* fix(qa): preserve Responses tool item identity

Punchcard-Session: silver-valley-valley-dt

* fix(qa): scope restart heartbeat proof

Punchcard-Session: silver-valley-valley-dt

* test(qa): assert causal traces before delivery

Punchcard-Session: silver-valley-valley-dt

* fix(qa): validate code mode completion evidence

Punchcard-Session: silver-valley-valley-dt

* test(qa): split causal catalog checks

Punchcard-Session: silver-valley-valley-dt

* style(qa): format matrix scenario tests

Punchcard-Session: silver-valley-valley-dt
2026-08-05 09:56:06 +08:00
Peter Steinberger ed31a4dd79 fix(slack): authorize reaction and message reads before applying limits (#118736)
* fix(slack): bound reaction users in message actions

* test(slack): validate encoded reaction request bodies

* fix(slack): keep reaction user limits in action owner

* fix(slack): authorize message reads before validating limits

---------

Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-04 18:12:59 -07:00
Sarah Fortune c56eaca14b fix(slack): Fix bad escaping in slack tool commentary (#119373)
* fix(slack): preserve Markdown in progress drafts

* fix(slack): retain escaping for tool progress

* fix(slack): scope progress line escaping

* fix(slack): preserve progress formatting by source

* test(slack): assert plan refresh rendering

* test(slack): keep progress regression coverage scoped

* update tests

---------

Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com>
2026-08-04 18:10:25 -07:00
Josh Avant 618fba92bf feat(audit): add execution identity inspection (#117034)
* feat(audit): add opt-in execution identity inspection

* fix(audit): gate recovery identity retention

* fix(audit): keep recovery identity type private

* test(audit): type internal recovery fixture

* test(audit): split recovery identity coverage

* docs(audit): define operator read trust boundary

* test(qa): register identity scenario child

* fix(audit): enforce shared identity retention bounds

* fix(audit): seal public ingress identity boundary

* fix(audit): keep ingress guard lint-clean

* fix(gateway): preserve advertised method order

* chore(protocol): sync advertised method order

* fix(protocol): encode audit selector invariants

* test(audit): prove exact execution guard

* fix(audit): keep identity storage lazy
2026-08-04 20:05:15 -05:00
Peter Steinberger 58025dd33c fix(fs): adopt fs-safe 0.5.2 untrusted filename sanitization (#119363)
* fix(fs): adopt fs-safe 0.5.2 untrusted filename sanitization

* fix(media): classify pre-open identity drift as access denial

* chore(checks): refresh SDK baseline and env-var budget for fs-safe adoption

* test(media): compact sanitizer cases under max-lines

* fix(agents): keep workspace symlink contract under fs-safe 0.5.2

* fix(infra): align path normalization and atomic-write proofs with fs-safe 0.5.2

* fix(fs): keep operator symlink contracts on config, control-ui, skills, hooks

* fix(fs): restore sandbox and session-lock contracts under fs-safe 0.5.2

* test(claws): expect symlink diagnostic for tampered plan parents

* fix(agents): canonicalize apply-patch mutations through contained aliases

* test(agents): split alias-update regression into focused file

---------

Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-04 17:53:44 -07:00
Arthur Lacoste f207e14d92 fix(telegram): keep commands responsive during Codex login
Release Telegram’s chat lane after structured Codex device-code delivery while account-owned authentication completes safely in the background.

Co-authored-by: Arthur Lacoste <arthurlacoste@users.noreply.github.com>
2026-08-05 05:59:13 +05:30
Vincent Koc cbde3c1945 perf(memory): defer session backfill runtime (#119372)
Punchcard-Session: coral-workshop-workshop-3f
2026-08-05 08:16:20 +08:00
Vincent Koc fb81d03d8e fix(commands): restore tool inventory for dynamic models (#119306)
* fix(qa): scale Telegram compact command timeout

* fix(qa): surface Telegram compact reply failures

Punchcard-Session: amber-workshop-river-yr

* fix(commands): prepare tool inventory model context

Punchcard-Session: amber-workshop-river-yr

* test(commands): type runtime context mock

Punchcard-Session: amber-workshop-river-yr

* docs(changelog): note tool inventory repair

Punchcard-Session: amber-workshop-river-yr

* chore(release): defer tool inventory note

Punchcard-Session: amber-workshop-river-yr

* fix(ci): lower environment variable budget

Punchcard-Session: amber-workshop-river-yr
2026-08-05 06:57:21 +08:00
Yiğit ERDOĞAN 0d18bde848 fix(media): release rejected BytePlus and Runway video downloads under debug capture (#119257)
…r debug capture

When the debug proxy is enabled it patches global fetch and clones every
response, so the caller-facing body is one branch of a live tee. Cancelling
such a branch settles only after both branches cancel, so awaiting it in the
rejected-download path leaves the download pending instead of surfacing the
malformed-response error.

Both providers read the completed media URL through the global fetch, so they
reach the capture clone. Switch them to the fire-and-forget release the other
generated-media owners already use, and cover each with a regression that keeps
a capture clone live while the download is rejected.

Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-08-04 17:48:10 -05:00
Peter Steinberger 2d1242556e test(msteams): serve JWKS from in-process server in auth coverage (#119354)
* test(msteams): serve JWKS from in-process server in auth coverage

The Entra/service-token validator tests spied JwksClient.prototype on the
jwks-rsa copy the test file imports, but the SDK's internal
require("jwks-rsa") resolves a different physical copy and vitest cannot
intercept a CommonJS require inside node_modules — so the spy missed and
the tests hit the real login.botframework.com / login.microsoftonline.com
JWKS endpoints (JwksError: Bad Request, SigningKeyNotFoundError).

Replace the mock with a real JWKS document served from an in-process
node:http server, pointed at via the SDK's own endpoint overrides
(openIdMetadataUrl cloud override for the service validator, loginEndpoint
for the Entra factory). The v2-issuer acceptance test drives the underlying
JwtValidator with a decoupled jwksUriOptions {type:'uri'} so issuer
validation uses the real login host while keys come from the local server.
Deterministic, no external network, and exercises the real fetch + RS256
verify path.

* test(msteams): fix cloud-environment import and drop unused jwks-rsa

The extensions test-types gate resolves @microsoft/teams.api's dual
.d.ts/.d.mts types strictly and does not see the root re-export of
withOverrides/PUBLIC (TS2305), so import them from the canonical
auth/cloud-environment subpath the SDK itself uses. The JWKS-server rework
also removed the last direct jwks-rsa import, so drop the now-unused
devDependency and refresh the lockfile (knip deadcode).

---------

Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-04 15:34:38 -07:00
Peter Steinberger 15499e7fc2 fix(qa): enable OpenAI for stored audio scenario (#119349) 2026-08-04 15:08:07 -07:00
Peter Steinberger 44f3747daa test(slack): drop redundant .js-suffixed system-event mock (#119352)
The five monitor event suites each registered a second vi.mock for
"openclaw/plugin-sdk/system-event-runtime.js" alongside the extensionless
mock. The .js-suffixed subpath is not a declared export of the openclaw
package, so vitest fails suite collection with "not exported under the
conditions [node, development, import]" — taking down 42 suites before a
single test ran. The extensionless mock already intercepts the production
import, so the duplicate is removed.

Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-04 15:04:49 -07:00
Peter Steinberger f15120c6d1 fix(qa): carry selected runtime into flow scenarios (#119324)
* fix(qa): carry selected runtime into flow scenarios

* test(qa): align compaction runtime fact assertion
2026-08-04 13:51:35 -07:00
Vincent Koc aa07d55ec9 fix(qa): align release scenario setup and compaction proof (#119188)
* fix(qa): align release scenarios with runtime contracts

* fix(qa): retain inferred model provider plugins

* fix(qa): accept default OpenClaw compaction runtime
2026-08-05 03:32:49 +08:00
Vincent Koc 8b443bb34f test(llama-cpp): split inference mapping coverage
Punchcard-Session: frost-brook-timber-mx
2026-08-05 02:44:19 +08:00
Vincent Koc 220445b1b7 fix(llama-cpp): type shutdown cleanup failures
Punchcard-Session: frost-brook-timber-mx
2026-08-05 02:43:34 +08:00
Vincent Koc 865b517235 fix(llama-cpp): record native shutdown failures 2026-08-05 02:25:52 +08:00
Vincent Koc 6dc5d00374 fix(llama-cpp): explain cleanup failure recovery 2026-08-05 02:10:27 +08:00
Vincent Koc ef632a4a93 merge: sync main into llama.cpp lifecycle fix
* origin/main: (40 commits)
  fix(telegram): correlate deliveries to explicit topics
  fix(plugins): preserve install index state across failures (#119228)
  test: trim redundant control ui coverage (#119286)
  test: cover missing config method in memory settings
  fix: gate curated config controls by method
  test: cover read-only admin method gates
  fix: keep config drafts on their gateway
  fix: reset agent skill filters with config patch
  refactor: reuse chat error state helper
  test: avoid unbound identity request assertion
  refactor: isolate clawhub skill search
  fix: guard delayed config actions across reconnects
  fix: preserve workshop revisions across session navigation
  refactor: isolate workshop revision handoff
  test: advertise skill action methods in ui e2e
  fix: fail stale workshop revision sends
  fix: bind revision handoffs to gateway snapshots
  fix: recheck queued agent and skill access
  fix: recheck config access after parsing
  test: advertise config writes in ui e2e
  ...
2026-08-05 01:40:14 +08:00
Vincent Koc 31d8e046bf fix(llama-cpp): reject queued work after cleanup failure 2026-08-05 01:40:08 +08:00
Peter Steinberger 7a0a4c5f2a fix(telegram): correlate deliveries to explicit topics
Use the explicit topic selected by Telegram sends when recording delivery correlation, preventing successful message, poll, and sticker actions from leaving the matching inbound event falsely undelivered.
2026-08-04 22:51:32 +05:30
Guoji-XYDT 47bd1bb194 fix(telegram): report degraded inline controls
Preserve readable fallbacks and tell the model when Telegram drops unencodable controls, including recovery guidance.\n\nCo-authored-by: Guoji-XYDT <li.guoji@xydigit.com>
2026-08-04 21:50:45 +05:30
Vincent Koc 622d8a048e fix(llama-cpp): make cleanup failures terminal 2026-08-04 23:37:13 +08:00
Vincent Koc de8afade57 refactor(llama-cpp): clarify terminal cleanup contract 2026-08-04 23:12:06 +08:00
Vincent Koc 21e52da0cf merge: sync origin/main
* origin/main:
  fix(agents): protect private memory in shared chats (#119198)
  perf(cli): skip absent gateway workspace dotenv (#119227)
  fix(agents): observe native provider prompt egress (#119219)
  fix(feishu): report bot identity retry failures (#102185)
  fix(memory): load configured providers for CLI search (#119186)
  fix(discord): count retained speech bytes
  test(discord): isolate exact speech overflow
  test(discord): cover exact speech overflow
  fix(discord): bound realtime exact speech
2026-08-04 23:05:23 +08:00
Vincent Koc a9d768ced6 fix(llama-cpp): detach retired model state 2026-08-04 23:03:19 +08:00
Vincent Koc d06fc25a0c fix(agents): protect private memory in shared chats (#119198)
* fix(agents): protect private memory in shared chats

Fixes #84466

Co-authored-by: Peter Steinberger <steipete@gmail.com>

* fix(agents): propagate shared chat type across runtimes

* fix(agents): enforce bootstrap privacy after hooks

* test(agents): cover final bootstrap filtering

* fix(agents): filter private memory before allowlists

* fix(agents): preserve bootstrap source identity

* refactor(agents): simplify bootstrap source identity

* fix(agents): keep bootstrap source identity private

* fix(agents): unify CLI runtime chat type

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-04 23:01:38 +08:00
Vincent Koc 889cd316c7 fix(llama-cpp): keep failed cleanup terminal 2026-08-04 22:57:59 +08:00
Vincent Koc 9d6d9af941 merge: bound Discord realtime exact speech retention (#119250)
* commit 'c238564d2707be5527e83b112025443401e7e2fa':
  fix(discord): count retained speech bytes
  test(discord): isolate exact speech overflow
  test(discord): cover exact speech overflow
  fix(discord): bound realtime exact speech
2026-08-04 22:56:25 +08:00
Vincent Koc a54bec799c fix(agents): observe native provider prompt egress (#119219)
* fix(agents): observe final provider prompt egress

* fix(agents): observe native provider prompt egress

* test(agents): type native prompt observer models
2026-08-04 22:46:07 +08:00
zhangLei99586 e79f358b02 fix(feishu): report bot identity retry failures (#102185)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Co-authored-by: zhangLei99586 <294081397+zhangLei99586@users.noreply.github.com>
2026-08-04 22:45:28 +08:00
Vincent Koc c238564d27 fix(discord): count retained speech bytes 2026-08-04 22:27:43 +08:00
Vincent Koc 6788bf51da merge: sync origin/main
* origin/main: (23 commits)
  chore(tui): add Gateway boundary PTY coverage (#119191)
  fix(telegram): route reactions to their originating forum topics
  test(gateway): isolate scheduled service timers (#119218)
  test(qa): cover Canvas agent and node controls (#119047)
  fix(cli): avoid repeated migration scans during local agent turns (#119051)
  fix(gateway): keep agents list on prepared model facts (#119208)
  fix(telegram): retry update offset persistence
  fix(ci): accept profiled partial Kova gates (#119121)
  fix(qqbot): keep channel API calls on the active account [AI] (#118575)
  fix(agents): recover from invalid compaction summaries (#119137)
  fix(gateway): expose OAuth-backed tools to CLI agents (#119166)
  fix(plugins): preserve metadata reloads during models status (#119183)
  fix(test): bound direct gateway server runs (#119184)
  test(tui): prove command surfaces through PTY (#119165)
  fix(testbox): restore claims across path aliases (#119170)
  fix(message): preserve sends with incidental Telegram locations
  fix(perf): give each concurrency sample a full deadline (#119164)
  fix(testbox): remove changed-gate sync residue (#119163)
  fix(telegram): preserve later chunks after rejected sends
  fix(tui): block terminal controls in system messages (#118998)
  ...
2026-08-04 22:15:40 +08:00
Vincent Koc 48b950d9fc fix(llama-cpp): make runtime cleanup best effort 2026-08-04 22:15:34 +08:00
Vincent Koc 193317fd68 test(discord): isolate exact speech overflow 2026-08-04 22:08:37 +08:00