Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
5998 commits
Select commit Hold shift + click to select a range
bb10f60
style: resolve exec formatter follow-up
steipete Mar 29, 2026
ddd2cbf
style: resolve exec formatter follow-up
steipete Mar 29, 2026
421acd2
style: finalize exec formatter cleanup
steipete Mar 29, 2026
9baa853
test: isolate image read helper coverage
steipete Mar 29, 2026
4635810
fix: stabilize unit test planner scheduling
steipete Mar 29, 2026
1318479
refactor: extract MCP transport helpers
steipete Mar 29, 2026
e45cc38
refactor: unify sensitive URL config hints
steipete Mar 29, 2026
b4badd7
build: resolve plugin package contract path
steipete Mar 29, 2026
356adc9
test: align schema and redaction assertions
steipete Mar 29, 2026
2f19b30
build: fix packaged plugin dependency ownership
steipete Mar 29, 2026
216afe2
test: harden packed manifest guardrails
steipete Mar 29, 2026
1ca01b7
fix: stabilize exec approval approver routing
steipete Mar 29, 2026
574d3c5
fix: make same-chat approvals work across channels
steipete Mar 29, 2026
2e0682d
refactor: finish decoupling plugin sdk seams
steipete Mar 29, 2026
f16c176
fix: disambiguate legacy mac node identities
steipete Mar 29, 2026
3ec000b
refactor: align same-chat approval routing
steipete Mar 29, 2026
6d0abfa
docs(exec): document denied approval output isolation behavior
vincentkoc Mar 29, 2026
22ffe7b
docs: fix before_install finding field name, add MCP SSE transport do…
vincentkoc Mar 29, 2026
168ab94
refactor(config): pin runtime snapshot and drop ttl cache
steipete Mar 29, 2026
6ca81f8
test(gateway): decouple send coverage from telegram specifics
steipete Mar 29, 2026
6d9a722
refactor: unify approval command authorization
steipete Mar 29, 2026
3584a89
docs: rewrite sessions/memory section -- compaction, memory, and new …
vincentkoc Mar 29, 2026
40446ea
docs: add cross-links to new memory-search page from reference docs
vincentkoc Mar 29, 2026
e01ca8c
refactor(plugin-sdk): remove direct extension source leaks
steipete Mar 29, 2026
bd89e07
fix(agents): stop transient live-switch mismatches
vincentkoc Mar 29, 2026
ace876b
fix(gateway): keep startup model warmup static
vincentkoc Mar 29, 2026
27519cf
refactor: centralize node identity resolution
steipete Mar 29, 2026
d82d6ba
fix: align openai fast mode with priority processing
steipete Mar 29, 2026
2da61e6
[codex] Move internal development notes to maintainers (#57316)
osolmaz Mar 29, 2026
5ef42fc
Gateway: surface blocked ACP task outcomes (#57203)
mbelinky Mar 29, 2026
f8dc430
refactor: share native approval delivery helpers
steipete Mar 29, 2026
2880b3d
docs: rewrite session management, session pruning, and session tools …
vincentkoc Mar 29, 2026
102b712
style: format session docs tables
vincentkoc Mar 29, 2026
414d730
feat(mcp): add HTTP transport support and tool namespacing
ziomancer Mar 18, 2026
14f78de
fix(mcp): allow colon in tool names and dispose transport on failed c…
ziomancer Mar 18, 2026
a74091e
docs(mcp): add CHANGELOG entries and MCP transport/namespacing docs
ziomancer Mar 18, 2026
97bf380
docs(mcp): document connection timeout and URL scheme validation
ziomancer Mar 27, 2026
004bffa
fix: finalize safer MCP tool naming (#49505) (thanks @ziomancer)
steipete Mar 29, 2026
147c2c7
fix: port safer bundle MCP naming onto latest main (#49505) (thanks @…
steipete Mar 29, 2026
57069f2
gitignore: ignore docs/internal
osolmaz Mar 29, 2026
143b4c5
docs: simplify sessions/memory concept pages and fix QMD experimental…
vincentkoc Mar 29, 2026
67b381b
style: format docs tables
vincentkoc Mar 29, 2026
c9eb313
docs: add dedicated memory engine pages, replace ASCII diagram with M…
vincentkoc Mar 29, 2026
69eea2c
refactor: split approval auth delivery and rendering
steipete Mar 29, 2026
7043705
refactor: split MCP runtime and transport seams
steipete Mar 29, 2026
0e47ce5
fix(approvals): restore queue targeting and plugin id prefixes
vincentkoc Mar 29, 2026
a9984e2
fix(config): reuse in-memory gateway write reloads
steipete Mar 29, 2026
c942bd7
docs: purge internal notes
steipete Mar 29, 2026
8861cdb
refactor(plugin-sdk): untangle extension test seams
steipete Mar 29, 2026
70b7f32
docs: add Honcho memory engine page
vincentkoc Mar 29, 2026
92d4c62
style: format Honcho docs tables
vincentkoc Mar 29, 2026
ed2528e
docs: nest memory engine pages under Memory sub-group
vincentkoc Mar 29, 2026
07c6981
refactor: localize zalo test support
steipete Mar 29, 2026
1efef82
fix: stabilize extensions surface test gate
steipete Mar 29, 2026
e5dac0c
CLI: keep root help plugin descriptors non-activating (#57294)
gumadeiras Mar 29, 2026
924c264
fix: inject anthropic service_tier for OAuth auth (#55922)
Cypherm Mar 29, 2026
1ace91e
fix(bluebubbles): coalesce URL-only inbound shares
vincentkoc Mar 29, 2026
cfac0e8
refactor: move plugin-owned test support into plugins
steipete Mar 29, 2026
52fb4a1
refactor: share approval interactive renderers
steipete Mar 29, 2026
d45b997
docs: clarify shared approval delivery
steipete Mar 29, 2026
809833e
fix(config): recover clobbered config and isolate test paths
steipete Mar 29, 2026
0fdf724
test: trim stale extension boundary allowlist
steipete Mar 29, 2026
b888741
fix: QMD 1.1+ mcporter compatibility with legacy fallback [AI-assiste…
armanddp Mar 29, 2026
89a4f2a
refactor(config): centralize runtime config state
steipete Mar 29, 2026
f928b81
test(config): align snapshot fixtures and isolation
steipete Mar 29, 2026
9a97c30
style(test): sort mutate helper imports
steipete Mar 29, 2026
b007790
Plugins: align CLI metadata loader behavior
gumadeiras Mar 29, 2026
6c91b27
Docs: remove internal CLI metadata note
gumadeiras Mar 29, 2026
4680335
docs: fix English link audits (#57039)
velvet-shark Mar 29, 2026
0a4c110
test: stabilize targeted harnesses
steipete Mar 29, 2026
bdd9bc9
fix(cron): deliver full announce output instead of last chunk only (#…
hydro13 Mar 29, 2026
bf63264
docs: fix Honcho tool names and add CLI commands
vincentkoc Mar 29, 2026
e4466c7
test: stabilize runner and acp mocks
steipete Mar 29, 2026
53bcd57
refactor(tasks): unify the shared task run registry (#57324)
vincentkoc Mar 29, 2026
8720070
refactor: rename channel approval capabilities
steipete Mar 29, 2026
15c3aa8
refactor: unify approval forwarding and rendering
steipete Mar 29, 2026
1600c17
Control UI: reconnect on seq gaps
gumadeiras Mar 29, 2026
c5baf63
docs: deep audit of memory section -- fix icons, beef up engine pages…
vincentkoc Mar 29, 2026
a27ccee
refactor(config): use source snapshots for config writes
steipete Mar 29, 2026
f914cd5
refactor(gateway): dedupe self-write config reloads
steipete Mar 29, 2026
dd8d66f
refactor: inject subagent announce test seams
steipete Mar 29, 2026
5dae663
refactor(nodes): remove nodes.run execution path
steipete Mar 29, 2026
2255e04
test(nodes): update coverage after exec consolidation
steipete Mar 29, 2026
c1137ef
docs(nodes): remove nodes.run references
steipete Mar 29, 2026
0da610a
fix(tasks): prefer ACP spawn metadata on merge
vincentkoc Mar 29, 2026
193f781
fix: stabilize ci and serial test gate
steipete Mar 29, 2026
d6a3580
fix(lint): clear current main lint blockers
vincentkoc Mar 29, 2026
408f6a5
test(matrix): stabilize file sync store persistence checks
vincentkoc Mar 29, 2026
7008379
test(agents): restore cli runner test seams
vincentkoc Mar 29, 2026
3b878e6
refactor: move approval auth and payload hooks to generic channel cap…
steipete Mar 29, 2026
cf84a03
docs: clarify generic channel approval capabilities
steipete Mar 29, 2026
c191dc9
Control UI: preserve seq-gap reconnect state
gumadeiras Mar 29, 2026
188fcbf
Docs: add zh-CN Diffs page
gumadeiras Mar 29, 2026
170a3a3
fix(test): restore subagent announce timeout mocks
vincentkoc Mar 29, 2026
feed2c4
test: stabilize subagent spawn harnesses
steipete Mar 29, 2026
475defd
Anthropic: wire explicit service tier params (#45453)
vincentkoc Mar 29, 2026
6b8a1b7
refactor(nodes): split media and invoke handlers
steipete Mar 29, 2026
cbceb1d
docs(i18n): sync zh-CN node exec wording
steipete Mar 29, 2026
219d4f0
fix: wire memorySearch.extraPaths to QMD indexing (#57315)
Vitalcheffe Mar 29, 2026
2885c65
fix(memory): point qmd config dir at nested path (#39078)
smart-tinker Mar 29, 2026
0033f64
gateway: narrow already-running exit code (#26718)
yuna78 Mar 29, 2026
1911363
fix(memory): keep qmd embeddings active in search mode (#54509)
hnshah Mar 29, 2026
f9bf760
Agents: fix subagent spawn hook typing
gumadeiras Mar 29, 2026
4721670
refactor(config): use source snapshots for config mutations
steipete Mar 30, 2026
bff6a6a
test(config): align optimistic write helpers
steipete Mar 30, 2026
471e059
refactor(plugin-sdk): remove channel-specific sdk shims
steipete Mar 29, 2026
63cbc09
refactor(channels): route core through registered plugin capabilities
steipete Mar 30, 2026
c2cbdea
refactor: add approval auth capabilities to more channels
steipete Mar 30, 2026
6e1f00d
[ClawDock] Iteration on the first submission; bug fixes, UX improveme…
Olshansk Mar 30, 2026
cc04153
Agents: reuse shared subagent hook runner type
gumadeiras Mar 30, 2026
93dd25e
Tests: drop dead telegram exec approval imports
gumadeiras Mar 30, 2026
e6445c2
feat(status): surface task run pressure (#57350)
vincentkoc Mar 30, 2026
bb42027
Docs: hide ClawDock from install menu
gumadeiras Mar 30, 2026
9857d40
fix(runtime): stabilize image generation auth/runtime loading
steipete Mar 30, 2026
d26d7c7
fix(memory): add QMD sync parity hooks (#57354)
vincentkoc Mar 30, 2026
f3bf7fe
chore: bump version to 2026.3.30
steipete Mar 30, 2026
8bf86b4
agents: remove xAI auth trace logging (#57342)
huntharo Mar 30, 2026
5bac1aa
fix(memory): support qmd glob collection flags (#57351)
vincentkoc Mar 30, 2026
b82fd50
fix(test): add extension-safe test helper bridges
vincentkoc Mar 30, 2026
dce61dc
fix(cli): import task summary helper
vincentkoc Mar 30, 2026
8657b65
fix(ci): rename extension test support for boundary guards
vincentkoc Mar 30, 2026
3034adf
fix(commands): harden fast status and Telegram callbacks
vincentkoc Mar 30, 2026
26f34be
fix(gateway): /v1/responses tool schema should use flat Responses API…
malaiwah Mar 30, 2026
9b33380
fix(test): harden qmd release callback typing
vincentkoc Mar 30, 2026
12c92b5
docs: fix wrong defaults and heading in configuration-reference
vincentkoc Mar 30, 2026
32ba94b
docs: fix wrong defaults and config path in FAQ
vincentkoc Mar 30, 2026
82b6bd7
docs: fix wrong imports and removed API in architecture.md
vincentkoc Mar 30, 2026
b7e2e1b
docs: fix stale Future Events and wrong log example in hooks.md
vincentkoc Mar 30, 2026
9355925
docs: fix Mintlify callout syntax in security page
vincentkoc Mar 30, 2026
dc64280
docs: fix stale CLI reference -- auth choices, agent options, tasks c…
vincentkoc Mar 30, 2026
445fed9
docs: add missing field docs and fix config-reference P1s
vincentkoc Mar 30, 2026
d3429e0
docs: fix FAQ P1s -- model aliases and heartbeat OAuth default
vincentkoc Mar 30, 2026
169bbc8
docs: fix security page P1s -- dmScope, heading style, roadmap language
vincentkoc Mar 30, 2026
fb81e3f
docs: fix remaining CLI P1s -- doctor, sessions, agents, models auth
vincentkoc Mar 30, 2026
b952e40
Control UI: clear queued connect timeout on stop (#57338)
gumadeiras Mar 30, 2026
cb428ac
docs: add 11 missing config sections to configuration-reference
vincentkoc Mar 30, 2026
89f9433
docs: add complete plugin hook reference and fix context fields in ho…
vincentkoc Mar 30, 2026
381bfdf
docs: fix architecture.md P1s and P2s
vincentkoc Mar 30, 2026
726ae0b
docs: fix discord.md P1s -- internal terminology and wrong CLI command
vincentkoc Mar 30, 2026
50d8155
docs: consolidate security page structure and add navigation
vincentkoc Mar 30, 2026
0c94420
docs: fix remaining CLI P1s -- global flags, onboard, logs options
vincentkoc Mar 30, 2026
d19ccde
docs: fix P2s in configuration-reference -- built-in model catalog, P…
vincentkoc Mar 30, 2026
7ed5a4a
docs: fix P2s in faq -- remote mode accordion title, gpt-5.4 model re…
vincentkoc Mar 30, 2026
542f17a
docs: fix P2s in hooks -- text language tag on log block, claude-sonn…
vincentkoc Mar 30, 2026
66f8fb9
docs: fix P2 in security -- normalize Security audit checklist headin…
vincentkoc Mar 30, 2026
fec5157
fix: stabilize gate and extension boundary checks
steipete Mar 30, 2026
e92440e
fix: replace weak randomness in feishu test support
steipete Mar 30, 2026
f44174c
Extensions: stabilize telegram registry contracts
gumadeiras Mar 30, 2026
5e4a648
fix(exec): harden async approval followup delivery in webchat-only se…
joshavant Mar 30, 2026
acea28a
Telegram: fix extension-fast test seams
gumadeiras Mar 30, 2026
9c2d22e
scripts: respect gateway.bind config when OPENCLAW_GATEWAY_BIND not s…
MerlinMiao88888888 Mar 30, 2026
9d005e6
fix: stabilize telegram contract runtime coverage
steipete Mar 30, 2026
b3c69b9
fix: add orphaned session key migration (#57217)
obviyus Mar 30, 2026
2481c0a
Tests: keep channel helpers on public plugin surfaces
gumadeiras Mar 30, 2026
25074de
fix: restore lightweight root help startup
steipete Mar 30, 2026
acf8470
fix(status): cap cache hit rate at 100% in status display (#57400)
hydro13 Mar 30, 2026
6fe24a6
Matrix: fix source-checkout runtime wrapper
gumadeiras Mar 30, 2026
c6ded0f
fix(gateway): coerce streaming tool-call argument deltas to object in…
openperf Mar 29, 2026
47839d3
fix(mattermost): detect stale websocket after bot disable/enable cycl…
Qinsam Mar 30, 2026
84b72e6
feat: add LLM idle timeout for streaming responses
liuy Mar 27, 2026
179f713
fix: unify idle timeout with runner abort path
obviyus Mar 30, 2026
6f09a68
fix: finalize LLM idle timeout landing (#55072) (thanks @liuy)
obviyus Mar 30, 2026
e57b361
feat(tasks): move task ledger to sqlite and add audit CLI (#57361)
vincentkoc Mar 30, 2026
ecb1433
Matrix: keep runtime wrapper off monolithic sdk root
gumadeiras Mar 30, 2026
f380305
Tests: restore extension plugin test seams
gumadeiras Mar 30, 2026
03a03c2
fix(ci): restore skill fixtures and security doc anchors
vincentkoc Mar 30, 2026
51e053d
OpenAI: preserve oauth exports in index tests
gumadeiras Mar 30, 2026
a6bc51f
feat(openai): forward text verbosity (#47106)
merc1305 Mar 30, 2026
1421fce
Update CHANGELOG.md
vincentkoc Mar 30, 2026
e798427
Tests: make package contract guardrails Windows-safe
gumadeiras Mar 30, 2026
da35718
fix(memory): add qmd mcporter search tool override (#57363)
vincentkoc Mar 30, 2026
d28349c
fix(test): align channel mocks with runtime exports
vincentkoc Mar 30, 2026
c52fac8
feat(tasks): add status health and maintenance command (#57423)
vincentkoc Mar 30, 2026
e86a218
Tests: type package contract npm pack helper
gumadeiras Mar 30, 2026
1482afa
Status: keep fast JSON off task audit runtime
gumadeiras Mar 30, 2026
3efcc90
Tests: read packed manifest without shell tar
gumadeiras Mar 30, 2026
0fe193d
Discord: restore message utils media-runtime mocks
gumadeiras Mar 30, 2026
8b0cbeb
Telegram: align channel test with runtime probe precedence
gumadeiras Mar 30, 2026
aaf47ca
WhatsApp: align deliver-reply test mocks with imports
gumadeiras Mar 30, 2026
8c163c1
feat(tasks): harden maintenance repair paths (#57439)
vincentkoc Mar 30, 2026
313fdf5
Memory Host: make backend-config path tests portable
gumadeiras Mar 30, 2026
c142a39
fix(memory): rebind qmd collections on pattern drift (#57438)
vincentkoc Mar 30, 2026
22f5643
fix(perf): bypass matrix facade for core helpers
vincentkoc Mar 30, 2026
16df3de
fix: stabilize config default-leak landing tests (#56834) (thanks @op…
openperf Mar 30, 2026
c7106c4
refactor(tasks): replace generic task mutation api
vincentkoc Mar 30, 2026
b7d59f7
fix(memory): export archived qmd session transcripts (#57446)
vincentkoc Mar 30, 2026
dd23e74
fix(test): bypass slack facade in message action params test
vincentkoc Mar 30, 2026
91ea844
Slack: move auto-thread coverage into plugin tests
gumadeiras Mar 30, 2026
dca7969
fix(agents): classify Anthropic "unexpected error" api_error as trans…
zijiess Mar 30, 2026
ca2a67e
Slack: keep auto-thread test context local
gumadeiras Mar 30, 2026
fa58270
refactor(tasks): split delivery state from task runs
vincentkoc Mar 30, 2026
ab43bbd
fix(test): use minimal outbound binding registries
vincentkoc Mar 30, 2026
c91f694
docs(changelog): add memory session indexer credit
vincentkoc Mar 30, 2026
d8ad72b
Tests: stabilize session-state cleanup mocks
gumadeiras Mar 30, 2026
2849e61
fix(test): trim target parsing registry imports
vincentkoc Mar 30, 2026
6af52b4
fix(test): trim outbound session registry imports
vincentkoc Mar 30, 2026
aee61dc
fix: finalize android notification forwarding controls (#40175) (than…
nimbleenigma Mar 30, 2026
6b255b4
fix(agents): prevent unhandled rejection when compaction retry times …
mpz4life Mar 30, 2026
5b2d9b6
refactor(tasks): add executor facade (#57474)
vincentkoc Mar 30, 2026
20e4d42
fix(test): trim onboarding post-write registry imports
vincentkoc Mar 30, 2026
c389b05
Tests: force-reset session cleanup state between runs
gumadeiras Mar 30, 2026
b26092c
fix(test): close task registry sqlite after reset
vincentkoc Mar 30, 2026
69793db
fix(test): trim acp context registry imports
vincentkoc Mar 30, 2026
8623c28
fix(memory): warn when qmd binary is missing (#57467)
vincentkoc Mar 30, 2026
817ac55
refactor(tasks): extract delivery policy (#57475)
vincentkoc Mar 30, 2026
6c66d10
BlueBubbles: move status-issue test into plugin
gumadeiras Mar 30, 2026
6a37eca
Supervisor: unblock waits after forced child kill
gumadeiras Mar 30, 2026
9d05db7
WhatsApp: move heartbeat recipient test into plugin
gumadeiras Mar 30, 2026
6a3c68d
fix(test): trim channels add registry imports
vincentkoc Mar 30, 2026
c842ca0
fix(test): trim channel account registry imports
vincentkoc Mar 30, 2026
b33a18e
Runtime: remove dead telegram typing lease
gumadeiras Mar 30, 2026
16b4520
Memory: fix QMD doctor contract typing
gumadeiras Mar 30, 2026
73b128e
Tests: trim channels add registry imports
gumadeiras Mar 30, 2026
0e078e8
Runtime: dedupe typing lease logic
gumadeiras Mar 30, 2026
126f773
refactor(tasks): route acp through executor (#57478)
vincentkoc Mar 30, 2026
ec13f6d
refactor(tasks): route subagents through executor (#57481)
vincentkoc Mar 30, 2026
fca8880
Tests: reuse QMD availability mock type
gumadeiras Mar 30, 2026
10723a0
Tests: tighten scoped channel account fixtures
gumadeiras Mar 30, 2026
4be290c
fix(test): trim onboarding registry imports
vincentkoc Mar 30, 2026
1c90538
refactor(cron): split main and detached dispatch (#57482)
vincentkoc Mar 30, 2026
8fb247c
refactor(tasks): guard executor-only producer writes (#57486)
vincentkoc Mar 30, 2026
3a37421
refactor(tasks): clarify detached run surfaces (#57485)
vincentkoc Mar 30, 2026
4a1f231
test(tasks): guard task-registry import boundary (#57487)
vincentkoc Mar 30, 2026
74ea42e
Tests: relax targeted unit planner split assertion
gumadeiras Mar 30, 2026
0462a7f
fix: finalize android sms search (#50146) (thanks @scaryshark124)
obviyus Mar 30, 2026
572ed05
fix(tasks): restore user-facing task wording
vincentkoc Mar 30, 2026
1fd8164
fix(test): trim acp command registry imports
vincentkoc Mar 30, 2026
7668793
Tests: close task registry before temp dir cleanup
gumadeiras Mar 30, 2026
0b16443
Tests: close ACP manager task registry before temp dir cleanup
gumadeiras Mar 30, 2026
e5fa976
test: harden android sms capability coverage
obviyus Mar 30, 2026
a58ff25
test: cover android sms search dispatch gating
obviyus Mar 30, 2026
403cf90
test: cover android sms send dispatch gating
obviyus Mar 30, 2026
96ddf30
test: cover android sms permission payloads in nodes tool
obviyus Mar 30, 2026
bb2c010
fix(delivery): treat Matrix "User not in room" as permanent delivery …
dlardo Mar 30, 2026
7304ef6
test: cover android invoke availability gates
obviyus Mar 30, 2026
7c93a2b
test: broaden android node capability advertisement coverage
obviyus Mar 30, 2026
94279d0
test: broaden android location and call log handlers
obviyus Mar 30, 2026
833d0e3
test: broaden android notification handlers
obviyus Mar 30, 2026
05762ed
test: broaden android nodes tool round trips
obviyus Mar 30, 2026
f1e7a5c
test: broaden android node advertisement matrix
obviyus Mar 30, 2026
df385a7
test: tighten android node contracts
obviyus Mar 30, 2026
88716f0
fix: align android sms permission UI state
obviyus Mar 30, 2026
1ad88b5
feat(matrix): add explicit channels.matrix.proxy config (#56930) (#56…
patrick-yingxi-pan Mar 30, 2026
89dbaa8
fix(memory): add cli qmd session context (#57493)
vincentkoc Mar 30, 2026
0a014ca
perf(tasks): optimize session lookups and sqlite upserts
vincentkoc Mar 30, 2026
e624fdc
docs(tasks): clarify heartbeat, cron, and background runs
vincentkoc Mar 30, 2026
e4e732a
fix(tasks): remove sqlite merge marker
vincentkoc Mar 30, 2026
12ae4ee
fix(slack): complete interactive block delivery (#57473)
vincentkoc Mar 30, 2026
8a91665
docs: add Background Tasks page and clean up cross-references
vincentkoc Mar 30, 2026
9514174
fix: update test mocks for refactored plugin-sdk imports in Telegram …
wzrrrrrrr Mar 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
14 changes: 7 additions & 7 deletions .agent/workflows/update_clawdbot.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
description: Update Clawdbot from upstream when branch has diverged (ahead/behind)
description: Update OpenClaw from upstream when branch has diverged (ahead/behind)
---

# Clawdbot Upstream Sync Workflow
# OpenClaw Upstream Sync Workflow

Use this workflow when your fork has diverged from upstream (e.g., "18 commits ahead, 29 commits behind").

Expand Down Expand Up @@ -132,16 +132,16 @@ pnpm mac:package

```bash
# Kill running app
pkill -x "Clawdbot" || true
pkill -x "OpenClaw" || true

# Move old version
mv /Applications/Clawdbot.app /tmp/Clawdbot-backup.app
mv /Applications/OpenClaw.app /tmp/OpenClaw-backup.app

# Install new build
cp -R dist/Clawdbot.app /Applications/
cp -R dist/OpenClaw.app /Applications/

# Launch
open /Applications/Clawdbot.app
open /Applications/OpenClaw.app
```

---
Expand Down Expand Up @@ -235,7 +235,7 @@ If upstream introduced new model configurations:
# Check for OpenRouter API key requirements
grep -r "openrouter\|OPENROUTER" src/ --include="*.ts" --include="*.js"

# Update clawdbot.json with fallback chains
# Update openclaw.json with fallback chains
# Add model fallback configurations as needed
```

Expand Down
87 changes: 87 additions & 0 deletions .agents/skills/openclaw-ghsa-maintainer/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
---
name: openclaw-ghsa-maintainer
description: Maintainer workflow for OpenClaw GitHub Security Advisories (GHSA). Use when Codex needs to inspect, patch, validate, or publish a repo advisory, verify private-fork state, prepare advisory Markdown or JSON payloads safely, handle GHSA API-specific publish constraints, or confirm advisory publish success.
---

# OpenClaw GHSA Maintainer

Use this skill for repo security advisory workflow only. Keep general release work in `openclaw-release-maintainer`.

## Respect advisory guardrails

- Before reviewing or publishing a repo advisory, read `SECURITY.md`.
- Ask permission before any publish action.
- Treat this skill as GHSA-only. Do not use it for stable or beta release work.

## Fetch and inspect advisory state

Fetch the current advisory and the latest published npm version:

```bash
gh api /repos/openclaw/openclaw/security-advisories/<GHSA>
npm view openclaw version --userconfig "$(mktemp)"
```

Use the fetch output to confirm the advisory state, linked private fork, and vulnerability payload shape before patching.

## Verify private fork PRs are closed

Before publishing, verify that the advisory's private fork has no open PRs:

```bash
fork=$(gh api /repos/openclaw/openclaw/security-advisories/<GHSA> | jq -r .private_fork.full_name)
gh pr list -R "$fork" --state open
```

The PR list must be empty before publish.

## Prepare advisory Markdown and JSON safely

- Write advisory Markdown via heredoc to a temp file. Do not use escaped `\n` strings.
- Build PATCH payload JSON with `jq`, not hand-escaped shell JSON.

Example pattern:

```bash
cat > /tmp/ghsa.desc.md <<'EOF'
<markdown description>
EOF

jq -n --rawfile desc /tmp/ghsa.desc.md \
'{summary,severity,description:$desc,vulnerabilities:[...]}' \
> /tmp/ghsa.patch.json
```

## Apply PATCH calls in the correct sequence

- Do not set `severity` and `cvss_vector_string` in the same PATCH call.
- Use separate calls when the advisory requires both fields.
- Publish by PATCHing the advisory and setting `"state":"published"`. There is no separate `/publish` endpoint.

Example shape:

```bash
gh api -X PATCH /repos/openclaw/openclaw/security-advisories/<GHSA> \
--input /tmp/ghsa.patch.json
```

## Publish and verify success

After publish, re-fetch the advisory and confirm:

- `state=published`
- `published_at` is set
- the description does not contain literal escaped `\\n`

Verification pattern:

```bash
gh api /repos/openclaw/openclaw/security-advisories/<GHSA>
jq -r .description < /tmp/ghsa.refetch.json | rg '\\\\n'
```

## Common GHSA footguns

- Publishing fails with HTTP 422 if required fields are missing or the private fork still has open PRs.
- A payload that looks correct in shell can still be wrong if Markdown was assembled with escaped newline strings.
- Advisory PATCH sequencing matters; separate field updates when GHSA API constraints require it.
91 changes: 91 additions & 0 deletions .agents/skills/openclaw-parallels-smoke/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
---
name: openclaw-parallels-smoke
description: End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.
---

# OpenClaw Parallels Smoke

Use this skill for Parallels guest workflows and smoke interpretation. Do not load it for normal repo work.

## Global rules

- Use the snapshot most closely matching the requested fresh baseline.
- Gateway verification in smoke runs should use `openclaw gateway status --deep --require-rpc` unless the stable version being checked does not support it yet.
- Stable `2026.3.12` pre-upgrade diagnostics may require a plain `gateway status --deep` fallback.
- Treat `precheck=latest-ref-fail` on that stable pre-upgrade lane as baseline, not automatically a regression.
- Pass `--json` for machine-readable summaries.
- Per-phase logs land under `/tmp/openclaw-parallels-*`.
- Do not run local and gateway agent turns in parallel on the same fresh workspace or session.
- For `prlctl exec`, pass the VM name before `--current-user` (`prlctl exec "$VM" --current-user ...`), not the other way around.
- If the workflow installs OpenClaw from a repo checkout instead of the site installer/npm release, finish by installing a real guest CLI shim and verifying it in a fresh guest shell. `pnpm openclaw ...` inside the repo is not enough for handoff parity.
- On macOS guests, prefer a user-global install plus a stable PATH-visible shim:
- install with `NPM_CONFIG_PREFIX="$HOME/.npm-global" npm install -g .`
- make sure `~/.local/bin/openclaw` exists or `~/.npm-global/bin` is on PATH
- verify from a brand-new guest shell with `which openclaw` and `openclaw --version`

## npm install then update

- Preferred entrypoint: `pnpm test:parallels:npm-update`
- Flow: fresh snapshot -> install npm package baseline -> smoke -> install current main tgz on the same guest -> smoke again.
- Same-guest update verification should set the default model explicitly to `openai/gpt-5.4` before the agent turn and use a fresh explicit `--session-id` so old session model state does not leak into the check.
- The aggregate npm-update wrapper must resolve the Linux VM with the same Ubuntu fallback policy as `parallels-linux-smoke.sh` before both fresh and update lanes. On Peter's current host, missing `Ubuntu 24.04.3 ARM64` should fall back to `Ubuntu 25.10`.
- On Windows same-guest update checks, restart the gateway after the npm upgrade before `gateway status` / `agent`; in-place global npm updates can otherwise leave stale hashed `dist/*` module imports alive in the running service.
- For Windows same-guest update checks, prefer the done-file/log-drain PowerShell runner pattern over one long-lived `prlctl exec ... powershell -EncodedCommand ...` transport. The guest can finish successfully while the outer `prlctl exec` still hangs.
- Linux same-guest update verification should also export `HOME=/root`, pass `OPENAI_API_KEY` via `prlctl exec ... /usr/bin/env`, and use `openclaw agent --local`; the fresh Linux baseline does not rely on persisted gateway credentials.

## CLI invocation footgun

- The Parallels smoke shell scripts should tolerate a literal bare `--` arg so `pnpm test:parallels:* -- --json` and similar forwarded invocations work without needing to call `bash scripts/e2e/...` directly.

## macOS flow

- Preferred entrypoint: `pnpm test:parallels:macos`
- Default to the snapshot closest to `macOS 26.3.1 latest`.
- On Peter's Tahoe VM, `fresh-latest-march-2026` can hang in `prlctl snapshot-switch`; if restore times out there, rerun with `--snapshot-hint 'macOS 26.3.1 latest'` before blaming auth or the harness.
- The macOS smoke should include a dashboard load phase after gateway health: resolve the tokenized URL with `openclaw dashboard --no-open`, verify the served HTML contains the Control UI title/root shell, then open Safari and require an established localhost TCP connection from Safari to the gateway port.
- `prlctl exec` is fine for deterministic repo commands, but use the guest Terminal or `prlctl enter` when installer parity or shell-sensitive behavior matters.
- Multi-word `openclaw agent --message ...` checks should go through a guest shell wrapper (`guest_current_user_sh` / `guest_current_user_cli` or `/bin/sh -lc ...`), not raw `prlctl exec ... node openclaw.mjs ...`, or the message can be split into extra argv tokens and Commander reports `too many arguments for 'agent'`.
- When ref-mode onboarding stores `OPENAI_API_KEY` as an env secret ref, the post-onboard agent verification should also export `OPENAI_API_KEY` for the guest command. The gateway can still reject with pairing-required and fall back to embedded execution, and that fallback needs the env-backed credential available in the shell.
- On the fresh Tahoe snapshot, `brew` exists but `node` may be missing from PATH in noninteractive exec. Use `/opt/homebrew/bin/node` when needed.
- Fresh host-served tgz installs should install as guest root with `HOME=/var/root`, then run onboarding as the desktop user via `prlctl exec --current-user`.
- Root-installed tgz smoke can log plugin blocks for world-writable `extensions/*`; do not treat that as an onboarding or gateway failure unless plugin loading is the task.

## Windows flow

- Preferred entrypoint: `pnpm test:parallels:windows`
- Use the snapshot closest to `pre-openclaw-native-e2e-2026-03-12`.
- Always use `prlctl exec --current-user`; plain `prlctl exec` lands in `NT AUTHORITY\\SYSTEM`.
- Prefer explicit `npm.cmd` and `openclaw.cmd`.
- Use PowerShell only as the transport with `-ExecutionPolicy Bypass`, then call the `.cmd` shims from inside it.
- Multi-word `openclaw agent --message ...` checks should call `& $openclaw ...` inside PowerShell, not `Start-Process ... -ArgumentList` against `openclaw.cmd`, or Commander can see split argv and throw `too many arguments for 'agent'`.
- Windows installer/tgz phases now retry once after guest-ready recheck; keep new Windows smoke steps idempotent so a transport-flake retry is safe.
- Windows global `npm install -g` phases can stay quiet for a minute or more even when healthy; inspect the phase log before calling it hung, and only treat it as a regression once the retry wrapper or timeout trips.
- Fresh Windows ref-mode onboard should use the same background PowerShell runner plus done-file/log-drain pattern as the npm-update helper, including startup materialization checks, host-side timeouts on short poll `prlctl exec` calls, and retry-on-poll-failure behavior for transient transport flakes.
- Fresh Windows ref-mode agent verification should set `OPENAI_API_KEY` in the PowerShell environment before invoking `openclaw.cmd agent`, for the same pairing-required fallback reason as macOS.
- The Windows upgrade smoke lane should restart the managed gateway after `upgrade.install-main` and before `upgrade.onboard-ref`, or the old process can keep the previous gateway token and fail `gateway-health` with `unauthorized: gateway token mismatch`.
- Keep onboarding and status output ASCII-clean in logs; fancy punctuation becomes mojibake in current capture paths.
- If you hit an older run with `rc=255` plus an empty `fresh.install-main.log` or `upgrade.install-main.log`, treat it as a likely `prlctl exec` transport drop after guest start-up, not immediate proof of an npm/package failure.

## Linux flow

- Preferred entrypoint: `pnpm test:parallels:linux`
- Use the snapshot closest to fresh `Ubuntu 24.04.3 ARM64`.
- If that exact VM is missing on the host, fall back to the closest Ubuntu guest with a fresh poweroff snapshot. On Peter's host today, that is `Ubuntu 25.10`.
- Use plain `prlctl exec`; `--current-user` is not the right transport on this snapshot.
- Fresh snapshots may be missing `curl`, and `apt-get update` can fail on clock skew. Bootstrap with `apt-get -o Acquire::Check-Date=false update` and install `curl ca-certificates`.
- Fresh `main` tgz smoke still needs the latest-release installer first because the snapshot has no Node or npm before bootstrap.
- This snapshot does not have a usable `systemd --user` session; managed daemon install is unsupported.
- `prlctl exec` reaps detached Linux child processes on this snapshot, so detached background gateway runs are not trustworthy smoke signals.
- Treat `gateway=skipped-no-detached-linux-gateway` plus `daemon=systemd-user-unavailable` as baseline on that Linux lane, not a regression.

## Discord roundtrip

- Discord roundtrip is optional and should be enabled with:
- `--discord-token-env`
- `--discord-guild-id`
- `--discord-channel-id`
- Keep the Discord token only in a host env var.
- Use installed `openclaw message send/read`, not `node openclaw.mjs message ...`.
- Set `channels.discord.guilds` as one JSON object, not dotted config paths with snowflakes.
- Avoid long `prlctl enter` or expect-driven Discord config scripts; prefer `prlctl exec --current-user /bin/sh -lc ...` with short commands.
- For a narrower macOS-only Discord proof run, the existing `parallels-discord-roundtrip` skill is the deep-dive companion.
75 changes: 75 additions & 0 deletions .agents/skills/openclaw-pr-maintainer/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
name: openclaw-pr-maintainer
description: Maintainer workflow for reviewing, triaging, preparing, closing, or landing OpenClaw pull requests and related issues. Use when Codex needs to validate bug-fix claims, search for related issues or PRs, apply or recommend close/reason labels, prepare GitHub comments safely, check review-thread follow-up, or perform maintainer-style PR decision making before merge or closure.
---

# OpenClaw PR Maintainer

Use this skill for maintainer-facing GitHub workflow, not for ordinary code changes.

## Apply close and triage labels correctly

- If an issue or PR matches an auto-close reason, apply the label and let `.github/workflows/auto-response.yml` handle the comment/close/lock flow.
- Do not manually close plus manually comment for these reasons.
- `r:*` labels can be used on both issues and PRs.
- Current reasons:
- `r: skill`
- `r: support`
- `r: no-ci-pr`
- `r: too-many-prs`
- `r: testflight`
- `r: third-party-extension`
- `r: moltbook`
- `r: spam`
- `invalid`
- `dirty` for PRs only

## Enforce the bug-fix evidence bar

- Never merge a bug-fix PR based only on issue text, PR text, or AI rationale.
- Before landing, require:
1. symptom evidence such as a repro, logs, or a failing test
2. a verified root cause in code with file/line
3. a fix that touches the implicated code path
4. a regression test when feasible, or explicit manual verification plus a reason no test was added
- If the claim is unsubstantiated or likely wrong, request evidence or changes instead of merging.
- If the linked issue appears outdated or incorrect, correct triage first. Do not merge a speculative fix.

## Handle GitHub text safely

- For issue comments and PR comments, use literal multiline strings or `-F - <<'EOF'` for real newlines. Never embed `\n`.
- Do not use `gh issue/pr comment -b "..."` when the body contains backticks or shell characters. Prefer a single-quoted heredoc.
- Do not wrap issue or PR refs like `#24643` in backticks when you want auto-linking.
- PR landing comments should include clickable full commit links for landed and source SHAs when present.

## Search broadly before deciding

- Prefer targeted keyword search before proposing new work or closing something as duplicate.
- Use `--repo openclaw/openclaw` with `--match title,body` first.
- Add `--match comments` when triaging follow-up discussion.
- Do not stop at the first 500 results when the task requires a full search.

Examples:

```bash
gh search prs --repo openclaw/openclaw --match title,body --limit 50 -- "auto-update"
gh search issues --repo openclaw/openclaw --match title,body --limit 50 -- "auto-update"
gh search issues --repo openclaw/openclaw --match title,body --limit 50 \
--json number,title,state,url,updatedAt -- "auto update" \
--jq '.[] | "\(.number) | \(.state) | \(.title) | \(.url)"'
```

## Follow PR review and landing hygiene

- If bot review conversations exist on your PR, address them and resolve them yourself once fixed.
- Leave a review conversation unresolved only when reviewer or maintainer judgment is still needed.
- When landing or merging any PR, follow the global `/landpr` process.
- Use `scripts/committer "<msg>" <file...>` for scoped commits instead of manual `git add` and `git commit`.
- Keep commit messages concise and action-oriented.
- Group related changes; avoid bundling unrelated refactors.
- Use `.github/pull_request_template.md` for PR submissions and `.github/ISSUE_TEMPLATE/` for issues.

## Extra safety

- If a close or reopen action would affect more than 5 PRs, ask for explicit confirmation with the exact count and target query first.
- `sync` means: if the tree is dirty, commit all changes with a sensible Conventional Commit message, then `git pull --rebase`, then `git push`. Stop if rebase conflicts cannot be resolved safely.
Loading
Loading