Peter Steinberger
e74be5d41d
refactor: eliminate final wrapper-shadowing hazards ( #122157 )
...
* refactor: disambiguate wrapper-shadowed exports
* test: align renamed session and facade boundaries
* test: cover renamed runtime mock exports
* refactor: align remaining wrapper owner call sites
* test: align overlap-rebased runtime mocks
* refactor: preserve public SDK names after overlap rebase
* chore: regenerate wrapper shadowing baselines
* test: align cron model selection mocks
2026-08-11 13:34:24 -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
f81f9d8570
chore: enforce max-lines suppression ratchet ( #107315 )
...
* ci: enforce max-lines suppression ratchet
* chore: prune stale max-lines suppression
* fix: close max-lines ratchet enforcement gaps
* fix: harden max-lines ratchet checks
* fix(ci): satisfy max-lines ratchet checks
* style: format max-lines declarations
* fix(ci): match oxlint suppression grammar
* test: isolate max-lines git fixtures
* chore: prune resolved max-lines debt
* test: skip newline path fixture on Windows
* fix: harden max-lines suppression ratchet
* chore: refresh max-lines baseline
* fix: close max-lines ratchet bypasses
* fix: derive ratchet base from PR merge tree
* fix: support older Git in staged ratchet
* fix: align max-lines declarations and baseline
* chore: refresh max-lines baseline for current main
* fix: exclude generated wizard locales from max-lines
* chore: prune resolved max-lines debt
2026-07-14 09:27:02 -07:00
Peter Steinberger
98e3f729bc
refactor: remove dead plugin loader exports ( #105937 )
...
* refactor(plugins): trim activation and contract exports
* test(plugins): restore fixture cleanup
* refactor(plugins): trim install and loader exports
* test(plugins): fully reset loader caches
* refactor(plugins): trim metadata and catalog exports
* test(plugins): preserve catalog trust coverage
* refactor(plugins): trim provider and plugin exports
* refactor(plugins): trim runtime and tool exports
* test(plugins): update dead-export consumers
* test(plugins): remove empty dead-export suites
* refactor(plugins): align exports with split registry
* refactor(plugins): trim drifted loader exports
* style(plugins): format test fixtures
* refactor(scripts): use supported plugin APIs
* refactor(plugins): finish dead export cleanup
* chore(deadcode): refresh export baseline
* test(cli): mock production memory state
* chore(deadcode): sync latest export baseline
* fix(tests): keep plugin fixtures inside core
* chore(deadcode): refresh rebased export baseline
* chore(deadcode): sync current ratchets
* fix(plugins): retain reserved slot invariant
* fix(plugins): preserve dead-export invariants
* test(plugins): use neutral catalog query fixture
* test(plugins): satisfy catalog lint
* test(plugins): preserve integrity drift coverage
* fix(ci): register skill experience live proof
2026-07-13 01:29:33 -07:00
Peter Steinberger
1bea458124
test(plugins): align prerelease contracts ( #105252 )
2026-07-12 10:42:34 +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
Evgeni Obuchowski
50e7a546a1
fix(plugins): cache plugin setup registry to fix the /models stall regression shipped since v2026.5.28 ( #93356 )
...
Since #85341 the per-model visibility probes behind the chat /models command
(isCliRuntimeProvider({ includeSetupRegistry: true }) in commands-models.ts)
rebuild the plugin setup registry on every call: a synchronous ~65ms manifest
re-scan plus plugin setup module re-execution, issued hundreds of times per
listing. On the stock bundled plugin set this pins a CPU core for ~49s per
workflow step (list -> pick provider -> pick model), in every chat channel.
Cache the manifest scan and the resolved registry in bounded PluginLruCaches
keyed by the control-plane fingerprint, discovery-env fingerprint, metadata
snapshot identity, cwd, and pluginIds scope, with clone-on-store/clone-on-hit
isolation; invalidation rides the existing plugin-metadata lifecycle clear.
Output is identical; the /models data build drops from ~49s to ~150ms and the
per-model probe from ~65ms to ~0.2ms.
2026-06-22 17:48:47 +00:00
Peter Steinberger
e8e6c684bb
docs: document tui and plugin helpers
2026-06-04 04:12:38 -04:00
Peter Steinberger
23dac6c263
test: keep vitest cases under one second
2026-05-31 06:51:34 +01:00
Peter Steinberger
4c33aaa86c
refactor: unify OpenAI provider identity ( #88451 )
...
* refactor: unify OpenAI provider identity
* refactor: move legacy oauth sidecar doctor helpers
* test: align OpenAI fixtures after rebase
* test: clean OpenAI provider unification
* fix: finish OpenAI provider cleanup
* fix: finish OpenAI cleanup follow-through
* fix: finish OpenAI CI cleanup
2026-05-31 00:29:44 +01:00
Peter Steinberger
d92b3b5cc2
refactor: unify OpenAI provider identity
...
Refactor OpenAI provider identity so OpenAI remains the canonical provider for API-key and OAuth-backed flows while legacy openai-codex state is doctor/migration-only.
Keeps OpenAI Codex Responses as an API/transport class rather than a provider identity, moves auth aliases through providerAuthAliases, updates doctor repair sequencing for old auth/profile state, and refreshes tests/docs around the canonical OpenAI behavior.
2026-05-30 11:48:41 +02:00
Peter Steinberger
049c1158c9
perf: cache plugin module exports per loader
2026-05-28 16:12:13 +01:00
Peter Steinberger
81c90aab6b
perf: prefer built bundled runtime surfaces
2026-05-28 16:03:02 +01:00
Vincent Koc
e0c3c80ebc
test: share Windows platform spy helpers
2026-05-17 08:56:56 +08:00
Peter Steinberger
c2bbb73e18
test: dedupe setup registry mock reads
2026-05-12 18:53:38 +01:00
Peter Steinberger
0eceaefda9
test: guard setup registry mock calls
2026-05-12 06:47:54 +01:00
Peter Steinberger
ad907871f9
test: guard core truthiness assertions
2026-05-11 20:35:33 +01:00
Peter Steinberger
38d27f38cd
test: tighten setup registry assertions
2026-05-10 23:36:54 +01:00
Shakker
2ec43dce47
test: tighten plugin empty array assertions
2026-05-09 04:53:25 +01:00
Peter Steinberger
1ef85c7d4c
test: make suites safe without isolation ( #78834 )
...
* test: make suites safe without isolation
* fix: narrow auth profile credential types
* test: inject channel module loader factory locally
2026-05-07 08:43:29 +01:00
Peter Steinberger
601b4819cb
test: refresh plugin loader boundary assertions
2026-05-06 02:24:43 +01:00
Peter Steinberger
e3b0707a53
fix: preserve source plugin loading fallbacks
2026-05-06 01:46:42 +01:00
Peter Steinberger
23fd8a90f9
refactor: simplify plugin module loading
2026-05-02 01:41:09 +01:00
Peter Steinberger
019f4a5bb8
refactor: remove stale plugin test cache hooks
2026-05-01 22:16:51 +01:00
Peter Steinberger
7a5b419843
refactor(plugins): simplify plugin cache boundaries
2026-04-29 03:52:22 +01:00
Peter Steinberger
189535308f
test: align plugin jiti Windows expectations
2026-04-27 12:49:00 +01:00
Effet
b40b85c21a
perf(plugins): use native require for compiled JS before jiti
...
Every CLI invocation reads the config snapshot, which pulls bundled
channel doctor contracts and setup surfaces through
`getCachedPluginJitiLoader`. jiti's TS→JS transform pipeline adds
several seconds of per-load overhead on slower hosts (NAS profiling
shows ~78% of `openclaw config get` wall time spent inside the jiti
library), and that overhead is pure waste for the already-compiled
`.js` artifacts shipped in dist/.
Wrap the loader returned by `getCachedPluginJitiLoader` so that
compiled JS targets go through `tryNativeRequireJavaScriptModule`
first. Jiti stays on the hot path for:
- TS/TSX/MTS/CTS sources
- paths the native-require helper declines (Windows by default, or
module-resolution fallbacks)
This centralises the fast path that already existed — inside
`doctor-contract-registry` and `channel-entry-contract` — and extends
it to every caller that goes through the jiti loader cache.
Benchmark on a modest NAS (Node 22.22, ZFS, telegram + discord
configured):
| command | before | after |
|------------------|-------:|------:|
| config get X | 24s | 6s |
| status | 45s | 18s |
| devices list | 55s | 26s |
| nodes status | 55s | 26s |
Fixes the slow config/status/devices/nodes read paths reported in
openclaw#62842. Remaining time is dominated by non-jiti code paths
(config schema validation, eager provider-plugin module eval) that
are out of scope for this patch.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-26 11:23:42 +01:00
Vincent Koc
b7340ec6a9
fix(plugins): scope metadata manifest reads
2026-04-25 21:48:47 -07:00
Cale Shapera
0bcb4c95c1
feat(tts): add Inworld speech provider ( #55972 )
...
Adds the bundled Inworld speech provider with docs, config surface, SSRF-guarded fetches, directive overrides, native voice-note/telephony output coverage, and live `.profile` verification.
Co-authored-by: cshape <cshape@users.noreply.github.com >
2026-04-25 22:33:21 +01:00
pashpashpash
bf7d156bb0
Bound native hook permission fingerprints ( #71758 )
...
* fix: bound native hook permission fingerprints
* fix: address native hook fingerprint review
* test: isolate native jiti runtime assertions
2026-04-25 17:08:56 -04:00
Peter Steinberger
9e9aa4722a
fix(plugins): load mirrored runtime deps through ESM-safe aliases
2026-04-25 19:39:20 +01:00
Vincent Koc
5b8bd6371c
feat(plugins): warn on ignored setup runtime ( #71253 )
...
* feat(plugins): warn on ignored setup runtime
* fix(plugins): avoid fallback setup runtime diagnostics
* refactor(plugins): clarify setup runtime lookup
2026-04-24 14:23:19 -07:00
Vincent Koc
6bc0dc8fb6
feat(plugins): report setup descriptor drift ( #71194 )
2026-04-24 11:15:30 -07:00
Vincent Koc
7418adf875
fix(plugins): honor descriptor-only setup flag
...
Honor explicit setup.requiresRuntime: false as a descriptor-only setup contract while preserving omitted values as the legacy setup-api fallback path.
2026-04-24 11:02:38 -07:00
Devin Robison
4c09f4a812
test(plugins): place shadow setup-api where the old cwd-fallback would actually resolve it
2026-04-23 20:17:21 +01:00
Devin Robison
993781e6e6
fix(plugins): ignore cwd setup-api fallback
2026-04-23 20:17:21 +01:00
Peter Steinberger
020a49de41
test: share plugin setup registry fixtures
2026-04-20 19:34:15 +01:00
Vincent Koc
8ba50aa23e
refactor(plugins): prefer setup descriptors for setup lookup ( #64786 )
...
* refactor(plugins): prefer setup descriptors for setup lookup
* fix(plugins): harden setup descriptor lookup
* fix(plugins): keep sync cli backend setup results
* fix(plugins): resolve setup registry rebase
* fix(plugins): preserve fail-closed cli backend lookup
* fix(plugins): fail closed on shadowed setup owners
* fix(plugins): swallow async setup register rejections
2026-04-12 03:29:24 +01:00
Peter Steinberger
8ddd9b8aac
perf: narrow plugin config test surfaces
2026-04-11 13:55:08 +01:00
Peter Steinberger
e98dc17866
refactor: dedupe plugin test harnesses
2026-04-08 15:58:45 +01:00
Vincent Koc
dc7b21bf36
perf(secrets): scope compat migration scans
2026-04-07 09:52:56 +01:00
Peter Steinberger
fdacaf0853
test: sync messaging runtime and talk expectations
2026-04-07 05:46:13 +01:00
Peter Steinberger
6ed33d29c8
fix(windows): disable native jiti setup loaders
2026-04-06 13:48:32 +01:00