Josh Avant
ce67ffb70e
feat(agents): add tool-free isolated completion ( #114343 )
...
* feat: add isolated pure-inference completion
* fix(google): block ambient system prompt writes
* docs: refresh generated map
2026-07-30 13:24:45 -05:00
Vincent Koc
ca1328dddb
Merge pull request #116285 from openclaw/fix/control-ui-session-dedupe
...
* origin/fix/control-ui-session-dedupe:
chore: leave release notes to release flow
fix(ui): deduplicate gateway-native session hosts
2026-07-30 22:53:53 +08:00
Omar Shahine
b82a59a798
feat(cli): add openclaw automations alias and reword cron display prose ( #114854 )
...
* feat(cli): add openclaw automations alias and reword cron display prose
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WhJ8EiMXue6ADLmHfb7FL6
* test(doctor): update cron doctor prose assertions for automations wording
* fix(plugins): include command aliases in plugin CLI collision detection
Codex review finding on the automations alias: plugin CLI registration
seeded existingCommands from command names only, so a plugin exposing a
top-level command matching an alias-only root name (automations, terminal,
chat) would crash Commander at startup instead of being skipped. Seed from
names plus aliases; regression test covers the alias path.
* fix(cli): rename residual cron prose in CLI and gateway RPC errors
Found in combined dev-gateway E2E: automation not found / unknown automation
id errors, add/edit prose, docs tip, skills-cli mention, and the gateway RPC
not-found message. The CLI missing-get matcher accepts both message forms so
older gateways keep resolving name lookups.
* fix(gateway): keep cron.get missing wording as a wire contract for older CLI matchers
ClawSweeper rank-up: shipped CLI matchers parse 'cron job not found: <id>'
before the name-lookup fallback; the rename stays CLI-display only. Adds a
regression pinning the exact wire form.
* fix(cli): rename doctor and task-summary cron prose flagged in review
Repair-plan advisories, session-registry task summary, and the heartbeat
migration health check now say automations; recreate hints use the
openclaw automations CLI form.
---------
Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com >
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-07-30 07:16:57 -07:00
Vincent Koc
8a3f5c862b
fix(plugin-sdk): ship documented public typings ( #116345 )
...
* fix(plugin-sdk): ship documented public typings
* fix(plugin-sdk): refresh public contract artifacts
2026-07-30 18:20:07 +08:00
Peter Steinberger
a4c6efc998
fix(cli): preserve installed plugins in agent exec ( #116336 )
2026-07-30 03:00:17 -07:00
Vincent Koc
6e4f67f084
Merge remote-tracking branch 'origin/main' into fix/control-ui-session-dedupe
...
* origin/main: (25 commits)
fix(qqbot): use Gateway timezone for reminders (#116294 )
test(openai): cover out-of-order named mark acks
docs(openai): clarify cumulative playback marks
test(openai): cover sustained unnamed mark acknowledgements
fix(openai): preserve playback acknowledgement order
test(openai): verify bounded playback acknowledgements
fix(openai): bound realtime playback marks
test(agents): mock incremental registry persistence (#116307 )
fix(memory-core): MEMORY.md compaction deletes user notes written under a promotion-style heading (#116180 )
feat(reply): annotate recent history images (#100866 )
chore(ios): refresh native i18n inventory
fix(ios): isolate capability router handlers
docs(ios): cut 2026.7.22 release notes
docs(hooks): document validation responses
test(qa): assert hook account rejection reasons
fix(gateway): validate hook delivery accounts
perf(gateway): bound prepared runtime startup work (#116261 )
fix(agents): prevent registry stalls during large fan-outs (#116286 )
fix(sqlite): preserve replaced snapshot targets on Windows (#116284 )
fix(ci): load frozen shard runner without repository fetch (#116273 )
...
2026-07-30 16:37:47 +08:00
joshavant
54a6dba0d3
fix(gateway): validate hook delivery accounts
2026-07-30 02:59:06 -05:00
Jason (Json)
a67ad03eea
perf(gateway): bound prepared runtime startup work ( #116261 )
2026-07-30 01:41:35 -06:00
Vincent Koc
bb68389a66
fix(ui): deduplicate gateway-native session hosts
2026-07-30 15:22:37 +08:00
Peter Steinberger
ea42a4612a
fix(plugins): plugin install survives pnpm-only overrides ( #116245 )
...
* fix(plugins): preserve compatible npm overrides on retry
* fix(plugins): keep npm compatibility type internal
* fix(plugins): bound managed override retries
2026-07-29 22:43:34 -07:00
Vincent Koc
814d1fdf1a
fix(test): review Codex runtime scan chunks ( #116212 )
...
* fix(test): review Codex runtime scan chunks
* fix(test): count reviewed scan findings
2026-07-30 13:02:57 +08:00
Sergio Cadavid
42e21ad13b
fix(plugins): keep run context available after registration ( #107028 )
2026-07-30 07:07:33 +08:00
Vincent Koc
8530edb057
fix(plugins): deliver subagent completion to current requester ( #116091 )
...
* fix(plugins): deliver subagent completion to requester
Co-authored-by: ambitioncn <36698505+ambitioncn@users.noreply.github.com >
* test(qa): register current-requester plugin fixture
* fix(plugins): scope requester authority per hook
---------
Co-authored-by: ambitioncn <36698505+ambitioncn@users.noreply.github.com >
2026-07-30 07:06:17 +08:00
Adam Kalsey
e85e1dba3f
fix(plugins): keep next-turn injections callable after register ( #111131 )
...
Co-authored-by: guptaishaan <guptaishaan@users.noreply.github.com >
2026-07-30 05:47:00 +08:00
Frank Yang
511ecd9dba
fix(plugins): expose inbound message id before dispatch ( #112359 )
...
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-30 04:26:28 +08:00
mikasa
d2f2123da5
fix #95351 : [Feature]: Generic JSONL line-parsing hook for CliBackendPlugin (native tool-card support beyond claude-stream-json) ( #95386 )
...
* feat(plugin-sdk): add CLI backend JSONL parser hook
* fix(test): isolate non-git workspace fixtures
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-30 03:37:39 +08:00
Stellar鱼
42e23c11e0
feat(plugins): allow per-turn tool narrowing in prompt hooks ( #114151 )
...
* feat(plugins): allow per-turn tool narrowing in prompt hooks
* fix(hooks): keep prompt tool policy baseline internal
* fix(test): track active tools in embedded session fixture
* test(agents): preserve active tool fixture state
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-30 03:28:45 +08:00
Josh Lehman
6beaff450e
fix(codex): avoid transcript mirror snapshot churn ( #115070 )
2026-07-29 11:59:14 -07:00
Vincent Koc
fa570d8ed3
test(plugins): include dreaming sidecar in startup expectation ( #116018 )
...
(cherry picked from commit cbb3c420db )
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-30 01:52:25 +08:00
Naka Masato
68dbf92281
fix(plugins): scope Codex relay with tool matchers ( #109603 )
...
* fix(plugins): scope Codex relay matchers
Co-authored-by: Masato Naka <masatonaka1989@gmail.com >
* fix(plugins): reject sparse tool hook matchers
* test(plugins): cover mixed relay matcher scopes
* fix(plugins): fail closed on invalid policy matchers
* test(plugins): prove composed relay policy scope
* fix(plugins): keep matcher scope internal
* fix(plugins): satisfy matcher static checks
* fix(plugins): enforce canonical tool hook matchers
* fix(codex): project native hook matcher aliases
* fix(plugins): scope Codex relay with tool matchers
* chore: keep release changelog maintainer-owned
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-30 01:39:08 +08:00
Vincent Koc
877fa6178a
fix(test): isolate plugin install fixtures ( #116008 )
2026-07-30 01:28:19 +08:00
ljy-1351
0ef7b4581f
fix(plugins): remove incorrect modifying hook timeout fallback in getClaimingHookTimeoutMs ( #107996 )
...
* fix(plugins): keep claiming hook timeouts explicit
Co-authored-by: ljy-1351 <lin.jingya@xydigit.com >
* fix(plugins): keep claiming hook timeouts explicit
Co-authored-by: ljy-1351 <lin.jingya@xydigit.com >
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-30 01:03:34 +08:00
Gorkem Erdogan
5cf756e258
fix(plugins): prevent prompt-build hook reentrancy ( #102554 )
...
* fix(agents): prevent prompt hook reentrancy
Co-authored-by: Gorkem <gorkem.erdogan@outlook.com >
* fix(agents): prevent prompt hook reentrancy
Move the reentrancy invariant to the plugin hook runner so every caller is protected while sibling hook families and independent runners remain active.
Co-authored-by: Gorkem Erdogan <29964484+gorkem2020@users.noreply.github.com >
* test(plugins): type prompt hook reentrancy event
Co-authored-by: Gorkem Erdogan <29964484+gorkem2020@users.noreply.github.com >
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
Co-authored-by: Gorkem Erdogan <29964484+gorkem2020@users.noreply.github.com >
2026-07-30 01:00:52 +08:00
Peter Steinberger
6dc13c63b6
fix(memory-core): adopt legacy dreaming jobs ( #115986 )
2026-07-29 12:26:43 -04:00
Peter Steinberger
5bfc65d7f4
refactor: remove 3,543 lines of redundant runtime and tests ( #115961 )
...
* refactor: remove 3,543 lines of redundant runtime and tests
* refactor: ratchet production environment variable budget
2026-07-29 11:43:41 -04:00
Vincent Koc
41f118cec3
fix(plugins): forward tool cancellation to hooks ( #115817 )
...
* fix(plugins): forward tool cancellation to hooks
* test(plugins): prove hook cancellation propagation
2026-07-29 22:54:01 +08:00
Peter Steinberger
17a8961a6a
fix(active-memory): inject cold first-turn memory in QA-channel DMs ( #115936 )
...
* fix(active-memory): prewarm trigger recall for channel turns
* test(active-memory): satisfy timing test lint
* test(plugins): declare active-memory prewarm hook
2026-07-29 10:38:42 -04:00
Peter Steinberger
adf3178ae6
feat(gateway): expose MCP tool identity in effective tools ( #115870 )
...
* feat(gateway): expose MCP tool identity in effective-tools catalog
* docs(agents): comment utility-tool pass gate invariant
2026-07-29 08:41:04 -04:00
Peter Steinberger
40dafc5c33
refactor: replace context-engine retry proxy with declared params ( #115872 )
...
* refactor(context-engine): remove legacy host-key retry proxy
* refactor(context-engine): declare accepted host parameters
* fix(context-engine): preserve engine adapter receivers
* refactor(plugins): tighten context-engine compat record
* refactor(context-engine): inline compat window lookup
* docs(plugins): align context-engine removal diagnostic
* test(context-engine): declare harness proof parameters
2026-07-29 08:37:08 -04:00
chenyangjun-xy
431562e775
fix: reject malformed UTF-8 in hosted official plugin catalog feed responses ( #111768 )
...
Add { fatal: true } to TextDecoder in readHostedCatalogResponseText so
invalid UTF-8 bytes throw a TypeError before the text is JSON.parsed,
instead of silently becoming U+FFFD inside field values.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 08:36:12 -04:00
Peter Steinberger
5de970c1cc
refactor: correct SDK compatibility removal metadata ( #115862 )
...
* refactor(plugin-sdk): correct compat removal metadata
* test(plugins): align boundary report compat counts
2026-07-29 08:18:52 -04:00
zhanxingxin1998
943ebc012e
fix(plugins): validate constrained empty config schemas ( #109569 )
...
Route pattern, dependency, and active conditional schemas through the real plugin config validator while keeping standalone conditional annotations on the empty-config path.
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 07:20:52 -04:00
Peter Steinberger
20668eed03
fix(memory): quarantine writes from tainted agent turns ( #115818 )
...
* feat(memory): taint writes after network tools
* fix(memory): keep provenance mutations recoverable
* fix(memory): roll back failed provenance writes
* fix(memory): serialize provenance mutations
* docs(memory): explain flush provenance boundary
* refactor(memory): share provenance mutation wrapper
* docs(memory): clarify flush provenance fallback
* fix(memory): canonicalize provenance paths
2026-07-29 06:02:06 -04:00
Hannes Rudolph
6dc55fa65e
fix(plugins): recover user turns with scoped reply hooks ( #114836 )
...
Allow before_agent_reply plugins to declare host-enforced trigger eligibility so scheduled-only hooks do not block interrupted user-turn recovery. Keep omitted and malformed scopes fail-closed, scope both memory-core maintenance hooks, and cover three runner reload cycles through the public registration contract.
Refs: #111442
Source: #114836
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-29 17:22:16 +08:00
Peter Steinberger
a37a5a6575
feat(agents): add per-session tool overrides ( #115785 )
...
* feat(agents): per-session tool overrides (mcp/skills/web-search)
* test(agents): use tracked MCP temp dirs
2026-07-29 05:13:56 -04:00
Peter Steinberger
05516e7a5f
fix(plugins): stop repeated manifest realpath scans ( #115783 )
...
Fixes #115524 by keeping path canonicalization scoped to each manifest and persisted registry build.
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 05:10:49 -04:00
Vincent Koc
80707db7ab
fix(plugins): bound hook execution and retire stale registrations ( #115695 )
...
* fix(plugins): bound hooks and own legacy registrations
* docs(hooks): clarify internal handler ownership
* fix(cli): retain message hook shutdown deadline
2026-07-29 16:44:05 +08:00
Vincent Koc
bf91a5786c
fix(plugins): enforce hook security invariants ( #115701 )
2026-07-29 16:10:34 +08:00
Peter Steinberger
ed7d01be34
fix(providers): keep model refs out of plugin paths ( #115713 )
2026-07-29 03:54:40 -04:00
Vincent Koc
14940edf15
feat(skills): add Skill Workshop lifecycle hooks ( #115606 )
...
* feat(skills): add lifecycle hook contracts
* feat(plugins): expose skill hook contracts
* feat(plugins): identify skill evaluators
* feat(skills): persist proposal evaluation lifecycle
* feat(skills): add agent evaluation action
* feat(skills): emit committed skill lifecycle changes
* feat(gateway): expose skill proposal evaluation lifecycle
* feat(ui): add Skill Workshop evaluations
* fix(skills): bind lifecycle state to proposal revisions
* fix(skills): preserve lifecycle events without artifacts
* feat(cli): evaluate skill proposals
* fix(ui): bind evaluations to proposal revisions
* docs(skills): document lifecycle hook primitives
* chore(plugin-sdk): refresh skill hook surface
* fix(skills): harden proposal evaluator execution
* fix(plugins): isolate skill evaluator inputs
* fix(cli): align skill lifecycle deadlines
* fix(skills): preserve evaluation replay invariants
* test(ui): capture Skill Workshop evaluation proof
* fix(skills): bind apply to evaluated target tree
* fix(skills): preserve evaluation contract edges
* fix(skills): bound evaluation event storage
* chore(skills): keep lifecycle helpers internal
* refactor(skills): isolate evaluation persistence
* fix(skills): satisfy lifecycle validation gates
* chore(protocol): refresh Skill Workshop clients
* docs: refresh Skill Workshop map
* chore: keep release notes in PR metadata
* docs: refresh merged docs map
* fix(ci): type Code Mode catch errors
* fix(skills): freeze lifecycle observation payloads
* fix(protocol): keep proposal inspect backward-decodable
* fix(skills): enforce final evaluator bundle limits
* fix(skills): preserve lifecycle caller attribution
* chore: drop subsumed Code Mode formatting
* test(plugins): adapt lifecycle hook mocks
2026-07-29 15:49:44 +08:00
Peter Steinberger
14ad80481a
perf(gateway): prewarm dashboard data caches after startup ( #115710 )
2026-07-29 03:30:46 -04:00
Vincent Koc
dd3d1d1a8b
fix(ui): hide pre-thread changes from session diffs ( #115708 )
...
* fix(ui): scope session diffs to thread changes
* docs: refresh generated map
2026-07-29 15:17:47 +08:00
Peter Steinberger
0babd1a73f
fix(tts): persist generated speech in media store ( #115647 )
2026-07-29 02:37:19 -04:00
Peter Steinberger
ddd0b48673
refactor: remove 3,527 lines of runtime and test duplication ( #115626 )
...
* refactor: remove obsolete runtime and test duplication
* test: preserve typed cron and realtime fixtures
2026-07-29 02:21:20 -04:00
Peter Steinberger
1b9481012b
fix(active-memory): share one recall per run across retries ( #115627 )
...
* fix(active-memory): share one recall per run across retries
Register in-flight recalls per ctx.runId so overlapping or changed-prompt
attempts join a single execution, and gate replacement recalls on settled
timeout cleanup. Entries clear on agent_end. Fixes #106957 .
* fix(active-memory): evict rejected recall entries
* test(active-memory): clarify run result retention
* test(active-memory): complete recall result fixture
2026-07-29 02:16:59 -04:00
Peter Steinberger
032defb172
fix(nodes): cancel paired local inference when callers disconnect ( #115624 )
2026-07-29 02:00:22 -04:00
Gio Della-Libera
47f654ea14
fix(claws): report plugin setup readiness ( #114899 )
...
* fix(claws): report plugin setup readiness
* fix(claws): keep setup readiness helper private
* fix(claws): honor local provider auth evidence
* fix(claws): require auth-method-only setup
* fix(azure-speech): keep setup envs credential-only
* revert(azure-speech): preserve compound setup metadata
2026-07-29 05:48:35 +00:00
Peter Steinberger
161a136941
fix(gateway): speed up startup with stateless plugin paths ( #115578 )
2026-07-29 01:34:49 -04:00
Peter Steinberger
ab3a788612
fix(models): read self-hosted context metadata ( #115566 )
...
Co-authored-by: Alaundo <alaundo@mohl.it >
2026-07-29 00:43:07 -04:00
Peter Steinberger
d41a56fca1
feat(memory): isolate curated entries by project ( #115438 )
...
* feat(memory): scope recall to active projects
* feat(memory): preserve project scope in promotion
* docs(memory): explain project-scoped recall
* fix(memory): chunk curated files per entry
* refactor(memory): narrow project scope internals
* fix(memory): exclude annotations from concept tags
* fix(memory): tighten project isolation boundaries
* fix(memory): preserve project path casing
* fix(memory): prioritize project bootstrap candidates
* docs: refresh memory architecture map
* test(memory): cover project scope schema repair
* fix(memory): complete project isolation paths
* fix(memory): close project ranking checks
* fix(memory): reinitialize search provider before ranking
* fix(memory): tolerate missing bootstrap paths
2026-07-28 23:55:49 -04:00