Commit graph

29 commits

Author SHA1 Message Date
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
tharuntejmeta
194b7f2a16
feat(meta): add Muse Spark 1.3 models (#136553)
* feat(meta): add Muse Spark 1.3 models

* docs(meta): cite Muse Spark 1.3 recommendation

Co-authored-by: Tharun Tej Tammineni <tharuntej@meta.com>

---------

Co-authored-by: Dallin Romney <dallinromney@gmail.com>
2026-09-03 14:43:05 -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
Ayaan Zaidi
4a1cc22696
fix(agents): own transient LLM retries in one failover retry controller (#134281)
Three uncoordinated retry layers replayed the same provider request on a transient failure: provider SDK client defaults, a per-request retry loop inside the ChatGPT transport, and an outer whole-turn replay in the reply runner. Stacked, one transient 429 could hold a turn silently for minutes, and the failover controller that owns provider/model fallback never saw the attempts it needed to budget.

Transient retry now has one owner: the embedded runner's failover retry controller. `retry.provider.maxRetries` is its attempt budget (default 3), the retry window stays flat at 90s so time-to-failover stays bounded, and window truncation is recorded at the producer. SDK clients run with `maxRetries: 0`, the ChatGPT transport loop is deleted, and the outer overload replay plus `OverloadRetryState` and the obsolete `StreamOptions.maxRetries` knob are removed.

User impact: a transient blip retries quickly and quietly, then succeeds or follows the existing failover chain; a persistent outage surfaces within 90s with curated, actionable copy instead of minutes of silence. An unprepared provider HTTP 500 now reads "provider internal error" instead of "request timed out". Not a breaking change: a saved `retry.provider.maxRetries` keeps a coherent meaning and needs no migration.

Named tradeoffs: the 30s "still retrying" notice is gone, and worst-case transient patience drops from about 217s to 90s.

Production LOC: +463 / -685 across 44 files, net -222.

Follows #134103 and #134111 in the LLM error-UX series.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-09-01 12:11:06 +05:30
Peter Steinberger
89d6ce457c
refactor(models): build provider catalogs as complete batches (#130564)
* refactor(models): build provider catalogs as complete batches

* refactor(models): decorate owned catalog rows in place
2026-08-26 19:07:24 -07:00
Amp
72f4ee2274 refactor(meta): inline response payload patching 2026-08-12 08:36:33 -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
tharuntejmeta
a57e8c70f5
feat(meta): add Muse Spark 1.2 models (#120373)
* feat(meta): add Muse Spark 1.2 models

* fix(meta): verify Muse Spark 1.2 catalog metadata

* fix(meta): verify Muse Spark 1.2 contracts

* docs(meta): quote discounted services terms

* fix(meta): preserve replay fields for simple completions

* test(meta): align stream host adapter types

* fix(meta): apply catalog cap for zero max tokens

* fix(meta): preserve omitted output cap

* fix(meta): scope responses stream wrapper

* fix(ai): preserve source API for stream wrappers

* fix(ai): distinguish hook and dispatch APIs

* test(ai): adapt plugin streams synchronously

* chore(plugin-sdk): refresh API baseline

* chore(plugin-sdk): refresh sharded API baseline

---------

Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-08-11 11:26:58 -07:00
Peter Steinberger
48639663b0
chore(release): prepare 2026.8.1 (#120375) 2026-08-07 18:44:12 -07:00
Peter Steinberger
bc0c3fcd63
refactor(providers): shared generated-media download guard and binary-response adoption (#120351)
* fix(agents): cancel rejected provider binary bodies

* refactor(providers): share generated media downloads

* refactor(providers): adopt payload patch stream wrapper

* fix(providers): preserve generated media helper contracts
2026-08-07 15:45:53 -07:00
Peter Steinberger
35a1777f68
refactor(providers): consolidate catalog setup helpers (#117824)
* refactor(providers): consolidate catalog setup helpers

* fix(huggingface): narrow discovered model entries
2026-08-01 22:17:52 -07:00
Peter Steinberger
568ea29d2e
refactor(plugins): inherit shared package boundary settings (#117474) 2026-08-01 09:11:09 -07:00
Vincent Koc
c892a712e6
feat(plugins): externalize Cohere and Meta providers (#116662)
* feat(plugins): externalize Cohere and Meta providers

* docs(changelog): note provider externalization

* chore: keep changelog release-owned
2026-07-31 12:53:01 +08:00
Peter Steinberger
430c293ee0
refactor: remove duplicate provider and runtime code (#115529)
* refactor: remove duplicated runtime and provider code

* refactor: exclude unrelated browser test cleanup

* refactor: preserve canonical subagent cleanup ordering
2026-07-29 00:04:52 -04:00
Peter Steinberger
dc8fdb1756
refactor(providers): derive simple providers from manifests (#114331) 2026-07-27 01:29:53 -04:00
Peter Steinberger
f6131a4fbf
build(deps): remove npm shrinkwrap; mirror pnpm lock into transient package locks (#114006)
* build(deps): remove npm shrinkwrap; mirror pnpm lock into transient package locks

npm 12 removed shrinkwrap (command + tarball/root loading). Delete all 82
committed npm-shrinkwrap.json files and stop publishing lockfiles; keep
pnpm-lock.yaml as the single reviewed dependency boundary. The generator
becomes scripts/generate-npm-package-lock.mjs and feeds plugin bundling via
a transient package-lock.json + npm ci (works on npm 11 and 12). Tarball
validation treats the published 2026.7.2 beta train as a shrinkwrap
transition; self-update npm detection now uses install topology instead of
the shipped shrinkwrap.

* fix(deps): repair lint, deadcode, and test-type lanes for the npm 12 migration

- sort integrity comparisons with an explicit comparator (oxlint)
- keep resolveBunGlobalNodeModules module-local (knip unused-export gate)
- model npm pack --json as npm<=11 array / npm 12 name-keyed object
- default calver destructuring in the tarball test fixture
2026-07-26 01:29:55 -04:00
Peter Steinberger
e30217d25c
refactor(providers): shared manifest row builder and fleet default-model adoption (#113879)
* feat(plugin-sdk): add manifest model row builder

* refactor(providers): share manifest model row building

* refactor(providers): source defaults from manifests

* refactor(providers): drop unconsumed builder aliases

* fix(providers): keep Cohere catalog internal
2026-07-25 15:00:02 -07:00
Peter Steinberger
2c933adcd9
fix(meta): align manifest inputs with runtime (#113758) 2026-07-25 10:00:26 -07:00
Peter Steinberger
f703d803cc
chore(models): curate all provider model catalogs to current-generation lineups (#113681)
* chore(models): fleet-wide provider catalog curation

* fix(models): sync provider runtime catalogs and tests with curated manifests

* test(models): align venice lifecycle assertions and copilot auth default with curated catalogs

* test(models): align catalog lifecycle contract checks
2026-07-25 07:21:17 -07:00
Jason (Json)
55cf9523e0
feat: discover models from live provider catalogs (#112412)
* feat: discover models from live provider catalogs

* fix(provider-catalog): satisfy current catalog contracts

* fix(deps): update fast-uri past new advisory

* fix(deps): refresh fast-uri shrinkwraps

* fix(openrouter): satisfy provider catalog lint

* fix(agents): preserve refreshable catalog metadata

* test(agents): keep catalog fallback proof within lint budget

* fix(provider-catalog): honor live model contracts

* fix(minimax): type discovery headers explicitly

* docs(plugin-sdk): define live model discovery contract
2026-07-21 19:29:57 -06:00
Peter Steinberger
0631252f4b
refactor: reduce plugin SDK test import overhead (#109333)
* refactor(test): split plugin SDK test helpers

* fix(test): align plugin SDK test subpaths
2026-07-16 13:55:23 -07:00
Peter Steinberger
0393189243
chore(plugins): gate deprecation hygiene in CI and purge internal deprecated usage (#108261)
* chore(plugins): gate deprecation hygiene in CI and purge internal deprecated usage

* fix(agents): migrate auth-profiles oauth import to OAuthProviderId

* fix(whatsapp): use durability param in delivery-recovery test

* chore(scripts): declare shouldRunDeprecationHygieneChecks in check-changed types

* test(plugins): update runtime-api guard for ssrf policy rename
2026-07-15 04:15:23 -07:00
Vincent Koc
046bf2468d
refactor(meta): remove unused stream helper export (#105443) 2026-07-12 16:09:01 +02:00
Peter Steinberger
218dcd815a
feat(tooling): enforce noUncheckedIndexedAccess in the extensions lane (NUIA phase 4) (#105132)
* fix(extensions): make indexed access explicit across channel plugins

Transport-payload-safe burn-down: malformed Telegram/Discord/QQ/LINE
and sibling channel input keeps existing skip paths; no synthesized
fields, no new throws in delivery loops. Zalo escape sentinels preserve
literal matches instead of undefined replacements.

* fix(extensions): make indexed access explicit across provider and memory plugins

Stream and model iteration, tool-block guards, capture guards, and
sparse accumulators; singleton model reads carry named invariants.

* fix(extensions): make indexed access explicit across tooling plugins, flip the extensions lane

Remaining plugins (oc-path, qa-lab, browser, logbook, and siblings) plus
the tsconfig.extensions.json flag flip. Cleanup: logbook sampleFrames
NaN index at max=1, QA retry clamp at non-positive attempts, dead Canvas
probe and OpenShell no-op slice removed, twitch test setup leak excluded
from the prod lane.

* refactor(plugin-sdk): expose expectDefined via a focused SDK subpath

Extensions imported @openclaw/normalization-core directly, crossing the
external-plugin packaging boundary (it only worked because the runtime
builder bundles undeclared workspace helpers). expect-runtime joins the
canonical entrypoints JSON, generated exports, API baseline, docs, and
subpath contract test; all 78 extension imports now use the SDK seam.
Two scanner-shaped locals renamed for review-bundle hygiene.

* chore(plugin-sdk): raise surface budgets for the expect-runtime subpath

One new entrypoint with one callable export, added intentionally as the
packaging-honest seam for extension invariant helpers.
2026-07-12 09:17:31 +01:00
Peter Steinberger
7bf80dc2c6
chore(tooling): enforce formatting and refresh TypeScript checks (#104239)
* chore(tooling): enforce current formatter and refresh checks

* chore(tooling): keep release changelog formatter-owned

* chore(tooling): retain compatible Node type surface

* ci: enforce formatting for docs-only changes

* ci: isolate docs formatter check

* chore(tooling): apply updated lint and format rules

* chore(tooling): satisfy updated switch lint

* style(ui): apply Linux formatter layout

* test(doctor): match quiet local audio contribution

* test(doctor): assert quiet output only

* test(doctor): follow restored information contract
2026-07-11 01:09:51 -07:00
Peter Steinberger
dba64d574f
chore(release): set version to 2026.7.2 2026-07-11 04:00:49 +01:00
Vincent Koc
0426f238c3
fix(providers): align Meta Model API contract (#103680)
* fix(providers): align Meta Model API contract

* fix(security): classify Meta endpoint as native
2026-07-10 05:24:14 -07:00
Peter Steinberger
6fd9cc92b7
fix(meta): live validation targets deployed Muse Spark 1.1 (#103163)
* fix(meta): target Muse Spark 1.1 in live checks

* chore: follow release-owned changelog policy
2026-07-10 01:00:31 +01:00
Vincent Koc
266ca5b3a2
fix(providers): publish Meta provider (#103070) 2026-07-09 12:11:56 -07:00