Commit Graph

1568 Commits

Author SHA1 Message Date
Vincent Koc 3eef8ebfd5 fix(parallels): preserve plugin inventory during updates (#122912)
* fix(parallels): preserve plugin inventory during updates

* fix(parallels): preserve dev update plugin inventory
2026-08-13 10:26:02 +08:00
Vincent Koc d00e4ee324 fix(e2e): verify suspend control over WebSocket (#122888) 2026-08-13 09:56:26 +08: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
Vincent Koc 2e1199363c fix(ci): seed plugin update ownership metadata (#122752) 2026-08-13 02:39:32 +08:00
Vincent Koc 5af8935b53 fix(ci): start gateway for agent delete Docker smoke (#122714) 2026-08-13 01:12:54 +08:00
Peter Steinberger c23d66e3b5 refactor: consolidate coercion ownership (#122692)
* refactor: consolidate coercion ownership

* test: align shard check with weighted planning

* chore: refresh plugin SDK API baseline
2026-08-12 09:25:28 -07:00
Vincent Koc 44335ac7ce fix(e2e): strip private ai fixture dev dependencies (#122678) 2026-08-13 00:03:48 +08:00
Vincent Koc 282e6a47ae test(telegram): support fixed-delay Mantis proof (#122642)
Punchcard-Session: amber-harbor-timber-mb
2026-08-12 23:20:34 +08:00
Peter Steinberger 5a643e3543 fix(plugins): keep packed entries consistent through package lifecycle (#121174)
* fix(plugins): own packed entry lifecycles by package

Persist package ownership per runtime child, route lifecycle actions through one closed resolver, reconcile removed child policy during updates, and retain rollback generations until durable config/index commit.

* fix(plugins): break uninstall policy import cycle

* test(plugins): model package ownership in lifecycle fixtures
2026-08-12 00:49:29 -07:00
Peter Steinberger b080dd1e76 refactor: consolidate coercion contracts (#122458)
* refactor: consolidate coercion contracts

Centralize exact string, record, numeric, date, Boolean, argument, and structured-error coercions while preserving call-site semantics.

Migrate canonical-name collisions and deprecated internal SDK bypasses, deleting 55 net production/tooling lines. Expand declaration ownership enforcement to 101 allowed helpers and add a narrow export-completeness audit.

* fix: preserve standalone script coercions

Keep copied Control UI tooling self-contained and retain the trusted release harness module-relative source seam when the harness runs against an old target cwd.
2026-08-11 23:26:37 -07:00
Peter Steinberger 964c8c84c1 refactor: consolidate coercion ownership (#122299)
* refactor: consolidate coercion ownership

Centralize four canonical coercion helpers, migrate exact core and plugin duplicates through narrow Plugin SDK facades, and enforce declaration and plugin-normalization ownership boundaries.

The sweep adds eight focused SDK exports while deleting more production and tooling code than it adds. User-visible behavior is unchanged except for safer equivalent object and UI parsing at existing boundaries.

* fix: guard integer option ownership

Register resolveIntegerOption with the canonical function owner and extend the declaration-guard fixture so future local duplicates fail validation.

* fix: keep integer helpers on numeric facade

Remove the unshipped duplicate string-coerce exports and route every affected plugin consumer through the existing number-runtime contract.

* fix: point numeric coercion to number runtime

Make boundary and declaration diagnostics recommend the canonical numeric facade, with failing-before coverage for both guidance paths.
2026-08-11 17:14:53 -07:00
Sliverp 84c7d45f15 refactor(qqbot): install plugin from Tencent package (#107295)
* refactor(qqbot): remove bundled extension source

Mechanical deletion half of the #107295 squashed rebase; the catalog
repoint and host integration land in the follow-up commit.

Co-authored-by: sliverp <870080352@qq.com>

* refactor(qqbot): install plugin from Tencent package

Squashed rebase of #107295 onto current main. Repoints the official
external channel catalog at @tencent-connect/openclaw-qqbot@2.0.1 and
adapts onboarding, doctor migrations, secrets, build guards, and tests.

Documents the known limitation that the external package does not
support structured SecretRef clientSecret values; operators move those
to QQBOT_CLIENT_SECRET or clientSecretFile before upgrading.

Co-authored-by: sliverp <870080352@qq.com>

* fix(doctor): reuse shared hasOwnKey record helper

The rebased QQBot migration carried its own hasOwnKey export, colliding
with the one main now ships in legacy-config-record-shared.ts.

Co-authored-by: sliverp <870080352@qq.com>

* fix(plugins): carry catalog integrity through the update bridge

The externalized-bundled-plugin bridge dropped the official catalog's
expectedIntegrity pin, so bundled-user updates installed the external
npm package without integrity verification. The bridge now carries the
pin for the catalog's exact npm spec and both bridge install calls pass
it through; update-channel spec overrides intentionally skip the pin
since it only covers the pinned version.

Co-authored-by: sliverp <870080352@qq.com>

* chore(plugin-sdk): refresh per-entrypoint API baselines

The QQBot compat export and bundled-type removal shift 26 entrypoint
closure hashes in the new split baseline layout.

Co-authored-by: sliverp <870080352@qq.com>

* refactor(qqbot): drop helper reintroduced during rebase

Main's coercion consolidation added this file after the deletion
commit's base; its only consumers were the removed qqbot sources.

Co-authored-by: sliverp <870080352@qq.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-11 15:10:27 -07:00
Peter Steinberger 8c567306ba fix(openai): remove duplicate GPT-5.6 picker entry (#122178)
* fix(openai): remove duplicate GPT-5.6 picker entry

* test(gateway): split OpenAI model picker coverage

* test(openai): align canonical model fixtures

* chore(plugin-sdk): refresh agent harness API baseline
2026-08-11 12:29:36 -07:00
Vincent Koc 1fb715853c fix(qa): resolve Docker harness script entrypoints (#121548)
Punchcard-Session: amber-workshop-workshop-36
2026-08-12 01:23:20 +08:00
Peter Steinberger cad77fb39c refactor: consolidate remaining coercion helpers (#122020) 2026-08-11 10:22:01 -07:00
wangmiao0668000666 c719cbbfe9 fix(e2e): preserve Unicode in Telegram proof tails (#109940)
Punchcard-Session: ember-brook-workshop-qc

Co-authored-by: wangmiao0668000666 <290215524+wangmiao0668000666@users.noreply.github.com>
2026-08-11 18:09:29 +08:00
Peter Steinberger fa03d9b913 refactor: consolidate coercion helpers (#121366)
* refactor: consolidate coercion helpers

* fix: remove duplicate coercion imports

* fix: preserve serialized coercion guard

* chore: ratchet coercion helper carve-outs

* fix(test): keep gauntlet subprocess startup lean

* fix: preserve imported session timestamp semantics

* fix: preserve catalog timestamp string semantics

* chore: align plugin SDK surface ratchet

* fix: preserve trajectory and SDK string contracts

* fix(test): preserve QA record assertion semantics

* fix: complete standalone record guard rename

* refactor(cron): use canonical string coercion

* fix(acpx): preserve Pi timestamp parsing

* test(channels): adapt custody test harnesses

* test(telegram): classify media harness as test support

* test(acpx): split timestamp contract coverage

* test(channels): support generated custody contracts

* chore: ban the full coercion helper name set

Extends the declaration guard to all eleven consolidated helper names and
renames the cron schedule-identity readNumber wrapper to readScheduleInteger
so the banned generic name cannot regrow.

* fix(scripts): repair release-validation guard drift and lint cause

Restores the renamed isJsonRecord guard in assertTrustedWorkflowHarness after
main added isRecord call sites in parallel, and attaches the caught YAML error
as the thrown error cause (preserve-caught-error was red on main).

* fix: preserve Claude timestamp string semantics

* fix: preserve persisted timestamp string semantics

* fix: preserve date-first timestamp contracts

* fix(openai): harden delegation failure formatting

* chore: close coercion helper guard gaps

* test(openai): model non-error delegation rejection

* chore: refresh plugin SDK API contract

* fix(tasks): use canonical string field reader

* fix(ai): use canonical provider error field coercion

* fix(browser): migrate native bootstrap coercion

* docs(plugin-sdk): clarify text record export compatibility

* fix(gateway): normalize approval execution identity

* test(outbound): isolate message action poll harness
2026-08-11 00:02:18 -07:00
Vincent Koc c3e3f276f2 fix(release): preserve frozen candidate identity 2026-08-11 10:48:08 +08:00
Patrick Erichsen abb856ece4 fix(release): restore frozen beta validation (#121791)
Punchcard-Session: coral-summit-brook-8j
2026-08-10 18:45:42 -07:00
Vincent Koc 7e03fe3ba0 Merge commit '546bb29055b3e204b981dc27d4375c4d7679c7dd' into HEAD
* commit '546bb29055b3e204b981dc27d4375c4d7679c7dd':
  fix(release): support frozen validation tooling
2026-08-11 07:34:47 +08:00
Vincent Koc 546bb29055 fix(release): support frozen validation tooling 2026-08-11 07:20:44 +08:00
Peter Steinberger 18e5b0e3e3 test(web): trim duplicate provider test surfaces (#121727) 2026-08-10 15:44:54 -07:00
Peter Steinberger 810c3510ee fix: reject invalid memory parents and trim test facades (#121696)
* test(scripts): trim dead testing facades

* test(memory): align non-directory path contract

* test(discord): drop stale progress callback ids

* fix: repair current main validation failures

* fix(gateway): remove redundant setup admission generic

* test(gateway): await setup admission settlement
2026-08-10 12:58:30 -07:00
Dallin Romney 0296785c5f fix(ci): validate frozen extended-stable candidates (#120986)
* fix(ci): support frozen extended-stable validation

* fix(ci): avoid map spread in release config projection

* refactor(ci): use suite config mutation for frozen candidates

* fix(ci): keep frozen candidate config private

* refactor(qa): expose config mutation

* fix(qa): preserve config mutation in runtime pairs
2026-08-10 17:40:46 +08:00
Ayaan Zaidi 4b0151682e refactor(commitments): remove inferred follow-up subsystem
Remove hidden follow-up extraction, heartbeat delivery, CLI, docs, and supporting tests/tooling. Existing commitment records remain inert pending separately approved cleanup.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-10 13:48:32 +05:30
Peter Steinberger 23d1eca455 refactor(sessions): enforce transcript writer fence in sqlite sync ops (#121316)
Fold the writer-claim fence into the four sync write ops at their
definition sites, collapse the logical-layer fence wrappers to plain
re-exports, delete the session-accessor.sqlite middle barrel (the only
unfenced escape hatch), and retarget its 26 importers to the focused
defining modules. replaceSessionEntrySync intentionally stays unfenced:
its two production callers own their freshness guards and its return
carries no rebound signal. Net -106 production LOC, behavior-neutral.
Part 1 of the session-accessor dual-layer collapse.
2026-08-09 23:16:57 -07:00
Peter Steinberger 88fc335323 fix(ci): support frozen script entrypoints (#121208)
* fix(ci): support frozen script entrypoints

* fix(ci): route frozen plugin tests through package script

* fix(release): support compiled candidate test helpers

* fix(release): support compiled upgrade helpers

* fix(release): mount trusted upgrade runtime

* fix(release): preserve trusted tsx resolution
2026-08-10 10:31:21 +08:00
Vincent Koc af73dbcc83 fix(release): prefer SQLite upgrade survivor state (#120983) 2026-08-10 01:08:15 +08:00
Peter Steinberger 0fe49c5731 fix(plugins): prevent uninstalled npm plugins from coming back (#113902)
* fix(plugins): preserve retained uninstall files

* test(plugins): track retention temp dirs

* fix(plugins): retain rollback marker snapshots
2026-08-09 08:12:05 -07:00
Peter Steinberger c70aee247e refactor(scripts): migrate JavaScript tools to TypeScript (#121005)
* refactor(scripts): migrate JavaScript tools to TypeScript

* fix(ci): keep changed-scope preflight zero-install

* fix(ci): preserve zero-install script owners

* fix(ci): complete script migration follow-through

* fix(release): keep stable closeout zero-install

* fix(scripts): preserve standalone execution boundaries

* fix(scripts): repair standalone loader boundaries

* fix(scripts): normalize gateway observation ids

* fix(scripts): keep Docker packager standalone

* test(scripts): preserve rebase cleanup helpers

* test(sessions): use tracked temp directory
2026-08-09 07:21:35 -07:00
Vincent Koc 9f2c2bd4c0 fix(release): keep upgrade survivor sessions fresh (#120778) 2026-08-09 08:05:36 +08:00
Vincent Koc 115e5a6f25 fix(release): isolate prepublish plugin startup probe (#120749) 2026-08-09 07:15:46 +08:00
Dallin Romney 33ea7ffa54 fix(ci): isolate package Telegram QA harness (#120193)
* fix(qa): isolate package Telegram harness

Keep private QA source, dependencies, taxonomy, and SDK dist in the trusted harness while the installed candidate owns its CLI, Gateway runtime, and persisted mock auth. Preserve the documented package RTT canary after taxonomy selection.

Co-authored-by: Dallin Romney <dallinromney@gmail.com>

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

* fix(qa): export private QA harness SDK entries

Canonicalize the QA-only plugin SDK entries shared by the private build and package Telegram harness manifest so qa-runtime and qa-lab resolve from trusted dist.

* fix(qa): expose private runtime to package harness

* fix(qa): surface Telegram observer conflicts

* fix(qa): accept separate preview and final messages

* test(qa): exercise Telegram poll delay contract

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-08 15:11:03 -07:00
Vincent Koc ad664ad859 fix(release): match ClawHub security fixture contract (#120725) 2026-08-09 06:10:19 +08:00
Vincent Koc b729806758 fix(release): preserve ClawHub fixture across restart (#120709) 2026-08-09 05:26:16 +08:00
Vincent Koc e455cafa13 fix(release): run ClawHub prepublish fixture from isolated cwd (#120692) 2026-08-09 04:36:14 +08:00
Vincent Koc 33a5f37937 fix(release): repair survivor fixture assertion quoting (#120680) 2026-08-09 03:53:51 +08:00
Vincent Koc b40f846757 fix(release): keep survivor plugin repair hermetic (#120677) 2026-08-09 03:34:42 +08:00
Peter Steinberger 0487b6812c fix(qa): honor Crabbox SSH fallback ports (#120539) 2026-08-08 12:01:30 -07:00
Vincent Koc e81d7e62e8 fix(release): scope upgrade plugin credentials (#120666) 2026-08-09 03:00:36 +08:00
Vincent Koc 49161dee60 fix(release): unblock deferred Telegram beta validation (#120630)
* fix(release): allow deferring package Telegram validation

* fix(qa): mount taxonomy in package Telegram harness

* fix(release): restrict Telegram deferral to beta
2026-08-09 01:03:02 +08:00
Peter Steinberger 7ecdef6e2e fix: prefer Crabbox inspect SSH host (#120611) 2026-08-08 08:30:07 -07:00
Peter Steinberger d9080cfff8 fix(agents): transfer requester wake ownership across yield and deflake survivor registry setup (#120538) 2026-08-08 01:42:33 -07:00
Peter Steinberger 733512b612 fix(e2e): expose beta companions in survivor registries and unbind ReDoS timing from shell startup (#120479) 2026-08-07 22:12:00 -07:00
Peter Steinberger fb0812c857 fix(qa): prevent false update-restart package failures (#120300)
* test(qa): expose update restart process exits

* test(qa): supervise update restart gateway

* test(qa): isolate supervised gateway environment

* test(qa): diagnose restart plugin convergence

* test(qa): mount trusted upgrade harness

* test(qa): include upgrade runtime companions

* test(qa): remove temporary restart diagnostics

* test(qa): enforce systemd restart budget

* test(qa): honor systemd stop timeout

* test(qa): tighten package fixture ownership

* test(qa): preserve unrelated lane shapes

* test(qa): complete service fixture boundaries
2026-08-07 14:46:59 -07:00
Peter Steinberger 2fa9a29c77 test(plugins): add Agent Plugins gateway e2e with model-driven MCP tool call (#120303)
* test(plugins): add Agent Plugins gateway e2e with model-driven MCP tool call

* fix(test): wire Agent Plugins gateway E2E and assert activation
2026-08-07 11:47:07 -07:00
Vincent Koc a0deb8edae fix(release): provide prerelease plugin companions to package QA (#120107) 2026-08-07 13:31:41 +08:00
Vincent Koc 2013123472 fix(release): isolate private Telegram QA harness (#120088) 2026-08-07 10:03:14 +08:00
sinner c7de4413a9 fix(cron): reject unsupported generic timeout edits (#119899)
Co-authored-by: zyw02 <zyw02@users.noreply.github.com>

Punchcard-Session: cobalt-willow-summit-z1

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-06 19:45:59 +08:00
Vincent Koc beda1e97c6 fix(onboarding): honor external gateway supervision (#119846)
Punchcard-Session: quiet-meadow-timber-mj
2026-08-06 17:26:43 +08:00