Peter Steinberger
3a3d4835c1
perf(test): defer plugin SDK compiler setup
2026-07-05 12:45:10 -04:00
Peter Steinberger
862de9f1a1
fix(pairing): advertise reachable Tailnet routes ( #100317 )
...
* fix(pairing): advertise reachable tailnet routes
* fix(pairing): satisfy native and SDK checks
* fix(ios): cancel stale pairing route probes
* test(pairing): document LAN-only Serve fallback
* fix(ios): preserve pairing result initializer
2026-07-05 07:43:43 -07:00
Peter Steinberger
1f484a8dbd
test: speed up and stabilize full suite
2026-07-05 08:00:23 -04:00
Peter Steinberger
062f88e3e3
refactor: extract reusable AI runtime package ( #99059 )
...
* refactor: extract reusable AI runtime package
* refactor: complete AI provider relocation
* refactor: keep llm core internal
* refactor(ai): make @openclaw/ai self-contained with host policy ports
Move pure transport helpers (tool projections, strict-schema normalization,
prompt-cache boundary, stream guards, anthropic/openai compat, request
activity) from src into packages/ai; move utf16-slice into
normalization-core. Inject host policy (guarded fetch, redaction,
strict-tool defaults, diagnostics logging) through AiTransportHost with
inert library defaults installed by src/llm/stream.ts. Narrow the public
barrel to instance-scoped createApiRegistry/createLlmRuntime; the
process-default runtime moves behind internal/ and
registerBuiltInApiProviders takes an explicit registry. Delete the
src/llm/api-registry re-export facade.
* fix(ai): teach node, jiti, and vite resolvers the @openclaw/ai and utf16-slice subpaths
The workspace alias tables in root-alias.cjs, plugin-sdk-native-resolver,
sdk-alias, the shared vitest config, and the Control UI vite config only
knew @openclaw/llm-core; Node-side plugin loading resolved @openclaw/ai
through the pnpm symlink to the unbuilt dist (checks-node-compact CI
failures), and the Control UI build broke on the new
normalization-core/utf16-slice subpath.
* chore(ui): drop leftover service-worker debug logging
* build(release): ship @openclaw/ai with its own shrinkwrap and honest dependency set
packages/ai declares only its six real runtime deps (kysely, chalk, json5,
tslog, zod, fs-safe, and proxyline were never imported); orphaned root deps
removed. generate-npm-shrinkwrap now treats publishable packages/* like
publishable plugins so the AI tarball pins its transitive tree even though
workspace deps are omitted from the root shrinkwrap. knip learns the
package entry points; the tsdown dts neverBundle option moves to its
documented deps.dts home; the README documents the no-semver internal/*
contract and host ports.
* docs(ai): add minimal external-consumer example app
examples/ai-chat consumes only the public @openclaw/ai surface (built dist
via the workspace link): isolated runtime, built-in provider registration,
one streamed completion. Supports Anthropic/OpenAI via env keys and a
keyless local Ollama target; live-verified against Ollama.
* docs(ai): document the @openclaw/ai package and workspace shrinkwrap boundary
* chore(check): include examples/ in duplicate-scan targets
* fix: emit normalization package subpaths
* fix: complete AI package boundary artifacts
* fix: align AI package boundary contracts
* fix(ci): stabilize package release contracts
* test: align documentation contract checks
* test: keep cron docs guard aligned
* test: align restored docs contract guards
* test: follow upstream docs contracts
* docs: drop superseded talk wording
2026-07-05 01:56:40 -04:00
Peter Steinberger
73fc0f5c5f
fix(channels): expose inbound media download failures [AI-assisted] ( #100119 )
...
* fix(channels): expose inbound media download failures
* fix(msteams): correlate attachment references
2026-07-04 20:28:52 -04:00
Dallin Romney
bfffa950d7
refactor(plugin-sdk): consolidate tool result helpers ( #99740 )
...
* refactor(plugin-sdk): consolidate tool result helpers
* docs(plugin-sdk): tighten tool result guidance
* refactor(feishu): use tool results directly
2026-07-04 16:50:44 -07:00
Dallin Romney
6c53dfa1df
refactor(infra): consolidate bounded HTTP body reads ( #99744 )
...
* refactor(infra): consolidate bounded HTTP body reads
* fix(plugin-sdk): preserve HTTP body export boundaries
2026-07-04 12:15:57 -07:00
Peter Steinberger
6aeb0575cf
chore(plugin-sdk): raise public export budget for GatewayTerminalConfig
2026-07-04 11:18:43 -07:00
Peter Steinberger
49cc59b1e8
refactor: consolidate markdown code fences, error coercion, and byte-identical helper pairs ( #99932 )
...
* refactor(shared): add markdown code span/fence helpers and migrate seven call sites
* refactor(normalization-core): add canonical toErrorObject and migrate six copies
* refactor: consolidate byte-identical helper pairs onto owner modules
* refactor: reuse canonical path and token helpers in session tools and credentials
* refactor(packages): dedupe compaction summarization tail and session dir parsing
* fix(security): keep missing extensions dir silent in shared plugin dir lister
* refactor: reuse media-core chunk reader and shared dreaming session key helper
* fix(plugins): register error-coercion subpath in sdk alias table
* chore(plugin-sdk): re-pin callable export count after rebase
* chore(plugin-sdk): re-pin callable export count after rebase
2026-07-04 08:40:41 -04:00
Peter Steinberger
ed2eebd31d
perf: reuse plugin SDK report compiler graph ( #99940 )
2026-07-04 07:41:19 -04:00
Peter Steinberger
be95bb72d4
refactor: consolidate core stream cleanup, watchdog locality, and approval text duplication ( #99901 )
...
* refactor(infra): share guarded body-stream cleanup across fetch consumers
* refactor(agents): extract shared runtime model locality for llm watchdogs
* refactor(auto-reply): share exec approval route resolution between command handlers
* refactor(plugin-sdk): share approval reaction hint text helpers
* refactor(plugin-sdk): share planned migration target resolution
* refactor(infra): use canonical sleep helper in backup retry
* docs(plugins): mention shared migration targets and reaction hint helpers
* chore(plugin-sdk): pin surface budgets for reaction hint and migration target helpers
2026-07-04 02:08:35 -07:00
Peter Steinberger
eafe2a8d0b
refactor: consolidate duplicated plugin state and doctor migration plumbing onto SDK seams ( #99850 )
...
* refactor(plugin-sdk): add createPersistentDedupeCache and migrate channel presence caches
* refactor(matrix): adopt SDK approval reaction target store
* refactor(plugin-sdk): share doctor legacy-state migration fs helpers
* refactor(memory-core): dedupe qmd cache entry envelope validation
* chore(plugin-sdk): pin surface budgets for shared dedupe and doctor helpers
* test(matrix): use future approval expiry fixtures for reaction targets
* test(matrix): use future approval expiry fixtures for reaction targets
2026-07-04 01:51:03 -07:00
Dallin Romney
e7384d5f02
fix(ci): restore Telegram and SDK guard checks ( #99355 )
2026-07-02 21:18:25 -07:00
Ayaan Zaidi
b07fd6f1b4
fix(telegram): keep group history always on
2026-07-02 09:22:59 -07:00
Ayaan Zaidi
53fe2e4bc3
refactor(auth): simplify codex login follow-up
2026-07-01 11:16:49 -07:00
Eva
c188dbbbf7
Wire Codex login SDK entrypoint inventory
2026-07-01 11:16:49 -07:00
Josh Avant
ba5244c189
fix: advertise route-aware LAN Control UI links ( #98482 )
...
* Route LAN pairing URLs by default route
* Advertise route-aware LAN Control UI links
* Fix route-aware LAN test mocks
* Narrow advertised LAN SDK export
2026-07-01 04:02:12 -05:00
snowzlmbot
b63e06f68a
fix(llm): preserve structured tool result replay
...
Preserve structured tool-result replay text across provider transports while keeping provider-facing redaction and Anthropic media ordering intact.
Thanks @snowzlmbot!
2026-06-30 23:44:02 -07:00
Brian Snyder
9f98b6e174
fix(gateway): emit stale exec approval followup diagnostics ( #98293 )
...
* fix(gateway): emit stale exec approval followup diagnostics
* fix(gateway): cover approval suppression diagnostics in ci
* fix(logging): preserve approval ids in stability bundles
* docs(exec): document suppression diagnostics
---------
Co-authored-by: BSnizND <199837910+BsnizND@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@golden-gate.local >
2026-07-01 05:20:53 +01:00
Marvinthebored
b3b51b0c91
fix(anthropic): surface Discord pre-tool commentary
...
Route Anthropic pre-tool narration through the commentary progress lane, preserve shared channel progress defaults, and keep Discord/Telegram reasoning gates explicit.
Thanks @Marvinthebored!
2026-06-30 18:12:07 -07:00
Momo
db2488b6e3
fix(memory): record structured dreaming outcomes ( #97723 )
...
Summary:
- Merged fix(memory): record structured dreaming outcomes after ClawSweeper review.
Automerge notes:
- PR branch already contained follow-up commit before automerge: chore(plugin-sdk): update surface budgets
Validation:
- ClawSweeper review passed for head 9fa7d20a96 .
- Required merge gates passed before the squash merge.
Prepared head SHA: 9fa7d20a96
Review: https://github.com/openclaw/openclaw/pull/97723#issuecomment-4831902831
Co-authored-by: momothemage <niuzhengnan@163.com >
Approved-by: momothemage
2026-06-29 11:23:38 +00:00
Dallin Romney
081f8fd1fa
test: refresh plugin SDK surface budgets ( #97604 )
2026-06-28 17:51:33 -07:00
Omar Shahine
9b9a124cc5
Fix Codex message-tool-only source reply completion ( #95942 )
...
* fix(codex): recognize message tool source replies
* fix(codex): accept numeric source message ids
* fix(codex): account for source reply SDK surface
* fix(codex): require delivered reply receipts
* fix(codex): reject alias-routed source replies
* fix(codex): require delivered non-send telemetry
* fix(codex): honor normalized source routes
---------
Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com >
2026-06-28 12:02:36 -07:00
Gio Della-Libera
70e0fd4d8b
Add hosted catalog config profiles ( #95981 )
...
Merged via squash.
Prepared head SHA: ef4d81cd08
Co-authored-by: giodl73-repo <235387111+giodl73-repo@users.noreply.github.com >
Co-authored-by: giodl73-repo <235387111+giodl73-repo@users.noreply.github.com >
Reviewed-by: @giodl73-repo
2026-06-28 07:53:32 -07:00
Josh Lehman
b5e9179063
docs: deprecate legacy session file helpers ( #97494 )
...
* docs: deprecate legacy session file helpers
* docs: update sdk deprecation budgets
2026-06-28 07:33:34 -07:00
NIO
527f8f0cbb
fix(image-gen): bound image generation provider JSON response reads ( #96495 )
...
* fix(image-gen): bound image generation provider JSON response reads
Route success JSON reads through readProviderJsonResponse (16 MiB cap)
in openrouter, google, fal, minimax, openai, and vydra image generation
providers to prevent OOM from oversized or hostile endpoint responses.
Mirrors the response-limit campaign already applied to other provider paths.
AI-assisted.
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(image-gen): size bounded JSON caps for inline image payloads
Signed-off-by: sallyom <somalley@redhat.com >
---------
Signed-off-by: sallyom <somalley@redhat.com >
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: sallyom <somalley@redhat.com >
2026-06-26 07:08:30 -04:00
Renaud Cerrato
95b97e5b0b
fix(exec): fail invalid explicit workdir before running ( #94441 )
...
* fix(exec): fail invalid explicit workdir before running
* test(exec): tighten invalid workdir regression
* fix(exec): clarify invalid workdir recovery
* refactor(exec): centralize workdir resolution
* test(exec): update invalid workdir assertion
* fix(exec): harden backend workdir contract
* fix(exec): map missing backend host workdirs
* fix(exec): reject control commands before workdir prep
* fix(exec): defer env hook until backend cwd validation
* chore(sdk): refresh plugin api baseline
* test(agents): drop redundant definition assertions
* test(exec): use real config workdirs
* test(exec): use tracked temp dirs
* test(openshell): keep temp setup local
* test: update temp-dir route fixture
---------
Co-authored-by: jesse-merhi <79823012+jesse-merhi@users.noreply.github.com >
2026-06-26 08:02:00 +10:00
Vincent Koc
497d53d821
fix(sdk): tighten wildcard surface budget
2026-06-25 23:30:17 +08:00
Vincent Koc
3ab7a72764
fix(plugin-sdk): update surface budget
2026-06-25 02:22:44 +02:00
Vincent Koc
6df67285df
fix(sdk): keep surface budgets tight
2026-06-25 02:18:07 +08:00
Vincent Koc
5eec2158ea
fix(sdk): restore post-build surface budgets
2026-06-25 02:10:39 +08:00
Vincent Koc
f163d778c0
fix(sdk): tighten public surface budgets
2026-06-25 01:47:50 +08:00
Vincent Koc
b302b491da
fix(sdk): refresh public surface budgets
2026-06-25 01:41:04 +08:00
Ayaan Zaidi
f1e38f2ed6
fix(telegram): narrow rich table alignment surface
2026-06-24 06:41:38 -07:00
zhang-guiping
d2933bbdb9
fix(telegram): refresh rich table SDK budget
2026-06-24 06:41:38 -07:00
张贵萍0668001030
2e124081af
fix(telegram): preserve rich table styling
2026-06-24 06:41:38 -07:00
Vincent Koc
bfffc77bfc
feat(copilot): add BYOK provider parity
2026-06-24 18:29:56 +08:00
Josh Lehman
8a7b3c755a
fix(memory-core): migrate dreaming cleanup lifecycle ( #96193 )
...
* fix(memory-core): migrate dreaming cleanup lifecycle
* fix(sessions): resolve lifecycle session files explicitly
* fix(ci): refresh dreaming lifecycle proof ratchets
2026-06-23 16:08:44 -07:00
Josh Lehman
132d70bfb3
refactor: migrate bundled transcript target lookups ( #89911 )
2026-06-23 14:32:21 -07:00
Josh Lehman
c24d266b2d
refactor: use accessor-backed transcript corpus for memory ( #96162 )
...
* refactor: ratchet memory transcript corpus access
* test: use narrow runtime config snapshot import
* test: update plugin sdk surface budgets
* refactor: split memory transcript corpus module
2026-06-23 12:37:44 -07:00
Vincent Koc
e856a24754
fix(qa): bound docker e2e log replay
2026-06-23 13:26:09 +02:00
Vincent Koc
da32c7fe53
chore(sdk): update public surface budget
2026-06-23 15:48:27 +08:00
兰之
bd479958c0
feat(plugin-sdk): add extensible channel identity hook context ( #91903 )
...
Merged via squash.
Prepared head SHA: 90f51eafd5
Co-authored-by: lanzhi-lee <36190508+lanzhi-lee@users.noreply.github.com >
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com >
Reviewed-by: @vincentkoc
2026-06-23 11:56:49 +08:00
Vincent Koc
8b78ae2855
fix(session-memory): sanitize model artifacts before saving memory ( #95791 )
...
* fix(session-memory): sanitize model artifacts before saving memory
Co-authored-by: Sophia <44297511+SweetSophia@users.noreply.github.com >
Co-authored-by: YBoy <231405196+YB0y@users.noreply.github.com >
* fix(sdk): update plugin surface budgets
---------
Co-authored-by: openclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>
Co-authored-by: YBoy <231405196+YB0y@users.noreply.github.com >
2026-06-22 22:48:03 +08:00
Josh Lehman
d3781cc4b8
refactor: add memory and QMD session identity mapping ( #95087 )
2026-06-22 06:28:54 -07:00
Vincent Koc
35bafea757
refactor(providers): share reasoning payload normalization
2026-06-22 19:08:00 +08:00
Vincent Koc
2ba9d6eabe
refactor(providers): share Qwen chat-template thinking patch
2026-06-22 18:42:40 +08:00
Peter Steinberger
15a0609a6b
test(plugin-sdk): restore private surface budget
2026-06-22 03:30:14 -04:00
Vincent Koc
078044a2cf
test(sdk): refresh plugin surface budget
2026-06-22 14:57:53 +08:00
Vincent Koc
a9be81d510
fix(ci): repair baseline lint and test gates
2026-06-22 11:44:21 +08:00