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
Peter Steinberger
eec2c0cc26
refactor(providers): unify lifecycle-safe manifest registration ( #114381 )
...
* refactor(providers): canonicalize manifest-driven registration
* fix(zai): eliminate type-only SDK import side effects
2026-07-27 03:20:02 -04:00
Peter Steinberger
9dfb2a1318
fix: show native history in adopted Pi and OpenCode sessions ( #114040 )
...
* fix(plugins): import adopted catalog history into the OpenClaw transcript
Import native Pi and OpenCode history when a catalog session is adopted so the OpenClaw transcript reflects the full conversation immediately.
Mark imported user rows with mirrorOrigin because they are transcript mirrors, not new external turns. This preserves watcher deduplication and prevents adopted history from being reported as fresh upstream input.
* refactor(plugins): split catalog history importer
Keep the session catalog contract module leaf-like by moving transcript mutation into a dedicated runtime module. This breaks the registry-to-transcript import cycle while preserving the Plugin SDK entrypoint and importer behavior.
2026-07-26 02:09:48 -04:00
Peter Steinberger
76ee87539e
feat: detect external human turns in adopted Pi and OpenCode sessions ( #113957 )
...
* feat(plugins): support additional upstream session kinds
* feat(acpx): monitor upstream Pi sessions
* feat(opencode): monitor upstream OpenCode sessions
* fix(opencode): ignore hidden user text activity
* refactor(plugins): share upstream echo filtering
* fix(opencode): preserve marker tuple narrowing
* refactor(opencode): detect upstream turns via event_sequence cursor
Replace timestamp/grace-window completeness heuristics with OpenCode's own
per-session event_sequence.seq cursor, which advances inside the same
transaction as the message/part projections. Detects change instead of
inferring completion, so staged part writes can no longer drop a turn.
Handles cursor regression from OpenCode migrations that clear event_sequence,
suppresses compaction replay and summary re-publish, and restricts human-turn
classification to visible non-synthetic text.
* docs(plugins): record why the adoption coordinator requires complete
* fix(opencode): align cursor proof with strict types
* fix(acpx): keep Pi JSON parser private
2026-07-25 19:05:22 -07:00
Peter Steinberger
603f839058
refactor(providers): collapse live model discovery onto shared projection hook ( #113903 )
...
* feat(plugin-sdk): add live catalog row projection
* refactor(providers): share live catalog projection
* fix(venice): keep live projection internal
2026-07-25 16:17:27 -07:00
Peter Steinberger
9faaa78901
fix(opencode): sync Zen runtime catalog ( #113858 )
2026-07-25 13:52:46 -07:00
Peter Steinberger
e19841c725
feat: continue Pi and OpenCode sessions from the session catalog ( #113718 )
...
* feat(plugins): add acpSessionBinding seam for ACP session adoption
* feat(acpx,opencode): adopt existing Pi and OpenCode sessions from the catalog
* fix(ci): satisfy dead-code and temp-path guards
* docs(acpx): record why pi-acp session-root resolution stays strict
2026-07-25 08:35:47 -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
3b84a55d99
refactor(protocol): pre-publish cheat-window cleanup and vintage tracking ( #111041 )
...
* fix(codex): drain dynamic-tool handlers before side-thread cleanup
* refactor(protocol): rename question ids to questionId and flatten answer maps
* refactor(protocol): slim worker stack and unify session-catalog shapes
* refactor(protocol): delete dead public surface and polish packaging
* feat(protocol): track release-train vintage on gateway methods and schemas
* fix(apps): align question surfaces merged from main with reshaped protocol
* test(health): shape secret fixtures to scanner-safe token names
* test(health): use scanner-safe token fixtures
* fix(apps): align question surfaces merged from main with reshaped protocol
* fix(ci): prove reshaped protocol in shallow checks
* fix(ui): align sidebar question fixtures with protocol
* fix(apps): read flat Swift question answers
* fix(apps): align question surfaces merged from main with reshaped protocol
* fix(apps): refresh native question inventory
* fix(apps): align macOS snapshot fixtures with protocol
* fix(ui): align narration question fixture with protocol
2026-07-19 04:07:15 -07:00
mushuiyu886
d411559dfb
fix(acp): reject malformed session list cursors ( #107895 )
...
* fix(acp): reject malformed session list cursors
* fix(session-catalog): validate pagination cursors exactly
Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com >
* refactor(session-catalog): align search normalization owner
* refactor(session-catalog): keep parsing helpers private
Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-19 00:38:02 +01:00
mushuiyu886
42e6972d35
fix(opencode): Zen GPT-5.6 models are missing from discovery ( #110405 )
...
* fix(opencode): add Zen GPT-5.6 models
* test(opencode): narrow GPT-5.6 policy fixture
* fix(opencode): align GPT-5.6 thinking levels
Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-18 11:14:05 +01:00
Wynne668
5f56a541d3
fix(opencode): preserve Unicode in catalog tool input ( #109591 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 21:10:18 -07: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
qingminlong
552fd224cf
fix(opencode): reject output stream failures in session catalog ( #108218 )
...
* fix(opencode): reject output stream failures in session catalog
* test(opencode): format stream failure regression
* test(opencode): prove output pipe failure cleanup
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
* test(opencode): satisfy pipe proof lint
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 04:57:28 -07:00
Peter Steinberger
e7cba0e4d5
fix: provider dead exports no longer block changed checks ( #108592 )
...
* fix(ci): clean provider dead exports
* test(extensions): satisfy provider contract types
* refactor(openai): tighten provider runtime factory
2026-07-15 22:33:54 -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
Peter Steinberger
026b688161
refactor(session-catalog): normalize search at gateway ( #108240 )
...
Co-authored-by: Leon-SK668 <0668001470@xydigit.com >
2026-07-15 03:38:05 -07:00
Peter Steinberger
6eda184f27
refactor: simplify native session executable resolution ( #108169 )
2026-07-15 01:49:45 -07:00
Leon-SK668
42d42703e6
fix(session-catalog): keep searches UTF-16 safe ( #107719 )
2026-07-15 01:16:01 -07:00
Peter Steinberger
57d926b4fd
fix: connect resumed native terminals reliably ( #107688 )
...
* fix: render resumed paired-node terminals
* fix(control-ui): connect native catalog terminals reliably
* chore: keep release notes in PR body
* fix(control-ui): require terminal reconnect cancellation
* fix(gateway): cancel timed-out terminal opens safely
* fix(control-ui): recover stalled terminal opens
* chore(ui): refresh i18n fallback baseline
* fix: preserve login shell path for resumed terminals
* refactor(plugin-sdk): avoid extra resolver export
* fix(gateway): normalize terminal open failures
* test(control-ui): split terminal readiness coverage
* docs: explain catalog terminal PATH restoration
* fix(control-ui): complete terminal readiness release gates
* fix(ci): remove unused shell resolver exports
* chore(plugin-sdk): refresh API baseline after rebase
2026-07-14 19:18:19 -07:00
Peter Steinberger
e0b52a9618
feat: resume OpenCode and Pi sessions in terminal ( #107200 )
...
* feat: resume OpenCode and Pi sessions in terminal
* refactor: keep Pi session commands internal
2026-07-13 23:54:40 -07:00
Peter Steinberger
05fb55eb7b
feat: discover OpenCode and Pi sessions on paired nodes ( #106941 )
...
* feat(sessions): add opencode and pi catalogs
* fix(sessions): satisfy catalog lint
* fix(sessions): validate pi storage paths
* fix(sessions): index growing pi transcripts
* refactor(sessions): split pi path resolution
* docs(sessions): refresh catalog map
* refactor(sessions): privatize pi catalog internals
* fix(sessions): validate node catalog payloads
* fix(sessions): harden external catalog discovery
* fix(sessions): normalize catalog transcript data
* refactor(gateway): keep node scope gate compact
* fix(opencode): reject option-like session ids
* fix(sessions): align external id validation
2026-07-13 21:45:53 -07:00
Peter Steinberger
dba64d574f
chore(release): set version to 2026.7.2
2026-07-11 04:00:49 +01:00
Peter Steinberger
25e93ef9f9
fix(opencode): list current Zen models in offline discovery ( #103197 )
...
* fix(opencode): refresh Zen model catalog
* fix(opencode): expose static catalog fallback
2026-07-10 02:44:56 +01:00
Peter Steinberger
80537c1ba4
feat(macos): load provider catalog during AI onboarding ( #101132 )
...
* feat(macos): load onboarding providers from gateway
* test(crestodian): widen setup config mock
* fix(crestodian): satisfy onboarding lint gate
* chore(macos): refresh onboarding localization inventory
* test(plugins): cover guided Copilot secret metadata
2026-07-06 20:57:56 +01:00
Vincent Koc
66e676d29b
chore(release): close out 2026.6.11 on main
2026-06-30 11:31:08 -07:00
mushuiyu886
891096926e
fix(opencode): restore Zen model catalog ( #92495 )
...
* fix(opencode): restore Zen model catalog
* fix(opencode): restore Zen transport routing
* fix(opencode): broaden Zen fallback catalog
* fix(opencode): correct Zen family routing
* fix(opencode): route Zen MiniMax through Anthropic
* fix(opencode): filter Zen live-only catalog rows
* fix(opencode): route MiniMax through Zen chat completions
* fix(opencode): omit unverified Zen model costs
* fix(opencode): align sampled Zen costs
* fix(opencode): keep Zen cost metadata required
* fix(opencode): keep Zen docs examples resolvable
* fix(opencode): move Zen catalog to provider discovery
* test(opencode): cover Zen discovery cache isolation
* fix(opencode): add Zen GLM-5.2 catalog coverage
* test(opencode): detect Zen catalog drift
Signed-off-by: sallyom <somalley@redhat.com >
---------
Signed-off-by: sallyom <somalley@redhat.com >
Co-authored-by: sallyom <somalley@redhat.com >
2026-06-28 12:32:44 -04:00
Vincent Koc
0671c08900
chore(release): close out 2026.6.10 on main ( #96271 )
...
* chore(release): close out 2026.6.10 on main
* chore(release): align native app metadata for 2026.6.10
* chore(release): sync Android 2026.6.10 notes
* docs(changelog): preserve 2026.6.9 history
* docs(changelog): preserve 2026.6.9 history
2026-06-24 11:51:14 +08:00
Patrick Erichsen
0feffda3fc
fix(plugins): remove simpleicons icon color paths ( #95987 )
2026-06-23 12:16:02 -07:00
Patrick Erichsen
0a97f73402
feat: add bundled plugin icon manifest URLs ( #95845 )
2026-06-22 22:14:18 -07:00
Vincent Koc
b039e949b6
chore(release): close out 2026.6.9
2026-06-21 12:24:15 +08:00
Vincent Koc
6774e7f259
chore(release): sync main to 2026.6.8
2026-06-17 07:25:30 +08:00
Shakker
920e6a8eec
chore: set version 2026.6.9
2026-06-16 19:54:07 +01:00
Peter Steinberger
4fa5092cdc
docs: document small extension sources
2026-06-04 21:02:07 -04:00
Peter Steinberger
1878ca0820
chore(release): prepare 2026.6.2 beta
2026-06-04 00:06:52 +01:00
Peter Steinberger
e254346bc2
chore(release): prepare 2026.6.3 beta
2026-06-03 23:42:34 +01:00
Peter Steinberger
a14eacf372
chore(release): set version 2026.6.2
2026-06-01 23:06:55 +01:00
Peter Steinberger
8e28c773fe
chore(release): prepare 2026.6.1
2026-06-01 10:30:15 +01:00
Dallin Romney
4b56c44c02
test: consolidate plugin registration contracts ( #88824 )
2026-05-31 19:04:53 -07:00
Peter Steinberger
0d17623f00
chore: bump OpenClaw version to 2026.5.31
...
Bumps OpenClaw release metadata to 2026.5.31 across package manifests, app version files, plugin metadata, changelog headings, and generated shrinkwraps.
Verification:
- pnpm plugins:sync:check
- pnpm ios:version:check
- pnpm deps:shrinkwrap:check
- git diff --check
- stale 2026.5.30/build-code scan across changed files
- autoreview clean: no accepted/actionable findings
- PR CI green for real gates: Checks, security scans, dependency guard, app lanes, real behavior proof
Known non-code workflow issue:
- label workflow failed because this PR hits GitHub's 100-label issue cap before the size-label step.
2026-05-31 14:46:17 +01:00
Peter Steinberger
cd07d013ba
chore(release): bump version to 2026.5.30
2026-05-30 06:49:13 +01:00
rain
ad3e3cb7d2
fix(agents): preserve reasoning_content replay across DeepSeek tier suffixes ( #87593 )
...
* fix(agents): preserve reasoning_content replay across DeepSeek tier suffixes
OpenCode Zen exposes DeepSeek V4 as `deepseek-v4-flash-free`, which keeps the upstream DeepSeek thinking-mode contract that requires `reasoning_content` to be passed back on follow-up requests. The existing replay allowlist only matched the bare ids (`deepseek-v4-flash`, `kimi-k2-thinking`, ...), so the tier-suffixed id missed every candidate and the sanitizer stripped `reasoning_content` from the assistant turn. DeepSeek then rejected the second API call with HTTP 400 and the session deadlocked.
Strip the well-known tier suffixes (`-free`, `-paid`, `-trial`) when generating allowlist candidates so the base model id matches and the reasoning replay survives. Existing matching for prefixed / colon-suffixed routes is unchanged.
Fixes #87575
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(agents): avoid spread-rebuild when iterating allowlist candidates
oxlint flagged the [...candidates] spread as an unnecessary array copy. Use an explicit baseCount loop bound instead so we still iterate the original entries while pushing tier-stripped variants onto the same array.
Co-authored-by: Cursor <cursoragent@cursor.com >
* test(opencode): add live DeepSeek replay probe
* test(opencode): avoid forced tool choice in live replay
---------
Co-authored-by: Pluviobyte <Pluviobyte@users.noreply.github.com >
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-05-28 16:25:54 +01:00
Peter Steinberger
cee2a50fe6
chore(release): prepare 2026.5.28
2026-05-28 01:48:07 +01:00
Peter Steinberger
bb46b79d3c
refactor: internalize OpenClaw agent runtime ( #85341 )
...
* refactor: extract agent core package
Introduce packages/agent-core as the OpenClaw-owned home for reusable agent loop, harness, session, prompt, and runtime dependency contracts.
* refactor: extract shared llm runtime
Move provider model registries, stream wrappers, OAuth helpers, and LLM utilities into src/llm with plugin-sdk barrels instead of depending on the old embedded runtime layout.
* refactor: remove pi runtime internals
Rename remaining Pi-shaped agent surfaces to OpenClaw agent runtime names, delete obsolete Pi docs and package graph checks, and add the third-party notice for incorporated code.
* refactor: tighten agent session runtime
Make agent-core/runtime dependencies explicit, consolidate compaction and session transcript helpers, and move model/session helpers behind OpenClaw-owned contracts.
* refactor: remove static model and pi auth paths
Drop static model catalogs and Pi auth bridges, move model/provider facts to manifest-owned runtime contracts, and harden internal embedded-agent utilities.
* refactor: remove legacy provider compat paths
* docs: remove agent parity notes
* fix: skip provider wildcard metadata parsing
* refactor: share session extension sdk loading
* refactor: inline acpx proxy error formatter
* refactor: fold edit recovery into edit tool
* fix: accept extension batch separator
* test: align startup provider plugin expectations
* fix: restore provider-scoped release discovery
* test: align static asset packaging expectations
* fix: run static provider catalogs during scoped discovery
* fix: add provider entry catalogs for scoped live discovery
* fix: load lightweight provider catalog entries
* fix: refresh provider-scoped plugin metadata
* fix: keep provider catalog entries on release live path
* fix: keep static manifest models in release live checks
* fix: harden release model discovery
* fix: reduce OpenAI live cache probe reasoning
* fix: disable OpenAI cache probe reasoning
* ci: extend OpenAI gateway live timeout
* fix: extend live gateway model budget
* fix: stabilize release validation regressions
* fix: honor provider aliases in model rows
* fix: stabilize release validation lanes
* fix: stabilize release memory qa
* ci: stabilize release validation lanes
* ci: prefer ipv4 for live docker node calls
* fix: restore shared tool-call stream wrapper
* ci: remove legacy pi test shard alias
* fix: clean up embedded agent test drift
* fix: stabilize runtime alias status
* fix: clean up embedded agent ci drift
* fix: restore release ci invariants
* fix: clean up post-rebase runtime drift
* fix: restore release ci checks
* fix: restore release ci after rebase
* fix: remove stale pi runtime path
* test: align compaction runtime expectations
* test: update plugin prerelease expectations
* fix: handle claude live tool approvals
* fix: stabilize release validation gates
* fix: finish agent runtime import
* test: finish post-rebase agent runtime mocks
* fix: keep codex compaction native
* fix: stabilize codex app-server hook tests
* test: isolate codex diagnostic active run
* test: remove codex diagnostic completion race
# Conflicts:
# extensions/codex/src/app-server/run-attempt.test.ts
* ci: fix full release manifest performance run id
* refactor: narrow llm plugin sdk boundary
* chore: drop generated google boundary stamps
* fix: repair rebase fallout
* fix: clean up rebased runtime references
* fix: decode codex jwt payloads as base64url
* fix: preserve shipped pi runtime alias
* fix: add scoped sdk virtual modules
* fix: decode llm codex oauth jwt as base64url
* fix: avoid stale vertex adc negative cache
* fix: harden tool arg decoding and codeql path
* fix: keep vertex adc negative checks live
* refactor: consolidate codex jwt and edit helpers
* fix: await codex oauth node runtime imports
* fix: preserve sdk tool and notice contracts
* fix: preserve shipped compat config boundaries
* fix: align codex oauth callback host
* fix: terminate agent-core loop streams on failure
* fix: keep codex oauth callback alive during fallback
* ci: include session tools in critical codeql scans
* fix: keep Cloudflare Anthropic provider auth header
* docs: redirect legacy pi runtime pages
* fix: honor bundled web provider compat discovery
* fix: protect session output spill files
* fix: keep legacy agent dir env blocked
* fix: contain auto-discovered skill symlinks
* fix: harden agent core sdk proxy surfaces
* fix: restore approval reaction sdk compat
* fix: keep live docker runs bounded
* fix: keep codex oauth redirect host aligned
* fix: resolve post-rebase agent runtime drift
* fix: redact anthropic oauth parse failures
* fix: preserve responses strict tool shaping
* fix: repair agent runtime rebase cleanup
* docs: redirect retired parity pages
* fix: bound auto-discovered resources to roots
* fix: repair post-rebase agent test drift
* fix: preserve bundled provider allowlist migration
* fix: preserve manifest-owned provider aliases
* fix: declare photon image dependency
* fix: keep provider headers out of proxy body
* fix: preserve shipped env aliases
* fix: refresh control ui i18n generated state
* fix: quote read fallback paths
* fix: preview edits through configured backend
* test: satisfy core test typecheck
* fix: preserve ZAI usage auth fallback
* test: repair codex diagnostic test
* fix: repair agent runtime rebase drift
* test: finish embedded runner import rename
* fix: repair agent runtime rebase integrations
* test: align compaction oauth fallback expectations
* fix: allow sdk-auth session models
* fix: update doctor tool schema import
* fix: preserve bedrock plugin region
* fix: stream harmony-like prose immediately
* ci: include session runtime in codeql shards
* fix: repair latest rebase integrations
* fix: honor explicit codex websocket transport
* fix: keep openai-compatible credentials provider-scoped
* fix: refresh sdk api baseline after rebase
* fix: route cli runtime aliases through openclaw harness
* test: rename stale harness mock expectation
* test: rename embedded agent overflow calls
* test: clean embedded auth test wording
* test: use openclaw stream types in deepinfra cache test
* fix: refresh sdk api baseline on latest main
* fix: honor bundled discovery compat allowlists
* fix: refresh sdk api baseline after latest rebase
* fix: remove stale rebase imports
* test: rename stale model catalog mock
* test: mock renamed doctor runtime modules
* fix: map canonical kimi env auth
* fix: use internal model registry in bench script
* fix: migrate deepinfra provider catalog entry
* fix: enforce builtin tool suppression
* fix: route compaction auth and proxy payloads safely
* refactor: prune unused llm registry leftovers
* test: update codex hooks session import
* test: fix model picker ci coverage
* test: align model picker auth mock types
2026-05-27 19:24:04 +01:00
Peter Steinberger
7aaca4a8a6
chore(release): prepare 2026.5.27
2026-05-27 16:53:50 +01:00