Peter Steinberger
1b313dc4d4
chore(tooling): enforce indexed access in core tests ( #105375 )
...
* test(tooling): enforce indexed access in core tests
* test(tui): constrain theme environment overrides
* test(doctor): enforce indexed access in migration fixtures
2026-07-12 14:29:52 +01:00
Peter Steinberger
0d84eb4e70
fix(skills): read node-hosted skills from their publishing node ( #104832 )
...
* fix(skills): make node skill locators readable
* test(skills): track node skill temp directory
* chore: defer node skill changelog to release process
2026-07-11 17:54:14 -07:00
Peter Steinberger
49b5b862ac
feat: node-hosted plugins — dynamic tools, MCP servers, and skills ( #90431 )
...
* feat: node-hosted plugins — dynamic tools, MCP servers, and skills
Nodes become declarative plugin hosts:
- node.pluginTools.update: node hosts publish plugin-registered agent tool
descriptors; gateway materializes them as agent tools executing via
node.invoke under the node command allowlist, with tools.effective
invalidation and node online/offline removal.
- Trusted paired-node descriptors: no gateway-side plugin registration
required; gateway.nodes.pluginTools.enabled off-switch (default on);
description/count caps; deterministic node-prefixed collision names.
- Declarative node-hosted MCP: nodeHost.mcp.servers (McpServerConfig shape)
starts MCP clients on the node host, publishes tools as pluginId node-mcp,
executes via built-in mcp.tools.call.v1 with per-layer timeouts, failure
isolation, and orphan-safe shutdown. No re-pairing when servers change.
- Node-hosted skills: node.skills.update publishes ~/.openclaw/skills
content (64 skills/64KB/512KB caps both sides); gateway merges them into
the skills snapshot while connected and exec host=node is available, with
node:// locators, node-prefixed collisions, disabled command dispatch,
and gateway.nodes.skills.enabled + nodeHost.skills.enabled switches.
- Security: node-supplied pluginIds cannot satisfy pluginId-scoped tool
allowlists unless gateway-registered; reserved node-mcp id requires the
core MCP descriptor shape; protocol registry kept out of public
plugin-sdk dts.
- E2E: pond harness proves publication, MCP round-trip, skills locator, and
disconnect/reconnect for all three surfaces.
* style: format node-plugin-tools test
* fix(skills): keep status loader unfiltered when eligibility is passed
skills.status started passing eligibility for the node-skill merge, which
flipped loadWorkspaceSkillEntries into filtered mode and dropped disabled
skills from status reports (QA plugin-lifecycle-hot-reload timeout). Status
now merges node skills explicitly around an unfiltered load. Also: regen
docs_map for new node docs sections; add the intentional node-host MCP
onclose suppression to the lint-suppression allowlist.
2026-07-11 10:16:34 -07:00
Josh Avant
fbd330b7aa
fix(channels): honor configured read target policies ( #99905 )
...
* fix(channels): enforce configured read targets
* test(channels): align policy checks with boundaries
* fix: bind channel reads to trusted turn context
* test: satisfy gateway lint
* fix: narrow message action channel imports
* fix(feishu): authorize message reads before provider access
* fix(slack): await reaction clear authorization
* fix(channels): align provider action contracts
* fix(matrix): read direct-room account data before sync
* fix(channels): reject unsupported attachment actions early
* fix: restore trusted operator conversation reads
* fix(matrix): authorize pin actions before provider reads
* fix: preserve trusted channel read workflows
* fix(discord): resolve current channel ids consistently
* fix(agents): preserve message action turn capability
* fix(plugins): enforce host-owned read provenance
* fix(channels): harden Teams and Discord read policy
* fix(channels): preserve exact-current action compatibility
* fix(imessage): authorize trusted current chat aliases
* fix(channels): preserve normalized current aliases
* fix(channels): preserve external current target aliases
* fix: reconcile channel policy with current main
* fix(discord): isolate DM read policy
* fix(channels): enforce provider read gates
* fix(gateway): await serialized message action identity tokens
* fix(ci): refresh channel protocol contracts
2026-07-10 22:29:37 -05:00
Countermarch
5b4302b52e
Reduce remote node bin probe churn ( #79438 )
...
* fix(nodes): defer and back off remote bin probes
* chore: leave release changelog ownership centralized
* fix(nodes): probe the live post-pairing surface
* fix(nodes): retry probes after reconnect
* fix(nodes): bind probes to live connections
* test(skills): isolate remote bin signature configs
* test(skills): place remote skills under workspace root
* style(skills): satisfy probe delay lint
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 12:40:44 +01:00
Vincent Koc
3d206140f3
refactor: localize internal implementation constants ( #101758 )
2026-07-07 08:34:13 -07:00
Peter Steinberger
1a307be2e0
feat(skills): add lifecycle curator for workshop-created skills ( #101214 )
...
Tracks per-skill usage from the skill.used diagnostic event (trusted-only
delivery, file-scoped identity), sweeps workshop-created skills daily from
gateway maintenance (active -> stale 30d -> archived 90d, pinned bypass,
restore-only unarchive, files never touched), filters archived skills from
snapshots fail-open, reports workspace-scoped overlap candidates, and adds
openclaw skills curator CLI, additive gateway methods, and a warn-only
doctor finding. Zero new config keys; SQLite/Kysely state only.
2026-07-07 03:25:44 +01:00
Peter Steinberger
a4b032e5d7
fix: harden subprocess, maintenance, and output paths ( #100440 )
...
* fix(agents): contain exec output stream failures
Co-authored-by: 陈宪彪0668000387 <chen.xianbiao@xydigit.com >
* fix(tui): contain local shell stream failures
Co-authored-by: 陈宪彪0668000387 <chen.xianbiao@xydigit.com >
* fix(process): contain command output stream failures
Co-authored-by: 陈宪彪0668000387 <chen.xianbiao@xydigit.com >
* fix(skills): isolate remote bin refresh failures
Co-authored-by: 陈宪彪0668000387 <chen.xianbiao@xydigit.com >
* fix(agents): contain background subagent sweep failures
Co-authored-by: 陈宪彪0668000387 <chen.xianbiao@xydigit.com >
* fix(skills): report directory scan failures
Co-authored-by: wendy-chsy <wan.wenyan@xydigit.com >
* fix(agents): classify plugin approval gateway failures
Co-authored-by: 唐梓夷0668001293 <tang.ziyi@xydigit.com >
* fix(exec): preserve sanitized control-byte evidence
Co-authored-by: Lavya Tandel <lavya@loom.local >
* fix(shared): unwrap standalone parameter tags
Co-authored-by: nankingjing <1079826437@qq.com >
* fix(android): fail shared capture on audio read errors
Co-authored-by: NianJiuZst <3235467914@qq.com >
* docs(changelog): record small bugfix sweep
* fix(output): preserve sanitizer boundary semantics
* test: align sanitizer and sweeper regressions
* fix(terminal): preserve text after lone C1 controls
---------
Co-authored-by: 陈宪彪0668000387 <chen.xianbiao@xydigit.com >
Co-authored-by: wendy-chsy <wan.wenyan@xydigit.com >
Co-authored-by: 唐梓夷0668001293 <tang.ziyi@xydigit.com >
Co-authored-by: Lavya Tandel <lavya@loom.local >
Co-authored-by: nankingjing <1079826437@qq.com >
Co-authored-by: NianJiuZst <3235467914@qq.com >
2026-07-05 22:21:54 +01:00
Vincent Koc
9616035a91
refactor(skills): dedupe remote probe failure context
2026-06-23 01:10:00 +08:00
Vincent Koc
409adfbe10
chore(deadcode): drop stale helper APIs
2026-06-22 04:10:02 +08:00
Gio Della-Libera
fadbcf8a4e
fix(policy): recognize declared tool allowlists ( #89596 )
...
Merged via squash.
Prepared head SHA: 3f8628b4fd
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-17 17:01:07 -07:00
Vincent Koc
0fd0e7cb92
fix(ci): align main CI fixtures
2026-06-16 17:33:39 +08:00
Vincent Koc
1884cedd35
fix(skills): refresh persisted snapshots after restart ( #93513 )
...
* fix(skills): refresh persisted snapshots after restart
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com >
Co-authored-by: Oleksandr Zakotyanskyi <28755978+fif911@users.noreply.github.com >
Co-authored-by: Stephan Kadauke <10904538+skadauke@users.noreply.github.com >
* fix(clownfish): address review for ghcrawl-156600-autonomous-smoke (1)
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com >
Co-authored-by: Oleksandr Zakotyanskyi <28755978+fif911@users.noreply.github.com >
Co-authored-by: Stephan Kadauke <10904538+skadauke@users.noreply.github.com >
---------
Co-authored-by: openclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>
Co-authored-by: Stephan Kadauke <10904538+skadauke@users.noreply.github.com >
2026-06-16 14:20:47 +08:00
Michael Appel
cc000e0ffe
fix(cron): preserve scheduled turn tool policy [AI] ( #91499 )
...
* fix(cron): preserve creator tool policy for scheduled turns
* fix(cron): cap edited scheduled turns
* fix(cron): preserve scheduled turn allowlists
* fix(cron): cap filtered tool surfaces
* fix(cron): cap scheduled turn conversions
* fix(cron): include bundled scheduled tools
2026-06-15 10:29:11 -07:00
Martin Kessler
aefd49909d
fix(skills): keep managed prompt paths readable ( #92894 )
...
* fix(skills): keep managed prompt paths readable
* fix(skills): preserve only managed skill prompt paths
* chore: refresh proof gate
* fix(skills): refresh managed prompt snapshots
* fix(skills): preserve plugin prompt paths in state roots
* test(skills): use generic state-root path names
Signed-off-by: sallyom <somalley@redhat.com >
---------
Signed-off-by: sallyom <somalley@redhat.com >
Co-authored-by: sallyom <somalley@redhat.com >
2026-06-14 12:19:08 -04:00
abnershang
287b10a895
feat(skills): allow trusted workshop symlink targets
2026-06-11 15:20:38 +01:00
Vincent Koc
9bbde70458
fix(skills): avoid per-file skill watchers
2026-06-09 12:27:53 +09:00
brokemac79
3b6bcbfb50
fix: make sandbox skills readable in writable sandboxes
...
Materializes prompt-visible skills into a protected sandbox-readable workspace for rw sandboxes, refreshes Docker/SSH/OpenShell views, and hardens stale or poisoned remote skill copies. Fixes #90410 .
2026-06-07 13:47:56 -07:00
Peter Steinberger
6c48a12562
docs: document skill runtime files
2026-06-04 19:58:44 -04:00
Peter Steinberger
0b8aabe864
docs: document auth profile failure policy contract ( #89613 )
...
* docs: document markdown marker renderer
* docs: document rendered markdown chunking
* docs: document markdown text chunking
* docs: document shared text chunking
* docs: document plugin text chunking exports
* docs: document avatar policy constants
* docs: document node match candidates
* docs: document scoped expiring id cache
* docs: document runtime import normalization
* docs: document string sample summaries
* docs: document session usage timeseries types
* docs: document session usage response types
* docs: document manifest frontmatter shapes
* docs: document channel route input metadata
* docs: document pair loop guard settings
* docs: document migration config patch helpers
* docs: document api provider registry
* docs: document tool call repair payloads
* docs: document plugin tool payload helpers
* docs: document lazy promise loader
* docs: document store writer queue state
* docs: document thread binding lifecycle
* docs: document concurrency helper contract
* docs: document gateway client info contract
* docs: document delivery context contracts
* docs: document secret ref defaults contract
* docs: document command gating contract
* docs: document avatar policy contract
* docs: document node match policy
* docs: document message channel normalization
* docs: document boolean parsing contract
* docs: document zod parse helpers
* docs: document direct dm guard policy
* docs: document fixed window limiter contract
* docs: document node presence event contract
* docs: document secret normalization contract
* docs: document progress draft line removal
* docs: document usage formatting contracts
* docs: document agent run status contract
* docs: document runtime import helpers
* docs: document provider utility ownership
* docs: document invalid config helpers
* docs: document json compat parser
* docs: document channel config metadata ownership
* docs: document channel logging helpers
* docs: document sender identity validation ownership
* docs: document string sampling helper
* docs: document global singleton helpers
* docs: document transcript tool helpers
* docs: document exec safe-bin normalization
* docs: document reaction level resolver
* docs: document account snapshot redaction boundary
* docs: document messaging target helpers
* docs: document thread binding messages
* docs: document conversation binding context
* docs: document conversation resolution helper
* docs: document owner display secret retention
* docs: document provider request config types
* docs: document skills config types
* docs: document memory config types
* docs: document imessage config types
* docs: document crestodian config types
* docs: document tools config policies
* docs: document shared config base types
* docs: document channel config contracts
* docs: document openclaw config state types
* docs: document model config contracts
* docs: document shared agent config types
* docs: document agent defaults config types
* docs: document secret input contracts
* docs: document auth config contracts
* docs: document gateway config contracts
* docs: document tool call stream repair contracts
* docs: document memory host facades
* docs: document llm core contracts
* docs: document markdown core contracts
* docs: document gateway connect error contracts
* docs: document gateway protocol primitives
* docs: document gateway frame schemas
* docs: document gateway device schemas
* docs: document gateway environment schemas
* docs: document gateway push schemas
* docs: document gateway plugin schemas
* docs: document gateway artifact schemas
* docs: document gateway command schemas
* docs: document gateway task schemas
* docs: document gateway exec approval schemas
* docs: document gateway secret schemas
* docs: document gateway config schemas
* docs: document gateway snapshot schemas
* docs: document gateway chat schemas
* docs: document gateway wizard schemas
* docs: document gateway node schemas
* docs: document gateway plugin approval schemas
* docs: document gateway talk schemas
* docs: document gateway agent schemas
* docs: document gateway session schemas
* docs: document gateway cron schemas
* docs: document gateway agent model skill schemas
* docs: document gateway skill proposal tool schemas
* docs: document gateway protocol registry
* docs: document gateway channel status schemas
* docs: document gateway schema regression tests
* docs: document gateway schema barrel
* docs: document gateway validator tests
* docs: document gateway primitive push tests
* docs: document gateway contract tests
* docs: document native protocol guard
* docs: document channel schema tests
* docs: document gateway protocol smoke tests
* docs: document gateway protocol entrypoint
* docs: document gateway protocol type exports
* docs: document gateway error codes
* docs: document protocol schema registry
* docs: document talk audio codec
* docs: document talk activation names
* docs: document talk consult questions
* docs: document talk consult tool
* docs: document talk run control contracts
* docs: document talk run control adapter
* docs: document talkback consult queue
* docs: document talk consult transcript guard
* docs: document talk fast context runtime
* docs: document forced talk consult coordinator
* docs: document talk output activity tracker
* docs: document talk event metrics
* docs: document talk diagnostics
* docs: document talk observability hook
* docs: document talk provider resolver
* docs: document talk provider registry
* docs: document talk runtime primitives
* docs: document talk consult controller logs
* docs: document channel identity helpers
* docs: document channel account allowlist helpers
* docs: document channel metadata draft controls
* docs: document channel ingress policy
* docs: document channel sender access gates
* docs: document channel catalog message contracts
* docs: document channel account plugin helpers
* docs: document configured binding helpers
* docs: document channel acp approval config helpers
* docs: document channel bundled config write helpers
* docs: document channel plugin utility contracts
* docs: document channel config access helpers
* docs: document channel message action helpers
* docs: document channel outbound runtime helpers
* docs: document channel pairing promotion helpers
* docs: document channel registry helpers
* docs: document channel setup wizard helpers
* docs: document channel lifecycle status helpers
* docs: document channel target thread helpers
* docs: document channel session binding helpers
* docs: document channel package module probes
* docs: document channel setup wizard contracts
* docs: document channel plugin API barrels
* docs: document channel contract test helpers
* docs: document channel core helpers
* docs: document small core facades
* docs: document provider runtime helpers
* docs: document persistence and realtime helpers
* docs: document mcp and state helpers
* docs: document tool planner contracts
* docs: document music generation runtime
* docs: document crestodian command flow
* docs: document utility helpers
* docs: document node host helpers
* docs: document transcript contracts
* docs: document trajectory export contracts
* docs: document image generation contracts
* docs: document routing helper contracts
* docs: document session helper contracts
* docs: document video generation contracts
* docs: document model catalog contracts
* docs: document proxy capture contracts
* docs: document status rendering contracts
* docs: document test helper contracts
* docs: document wizard setup contracts
* docs: document process contracts
* docs: document memory host sdk contracts
* docs: document tts contracts
* docs: document secrets runtime contracts
* docs: document shared helper contracts
* docs: document hook runtime contracts
* docs: document security audit contracts
* docs: document flow contracts
* docs: document media understanding contracts
* docs: document tui contracts
* docs: document logging contracts
* docs: document llm contracts
* docs: document cron contracts
* docs: document daemon contracts
* docs: document task contracts
* docs: document acp contracts
* docs: document test utility contracts
* docs: document skill contracts
* docs: document config contracts
* docs: document outbound infra contracts
* docs: document command analysis contracts
* docs: document provider usage infra contracts
* docs: document file safety infra contracts
* docs: document exec approval infra contracts
* docs: document gateway runtime infra contracts
* docs: document infra utility contracts
* docs: document infra queue storage contracts
* docs: document heartbeat infra contracts
* docs: document remaining infra contracts
* docs: document gateway auth contracts
* docs: document gateway display helpers
* docs: document gateway http helpers
* docs: document gateway node helpers
* docs: document gateway mcp helpers
* docs: document gateway support helpers
* docs: document gateway server runtime helpers
* docs: document gateway runtime bootstrap helpers
* docs: document gateway session events
* docs: document gateway utility helpers
* docs: document gateway talk helpers
* docs: document gateway helper contracts
* docs: document gateway server method helpers
* docs: document gateway server auth helpers
* docs: document gateway server tests
* docs: document gateway test helpers
* docs: document gateway node tests
* docs: document gateway channel tests
* docs: document gateway session tests
* docs: document gateway server startup tests
* docs: document gateway tool test helpers
* docs: document gateway server test helpers
* docs: document gateway server method tests
* docs: document remaining gateway tests
* docs: document plugin sdk public subpaths
* docs: document plugin sdk runtime helpers
* docs: document plugin sdk memory provider helpers
* docs: document plugin sdk runtime facades
* docs: document plugin sdk command approval helpers
* docs: document plugin sdk runtime types
* docs: document plugin sdk browser account helpers
* docs: document plugin sdk media memory helpers
* docs: document plugin sdk core tests
* docs: document plugin sdk contract helpers
* docs: document plugin sdk test helpers
* docs: document remaining plugin sdk tests
* docs: document cli utility helpers
* docs: document cli runtime helpers
* docs: document cli command registration helpers
* docs: document node cli helpers
* docs: document cli program registration
* docs: document message cli registration
* docs: document daemon cli helpers
* docs: document cli route parsers
2026-06-03 15:20:39 -07:00
Carmen Fernández Ruiz
2e1ae531bd
fix: skip disabled skill snapshot env overrides ( #79173 )
...
Co-authored-by: hera8939 <279459669+hera8939@users.noreply.github.com >
2026-05-31 20:20:13 +01:00
Federico Kamelhar
e76df691fe
fix(skills): bound watcher workspace state
...
Bounds skills watcher subscriptions and workspace snapshot-version state to active workspaces on the current `src/skills/runtime` implementation.
The fix keeps shared path watchers as the owner boundary, evicts idle workspace subscriptions after 1 hour without closing watchers still used by other workspaces, and clears per-workspace version keys only after preserving/advancing invalidation so cached skill snapshots cannot miss changes across teardown or re-enable.
Thanks @fede-kamel.
Fixes #77997 .
Co-authored-by: Federico Kamelhar <federico.kamelhar@oracle.com >
2026-05-31 19:35:42 +01:00
Peter Steinberger
4eba3e5d7d
chore(lint): enable more readability rules
2026-05-31 07:38:33 +01:00
Peter Steinberger
deb7bc6539
chore(lint): enable readability lint rules
2026-05-31 07:17:57 +01:00
Peter Steinberger
00d8d7ead0
refactor: extract normalization core package
...
Extract shared normalization/coercion helpers into private @openclaw/normalization-core workspace package while preserving existing plugin SDK helper subpaths.\n\nAlso keeps direct normalization-core imports internal, wires UI/build/loader resolution, and replaces the slow PR network CodeQL lane with a fast added-line boundary scan while retaining full CodeQL for scheduled/manual runs.\n\nVerification: local moved tests, plugin SDK boundary tests, extension loader tests, agents-support shard, UI build/test, build artifacts, lint, workflow guards, autoreview, and GitHub CI passed on PR head 963d893715 .
2026-05-31 01:33:00 +01:00
Shakker
e4905ce4c9
fix: enforce skill workshop proposal bounds
2026-05-30 20:04:52 +01:00
Shakker
8eb03d81a0
refactor: centralize skills runtime tests
2026-05-29 17:35:02 +01:00
Shakker
6e026fbb46
refactor: centralize skills subsystem
2026-05-29 17:35:02 +01:00
Shakker
efffb42ef9
refactor: split skills index follow-up
2026-05-29 17:35:02 +01:00
Shakker
d9278c8efd
refactor: organize skills subsystem layout
2026-05-29 17:35:02 +01:00