Commit Graph

37310 Commits

Author SHA1 Message Date
Peter Steinberger
0835f9409a fix: route telegram cli sends through gateway 2026-04-28 03:01:22 +01:00
Peter Steinberger
662d5de746 docs: document QQBot groups and Yuanbao 2026-04-28 02:59:36 +01:00
Peter Steinberger
554f36b197 test(release): stabilize release validation waits
(cherry picked from commit a4266be808)
2026-04-28 02:59:34 +01:00
Peter Steinberger
8123db644b fix: break plugin command spec import cycle
(cherry picked from commit ced0e96cf2)
2026-04-28 02:59:16 +01:00
Shakker
197f95c94d docs: clarify refreshable model catalog authority 2026-04-28 02:59:07 +01:00
Shakker
2c1be64d97 fix: keep refreshable manifest catalogs registry backed 2026-04-28 02:59:07 +01:00
Shakker
5280b157f6 feat: declare chutes and kilocode model catalogs 2026-04-28 02:59:07 +01:00
Shakker
973a3226f0 fix: use refreshable manifest rows for provider list fast paths 2026-04-28 02:59:07 +01:00
Shakker
27a8875241 fix: append filtered registry rows in broad model lists 2026-04-28 02:59:07 +01:00
Shakker
53b53ba06b feat: declare refreshable model catalog supplements 2026-04-28 02:59:07 +01:00
Shakker
7231fcfec3 fix: avoid broad runtime catalog supplements 2026-04-28 02:59:06 +01:00
Shakker
8ac10cf164 refactor: support refreshable manifest list rows 2026-04-28 02:59:06 +01:00
Shakker
a0608af2ee docs: note broad model list normalization skip 2026-04-28 02:59:06 +01:00
Shakker
9682f3937e fix: skip runtime normalization for broad model lists 2026-04-28 02:59:06 +01:00
Shakker
8f92239fdb docs: note models list supplement speedup 2026-04-28 02:59:06 +01:00
Shakker
177da2c5a8 fix: skip resolved duplicate catalog supplements 2026-04-28 02:59:06 +01:00
Shakker
495ba0f1be fix: skip duplicate suppression for registry rows 2026-04-28 02:59:06 +01:00
Shakker
f049d9dec2 fix: avoid broad model row runtime resolution 2026-04-28 02:59:06 +01:00
Shakker
f5439a341b fix: skip broad provider runtime catalog listing 2026-04-28 02:59:06 +01:00
Shakker
9df9bbd243 refactor: support broad static catalog reads 2026-04-28 02:59:06 +01:00
Peter Steinberger
f64e4fd8cf test: split agents vitest shards 2026-04-28 02:58:24 +01:00
Peter Steinberger
fe1c7fae99 test: catch transitive gateway cold imports 2026-04-28 02:58:06 +01:00
Peter Steinberger
8b6d960539 test: move hot runtime tests to fast lane 2026-04-28 02:57:47 +01:00
Neerav Makwana
ebfc36ba8d docs(changelog): update memory fix attribution 2026-04-28 02:56:56 +01:00
Neerav Makwana
1106cc7fd2 fix(cli): skip memory eager context warmup 2026-04-28 02:56:56 +01:00
Peter Steinberger
1945389374 test: expose provider media test helpers 2026-04-28 02:52:30 +01:00
Peter Steinberger
7f3dead335 perf: keep gateway cold paths out of startup 2026-04-28 02:50:32 +01:00
Peter Steinberger
2746e2ccef test(telegram): cover handler error boundary 2026-04-28 02:50:03 +01:00
Peter Steinberger
2a3a24ebdc refactor: share media provider asset helpers (#73142)
* refactor: share openai-compatible speech providers

* refactor: tighten openai-compatible speech helper

* refactor: share image generation asset helpers

* fix: keep image helpers off root plugin sdk runtime
2026-04-28 02:44:18 +01:00
Peter Steinberger
4949f23219 docs(changelog): clarify parent CLI memory fix 2026-04-28 02:40:44 +01:00
hclsys
ba80695bba fix(cli): exit 0 when invoking parent commands without a subcommand (#73077)
Several `openclaw <parent>` commands (channels, plugins, approvals, devices,
cron, mcp) were exiting with code 1 when invoked bare, while printing the
same help-style content that `<parent> --help` produces (which exits 0).
This broke `&&` chains and surfaced a misleading
`ELIFECYCLE Command failed with exit code 1.` line under pnpm.

Add a small `applyParentDefaultHelpAction(cmd)` helper in
`src/cli/program/parent-default-help.ts` that attaches a default action
which prints the parent's own help and sets `process.exitCode = 0`. The
helper is a no-op when the parent already has its own action (e.g.
`agents` defaulting to `agents list`), so existing intentional defaults
are preserved.

Apply it to the six core parents listed in #73077.
2026-04-28 02:40:44 +01:00
Peter Steinberger
482c74b724 refactor: remove narrow SwiftLint suppressions 2026-04-28 02:38:44 +01:00
Peter Steinberger
152b9856eb test(ci): update support boundary expectations 2026-04-28 02:38:31 +01:00
Peter Steinberger
2d0cc1ee22 fix(memory): reject empty lancedb embedding config 2026-04-28 02:38:31 +01:00
Peter Steinberger
f8a15a06f2 test(models): drop suppression helper exports 2026-04-28 02:38:31 +01:00
Peter Steinberger
947aae5a99 refactor(models): move suppressions to manifests 2026-04-28 02:38:31 +01:00
Peter Steinberger
c0fdf9923b perf(agents): keep model resolution caches warm 2026-04-28 02:38:31 +01:00
Jochen Roessner
e9be25b554 perf: cache model resolution to avoid repeated plugin-provider loads
On ARM64 devices (e.g. Raspberry Pi 4), resolvePluginProviders takes ~20s
on first call. Three bugs cause this cost to be paid repeatedly:

1. ensureOpenClawModelsJson readyCache fingerprint includes models.json
   mtime. After a write, the stored fingerprint (pre-write mtime) never
   matches again, forcing every caller to re-run planOpenClawModelsJson.

2. readyCache has one entry per file path. Agents with different configs
   (e.g. main agent vs active-memory subagent) overwrite each other's
   entry, so neither benefits from caching.

3. resolveExplicitModelWithRegistry calls shouldSuppressBuiltInModel →
   resolveProviderPluginsForCatalogHooks on every agent run. The internal
   cache key includes the full config, so callers with slightly different
   configs each pay the full provider-load cost.

Fixes:
- Remove modelsFileMtimeMs from fingerprint (bug 1)
- Add noopCache to MODELS_JSON_STATE keyed by (path, mtime) — a noop
  result is config-agnostic, so any caller can reuse it (bug 2)
- Cache resolveExplicitModelWithRegistry by (provider, modelId, agentDir),
  stable for the lifetime of a gateway session (bug 3)

Measured on Raspberry Pi 4 (ARM64):
  active-memory subagent preprocessing: 66-75s → ~3s (warm)
  active-memory total elapsed:           ~96s  → ~14s (warm)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 02:38:31 +01:00
Peter Steinberger
a0c850d188 test: stabilize gateway restart loop signals 2026-04-28 02:37:24 +01:00
Peter Steinberger
3efb444002 fix(discord): skip disabled reaction fetches 2026-04-28 02:36:48 +01:00
Peter Steinberger
7d4da9c610 fix(plugins): ignore inherited npm dry-run for runtime deps 2026-04-28 02:36:48 +01:00
Peter Steinberger
13ff3142bd fix(agents): classify terminal results for fallback 2026-04-28 02:35:51 +01:00
Peter Steinberger
82ca94fdd7 test: curate google live profile signal 2026-04-28 02:32:44 +01:00
Peter Steinberger
43a73d6a31 refactor: separate bundled channel schema surface 2026-04-28 02:31:21 +01:00
Peter Steinberger
1cea04ba0f fix(ci): mock gateway run path helpers 2026-04-28 02:30:39 +01:00
Peter Steinberger
de76ad506c test: stabilize release live e2e lanes 2026-04-28 02:30:36 +01:00
Shakker
d9411f9dc1 perf: reuse startup plugin manifests 2026-04-28 02:29:08 +01:00
Shakker
2aacc4053b refactor: accept supplied plugin manifest registry 2026-04-28 02:29:08 +01:00
Peter Steinberger
8db21cdcde chore: update app Swift package releases 2026-04-28 02:28:05 +01:00
Peter Steinberger
e651809084 perf: slim gateway startup imports 2026-04-28 02:26:27 +01:00