Commit graph

199 commits

Author SHA1 Message Date
Peter Steinberger
a94a7b2768
chore(release): close out 2026.9.5 on main (#151823)
* chore(release): close out 2026.9.5 on main

* chore(release): align GitHub plugin with 2026.9.5 closeout
2026-09-19 01:37:16 -07:00
Peter Steinberger
3c4c111b0f
feat: automatically update idle headless nodes (#151545)
* feat(node): update headless runtimes automatically when idle

Stage private packaged node runtimes and activate only after all owned work
and cleanup settle. Preserve pairing and launch options, keep automatic
activations at least 12 hours apart, and leave shared-state migration and
Gateway installation ownership with the normal updater.

Document defaults, opt-outs, runtime version discovery, and recovery.
Support recoverable Windows selector replacement across service restarts.

Refs #151462

* fix(node): complete auto-update integration and settings defaults

Capture the launcher in compiled test runtimes and trusted wrapper inventories, register the package update proof, and use the canonical Kysely read path. Preserve the inherited enabled state in the config UI and align caller tests with the node shutdown lifecycle.

* fix(node): preserve retained plugin work during automatic updates

Require an explicit idle result from plugin commands, preserve older-plugin work, and connect bundled lifetime owners to automatic node updates. Join canceled inference and failed terminal cleanup before command settlement; keep historical state repair with Doctor. Document compatibility and extend installed-package proof for retained legacy plugin work.

* test(browser): align idle-work fixtures with runtime exports

* test(browser): extract proxy request fixtures

* test(node): retain idle assertions across native cleanup
2026-09-18 06:20:27 -07:00
Patrick Erichsen
9c32bda3c0
feat: group bundled plugin settings by authored manifest metadata (#149331)
* feat: add contextual plugin help to Ask OpenClaw

Punchcard-Session: crisp-summit-lantern-qk

* fix(ui): redact URL credentials from plugin Ask drafts

Reuse the canonical URL policy in the bounded help-value scan, including
serialized map keys. Keep the editable config value intact and prove
rejected Save → Ask → Send on desktop and phone.

Punchcard-Session: crisp-summit-lantern-qk

* test: reuse the complete Custodian context fixture

Punchcard-Session: crisp-summit-lantern-qk

* refactor(ui): narrow plugin help selection input

Accept only the loaded selection facts consumed by the help controller, removing its type dependency on the complete page renderer model.

Punchcard-Session: crisp-summit-lantern-qk

* perf(ui): keep plugin help preparation off startup

Separate synchronous dock state and session ownership from lazy question preparation and session persistence helpers. Register plugin-only English copy with its lazy consumers while preserving source catalog order.

Punchcard-Session: crisp-summit-lantern-qk

* style: normalize contextual help rebase spacing

Punchcard-Session: crisp-summit-lantern-qk

* perf(ui): keep attachment media preparation off startup

Punchcard-Session: crisp-summit-lantern-qk

* test(qwen): fix the clock for default timeout assertions

Punchcard-Session: crisp-summit-lantern-qk

* test(ui): wait for side-chat opening focus

Punchcard-Session: crisp-summit-lantern-qk

* chore(pr): deduplicate wrapper dependency inventory

Punchcard-Session: crisp-summit-lantern-qk

* test(qwen): drop superseded default-clock workaround

* feat: group bundled plugin settings by authored manifest metadata

Punchcard-Session: crisp-summit-lantern-qk
2026-09-16 22:03:41 -07:00
Peter Steinberger
90567a8bfd
refactor(models): preserve selected identities and centralize thinking policy (#150509)
* refactor(models): centralize selection and thinking policy

* test(models): reuse command normalization helpers
2026-09-16 20:18:50 -07:00
Peter Steinberger
dab1f08376
feat: give every plugin a compact chat activity icon (#147333)
* feat: give every plugin a compact chat activity icon

Separate package-owned activity SVGs from plugin identity artwork. Ship 154 defaults and seven exact tool overrides, preserving Echo and the progress claw. Include authenticated bounded delivery, safe mask rendering, packaging, and authoring guidance.

* test: declare Vite types for the activity asset browser test

* refactor: keep plugin artwork selection with catalog presentation facts

* test: scope activity browser types and simplify fixture copies
2026-09-13 13:49:51 -07:00
RoboClaw
c677baebc9
chore(release): close out 2026.9.4 on main (#144708)
Forward-port the shipped updater, Doctor, schema, and skill snapshot fixes.
Align package metadata and the exact tagged release notes without changing
mobile release versions or any published artifact.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
2026-09-11 18:46:37 +08:00
Patrick Erichsen
8ea617359f
feat(plugins): assign one purpose category to every bundled plugin (#142760)
* feat(plugins): reclassify bundled plugin manifests

* feat(plugins): assign one purpose category per bundled plugin

* feat(plugins): classify native agent execution runtimes
2026-09-10 20:44:20 -07:00
Patrick Erichsen
cb0fcf6b5e
feat(plugins): define package-owned categories (#142710)
* feat(plugins): define manifest category contract

* chore(plugins): classify bundled manifests

* chore(plugins): classify team reports

* test(ui): update wizard catalog fixture
2026-09-09 19:05:40 -07:00
Peter Steinberger
58fcf69cad
chore(release): close out 2026.9.3 on main (#142240)
Align root, native source, plugin and companion version metadata with the published stable release. Preserve newer main code and translations, regenerate the channel catalog, and copy the exact tagged release-note section without adding another release train. Native appcast and locale refreshes remain with their independent owners.
2026-09-08 09:39:38 -07:00
Shakker
d59108045f
fix: insert file paths into paired-node CLI terminals (#142001)
Files added to paired-node CLI terminals now insert editable paths with the correct native quoting, including spaces and apostrophes, without submitting input.

Refs #137116.
2026-09-08 10:17:13 +01:00
Peter Steinberger
37aaf07377
fix: preserve Markdown values and simplify plugin adapters (#140150)
Keep dollar replacement tokens literal and reject incoming Markdown
insertion sentinel values before writes or dry-run previews. Share the
existing Markdown and JSON serializers, remove redundant Matrix context
branching, and use one ordered provider catalog auth selector.

Preserve complete selected auth results and synchronous unbound lookup.
The new private host export requires synchronized core/plugin release
preparation to advance compat.pluginApi; do not independently publish
these official plugins with the older floor.
2026-09-06 07:27:25 -07:00
Peter Steinberger
4418cdcc58
fix(catalog): avoid node discovery for local-only pages (#140090)
* fix(catalog): avoid node discovery for local-only pages

* fix(catalog): retain captured host selection during discovery
2026-09-06 05:56:45 -07:00
Peter Steinberger
a25cd272ec
refactor: consolidate command and provider helpers (#140072)
* refactor: simplify command rendering and diagnostic plumbing

* refactor(providers): share exact effort profile parsing

Keep model overrides and API fallbacks in their provider owners. The shared helper has no runtime imports so eager policy loading retains its narrow dependency graph.

Official plugin packages gain a host runtime dependency. Publish this with the next synchronized core and plugin release, whose canonical release sync advances pluginApi floors; do not publish these plugins alone with the existing older API floor.

* chore: prune removed provider assertion allowances
2026-09-06 05:17:53 -07:00
weiqinl
132da0ae7b
fix(google): bundled google/* model refs no longer flagged unknown-model by doctor (#139243)
* fix(google): declare bundled Gemini models in the plugin manifest model catalog

* fix(google): scope manifest catalog mirror to canonical provider and declare shared-model tiers

Address ClawSweeper review on #139243:
- drop google-gemini-cli / google-vertex manifest mirrors so legacy CLI refs
  keep their Doctor migration hint and CLI/Vertex rows stay out of runtime
  catalog planning (neither declares runtime discovery)
- declare explicit capable code-mode tiers on the five sibling rows newly
  matched by the shared-upstream-model contract (opencode, github-copilot, gmi)
- strengthen the drift guard to full-row equality against the runtime static
  catalog and pin the CLI/Vertex no-mirror boundary
- add regression test keeping the google-gemini-cli migration hint alive

* fix(google): preserve native Gemini transport in the manifest catalog mirror

* fix(google): derive catalog from manifest

* fix(google): tighten manifest catalog validation

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-09-06 15:31:00 +08:00
Peter Steinberger
f6045c45be
refactor(plugins): remove repetitive policy headers (#139771) 2026-09-05 23:44:10 -07:00
Ayaan Zaidi
d141dc65ec
fix(models): report failed bundled catalog refreshes (#139649)
Related: #136257. Builds on merged #139357.

Make all bundled shared-helper catalog callers report actual acquisition failures and authoritative empty results. Preserve shipped external advisory defaults through the same transport/cache implementation.

The existing publication owner retains compatible learned inventory or degraded provider-owned starters. Static preparation consumes registered hooks with their authoritative plugin identity, without activating unknown runtimes or widening successful empty membership. No operator option, persistence schema, new cache, or auth re-observation is introduced.

Proof: retained built baseline failure, packaged CLI/Gateway fault/recovery/empty checks, public SDK/provider API compatibility, fresh/upgrade starter checks, and the decisive seven-clause downstream composite on exact shared head 5e0ecef411cc7bcabbcab2672227910a05209ffd. Composite 296bfa19ec7663044ce50b8ebb3652555900d531 adds only the unchanged separate DeepInfra/NVIDIA producer patch; that patch is not part of this PR. Controlled clock advancement and fixture-rejected background inference are disclosed. No real vendor inference or UI claim.

Production net +199; tests/support +313; docs +34; ratchet metadata -1; generated/lockfile delta zero. Growth preserves shipped API and shared failure/empty/ownership contracts rather than adding parallel provider policy.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-09-06 10:03:57 +05:30
Peter Steinberger
74ad6ba4f2
chore(release): bring 2026.9.2 release state to main (#139369)
* chore(release): carry shipped 2026.9.2 state onto main

Align main and official plugin versions with the published stable release and
preserve the exact tagged changelog. All ten canonical runtime/qualification
fix commits are already on main; retain its newer SQLite worker and Watch UI.

Refresh generated UI and native locale artifacts through their canonical
owners after provider failures left main's current inventories out of sync.
The release tag and published package bytes remain unchanged.

* chore(release): isolate generated locales from version closeout

Keep release version metadata and the exact published changelog in this PR.
Generated UI locales are covered by #139382; native locales use #139364.
2026-09-05 14:25:55 -07:00
Peter Steinberger
0229a108fe
chore(release): close out 2026.9.1 on main (#137506)
Set main to the shipped stable version 2026.9.1 (root, apps, plugins, and
version-owned generated metadata via `pnpm release:prepare`), make the
`## 2026.9.1` changelog section identical to the tagged release branch, and
carry the native locale refresh that the release preflight requires.

Release: https://github.com/openclaw/openclaw/releases/tag/v2026.9.1
npm: openclaw@2026.9.1 (latest, beta); 89 @openclaw/* plugins at 2026.9.1.
2026-09-04 17:40:27 -07:00
Patrick Erichsen
1233e5b077
feat(plugins): bundle all plugin icons and update channel gallery (#131511)
* feat(channels): bundle local channel icons

* feat(ui): render channel plugin metadata

* test(channels): isolate bundled icon contract

* refactor(ui): isolate channel plugin presentation

* fix(channels): use verified official artwork

* fix(ui): align channel wizard mock with selection

* fix(ui): load icons only for displayed channels

* feat(plugins): bundle icons for every plugin

* test(ui): serve bundled icons in visual mock

* feat(plugins): add visitor access icon

* fix(ui): satisfy channel gallery lint

* fix(ui): reconcile late channel plugin icons

* fix(plugins): normalize bundled icon artwork

* fix(ui): satisfy channel icon reconciliation checks

* test(ui): narrow channel wizard mock match

* test(ui): target configured channel rows

* test(ui): target channel detail triggers

* test(ui): provide plugin catalog mock

* fix(plugins): improve bundled icon contrast

* test(ui): preserve direct channel setup selection

* fix(plugins): normalize OpenClaw channel artwork

* test(active-memory): assert transient workspace cleanup

* fix(ui): use plugin icons in channel details

* fix(ui): contain package icons in channel covers
2026-09-02 22:41:08 -07:00
RoboClaw
a26af89910
fix(opencode-go): send OpenClaw User-Agent on native OpenCode Go routes (#135588)
* fix(opencode-go): send OpenClaw User-Agent on native OpenCode Go routes

OpenCode Go's documented client-identification contract requires coding
agents to identify themselves with a specific User-Agent. opencode-go
requests previously carried only the generic OpenAI SDK fallback.

Add a vendor-documented attribution policy for opencode-go that sets
User-Agent: openclaw/<version> only on the verified native OpenCode Go
endpoint; Zen and custom-proxy routes are unchanged. Route the Anthropic
transport through the same central policy via the plugin stream wrapper
so both Go transports identify consistently, with caller headers winning.

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* fix(opencode-go): send OpenClaw User-Agent on native OpenCode Go routes

Worked on by:
- @VACInc

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
OpenClaw-Publication: 2182e49f-af02-4250-864c-f7777a89eb83

* test(opencode-go): prove User-Agent precedence

Cover configured User-Agent replacement on native OpenCode Go requests across OpenAI-compatible, Anthropic stream, and simple-completion paths. Custom proxy routes retain the configured value.

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* fix(opencode-go): send OpenClaw User-Agent on native OpenCode Go routes

Worked on by:
- @VACInc

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
OpenClaw-Publication: 41cb2f26-9a12-4b40-b903-2d5b2fc3ccbd

* fix(opencode-go): scope attribution to Go routes

Worked on by:
- @VACInc

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* fix(ai): merge transport headers case-insensitively

Worked on by:
- @VACInc

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* fix(opencode-go): send OpenClaw User-Agent on native OpenCode Go routes

Worked on by:
- @VACInc

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
OpenClaw-Publication: e353cea0-b205-4dde-bded-b9bf49b93cec

* test(opencode): keep Zen live replay on free model

Worked on by:
- @VACInc

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* Publish openclaw/openclaw-openclaw-vacinc-issue-135538

Worked on by:
- @VACInc

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
OpenClaw-Publication: 2d3d8e21-99a1-4cd1-a90e-9ee00e647982

* Publish openclaw/openclaw-openclaw-vacinc-issue-135538

Worked on by:
- @VACInc

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
OpenClaw-Publication: 5bffe897-9d10-4b1b-b7de-550c3b400168

* test(opencode): use replay-capable free Zen model

Worked on by:
- @VACInc

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* test(opencode): use interleaved free Zen model

Worked on by:
- @VACInc

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* test(opencode): stabilize free Zen live smoke

Worked on by:
- @VACInc

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

---------

Co-authored-by: roboclaw-bot <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
2026-09-02 14:01:45 -07:00
Peter Steinberger
84da6ded4e
fix(models): refresh native pricing without pinning defaults (#133695)
* fix(models): refresh native pricing without pinning defaults

Use complete native OpenCode and Venice pricing schedules while preserving
authored zero, partial, flat and tiered costs across preparation and lookup.
Avoid generated price pins during fresh merge-mode Venice onboarding.

Follow-up to #133349 (cached long-context accounting) and #129694
(Venice runtime pricing); related to #113549 (broader OpenCode catalog drift).

* fix(pricing): preserve native schedules through resolution

Merge prepared costs beneath authored display prices, retain validated native
free schedules under exact owner policy, and compile OpenRouter overrides
with strict thresholds and source-order inheritance for each price key.

Preserve zero, partial, flat and tiered user pricing without new settings
or storage. Follow-up repairs for #133695.
2026-08-30 23:50:24 -07:00
Peter Steinberger
95d4be4433
fix: preserve conversation order across session catalogs (#133382)
* fix: preserve conversation order across session catalogs

* style: satisfy session catalog lint rules
2026-08-30 10:47:55 -07:00
Vincent Koc
9471c2b8eb
refactor(plugins): reuse concurrency helper (#132871) 2026-08-30 06:23:30 +08:00
Peter Steinberger
97cfc2e3a1
fix(sessions): adopt native threads with duplicate titles (#132678)
* fix(sessions): adopt native threads with duplicate titles

* test(ui): align adoption hovercard fixture with current row contract
2026-08-29 09:17:28 -07:00
Vincent Koc
8b1e44c107
fix(plugin-sdk): preserve ambient agent resolution (#132541) 2026-08-29 18:36:29 +08:00
Peter Steinberger
f8b04160ac
fix(models): keep OpenCode fallback aligned with catalog lifecycle (#130785) 2026-08-27 00:56:13 -07:00
Peter Steinberger
1ed6f7aa86
refactor(opencode): remove beta-only model compatibility migration (#130011) 2026-08-26 02:17:40 -07:00
Peter Steinberger
708632c451
perf: stop provider policy loads from compiling the transport graph (#129652)
* perf(plugins): keep provider policy artifacts on leaf module graphs

Provider policy artifacts (provider-policy-api.js) load eagerly whenever a
provider is resolved, but five of them imported the provider-model-shared
barrel at runtime, dragging the transports/compat/state graph into every
policy load. In contexts without a native TS require hook (Vitest workers,
non-tsx source runs) jiti compiled that whole graph: ~65s of event-loop
starvation on the first embedded run, which is what pushed
run.session-permissions.test.ts past its 120s timeout before #129582.

Add openclaw/plugin-sdk/claude-model-runtime, a narrow family-level and
local-only subpath re-exporting the Claude identity/thinking helpers from
their leaf owners (@openclaw/llm-core, plugins/provider-claude-thinking).
Switch anthropic, anthropic-vertex, and opencode policy artifacts to it, and
amazon-bedrock plus ollama to the already-plugin-visible
@openclaw/model-catalog-core leaves. The barrel keeps re-exporting the same
symbols, so no existing consumer changes.

Measured on the embedded-runner host route (first run, Vitest worker):
65540ms -> 6627ms; jiti self-time 23.4s -> 1.3s, statSync 18.6s -> 0.7s.
run.shared-integration.test.ts drops from 167s to 65s as a side effect.

Also pin run.inherited-auth-owner.test.ts to the mocked plugin-harness route
(its assertions are provider-agnostic; 37.6s -> sub-second test time) and
document the no-provider default-route trap on overflowBaseRunParams.

Follow-up to #129582.

* chore(plugins): register claude-model-runtime boundary aliases

The extension package boundary contract requires every local-only plugin-sdk
entrypoint to carry a d.ts path alias in the shared boundary map and xai's
derived override set; CI's contracts-plugin lane caught the missing entries.

* chore(release): exclude claude-model-runtime declarations from the pack

Local-only plugin-sdk entrypoints ship runtime .js only; the release check
derives the required pack exclusion from the local-only registry and CI's
core-tooling lane caught the missing package.json files entry.

* test(agents): assert the mocked harness route in auth-owner proof

ClawSweeper P2: without the agentHarnessId assertion a silent fall-back to
the built-in host harness would still pass the auth-owner assertions while
proving the wrong route; fail loudly like run.session-permissions.test.ts.
2026-08-26 00:39:38 -07:00
Peter Steinberger
63d9c69c11
fix(opencode): discover Zen and Go models on demand (#129831)
* fix(opencode): discover provider models on demand

* fix(opencode): honor provider-scoped catalog discovery

* fix(opencode): scope Go models to authenticated catalogs

* test(opencode): verify dynamic Go models efficiently
2026-08-25 23:38:11 -07:00
Peter Steinberger
637da87a5d
fix(gateway): tools.invoke must carry the caller's host-minted role authority (#129725)
* fix(gateway): tools.invoke must carry the caller's host-minted role authority

The connect handshake resolves each connection's authority once and stores it
server-side (shared-secret operator owners mint system authority there).
tools.invoke discarded that fact and re-derived ownership from scopes, so a
shared-secret caller with no durable profile resolved to the deny-by-default
role and was refused dispatch on its own agents — while the same connection
could still mutate sessions directly.

Carry client.internal.operatorRoleActor into the synthetic dispatch client and
keep the scope-derived fallback for callers that have no connection actor
(HTTP). Regression test fails pre-fix with the FORBIDDEN agent-allowlist error.

* test(opencode): close the fake CLI before exec to stop ETXTBSY flakes

The catalog suite wrote the fake opencode executable and spawned it
immediately. Under parallel CI shards the write handle could still be open
at exec time, so the launch failed with ETXTBSY and failed the shard.

Write through an explicit file handle with an fsync before close so the
binary is fully durable before the first spawn.

* fix(ci): repair red main type and lint gates

Two gates were failing on main independently of this branch:

- extensions/qa-lab cleanup tests still built OpenClawCrablineChannelDriverSelection
  with the retired smokeArtifactPath and a stale capabilityMatrixPath, so
  check:test-types failed after the readiness-artifact change (#124189).
  Align both fixtures with the current type and its pinned constants.
- scripts/github/release-validation-campaign.d.mts declared the Actions Octokit
  client as any (#129726), tripping no-explicit-any. Declare the structural
  subset the publisher actually calls instead of suppressing the rule.

Verified failing on clean origin/main before the fix.
2026-08-25 19:15:01 -07:00
Peter Steinberger
8b15dc9447
refactor: share media and process runtime helpers (#126490)
* refactor(media): share video description requests

* refactor(process): expand buffered runtime options
2026-08-19 17:48:49 -07:00
Peter Steinberger
4d4ee7bc86
refactor(plugin-sdk): consolidate session catalog families (#124801) 2026-08-16 13:25:11 -07:00
Peter Steinberger
0d9a424d81
refactor: dedupe session-catalog cursor paging and sleep helper clones (#124569)
* refactor(plugin-sdk): dedupe session-catalog cursor paging into session-catalog-runtime

The acpx Pi and opencode session catalogs carried byte-identical
boundedLimit/encodeCursor/decodeCursor/optionalRawCursor/transcriptPage
scaffolding (~114 duplicated lines each). Move one canonical copy into the
private-local session-catalog-runtime SDK subpath both plugins already may
import, and keep the plugin-named cursor guards as direct aliases.

Net -87 production LOC; no behavior change (error strings, cursor canonical
form, and byte budgets are unchanged).

* refactor(core): replace private sleep() clones with canonical sleep helpers

managed-linux readiness polling now uses @openclaw/retry sleepWithAbort with
ref:false (preserving the clone's timer.unref behavior), and the embedded
agent runner's async-task wait uses src/utils/sleep.ts. Both clones matched
canonical semantics on real inputs (positive integer poll intervals).

The update-managed-service-handoff copy stays: it lives inside a serialized
standalone handoff script (String.raw template) that cannot import repo
modules.
2026-08-16 05:57:42 -07:00
WhatsSkiLL
632581477f
fix(session-catalog): preserve explicit agent ownership across UI and CLI (#123899)
* fix(session-catalog): preserve explicit agent ownership across UI and CLI

* fix(session-catalog): repair owner routing regressions

* Fix-session-catalog-CI-checks

* test(ui): split chat catalog pane coverage

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>

* refactor(session-catalog): bind Codex homes per request

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>

* refactor(session-catalog): centralize owner resolution

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>

* fix(codex): resolve session fork against the adopted home

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>

* refactor(ui): extract chat session discussion

* test(sessions): stabilize archive worker responsiveness check

---------

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-15 04:47:28 -07:00
Peter Steinberger
5d601233df
refactor(types): remove chained type assertions in extensions (#124079)
* refactor(types): remove chained assertions in extensions

* fix(codex): preserve canonical binding identity
2026-08-15 01:39:26 -07:00
Peter Steinberger
23c9c04572
fix(sessions): hide unowned host catalogs on multi-user gateways (#123421)
* fix(sessions): scope catalogs by caller identity

* fix(llama-cpp): keep doctor imports lightweight
2026-08-13 19:28:22 -07:00
Peter Steinberger
b54034d5c2
fix: isolated gateways list and open the operator's HOME Claude/Codex/OpenCode/Pi sessions (#122983)
* fix(sessions): isolated gateways no longer inherit HOME external session catalogs

A gateway on isolated state (custom OPENCLAW_STATE_DIR/CONFIG_PATH/OPENCLAW_HOME,
relocated home, or any named profile) listed, read, continued, archived, and
reopened the operator's real Claude Code/Codex/OpenCode/Pi sessions from the
process HOME. External catalogs now require the default install identity for
process-HOME scans: every catalog verb receives the isolation policy and rejects
HOME-fallback local targets, unknown providers fail closed unless they declare
supportsProcessHomeIsolation, and one structured warning records the skip.
Paired-node hosts and explicitly rooted stores (CLAUDE_CONFIG_DIR, CODEX_HOME,
OPENCODE_DB, Pi session dirs) keep working; default-identity gateways are
unchanged.

* fix(sessions): inject catalog HOME-isolation fact at registry construction

* chore(sdk): regenerate plugin API baselines after rebase

* chore(sdk): regenerate plugin API baselines after rebase
2026-08-13 01:12:03 -07:00
Peter Steinberger
a5420dfd91
fix(windows): launch npm-installed native session CLIs (#122334)
* fix(windows): resolve runnable npm launchers

* fix(windows): preserve npm shim argv in terminal sessions
2026-08-11 18:41:35 -07:00
Peter Steinberger
cad77fb39c
refactor: consolidate remaining coercion helpers (#122020) 2026-08-11 10:22:01 -07:00
Peter Steinberger
d847a62e5d
fix(opencode): keep API-key onboarding routes usable (#121414)
* fix(opencode): keep API-key onboarding routes usable

Amp-Thread-ID: https://ampcode.com/threads/T-019fe94f-6aac-73c9-995b-ced5336f3230

* refactor(opencode): simplify onboarding compatibility

Amp-Thread-ID: https://ampcode.com/threads/T-019fe94f-6aac-73c9-995b-ced5336f3230

* fix(opencode): avoid unverified onboarding fallbacks

Amp-Thread-ID: https://ampcode.com/threads/T-019fe94f-6aac-73c9-995b-ced5336f3230

* fix(opencode): reconcile dynamic tool deltas

Amp-Thread-ID: https://ampcode.com/threads/T-019fe94f-6aac-73c9-995b-ced5336f3230

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-08-10 03:23:36 -07:00
Peter Steinberger
1f4740e95f
fix(opencode): migrate retired free model refs (#121125)
* fix(opencode): migrate retired free model refs

Repair the shipped beta upgrade path through the provider-owned Doctor contract. Activate the migration from the canonical configured-model selector inventory so every supported selector is covered consistently.

Co-authored-by: samson1357924 <samson1357924@gmail.com>

* fix(opencode): migrate media model preferences

---------

Co-authored-by: samson1357924 <samson1357924@gmail.com>
2026-08-09 11:16:59 -07:00
Peter Steinberger
c7cf69a110
fix(opencode): refresh hosted model catalogs (#121030)
* fix(opencode): refresh hosted model catalogs

Align Zen and Go availability, pricing, limits, transports, lifecycle metadata, and model-specific reasoning controls with current provider contracts.

Co-authored-by: samson1357924 <samson1357924@gmail.com>

Co-authored-by: xialonglee <li.xialong@xydigit.com>

* fix(opencode): align catalog metadata with runtime contracts

---------

Co-authored-by: xialonglee <li.xialong@xydigit.com>
2026-08-09 04:05:47 -07:00
Peter Steinberger
48639663b0
chore(release): prepare 2026.8.1 (#120375) 2026-08-07 18:44:12 -07:00
Peter Steinberger
b4a26783f7
refactor(test): consolidate duplicated requireRecord and provider HTTP mock helpers (#119982)
* refactor(test): consolidate duplicated test helpers

* test: remove stale record guard import

* fix(test): remove orphaned record guards

* refactor(test): keep record requirement messages exhaustively typed

* fix(test): keep packages/ai record guard package-local
2026-08-06 14:48:01 -07:00
Peter Steinberger
1fb9644341
refactor(opencode): consolidate session catalog test fixtures (#118323)
* test(opencode): consolidate session catalog fixtures

* test(opencode): preserve continuation node runtime
2026-08-02 20:33:42 -07:00
Peter Steinberger
568ea29d2e
refactor(plugins): inherit shared package boundary settings (#117474) 2026-08-01 09:11:09 -07:00
Vincent Koc
e73250f54b
feat(plugins): externalize OpenCode provider (#117035)
* feat(plugins): externalize OpenCode provider

* docs: refresh OpenCode provider map
2026-08-01 05:07:35 +08:00
Peter Steinberger
9ae79eed2d
perf(catalog): cadence-proof provider caches and parallelize the Claude scan (#115259) 2026-07-28 11:37:37 -04:00
Peter Steinberger
99ec30b44b
feat(plugins): catch code-mode drift between catalogs shipping the same model (#115183)
* feat(plugins): catch code-mode drift between catalogs sharing one model

Adds a contract test that groups bundled catalog rows by shared upstream
model and requires every row in a group to declare compat.codeMode once any
sibling does. Rows sharing a model id group automatically; rows under
different ids opt in with the new manifest-only `upstreamModel` marker.

Moves the kimi catalog into its manifest so the scan can see it, and records
the tier reseller catalogs were silently missing as explicit "capable".

* docs: regenerate docs map for the shared-model code-mode section
2026-07-28 08:52:21 -04:00
Peter Steinberger
8f8e40dabe
perf(gateway): share one node.list snapshot across session catalog providers (#114646) 2026-07-27 13:14:07 -04:00