openclaw-node-harness 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (779) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +184 -0
  3. package/bin/discord-read.js +228 -0
  4. package/bin/fleet-deploy.js +365 -0
  5. package/bin/lane-watchdog.js +232 -0
  6. package/bin/mesh-agent.js +714 -0
  7. package/bin/mesh-bridge.js +535 -0
  8. package/bin/mesh-deploy-listener.js +322 -0
  9. package/bin/mesh-deploy.js +1048 -0
  10. package/bin/mesh-health-publisher.js +247 -0
  11. package/bin/mesh-task-daemon.js +451 -0
  12. package/bin/mesh-tool-discord.js +293 -0
  13. package/bin/mesh.js +649 -0
  14. package/boot/manifest.yaml +187 -0
  15. package/cli.js +35 -0
  16. package/config/daemon.json.template +16 -0
  17. package/config/obsidian-sync.json.template +39 -0
  18. package/config/openclaw.json.template +124 -0
  19. package/config/transcript-sources.json.template +22 -0
  20. package/identity/AGENTS.md +201 -0
  21. package/identity/CLAUDE.md +64 -0
  22. package/identity/DELEGATION.md +304 -0
  23. package/identity/HEARTBEAT.md +163 -0
  24. package/identity/MEMORY_SPEC.md +368 -0
  25. package/identity/PRINCIPLES.md +81 -0
  26. package/identity/SOUL.md +48 -0
  27. package/identity/TOOLS.md +47 -0
  28. package/install.sh +895 -0
  29. package/lib/agent-activity.js +390 -0
  30. package/lib/kanban-io.js +352 -0
  31. package/lib/mesh-registry.js +194 -0
  32. package/lib/mesh-roles.js +13 -0
  33. package/lib/mesh-tasks.js +306 -0
  34. package/lib/nats-resolve.js +108 -0
  35. package/mission-control/README.md +36 -0
  36. package/mission-control/drizzle/0000_simple_silhouette.sql +62 -0
  37. package/mission-control/drizzle/meta/0000_snapshot.json +413 -0
  38. package/mission-control/drizzle/meta/_journal.json +13 -0
  39. package/mission-control/drizzle.config.ts +13 -0
  40. package/mission-control/eslint.config.mjs +18 -0
  41. package/mission-control/next.config.ts +7 -0
  42. package/mission-control/package-lock.json +10518 -0
  43. package/mission-control/package.json +49 -0
  44. package/mission-control/postcss.config.mjs +7 -0
  45. package/mission-control/public/file.svg +1 -0
  46. package/mission-control/public/globe.svg +1 -0
  47. package/mission-control/public/next.svg +1 -0
  48. package/mission-control/public/vercel.svg +1 -0
  49. package/mission-control/public/window.svg +1 -0
  50. package/mission-control/scripts/enrich-descriptions.js +193 -0
  51. package/mission-control/scripts/gen-chronology.js +102 -0
  52. package/mission-control/scripts/import-pipeline-v2.js +523 -0
  53. package/mission-control/scripts/import-pipeline.js +295 -0
  54. package/mission-control/src/app/api/activity/live/route.ts +27 -0
  55. package/mission-control/src/app/api/activity/route.ts +47 -0
  56. package/mission-control/src/app/api/burndown/route.ts +112 -0
  57. package/mission-control/src/app/api/critical-path/route.ts +159 -0
  58. package/mission-control/src/app/api/dependencies/route.ts +176 -0
  59. package/mission-control/src/app/api/memory/categories/route.ts +93 -0
  60. package/mission-control/src/app/api/memory/consolidate/route.ts +107 -0
  61. package/mission-control/src/app/api/memory/doc/route.ts +89 -0
  62. package/mission-control/src/app/api/memory/flush/route.ts +129 -0
  63. package/mission-control/src/app/api/memory/graph/route.ts +105 -0
  64. package/mission-control/src/app/api/memory/items/route.ts +86 -0
  65. package/mission-control/src/app/api/memory/list/route.ts +48 -0
  66. package/mission-control/src/app/api/memory/retrieve/route.ts +51 -0
  67. package/mission-control/src/app/api/memory/search/route.ts +143 -0
  68. package/mission-control/src/app/api/memory/sync/route.ts +23 -0
  69. package/mission-control/src/app/api/memory/wikilinks/route.ts +75 -0
  70. package/mission-control/src/app/api/mesh/events/route.ts +67 -0
  71. package/mission-control/src/app/api/mesh/nodes/route.ts +221 -0
  72. package/mission-control/src/app/api/mesh/tokens/route.ts +133 -0
  73. package/mission-control/src/app/api/projects/route.ts +102 -0
  74. package/mission-control/src/app/api/resolve-path/route.ts +92 -0
  75. package/mission-control/src/app/api/scheduler/tick/route.ts +38 -0
  76. package/mission-control/src/app/api/scheduler/waves/route.ts +54 -0
  77. package/mission-control/src/app/api/screenshot/route.ts +127 -0
  78. package/mission-control/src/app/api/settings/gateway/route.ts +92 -0
  79. package/mission-control/src/app/api/skills/[id]/health/route.ts +57 -0
  80. package/mission-control/src/app/api/skills/list/route.ts +41 -0
  81. package/mission-control/src/app/api/souls/[id]/evolution/route.ts +253 -0
  82. package/mission-control/src/app/api/souls/[id]/prompt/route.ts +205 -0
  83. package/mission-control/src/app/api/souls/[id]/propagate/route.ts +146 -0
  84. package/mission-control/src/app/api/souls/route.ts +174 -0
  85. package/mission-control/src/app/api/tasks/[id]/handoff/route.ts +115 -0
  86. package/mission-control/src/app/api/tasks/[id]/route.ts +266 -0
  87. package/mission-control/src/app/api/tasks/[id]/tree/route.ts +94 -0
  88. package/mission-control/src/app/api/tasks/route.ts +253 -0
  89. package/mission-control/src/app/api/tts/route.ts +47 -0
  90. package/mission-control/src/app/api/workspace/files/route.ts +88 -0
  91. package/mission-control/src/app/api/workspace/read/route.ts +73 -0
  92. package/mission-control/src/app/burndown/page.tsx +309 -0
  93. package/mission-control/src/app/calendar/page.tsx +839 -0
  94. package/mission-control/src/app/favicon.ico +0 -0
  95. package/mission-control/src/app/globals.css +67 -0
  96. package/mission-control/src/app/graph/page.tsx +352 -0
  97. package/mission-control/src/app/layout.tsx +35 -0
  98. package/mission-control/src/app/live/page.tsx +232 -0
  99. package/mission-control/src/app/memory/page.tsx +154 -0
  100. package/mission-control/src/app/mesh/page.tsx +457 -0
  101. package/mission-control/src/app/obsidian/page.tsx +252 -0
  102. package/mission-control/src/app/page.tsx +70 -0
  103. package/mission-control/src/app/roadmap/page.tsx +1757 -0
  104. package/mission-control/src/app/settings/page.tsx +260 -0
  105. package/mission-control/src/app/souls/page.tsx +573 -0
  106. package/mission-control/src/components/board/activity-timeline.tsx +96 -0
  107. package/mission-control/src/components/board/daily-board.tsx +373 -0
  108. package/mission-control/src/components/board/kanban-board.tsx +364 -0
  109. package/mission-control/src/components/board/kanban-column.tsx +105 -0
  110. package/mission-control/src/components/board/live-stream.tsx +116 -0
  111. package/mission-control/src/components/board/skill-health-card.tsx +128 -0
  112. package/mission-control/src/components/board/status-banner.tsx +124 -0
  113. package/mission-control/src/components/board/task-card.tsx +454 -0
  114. package/mission-control/src/components/board/unified-task-dialog.tsx +1043 -0
  115. package/mission-control/src/components/layout/resizable-layout.tsx +68 -0
  116. package/mission-control/src/components/layout/sidebar.tsx +90 -0
  117. package/mission-control/src/components/live/audio-spectrum.tsx +106 -0
  118. package/mission-control/src/components/live/chat-bubble.tsx +52 -0
  119. package/mission-control/src/components/live/chat-input.tsx +92 -0
  120. package/mission-control/src/components/memory/doc-reader.tsx +172 -0
  121. package/mission-control/src/components/memory/memory-list.tsx +169 -0
  122. package/mission-control/src/components/memory/search-bar.tsx +67 -0
  123. package/mission-control/src/components/memory/search-results.tsx +149 -0
  124. package/mission-control/src/components/obsidian/backlinks-panel.tsx +52 -0
  125. package/mission-control/src/components/obsidian/file-tree.tsx +186 -0
  126. package/mission-control/src/components/obsidian/local-graph.tsx +107 -0
  127. package/mission-control/src/components/obsidian/obsidian-graph.tsx +192 -0
  128. package/mission-control/src/components/obsidian/obsidian-reader.tsx +246 -0
  129. package/mission-control/src/lib/activity.ts +29 -0
  130. package/mission-control/src/lib/config.ts +21 -0
  131. package/mission-control/src/lib/db/index.ts +429 -0
  132. package/mission-control/src/lib/db/schema.ts +218 -0
  133. package/mission-control/src/lib/gateway-notify.ts +113 -0
  134. package/mission-control/src/lib/hooks.ts +536 -0
  135. package/mission-control/src/lib/memory/categories.ts +125 -0
  136. package/mission-control/src/lib/memory/entities.ts +482 -0
  137. package/mission-control/src/lib/memory/extract.ts +369 -0
  138. package/mission-control/src/lib/memory/retrieval.ts +281 -0
  139. package/mission-control/src/lib/memory/wikilinks.ts +147 -0
  140. package/mission-control/src/lib/nats.ts +126 -0
  141. package/mission-control/src/lib/parsers/clawvault-doc.ts +98 -0
  142. package/mission-control/src/lib/parsers/daily-log.ts +73 -0
  143. package/mission-control/src/lib/parsers/memory-md.ts +81 -0
  144. package/mission-control/src/lib/parsers/task-markdown.ts +459 -0
  145. package/mission-control/src/lib/parsers/transcript.ts +209 -0
  146. package/mission-control/src/lib/scheduler.ts +394 -0
  147. package/mission-control/src/lib/speech/use-speech-pipeline.ts +176 -0
  148. package/mission-control/src/lib/sync/memory.ts +224 -0
  149. package/mission-control/src/lib/sync/tasks.ts +271 -0
  150. package/mission-control/src/lib/tts/edge.ts +31 -0
  151. package/mission-control/src/lib/tts/google.ts +78 -0
  152. package/mission-control/src/lib/tts/index.ts +39 -0
  153. package/mission-control/src/lib/tts/types.ts +18 -0
  154. package/mission-control/tsconfig.json +42 -0
  155. package/obsidian-vault/.obsidian/app.json +10 -0
  156. package/obsidian-vault/.obsidian/community-plugins.json +8 -0
  157. package/obsidian-vault/.obsidian/graph.json +40 -0
  158. package/obsidian-vault/.obsidian/plugins/obsidian-local-rest-api/main.js +58769 -0
  159. package/obsidian-vault/.obsidian/plugins/obsidian-local-rest-api/manifest.json +10 -0
  160. package/obsidian-vault/.obsidian/plugins/obsidian-local-rest-api/styles.css +47 -0
  161. package/obsidian-vault/00-meta/.gitkeep +0 -0
  162. package/obsidian-vault/01-architecture/.gitkeep +0 -0
  163. package/obsidian-vault/02-smart-contracts/.gitkeep +0 -0
  164. package/obsidian-vault/03-backend/.gitkeep +0 -0
  165. package/obsidian-vault/04-mobile/.gitkeep +0 -0
  166. package/obsidian-vault/05-ar-mapping/.gitkeep +0 -0
  167. package/obsidian-vault/06-3d-assets/.gitkeep +0 -0
  168. package/obsidian-vault/07-sound-music/.gitkeep +0 -0
  169. package/obsidian-vault/08-lore/.gitkeep +0 -0
  170. package/obsidian-vault/09-quests-playthrough/.gitkeep +0 -0
  171. package/obsidian-vault/10-economy/.gitkeep +0 -0
  172. package/obsidian-vault/11-nft-assets/.gitkeep +0 -0
  173. package/obsidian-vault/12-nft-mechanics/.gitkeep +0 -0
  174. package/obsidian-vault/13-dao-guild-social/.gitkeep +0 -0
  175. package/obsidian-vault/14-game-progression/.gitkeep +0 -0
  176. package/obsidian-vault/15-analytics/.gitkeep +0 -0
  177. package/obsidian-vault/16-security/.gitkeep +0 -0
  178. package/obsidian-vault/17-devops/.gitkeep +0 -0
  179. package/obsidian-vault/18-marketplace/.gitkeep +0 -0
  180. package/obsidian-vault/19-decisions/.gitkeep +0 -0
  181. package/obsidian-vault/20-business-strategy/.gitkeep +0 -0
  182. package/obsidian-vault/21-legal-regulatory/.gitkeep +0 -0
  183. package/obsidian-vault/nodes/.gitkeep +0 -0
  184. package/openclaw.env.example +17 -0
  185. package/package.json +45 -0
  186. package/services/launchd/ai.openclaw.gateway.plist +59 -0
  187. package/services/launchd/ai.openclaw.lane-watchdog.plist +32 -0
  188. package/services/launchd/ai.openclaw.log-rotate.plist +28 -0
  189. package/services/launchd/ai.openclaw.memory-daemon.plist +36 -0
  190. package/services/launchd/ai.openclaw.mesh-agent.plist +38 -0
  191. package/services/launchd/ai.openclaw.mesh-bridge.plist +36 -0
  192. package/services/launchd/ai.openclaw.mesh-deploy-listener.plist +33 -0
  193. package/services/launchd/ai.openclaw.mesh-health-publisher.plist +29 -0
  194. package/services/launchd/ai.openclaw.mesh-task-daemon.plist +36 -0
  195. package/services/launchd/ai.openclaw.mesh-tool-discord.plist +36 -0
  196. package/services/launchd/ai.openclaw.mission-control.plist +41 -0
  197. package/services/service-manifest.json +13 -0
  198. package/services/systemd/openclaw-gateway.service +21 -0
  199. package/services/systemd/openclaw-lane-watchdog.service +21 -0
  200. package/services/systemd/openclaw-log-rotate.service +13 -0
  201. package/services/systemd/openclaw-log-rotate.timer +9 -0
  202. package/services/systemd/openclaw-memory-daemon.service +21 -0
  203. package/services/systemd/openclaw-mesh-agent.service +19 -0
  204. package/services/systemd/openclaw-mesh-bridge.service +21 -0
  205. package/services/systemd/openclaw-mesh-deploy-listener.service +23 -0
  206. package/services/systemd/openclaw-mesh-health-publisher.service +21 -0
  207. package/services/systemd/openclaw-mesh-task-daemon.service +21 -0
  208. package/services/systemd/openclaw-mesh-tool-discord.service +21 -0
  209. package/services/systemd/openclaw-mission-control.service +22 -0
  210. package/skills/1password/.clawhub/origin.json +7 -0
  211. package/skills/1password/SKILL.md +63 -0
  212. package/skills/1password/references/cli-examples.md +29 -0
  213. package/skills/1password/references/get-started.md +17 -0
  214. package/skills/acquisition-channel-advisor/SKILL.md +643 -0
  215. package/skills/acquisition-channel-advisor/examples/conversation-flow.md +531 -0
  216. package/skills/agent-browser/.clawhub/origin.json +7 -0
  217. package/skills/agent-browser/CONTRIBUTING.md +63 -0
  218. package/skills/agent-browser/SKILL.md +338 -0
  219. package/skills/agentic-compass/.clawhub/origin.json +7 -0
  220. package/skills/agentic-compass/README.md +96 -0
  221. package/skills/agentic-compass/SKILL.md +112 -0
  222. package/skills/agentic-compass/references/README.md +5 -0
  223. package/skills/agentic-compass/scripts/agentic-compass.py +196 -0
  224. package/skills/arcane-dev-ops/SKILL.md +61 -0
  225. package/skills/arcane-dev-ops/references/checklist.md +22 -0
  226. package/skills/arcane-dev-ops/references/validation-cases.md +11 -0
  227. package/skills/arcane-dev-ops/scripts/prepush_check.sh +41 -0
  228. package/skills/auto-updater/.clawhub/origin.json +7 -0
  229. package/skills/auto-updater/SKILL.md +158 -0
  230. package/skills/auto-updater/references/agent-guide.md +152 -0
  231. package/skills/auto-updater/references/summary-examples.md +109 -0
  232. package/skills/business-health-diagnostic/SKILL.md +782 -0
  233. package/skills/byterover/.clawhub/origin.json +7 -0
  234. package/skills/byterover/SKILL.md +105 -0
  235. package/skills/byterover/TROUBLESHOOTING.md +50 -0
  236. package/skills/byterover/WORKFLOWS.md +229 -0
  237. package/skills/capability-evolver/.clawhub/origin.json +7 -0
  238. package/skills/capability-evolver/CONTRIBUTING.md +11 -0
  239. package/skills/capability-evolver/README.md +157 -0
  240. package/skills/capability-evolver/README.zh-CN.md +112 -0
  241. package/skills/capability-evolver/SKILL.md +93 -0
  242. package/skills/capability-evolver/assets/gep/capsules.json +5 -0
  243. package/skills/capability-evolver/assets/gep/genes.json +104 -0
  244. package/skills/capability-evolver/index.js +59 -0
  245. package/skills/capability-evolver/package.json +22 -0
  246. package/skills/capability-evolver/scripts/analyze_by_skill.js +121 -0
  247. package/skills/capability-evolver/scripts/build_public.js +350 -0
  248. package/skills/capability-evolver/scripts/export_history.js +98 -0
  249. package/skills/capability-evolver/scripts/extract_log.js +85 -0
  250. package/skills/capability-evolver/scripts/generate_history.js +75 -0
  251. package/skills/capability-evolver/scripts/human_report.js +147 -0
  252. package/skills/capability-evolver/scripts/publish_public.js +516 -0
  253. package/skills/capability-evolver/scripts/suggest_version.js +89 -0
  254. package/skills/capability-evolver/src/evolve.js +594 -0
  255. package/skills/capability-evolver/src/gep/assetStore.js +204 -0
  256. package/skills/capability-evolver/src/gep/candidates.js +134 -0
  257. package/skills/capability-evolver/src/gep/paths.js +23 -0
  258. package/skills/capability-evolver/src/gep/prompt.js +254 -0
  259. package/skills/capability-evolver/src/gep/selector.js +89 -0
  260. package/skills/capability-evolver/src/gep/signals.js +27 -0
  261. package/skills/cc-godmode/.clawhub/origin.json +7 -0
  262. package/skills/cc-godmode/CHANGELOG.md +66 -0
  263. package/skills/cc-godmode/README.md +293 -0
  264. package/skills/cc-godmode/SKILL.md +242 -0
  265. package/skills/cc-godmode/docs/AGENTS.md +332 -0
  266. package/skills/cc-godmode/docs/MIGRATION.md +206 -0
  267. package/skills/cc-godmode/docs/TROUBLESHOOTING.md +357 -0
  268. package/skills/cc-godmode/docs/WORKFLOWS.md +329 -0
  269. package/skills/cc-godmode/references/agents.md +433 -0
  270. package/skills/cc-godmode/scripts/build-skill.js +232 -0
  271. package/skills/clawdbot-filesystem/.clawhub/origin.json +7 -0
  272. package/skills/clawdbot-filesystem/LICENSE.md +21 -0
  273. package/skills/clawdbot-filesystem/README.md +322 -0
  274. package/skills/clawdbot-filesystem/SKILL.md +219 -0
  275. package/skills/clawdbot-filesystem/config.json +41 -0
  276. package/skills/clawdbot-filesystem/package.json +69 -0
  277. package/skills/clawdbot-security-check/.clawhub/origin.json +7 -0
  278. package/skills/clawdbot-security-check/README.md +168 -0
  279. package/skills/clawdbot-security-check/SKILL.md +145 -0
  280. package/skills/clawdbot-security-check/references/audit-checks.md +521 -0
  281. package/skills/clawdbot-security-check/skill.json +42 -0
  282. package/skills/clawddocs/.clawhub/origin.json +7 -0
  283. package/skills/clawddocs/SKILL.md +176 -0
  284. package/skills/clawddocs/package.json +9 -0
  285. package/skills/clawddocs/scripts/build-index.sh +17 -0
  286. package/skills/clawddocs/scripts/cache.sh +13 -0
  287. package/skills/clawddocs/scripts/fetch-doc.sh +7 -0
  288. package/skills/clawddocs/scripts/recent.sh +5 -0
  289. package/skills/clawddocs/scripts/search.sh +8 -0
  290. package/skills/clawddocs/scripts/sitemap.sh +23 -0
  291. package/skills/clawddocs/scripts/track-changes.sh +16 -0
  292. package/skills/clawddocs/snippets/common-configs.md +69 -0
  293. package/skills/clawguard/.clawhub/origin.json +7 -0
  294. package/skills/clawguard/SKILL.md +137 -0
  295. package/skills/company-research/SKILL.md +393 -0
  296. package/skills/company-research/examples/sample.md +164 -0
  297. package/skills/company-research/template.md +60 -0
  298. package/skills/crypto-price/.clawhub/origin.json +7 -0
  299. package/skills/crypto-price/ARCHITECTURE.md +437 -0
  300. package/skills/crypto-price/README.md +194 -0
  301. package/skills/crypto-price/SKILL.md +61 -0
  302. package/skills/crypto-price/requirements.txt +1 -0
  303. package/skills/crypto-price/scripts/get_price_chart.py +988 -0
  304. package/skills/customer-journey-map/SKILL.md +343 -0
  305. package/skills/customer-journey-map/examples/sample.md +33 -0
  306. package/skills/customer-journey-map/template.md +28 -0
  307. package/skills/customer-journey-mapping-workshop/SKILL.md +522 -0
  308. package/skills/deep-research/.clawhub/origin.json +7 -0
  309. package/skills/deep-research/SKILL.md +93 -0
  310. package/skills/deep-research/rules/logic.md +32 -0
  311. package/skills/discord-telegram-triage/SKILL.md +59 -0
  312. package/skills/discord-telegram-triage/references/discord-runbook.md +28 -0
  313. package/skills/discord-telegram-triage/references/validation-cases.md +11 -0
  314. package/skills/discord-telegram-triage/scripts/triage_snapshot.sh +23 -0
  315. package/skills/discovery-interview-prep/SKILL.md +408 -0
  316. package/skills/discovery-process/SKILL.md +503 -0
  317. package/skills/discovery-process/examples/sample.md +60 -0
  318. package/skills/discovery-process/template.md +39 -0
  319. package/skills/dist/arcane-dev-ops.skill +0 -0
  320. package/skills/dist/discord-telegram-triage.skill +0 -0
  321. package/skills/dist/founder-brief-summarizer.skill +0 -0
  322. package/skills/epic-breakdown-advisor/SKILL.md +664 -0
  323. package/skills/epic-hypothesis/SKILL.md +285 -0
  324. package/skills/epic-hypothesis/examples/sample.md +104 -0
  325. package/skills/epic-hypothesis/template.md +30 -0
  326. package/skills/excel/.clawhub/origin.json +7 -0
  327. package/skills/excel/SKILL.md +332 -0
  328. package/skills/excel/scripts/excel.py +1120 -0
  329. package/skills/fast-browser-use/.clawhub/origin.json +7 -0
  330. package/skills/fast-browser-use/CODEBUDDY.md +142 -0
  331. package/skills/fast-browser-use/Cargo.toml +77 -0
  332. package/skills/fast-browser-use/README.md +62 -0
  333. package/skills/fast-browser-use/SKILL.md +217 -0
  334. package/skills/fast-browser-use/package-lock.json +28 -0
  335. package/skills/fast-browser-use/package.json +8 -0
  336. package/skills/fast-browser-use/rustfmt.toml +10 -0
  337. package/skills/fast-browser-use/src/bin/cli.rs +373 -0
  338. package/skills/fast-browser-use/src/bin/mcp_server.rs +203 -0
  339. package/skills/fast-browser-use/src/browser/config.rs +136 -0
  340. package/skills/fast-browser-use/src/browser/debug.rs +16 -0
  341. package/skills/fast-browser-use/src/browser/mod.rs +61 -0
  342. package/skills/fast-browser-use/src/browser/session.rs +478 -0
  343. package/skills/fast-browser-use/src/dom/element.rs +442 -0
  344. package/skills/fast-browser-use/src/dom/extract_dom.js +849 -0
  345. package/skills/fast-browser-use/src/dom/mod.rs +14 -0
  346. package/skills/fast-browser-use/src/dom/tree.rs +296 -0
  347. package/skills/fast-browser-use/src/dom/yaml.rs +149 -0
  348. package/skills/fast-browser-use/src/error.rs +115 -0
  349. package/skills/fast-browser-use/src/lib.rs +17 -0
  350. package/skills/fast-browser-use/src/mcp/handler.rs +63 -0
  351. package/skills/fast-browser-use/src/mcp/mod.rs +81 -0
  352. package/skills/fast-browser-use/src/tools/Readability.min.js +1480 -0
  353. package/skills/fast-browser-use/src/tools/annotate.rs +165 -0
  354. package/skills/fast-browser-use/src/tools/click.rs +84 -0
  355. package/skills/fast-browser-use/src/tools/close.rs +35 -0
  356. package/skills/fast-browser-use/src/tools/close_tab.rs +45 -0
  357. package/skills/fast-browser-use/src/tools/convert_to_markdown.js +117 -0
  358. package/skills/fast-browser-use/src/tools/cookies.rs +58 -0
  359. package/skills/fast-browser-use/src/tools/debug.rs +44 -0
  360. package/skills/fast-browser-use/src/tools/evaluate.rs +40 -0
  361. package/skills/fast-browser-use/src/tools/extract.rs +66 -0
  362. package/skills/fast-browser-use/src/tools/go_back.rs +35 -0
  363. package/skills/fast-browser-use/src/tools/go_forward.rs +35 -0
  364. package/skills/fast-browser-use/src/tools/hover.js +33 -0
  365. package/skills/fast-browser-use/src/tools/hover.rs +97 -0
  366. package/skills/fast-browser-use/src/tools/html_to_markdown.rs +99 -0
  367. package/skills/fast-browser-use/src/tools/input.rs +93 -0
  368. package/skills/fast-browser-use/src/tools/local_storage.rs +159 -0
  369. package/skills/fast-browser-use/src/tools/markdown.rs +181 -0
  370. package/skills/fast-browser-use/src/tools/mod.rs +326 -0
  371. package/skills/fast-browser-use/src/tools/navigate.rs +55 -0
  372. package/skills/fast-browser-use/src/tools/new_tab.rs +60 -0
  373. package/skills/fast-browser-use/src/tools/press_key.rs +78 -0
  374. package/skills/fast-browser-use/src/tools/read_links.rs +59 -0
  375. package/skills/fast-browser-use/src/tools/readability_script.rs +8 -0
  376. package/skills/fast-browser-use/src/tools/screenshot.rs +47 -0
  377. package/skills/fast-browser-use/src/tools/scroll.js +22 -0
  378. package/skills/fast-browser-use/src/tools/scroll.rs +95 -0
  379. package/skills/fast-browser-use/src/tools/select.js +23 -0
  380. package/skills/fast-browser-use/src/tools/select.rs +129 -0
  381. package/skills/fast-browser-use/src/tools/sitemap.rs +426 -0
  382. package/skills/fast-browser-use/src/tools/snapshot.rs +324 -0
  383. package/skills/fast-browser-use/src/tools/switch_tab.rs +69 -0
  384. package/skills/fast-browser-use/src/tools/tab_list.rs +76 -0
  385. package/skills/fast-browser-use/src/tools/utils.rs +92 -0
  386. package/skills/fast-browser-use/src/tools/wait.rs +53 -0
  387. package/skills/fast-browser-use/test_auth.json +3 -0
  388. package/skills/fast-browser-use/test_state.json +6 -0
  389. package/skills/fast-browser-use/tests/browser_tools_integration.rs +233 -0
  390. package/skills/fast-browser-use/tests/cli_recipes_integration.rs +112 -0
  391. package/skills/fast-browser-use/tests/cookies_integration.rs +56 -0
  392. package/skills/fast-browser-use/tests/debug_integration.rs +83 -0
  393. package/skills/fast-browser-use/tests/dom_integration.rs +170 -0
  394. package/skills/fast-browser-use/tests/local_storage_integration.rs +75 -0
  395. package/skills/fast-browser-use/tests/markdown_integration.rs +448 -0
  396. package/skills/fast-browser-use/tests/navigation_integration.rs +241 -0
  397. package/skills/fast-browser-use/tests/sitemap_integration.rs +326 -0
  398. package/skills/fast-browser-use/tests/tab_management_integration.rs +300 -0
  399. package/skills/feature-investment-advisor/SKILL.md +639 -0
  400. package/skills/feature-investment-advisor/examples/conversation-flow.md +538 -0
  401. package/skills/finance-based-pricing-advisor/SKILL.md +763 -0
  402. package/skills/finance-metrics-quickref/SKILL.md +309 -0
  403. package/skills/find-skills/.clawhub/origin.json +7 -0
  404. package/skills/find-skills/SKILL.md +143 -0
  405. package/skills/flavor-text-writer/SKILL.md +27 -0
  406. package/skills/founder-brief-summarizer/SKILL.md +52 -0
  407. package/skills/founder-brief-summarizer/references/response-templates.md +15 -0
  408. package/skills/founder-brief-summarizer/references/validation-cases.md +11 -0
  409. package/skills/founder-brief-summarizer/scripts/brief_template.sh +28 -0
  410. package/skills/frontend-design/.clawhub/origin.json +7 -0
  411. package/skills/frontend-design/LICENSE.txt +190 -0
  412. package/skills/frontend-design/SKILL.md +53 -0
  413. package/skills/gemini/.clawhub/origin.json +7 -0
  414. package/skills/gemini/SKILL.md +33 -0
  415. package/skills/gemini-deep-research/.clawhub/origin.json +7 -0
  416. package/skills/gemini-deep-research/SKILL.md +78 -0
  417. package/skills/gemini-deep-research/scripts/deep_research.py +176 -0
  418. package/skills/git-essentials/.clawhub/origin.json +7 -0
  419. package/skills/git-essentials/SKILL.md +239 -0
  420. package/skills/git-essentials/references/advanced.md +211 -0
  421. package/skills/github/.clawhub/origin.json +7 -0
  422. package/skills/github/SKILL.md +57 -0
  423. package/skills/google-drive/.clawhub/origin.json +7 -0
  424. package/skills/google-drive/LICENSE.txt +21 -0
  425. package/skills/google-drive/SKILL.md +320 -0
  426. package/skills/growth-loop/SKILL.md +270 -0
  427. package/skills/growth-loop/_meta.json +9 -0
  428. package/skills/growth-loop/references/diagnosis-framework.md +84 -0
  429. package/skills/growth-loop/references/platform-benchmarks.md +79 -0
  430. package/skills/growth-loop/scripts/init-campaign.sh +274 -0
  431. package/skills/humanize-ai-text/.clawhub/origin.json +7 -0
  432. package/skills/humanize-ai-text/SKILL.md +192 -0
  433. package/skills/humanize-ai-text/scripts/compare.py +58 -0
  434. package/skills/humanize-ai-text/scripts/detect.py +160 -0
  435. package/skills/humanize-ai-text/scripts/patterns.json +191 -0
  436. package/skills/humanize-ai-text/scripts/transform.py +127 -0
  437. package/skills/humanizer/.clawhub/origin.json +7 -0
  438. package/skills/humanizer/README.md +82 -0
  439. package/skills/humanizer/SKILL.md +443 -0
  440. package/skills/jobs-to-be-done/SKILL.md +378 -0
  441. package/skills/jobs-to-be-done/examples/sample.md +80 -0
  442. package/skills/jobs-to-be-done/template.md +65 -0
  443. package/skills/lean-ux-canvas/SKILL.md +561 -0
  444. package/skills/lean-ux-canvas/examples/sample.md +88 -0
  445. package/skills/lean-ux-canvas/template.md +32 -0
  446. package/skills/markdown-formatter/.clawhub/origin.json +7 -0
  447. package/skills/markdown-formatter/README.md +137 -0
  448. package/skills/markdown-formatter/SKILL.md +369 -0
  449. package/skills/markdown-formatter/config.json +20 -0
  450. package/skills/markdown-formatter/index.js +439 -0
  451. package/skills/markdown-formatter/package.json +23 -0
  452. package/skills/markdown-formatter/test.js +23 -0
  453. package/skills/marketing-mode/.clawhub/origin.json +7 -0
  454. package/skills/marketing-mode/README.md +49 -0
  455. package/skills/marketing-mode/SKILL.md +703 -0
  456. package/skills/marketing-mode/mode-prompt.md +39 -0
  457. package/skills/marketing-mode/skill.json +51 -0
  458. package/skills/memory-hygiene/.clawhub/origin.json +7 -0
  459. package/skills/memory-hygiene/SKILL.md +91 -0
  460. package/skills/memory-setup/.clawhub/origin.json +7 -0
  461. package/skills/memory-setup/SKILL.md +180 -0
  462. package/skills/memorylayer/.clawhub/origin.json +7 -0
  463. package/skills/memorylayer/README.md +197 -0
  464. package/skills/memorylayer/SKILL.md +227 -0
  465. package/skills/memorylayer/examples/agent-integration.js +145 -0
  466. package/skills/memorylayer/examples/basic-usage.js +87 -0
  467. package/skills/memorylayer/examples/token-savings-demo.js +183 -0
  468. package/skills/memorylayer/index.js +115 -0
  469. package/skills/memorylayer/package-lock.json +295 -0
  470. package/skills/memorylayer/package.json +27 -0
  471. package/skills/memorylayer/python/memorylayer_skill.py +230 -0
  472. package/skills/memorylayer/python/requirements.txt +7 -0
  473. package/skills/mesh/SKILL.md +184 -0
  474. package/skills/model-usage/.clawhub/origin.json +7 -0
  475. package/skills/model-usage/SKILL.md +54 -0
  476. package/skills/model-usage/references/codexbar-cli.md +28 -0
  477. package/skills/model-usage/scripts/model_usage.py +310 -0
  478. package/skills/moltbook-interact/.clawhub/origin.json +7 -0
  479. package/skills/moltbook-interact/INSTALL.md +139 -0
  480. package/skills/moltbook-interact/README.md +198 -0
  481. package/skills/moltbook-interact/SKILL.md +72 -0
  482. package/skills/moltbook-interact/references/api.md +106 -0
  483. package/skills/moltbook-interact/scripts/moltbook.sh +142 -0
  484. package/skills/moltbook-registry/.clawhub/origin.json +7 -0
  485. package/skills/moltbook-registry/README.md +26 -0
  486. package/skills/moltbook-registry/SKILL.md +82 -0
  487. package/skills/moltbook-registry/index.js +180 -0
  488. package/skills/moltbook-registry/package.json +11 -0
  489. package/skills/mythril-scanner/SKILL.md +27 -0
  490. package/skills/n8n/.clawhub/origin.json +7 -0
  491. package/skills/n8n/SKILL.md +141 -0
  492. package/skills/n8n/references/api.md +156 -0
  493. package/skills/n8n/scripts/n8n_api.py +158 -0
  494. package/skills/n8n-workflow-automation/.clawhub/origin.json +7 -0
  495. package/skills/n8n-workflow-automation/SKILL.md +103 -0
  496. package/skills/n8n-workflow-automation/assets/runbook-template.md +32 -0
  497. package/skills/narrative-designer/SKILL.md +27 -0
  498. package/skills/ontology/.clawhub/origin.json +7 -0
  499. package/skills/ontology/SKILL.md +236 -0
  500. package/skills/ontology/references/queries.md +211 -0
  501. package/skills/ontology/references/schema.md +322 -0
  502. package/skills/ontology/scripts/ontology.py +374 -0
  503. package/skills/openai-image-gen/.clawhub/origin.json +7 -0
  504. package/skills/openai-image-gen/SKILL.md +45 -0
  505. package/skills/openai-image-gen/scripts/gen.py +227 -0
  506. package/skills/openclaw-agent-optimize/.clawhub/origin.json +7 -0
  507. package/skills/openclaw-agent-optimize/SKILL.md +33 -0
  508. package/skills/openclaw-agent-optimize/references/agent-orchestration.md +20 -0
  509. package/skills/openclaw-agent-optimize/references/context-management.md +15 -0
  510. package/skills/openclaw-agent-optimize/references/continuous-learning.md +14 -0
  511. package/skills/openclaw-agent-optimize/references/cron-optimization.md +16 -0
  512. package/skills/openclaw-agent-optimize/references/memory-patterns.md +14 -0
  513. package/skills/openclaw-agent-optimize/references/model-selection.md +18 -0
  514. package/skills/openclaw-skill-scanner/.clawhub/origin.json +7 -0
  515. package/skills/openclaw-skill-scanner/SKILL.md +88 -0
  516. package/skills/openclaw-skill-scanner/install-hook.sh +294 -0
  517. package/skills/openclaw-skill-scanner/report-template.md +53 -0
  518. package/skills/openclaw-skill-scanner/scanner.py +929 -0
  519. package/skills/openclaw-skill-scanner/whitelist.json +18 -0
  520. package/skills/opportunity-solution-tree/SKILL.md +428 -0
  521. package/skills/opportunity-solution-tree/examples/sample.md +104 -0
  522. package/skills/opportunity-solution-tree/template.md +33 -0
  523. package/skills/pdf/.clawhub/origin.json +7 -0
  524. package/skills/pdf/SKILL.md +304 -0
  525. package/skills/pestel-analysis/SKILL.md +384 -0
  526. package/skills/pestel-analysis/examples/sample.md +143 -0
  527. package/skills/pestel-analysis/template.md +53 -0
  528. package/skills/pol-probe/SKILL.md +217 -0
  529. package/skills/pol-probe/examples/sample.md +136 -0
  530. package/skills/pol-probe/template.md +59 -0
  531. package/skills/pol-probe-advisor/SKILL.md +492 -0
  532. package/skills/positioning-statement/SKILL.md +229 -0
  533. package/skills/positioning-statement/examples/sample.md +51 -0
  534. package/skills/positioning-statement/template.md +25 -0
  535. package/skills/positioning-workshop/SKILL.md +424 -0
  536. package/skills/prd-development/SKILL.md +654 -0
  537. package/skills/prd-development/examples/sample.md +43 -0
  538. package/skills/prd-development/template.md +55 -0
  539. package/skills/press-release/SKILL.md +277 -0
  540. package/skills/press-release/examples/sample.md +73 -0
  541. package/skills/press-release/template.md +39 -0
  542. package/skills/prioritization-advisor/SKILL.md +451 -0
  543. package/skills/proactive-messages/.clawhub/origin.json +7 -0
  544. package/skills/proactive-messages/SKILL.md +91 -0
  545. package/skills/problem-framing-canvas/SKILL.md +466 -0
  546. package/skills/problem-framing-canvas/examples/sample.md +58 -0
  547. package/skills/problem-framing-canvas/template.md +22 -0
  548. package/skills/problem-statement/SKILL.md +255 -0
  549. package/skills/problem-statement/examples/sample.md +82 -0
  550. package/skills/problem-statement/template.md +37 -0
  551. package/skills/product-strategy-session/SKILL.md +434 -0
  552. package/skills/product-strategy-session/examples/sample.md +67 -0
  553. package/skills/product-strategy-session/template.md +38 -0
  554. package/skills/prompt-guard/.clawhub/origin.json +7 -0
  555. package/skills/prompt-guard/ARCHITECTURE.md +364 -0
  556. package/skills/prompt-guard/CHANGELOG.md +200 -0
  557. package/skills/prompt-guard/README.md +215 -0
  558. package/skills/prompt-guard/SECURITY.md +66 -0
  559. package/skills/prompt-guard/SKILL.md +174 -0
  560. package/skills/prompt-guard/blog/how-i-secured-my-ai-agent.md +185 -0
  561. package/skills/prompt-guard/config.example.yaml +56 -0
  562. package/skills/prompt-guard/references/detection-patterns.md +298 -0
  563. package/skills/prompt-guard/requirements.txt +1 -0
  564. package/skills/prompt-guard/scripts/analyze_log.py +224 -0
  565. package/skills/prompt-guard/scripts/audit.py +344 -0
  566. package/skills/prompt-guard/scripts/detect.py +1587 -0
  567. package/skills/prompt-guard/scripts/hivefence.py +345 -0
  568. package/skills/proto-persona/SKILL.md +336 -0
  569. package/skills/proto-persona/examples/sample.md +97 -0
  570. package/skills/proto-persona/template.md +45 -0
  571. package/skills/recommendation-canvas/SKILL.md +382 -0
  572. package/skills/recommendation-canvas/examples/sample.md +94 -0
  573. package/skills/recommendation-canvas/template.md +86 -0
  574. package/skills/refactor-suggest/.clawhub/origin.json +7 -0
  575. package/skills/refactor-suggest/SKILL.md +94 -0
  576. package/skills/roadmap-planning/SKILL.md +506 -0
  577. package/skills/roadmap-planning/examples/sample.md +62 -0
  578. package/skills/roadmap-planning/template.md +30 -0
  579. package/skills/saas-economics-efficiency-metrics/SKILL.md +694 -0
  580. package/skills/saas-economics-efficiency-metrics/examples/cash-trap.md +365 -0
  581. package/skills/saas-economics-efficiency-metrics/examples/healthy-unit-economics.md +279 -0
  582. package/skills/saas-economics-efficiency-metrics/template.md +263 -0
  583. package/skills/saas-revenue-growth-metrics/SKILL.md +629 -0
  584. package/skills/saas-revenue-growth-metrics/examples/healthy-saas.md +131 -0
  585. package/skills/saas-revenue-growth-metrics/examples/warning-signs.md +229 -0
  586. package/skills/saas-revenue-growth-metrics/template.md +192 -0
  587. package/skills/save-money/.clawhub/origin.json +7 -0
  588. package/skills/save-money/SKILL.md +173 -0
  589. package/skills/scripts/golden_skills_v3.sh +32 -0
  590. package/skills/search/.clawhub/origin.json +7 -0
  591. package/skills/search/SKILL.md +18 -0
  592. package/skills/search/skill.json +1 -0
  593. package/skills/second-brain/.clawhub/origin.json +7 -0
  594. package/skills/second-brain/SKILL.md +278 -0
  595. package/skills/second-brain/scripts/ensue-api.sh +37 -0
  596. package/skills/self-improving-agent/.clawhub/origin.json +7 -0
  597. package/skills/self-improving-agent/.learnings/ERRORS.md +5 -0
  598. package/skills/self-improving-agent/.learnings/FEATURE_REQUESTS.md +5 -0
  599. package/skills/self-improving-agent/.learnings/LEARNINGS.md +5 -0
  600. package/skills/self-improving-agent/SKILL.md +130 -0
  601. package/skills/self-improving-agent/assets/LEARNINGS.md +45 -0
  602. package/skills/self-improving-agent/assets/SKILL-TEMPLATE.md +177 -0
  603. package/skills/self-improving-agent/hooks/openclaw/HOOK.md +23 -0
  604. package/skills/self-improving-agent/hooks/openclaw/handler.js +56 -0
  605. package/skills/self-improving-agent/hooks/openclaw/handler.ts +62 -0
  606. package/skills/self-improving-agent/references/examples.md +374 -0
  607. package/skills/self-improving-agent/references/hooks-setup.md +223 -0
  608. package/skills/self-improving-agent/references/openclaw-integration.md +248 -0
  609. package/skills/self-improving-agent/references/templates.md +480 -0
  610. package/skills/self-improving-agent/scripts/activator.sh +20 -0
  611. package/skills/self-improving-agent/scripts/error-detector.sh +55 -0
  612. package/skills/self-improving-agent/scripts/extract-skill.sh +203 -0
  613. package/skills/self-improving-agent-1-0-2/.clawhub/origin.json +7 -0
  614. package/skills/self-improving-agent-1-0-2/SKILL.md +562 -0
  615. package/skills/self-improving-agent-1-0-2/assets/LEARNINGS.md +45 -0
  616. package/skills/self-improving-agent-1-0-2/assets/SKILL-TEMPLATE.md +182 -0
  617. package/skills/self-improving-agent-1-0-2/references/clawdbot-integration.md +311 -0
  618. package/skills/self-improving-agent-1-0-2/references/examples.md +374 -0
  619. package/skills/self-improving-agent-1-0-2/references/hooks-setup.md +223 -0
  620. package/skills/self-improving-agent-1-0-2/scripts/activator.sh +20 -0
  621. package/skills/self-improving-agent-1-0-2/scripts/error-detector.sh +55 -0
  622. package/skills/self-improving-agent-1-0-2/scripts/extract-skill.sh +203 -0
  623. package/skills/self-love-confidence/.clawhub/origin.json +7 -0
  624. package/skills/self-love-confidence/SKILL.md +79 -0
  625. package/skills/self-reflection/.clawhub/origin.json +7 -0
  626. package/skills/self-reflection/README.md +292 -0
  627. package/skills/self-reflection/SKILL.md +110 -0
  628. package/skills/self-reflection/self-reflection.example.json +6 -0
  629. package/skills/slither-analyzer/SKILL.md +27 -0
  630. package/skills/solidity-audit/SKILL.md +27 -0
  631. package/skills/soulcraft/.clawhub/origin.json +7 -0
  632. package/skills/soulcraft/README.md +123 -0
  633. package/skills/soulcraft/SKILL.md +340 -0
  634. package/skills/soulcraft/references/question-bank.md +154 -0
  635. package/skills/soulcraft/references/soul-examples.md +207 -0
  636. package/skills/soulcraft/research/RESEARCH_REPORT.md +317 -0
  637. package/skills/spotify-player/.clawhub/origin.json +7 -0
  638. package/skills/spotify-player/SKILL.md +44 -0
  639. package/skills/storyboard/SKILL.md +259 -0
  640. package/skills/storyboard/examples/sample.md +71 -0
  641. package/skills/storyboard/template.md +41 -0
  642. package/skills/summarize/.clawhub/origin.json +7 -0
  643. package/skills/summarize/SKILL.md +59 -0
  644. package/skills/superdesign/.clawhub/origin.json +7 -0
  645. package/skills/superdesign/SKILL.md +224 -0
  646. package/skills/tam-sam-som-calculator/SKILL.md +399 -0
  647. package/skills/tam-sam-som-calculator/examples/sample.md +142 -0
  648. package/skills/tam-sam-som-calculator/scripts/market-sizing.py +95 -0
  649. package/skills/tam-sam-som-calculator/template.md +35 -0
  650. package/skills/tavily-search/.clawhub/origin.json +7 -0
  651. package/skills/tavily-search/SKILL.md +49 -0
  652. package/skills/tavily-search/scripts/extract.mjs +59 -0
  653. package/skills/tavily-search/scripts/search.mjs +101 -0
  654. package/skills/twitter/SKILL.md +74 -0
  655. package/skills/twitter/_meta.json +9 -0
  656. package/skills/twitter/references/validation-cases.md +53 -0
  657. package/skills/twitter/scripts/twitter.sh +421 -0
  658. package/skills/ui-ux-pro-max/.clawhub/origin.json +7 -0
  659. package/skills/ui-ux-pro-max/SKILL.md +54 -0
  660. package/skills/ui-ux-pro-max/assets/data/charts.csv +26 -0
  661. package/skills/ui-ux-pro-max/assets/data/colors.csv +97 -0
  662. package/skills/ui-ux-pro-max/assets/data/icons.csv +101 -0
  663. package/skills/ui-ux-pro-max/assets/data/landing.csv +31 -0
  664. package/skills/ui-ux-pro-max/assets/data/products.csv +97 -0
  665. package/skills/ui-ux-pro-max/assets/data/react-performance.csv +45 -0
  666. package/skills/ui-ux-pro-max/assets/data/stacks/astro.csv +54 -0
  667. package/skills/ui-ux-pro-max/assets/data/stacks/flutter.csv +53 -0
  668. package/skills/ui-ux-pro-max/assets/data/stacks/html-tailwind.csv +56 -0
  669. package/skills/ui-ux-pro-max/assets/data/stacks/jetpack-compose.csv +53 -0
  670. package/skills/ui-ux-pro-max/assets/data/stacks/nextjs.csv +53 -0
  671. package/skills/ui-ux-pro-max/assets/data/stacks/nuxt-ui.csv +51 -0
  672. package/skills/ui-ux-pro-max/assets/data/stacks/nuxtjs.csv +59 -0
  673. package/skills/ui-ux-pro-max/assets/data/stacks/react-native.csv +52 -0
  674. package/skills/ui-ux-pro-max/assets/data/stacks/react.csv +54 -0
  675. package/skills/ui-ux-pro-max/assets/data/stacks/shadcn.csv +61 -0
  676. package/skills/ui-ux-pro-max/assets/data/stacks/svelte.csv +54 -0
  677. package/skills/ui-ux-pro-max/assets/data/stacks/swiftui.csv +51 -0
  678. package/skills/ui-ux-pro-max/assets/data/stacks/vue.csv +50 -0
  679. package/skills/ui-ux-pro-max/assets/data/styles.csv +68 -0
  680. package/skills/ui-ux-pro-max/assets/data/typography.csv +58 -0
  681. package/skills/ui-ux-pro-max/assets/data/ui-reasoning.csv +101 -0
  682. package/skills/ui-ux-pro-max/assets/data/ux-guidelines.csv +100 -0
  683. package/skills/ui-ux-pro-max/assets/data/web-interface.csv +31 -0
  684. package/skills/ui-ux-pro-max/references/upstream-README.md +488 -0
  685. package/skills/ui-ux-pro-max/references/upstream-skill-content.md +288 -0
  686. package/skills/ui-ux-pro-max/scripts/__init__.py +0 -0
  687. package/skills/ui-ux-pro-max/scripts/core.py +253 -0
  688. package/skills/ui-ux-pro-max/scripts/design_system.py +1071 -0
  689. package/skills/ui-ux-pro-max/scripts/search.py +111 -0
  690. package/skills/user-story/SKILL.md +272 -0
  691. package/skills/user-story/examples/sample.md +110 -0
  692. package/skills/user-story/scripts/user-story-template.py +65 -0
  693. package/skills/user-story/template.md +32 -0
  694. package/skills/user-story-mapping/SKILL.md +296 -0
  695. package/skills/user-story-mapping/examples/sample.md +77 -0
  696. package/skills/user-story-mapping/template.md +41 -0
  697. package/skills/user-story-mapping-workshop/SKILL.md +485 -0
  698. package/skills/user-story-mapping-workshop/template.md +28 -0
  699. package/skills/user-story-splitting/SKILL.md +313 -0
  700. package/skills/user-story-splitting/examples/sample.md +147 -0
  701. package/skills/user-story-splitting/template.md +37 -0
  702. package/skills/wacli/.clawhub/origin.json +7 -0
  703. package/skills/wacli/SKILL.md +53 -0
  704. package/skills/web-search/.clawhub/origin.json +7 -0
  705. package/skills/web-search/SKILL.md +151 -0
  706. package/skills/web-search/references/api-details.md +207 -0
  707. package/skills/web-search/scripts/search.py +576 -0
  708. package/skills/workshop-facilitation/SKILL.md +88 -0
  709. package/skills/world-builder/SKILL.md +27 -0
  710. package/souls/blockchain-auditor/PRINCIPLES.md +75 -0
  711. package/souls/blockchain-auditor/SOUL.md +56 -0
  712. package/souls/blockchain-auditor/capabilities.json +33 -0
  713. package/souls/blockchain-auditor/evolution/capsules.json +4 -0
  714. package/souls/blockchain-auditor/evolution/events.jsonl +1 -0
  715. package/souls/blockchain-auditor/evolution/genes.json +62 -0
  716. package/souls/daedalus/PRINCIPLES.md +78 -0
  717. package/souls/daedalus/SOUL.md +48 -0
  718. package/souls/daedalus/capabilities.json +46 -0
  719. package/souls/identity-architect/PRINCIPLES.md +83 -0
  720. package/souls/identity-architect/SOUL.md +66 -0
  721. package/souls/identity-architect/capabilities.json +38 -0
  722. package/souls/identity-architect/evolution/capsules.json +4 -0
  723. package/souls/identity-architect/evolution/events.jsonl +0 -0
  724. package/souls/identity-architect/evolution/genes.json +4 -0
  725. package/souls/infra-ops/PRINCIPLES.md +77 -0
  726. package/souls/infra-ops/SOUL.md +56 -0
  727. package/souls/infra-ops/capabilities.json +33 -0
  728. package/souls/infra-ops/evolution/capsules.json +4 -0
  729. package/souls/infra-ops/evolution/events.jsonl +0 -0
  730. package/souls/infra-ops/evolution/genes.json +4 -0
  731. package/souls/lore-writer/PRINCIPLES.md +74 -0
  732. package/souls/lore-writer/SOUL.md +54 -0
  733. package/souls/lore-writer/capabilities.json +37 -0
  734. package/souls/lore-writer/evolution/capsules.json +4 -0
  735. package/souls/lore-writer/evolution/events.jsonl +0 -0
  736. package/souls/lore-writer/evolution/genes.json +4 -0
  737. package/souls/qa-evidence/PRINCIPLES.md +97 -0
  738. package/souls/qa-evidence/SOUL.md +66 -0
  739. package/souls/qa-evidence/capabilities.json +32 -0
  740. package/souls/qa-evidence/evolution/capsules.json +4 -0
  741. package/souls/qa-evidence/evolution/events.jsonl +0 -0
  742. package/souls/qa-evidence/evolution/genes.json +4 -0
  743. package/souls/registry.json +211 -0
  744. package/souls/sync-registry.js +65 -0
  745. package/uninstall.sh +102 -0
  746. package/workspace-bin/auto-checkpoint +60 -0
  747. package/workspace-bin/clawvault-access-control +65 -0
  748. package/workspace-bin/clawvault-local +28 -0
  749. package/workspace-bin/compile-boot +494 -0
  750. package/workspace-bin/daily-log-writer.mjs +251 -0
  751. package/workspace-bin/evolve +540 -0
  752. package/workspace-bin/fitness_score.py +395 -0
  753. package/workspace-bin/hooks/pre-commit +80 -0
  754. package/workspace-bin/install-daemon +299 -0
  755. package/workspace-bin/lane-watchdog.js +232 -0
  756. package/workspace-bin/lib/__init__.py +0 -0
  757. package/workspace-bin/lib/frontmatter.py +114 -0
  758. package/workspace-bin/memory-daemon.mjs +879 -0
  759. package/workspace-bin/memory-maintenance.mjs +531 -0
  760. package/workspace-bin/mesh-bridge.mjs +154 -0
  761. package/workspace-bin/multi-review +130 -0
  762. package/workspace-bin/obsidian +125 -0
  763. package/workspace-bin/obsidian-sync.mjs +888 -0
  764. package/workspace-bin/openclaw-register-source +102 -0
  765. package/workspace-bin/proactive-scan +147 -0
  766. package/workspace-bin/quality-gate +175 -0
  767. package/workspace-bin/screenshot +96 -0
  768. package/workspace-bin/session-recap +453 -0
  769. package/workspace-bin/skill-audit +494 -0
  770. package/workspace-bin/skill-quality-check +134 -0
  771. package/workspace-bin/skill-routing-eval +599 -0
  772. package/workspace-bin/soul-prompt +251 -0
  773. package/workspace-bin/subagent-audit.mjs +267 -0
  774. package/workspace-bin/test-multi-soul-workflow +130 -0
  775. package/workspace-bin/trust-registry +465 -0
  776. package/workspace-docs/AGENTS.md +201 -0
  777. package/workspace-docs/CLAUDE.md +64 -0
  778. package/workspace-docs/PRINCIPLES.md +81 -0
  779. package/workspace-docs/SOUL.md +48 -0
@@ -0,0 +1,429 @@
1
+ import Database from "better-sqlite3";
2
+ import { drizzle } from "drizzle-orm/better-sqlite3";
3
+ import * as schema from "./schema";
4
+ import { DB_PATH } from "../config";
5
+ import fs from "fs";
6
+ import path from "path";
7
+
8
+ let _db: ReturnType<typeof drizzle<typeof schema>> | null = null;
9
+ let _sqlite: Database.Database | null = null;
10
+
11
+ function ensureDataDir() {
12
+ const dir = path.dirname(DB_PATH);
13
+ if (!fs.existsSync(dir)) {
14
+ fs.mkdirSync(dir, { recursive: true });
15
+ }
16
+ }
17
+
18
+ function runMigrations(sqlite: Database.Database) {
19
+ sqlite.exec(`
20
+ CREATE TABLE IF NOT EXISTS tasks (
21
+ id TEXT PRIMARY KEY,
22
+ title TEXT NOT NULL,
23
+ status TEXT NOT NULL,
24
+ kanban_column TEXT NOT NULL,
25
+ owner TEXT,
26
+ success_criteria TEXT,
27
+ artifacts TEXT,
28
+ next_action TEXT,
29
+ updated_at TEXT NOT NULL,
30
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
31
+ sort_order INTEGER DEFAULT 0
32
+ );
33
+
34
+ CREATE TABLE IF NOT EXISTS memory_docs (
35
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
36
+ source TEXT NOT NULL,
37
+ category TEXT,
38
+ file_path TEXT NOT NULL UNIQUE,
39
+ title TEXT,
40
+ date TEXT,
41
+ frontmatter TEXT,
42
+ content TEXT NOT NULL,
43
+ modified_at TEXT,
44
+ indexed_at TEXT NOT NULL DEFAULT (datetime('now'))
45
+ );
46
+
47
+ CREATE TABLE IF NOT EXISTS activity_log (
48
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
49
+ event_type TEXT NOT NULL,
50
+ task_id TEXT,
51
+ description TEXT NOT NULL,
52
+ timestamp TEXT NOT NULL DEFAULT (datetime('now'))
53
+ );
54
+
55
+ CREATE VIRTUAL TABLE IF NOT EXISTS memory_fts USING fts5(
56
+ title,
57
+ content,
58
+ category,
59
+ source,
60
+ content='memory_docs',
61
+ content_rowid='id'
62
+ );
63
+ `);
64
+
65
+ // Create triggers for FTS sync (idempotent via IF NOT EXISTS workaround)
66
+ const triggerExists = sqlite
67
+ .prepare(
68
+ "SELECT name FROM sqlite_master WHERE type='trigger' AND name='memory_docs_ai'"
69
+ )
70
+ .get();
71
+
72
+ if (!triggerExists) {
73
+ sqlite.exec(`
74
+ CREATE TRIGGER memory_docs_ai AFTER INSERT ON memory_docs BEGIN
75
+ INSERT INTO memory_fts(rowid, title, content, category, source)
76
+ VALUES (new.id, new.title, new.content, new.category, new.source);
77
+ END;
78
+
79
+ CREATE TRIGGER memory_docs_ad AFTER DELETE ON memory_docs BEGIN
80
+ INSERT INTO memory_fts(memory_fts, rowid, title, content, category, source)
81
+ VALUES ('delete', old.id, old.title, old.content, old.category, old.source);
82
+ END;
83
+
84
+ CREATE TRIGGER memory_docs_au AFTER UPDATE ON memory_docs BEGIN
85
+ INSERT INTO memory_fts(memory_fts, rowid, title, content, category, source)
86
+ VALUES ('delete', old.id, old.title, old.content, old.category, old.source);
87
+ INSERT INTO memory_fts(rowid, title, content, category, source)
88
+ VALUES (new.id, new.title, new.content, new.category, new.source);
89
+ END;
90
+ `);
91
+ }
92
+
93
+ // Soul-related tables
94
+ sqlite.exec(`
95
+ CREATE TABLE IF NOT EXISTS soul_handoffs (
96
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
97
+ task_id TEXT NOT NULL,
98
+ from_soul TEXT NOT NULL,
99
+ to_soul TEXT NOT NULL,
100
+ reason TEXT,
101
+ context_path TEXT,
102
+ timestamp TEXT NOT NULL DEFAULT (datetime('now'))
103
+ );
104
+
105
+ CREATE TABLE IF NOT EXISTS soul_evolution_log (
106
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
107
+ soul_id TEXT NOT NULL,
108
+ event_id TEXT NOT NULL UNIQUE,
109
+ event_type TEXT NOT NULL,
110
+ description TEXT NOT NULL,
111
+ review_status TEXT NOT NULL DEFAULT 'pending',
112
+ commit_hash TEXT,
113
+ reviewed_by TEXT,
114
+ reviewed_at TEXT,
115
+ timestamp TEXT NOT NULL DEFAULT (datetime('now'))
116
+ );
117
+
118
+ CREATE TABLE IF NOT EXISTS soul_spawns (
119
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
120
+ soul_id TEXT NOT NULL,
121
+ task_id TEXT,
122
+ subagent_type TEXT NOT NULL,
123
+ timestamp TEXT NOT NULL DEFAULT (datetime('now'))
124
+ );
125
+ `);
126
+
127
+ // Add soul columns to tasks if missing
128
+ const taskCols = sqlite.prepare("PRAGMA table_info(tasks)").all() as { name: string }[];
129
+ const colNames = taskCols.map((c) => c.name);
130
+ if (!colNames.includes("soul_id")) {
131
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN soul_id TEXT");
132
+ }
133
+ if (!colNames.includes("handoff_source")) {
134
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN handoff_source TEXT");
135
+ }
136
+ if (!colNames.includes("handoff_reason")) {
137
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN handoff_reason TEXT");
138
+ }
139
+ if (!colNames.includes("scheduled_date")) {
140
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN scheduled_date TEXT");
141
+ }
142
+ if (!colNames.includes("project")) {
143
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN project TEXT");
144
+ }
145
+
146
+ // Hierarchy columns
147
+ if (!colNames.includes("type")) {
148
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN type TEXT DEFAULT 'task'");
149
+ }
150
+ if (!colNames.includes("parent_id")) {
151
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN parent_id TEXT");
152
+ }
153
+ if (!colNames.includes("start_date")) {
154
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN start_date TEXT");
155
+ }
156
+ if (!colNames.includes("end_date")) {
157
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN end_date TEXT");
158
+ }
159
+ if (!colNames.includes("color")) {
160
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN color TEXT");
161
+ }
162
+ if (!colNames.includes("description")) {
163
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN description TEXT");
164
+ }
165
+
166
+ // Scheduling columns (replaces auto_start*)
167
+ if (!colNames.includes("needs_approval")) {
168
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN needs_approval INTEGER DEFAULT 1");
169
+ }
170
+ if (!colNames.includes("trigger_kind")) {
171
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN trigger_kind TEXT DEFAULT 'none'");
172
+ }
173
+ if (!colNames.includes("trigger_at")) {
174
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN trigger_at TEXT");
175
+ }
176
+ if (!colNames.includes("trigger_cron")) {
177
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN trigger_cron TEXT");
178
+ }
179
+ if (!colNames.includes("trigger_tz")) {
180
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN trigger_tz TEXT DEFAULT 'America/Montreal'");
181
+ }
182
+ if (!colNames.includes("is_recurring")) {
183
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN is_recurring INTEGER DEFAULT 0");
184
+ }
185
+ if (!colNames.includes("capacity_class")) {
186
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN capacity_class TEXT DEFAULT 'normal'");
187
+ }
188
+ if (!colNames.includes("auto_priority")) {
189
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN auto_priority INTEGER DEFAULT 0");
190
+ }
191
+ if (!colNames.includes("show_in_calendar")) {
192
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN show_in_calendar INTEGER DEFAULT 0");
193
+ }
194
+ // FIX: acknowledged_at was in schema.ts but missing from migrations —
195
+ // existing DBs would crash on any read/write touching this column.
196
+ if (!colNames.includes("acknowledged_at")) {
197
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN acknowledged_at TEXT");
198
+ }
199
+
200
+ // Mesh execution columns (synced from active-tasks.md via kanban-io)
201
+ if (!colNames.includes("execution")) {
202
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN execution TEXT");
203
+ }
204
+ if (!colNames.includes("metric")) {
205
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN metric TEXT");
206
+ }
207
+ if (!colNames.includes("budget_minutes")) {
208
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN budget_minutes INTEGER DEFAULT 30");
209
+ }
210
+ if (!colNames.includes("scope")) {
211
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN scope TEXT");
212
+ }
213
+
214
+ // Mesh node tracking — links MC tasks to NATS KV tasks and claiming nodes
215
+ if (!colNames.includes("mesh_task_id")) {
216
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN mesh_task_id TEXT");
217
+ }
218
+ if (!colNames.includes("mesh_node")) {
219
+ sqlite.exec("ALTER TABLE tasks ADD COLUMN mesh_node TEXT");
220
+ }
221
+
222
+ // Data migration: convert old auto_start columns to new scheduling schema
223
+ if (colNames.includes("auto_start")) {
224
+ sqlite.exec(`
225
+ UPDATE tasks SET
226
+ needs_approval = CASE WHEN auto_start = 1 THEN 0 ELSE 1 END,
227
+ trigger_kind = CASE
228
+ WHEN auto_start = 1 AND auto_start_after IS NOT NULL THEN 'at'
229
+ WHEN auto_start = 1 THEN 'none'
230
+ ELSE 'none'
231
+ END,
232
+ trigger_at = auto_start_after
233
+ WHERE auto_start IS NOT NULL AND needs_approval IS NULL
234
+ `);
235
+ }
236
+
237
+ // Dependencies table (DAG edges)
238
+ sqlite.exec(`
239
+ CREATE TABLE IF NOT EXISTS dependencies (
240
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
241
+ source_id TEXT NOT NULL,
242
+ target_id TEXT NOT NULL,
243
+ type TEXT NOT NULL DEFAULT 'finish_to_start',
244
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
245
+ );
246
+ `);
247
+
248
+ // Indexes for hierarchy and dependency lookups
249
+ sqlite.exec(`
250
+ CREATE INDEX IF NOT EXISTS idx_tasks_parent_id ON tasks(parent_id);
251
+ CREATE INDEX IF NOT EXISTS idx_tasks_type ON tasks(type);
252
+ CREATE INDEX IF NOT EXISTS idx_deps_source ON dependencies(source_id);
253
+ CREATE INDEX IF NOT EXISTS idx_deps_target ON dependencies(target_id);
254
+ CREATE INDEX IF NOT EXISTS idx_tasks_trigger_kind ON tasks(trigger_kind);
255
+ CREATE INDEX IF NOT EXISTS idx_tasks_needs_approval ON tasks(needs_approval);
256
+ CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status);
257
+ CREATE INDEX IF NOT EXISTS idx_tasks_project ON tasks(project);
258
+ CREATE INDEX IF NOT EXISTS idx_tasks_kanban_column ON tasks(kanban_column);
259
+ `);
260
+
261
+ // Memory items table (extracted atomic facts)
262
+ sqlite.exec(`
263
+ CREATE TABLE IF NOT EXISTS memory_items (
264
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
265
+ fact_text TEXT NOT NULL,
266
+ confidence INTEGER DEFAULT 70,
267
+ source_doc_id INTEGER,
268
+ category TEXT,
269
+ status TEXT DEFAULT 'active',
270
+ gate_decision TEXT,
271
+ gate_reason TEXT,
272
+ extraction_source TEXT,
273
+ last_accessed TEXT,
274
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
275
+ );
276
+
277
+ CREATE TABLE IF NOT EXISTS memory_audit (
278
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
279
+ operation TEXT NOT NULL,
280
+ item_id INTEGER,
281
+ detail TEXT,
282
+ timestamp TEXT NOT NULL DEFAULT (datetime('now'))
283
+ );
284
+
285
+ CREATE INDEX IF NOT EXISTS idx_items_category ON memory_items(category);
286
+ CREATE INDEX IF NOT EXISTS idx_items_status ON memory_items(status);
287
+ CREATE INDEX IF NOT EXISTS idx_items_source ON memory_items(source_doc_id);
288
+ CREATE INDEX IF NOT EXISTS idx_audit_operation ON memory_audit(operation);
289
+ `);
290
+
291
+ // FTS5 index for memory items (fact-level search)
292
+ sqlite.exec(`
293
+ CREATE VIRTUAL TABLE IF NOT EXISTS memory_items_fts USING fts5(
294
+ fact_text,
295
+ category,
296
+ content='memory_items',
297
+ content_rowid='id'
298
+ );
299
+ `);
300
+
301
+ // FTS triggers for memory items
302
+ const itemTriggerExists = sqlite
303
+ .prepare(
304
+ "SELECT name FROM sqlite_master WHERE type='trigger' AND name='memory_items_ai'"
305
+ )
306
+ .get();
307
+
308
+ if (!itemTriggerExists) {
309
+ sqlite.exec(`
310
+ CREATE TRIGGER memory_items_ai AFTER INSERT ON memory_items BEGIN
311
+ INSERT INTO memory_items_fts(rowid, fact_text, category)
312
+ VALUES (new.id, new.fact_text, new.category);
313
+ END;
314
+
315
+ CREATE TRIGGER memory_items_ad AFTER DELETE ON memory_items BEGIN
316
+ INSERT INTO memory_items_fts(memory_items_fts, rowid, fact_text, category)
317
+ VALUES ('delete', old.id, old.fact_text, old.category);
318
+ END;
319
+
320
+ CREATE TRIGGER memory_items_au AFTER UPDATE ON memory_items BEGIN
321
+ INSERT INTO memory_items_fts(memory_items_fts, rowid, fact_text, category)
322
+ VALUES ('delete', old.id, old.fact_text, old.category);
323
+ INSERT INTO memory_items_fts(rowid, fact_text, category)
324
+ VALUES (new.id, new.fact_text, new.category);
325
+ END;
326
+ `);
327
+ }
328
+
329
+ // --- Knowledge Graph tables ---
330
+ sqlite.exec(`
331
+ CREATE TABLE IF NOT EXISTS memory_entities (
332
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
333
+ name TEXT NOT NULL,
334
+ type TEXT NOT NULL,
335
+ aliases TEXT,
336
+ first_seen TEXT NOT NULL DEFAULT (datetime('now')),
337
+ last_seen TEXT NOT NULL DEFAULT (datetime('now')),
338
+ access_count INTEGER DEFAULT 1,
339
+ metadata TEXT
340
+ );
341
+
342
+ CREATE TABLE IF NOT EXISTS memory_relations (
343
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
344
+ source_entity_id INTEGER NOT NULL,
345
+ target_entity_id INTEGER NOT NULL,
346
+ relation_type TEXT NOT NULL,
347
+ confidence INTEGER DEFAULT 80,
348
+ source_item_id INTEGER,
349
+ valid_from TEXT NOT NULL DEFAULT (datetime('now')),
350
+ valid_to TEXT,
351
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
352
+ );
353
+
354
+ CREATE TABLE IF NOT EXISTS memory_entity_items (
355
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
356
+ entity_id INTEGER NOT NULL,
357
+ item_id INTEGER NOT NULL
358
+ );
359
+
360
+ CREATE INDEX IF NOT EXISTS idx_entities_name ON memory_entities(name);
361
+ CREATE INDEX IF NOT EXISTS idx_entities_type ON memory_entities(type);
362
+ CREATE INDEX IF NOT EXISTS idx_relations_source ON memory_relations(source_entity_id);
363
+ CREATE INDEX IF NOT EXISTS idx_relations_target ON memory_relations(target_entity_id);
364
+ CREATE INDEX IF NOT EXISTS idx_relations_type ON memory_relations(relation_type);
365
+ CREATE INDEX IF NOT EXISTS idx_entity_items_entity ON memory_entity_items(entity_id);
366
+ CREATE INDEX IF NOT EXISTS idx_entity_items_item ON memory_entity_items(item_id);
367
+ `);
368
+
369
+ // --- Temporal columns on memory_items ---
370
+ const itemCols = sqlite.prepare("PRAGMA table_info(memory_items)").all() as { name: string }[];
371
+ const itemColNames = itemCols.map((c) => c.name);
372
+ if (!itemColNames.includes("superseded_by")) {
373
+ sqlite.exec("ALTER TABLE memory_items ADD COLUMN superseded_by INTEGER");
374
+ }
375
+ if (!itemColNames.includes("valid_from")) {
376
+ sqlite.exec("ALTER TABLE memory_items ADD COLUMN valid_from TEXT DEFAULT (datetime('now'))");
377
+ }
378
+ if (!itemColNames.includes("valid_to")) {
379
+ sqlite.exec("ALTER TABLE memory_items ADD COLUMN valid_to TEXT");
380
+ }
381
+
382
+ // Add cross-soul propagation columns to soul_evolution_log if missing
383
+ const evolCols = sqlite.prepare("PRAGMA table_info(soul_evolution_log)").all() as { name: string }[];
384
+ const evolColNames = evolCols.map((c) => c.name);
385
+ if (!evolColNames.includes("source_soul_id")) {
386
+ sqlite.exec("ALTER TABLE soul_evolution_log ADD COLUMN source_soul_id TEXT");
387
+ }
388
+ if (!evolColNames.includes("source_event_id")) {
389
+ sqlite.exec("ALTER TABLE soul_evolution_log ADD COLUMN source_event_id TEXT");
390
+ }
391
+
392
+ // --- Token usage tracking (mesh agent cost data) ---
393
+ sqlite.exec(`
394
+ CREATE TABLE IF NOT EXISTS token_usage (
395
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
396
+ task_id TEXT,
397
+ node_id TEXT,
398
+ model TEXT NOT NULL,
399
+ input_tokens INTEGER NOT NULL,
400
+ output_tokens INTEGER NOT NULL,
401
+ cost_usd REAL NOT NULL,
402
+ timestamp TEXT NOT NULL DEFAULT (datetime('now'))
403
+ );
404
+
405
+ CREATE INDEX IF NOT EXISTS idx_token_usage_task ON token_usage(task_id);
406
+ CREATE INDEX IF NOT EXISTS idx_token_usage_node ON token_usage(node_id);
407
+ CREATE INDEX IF NOT EXISTS idx_token_usage_ts ON token_usage(timestamp);
408
+ `);
409
+ }
410
+
411
+ export function getDb() {
412
+ if (_db) return _db;
413
+
414
+ ensureDataDir();
415
+
416
+ _sqlite = new Database(DB_PATH);
417
+ _sqlite.pragma("journal_mode = WAL");
418
+ _sqlite.pragma("foreign_keys = ON");
419
+
420
+ runMigrations(_sqlite);
421
+
422
+ _db = drizzle(_sqlite, { schema });
423
+ return _db;
424
+ }
425
+
426
+ export function getRawDb(): Database.Database {
427
+ if (!_sqlite) getDb();
428
+ return _sqlite!;
429
+ }
@@ -0,0 +1,218 @@
1
+ import { sqliteTable, text, integer } from "drizzle-orm/sqlite-core";
2
+ import { sql } from "drizzle-orm";
3
+
4
+ export const tasks = sqliteTable("tasks", {
5
+ id: text("id").primaryKey(),
6
+ title: text("title").notNull(),
7
+ status: text("status").notNull(),
8
+ kanbanColumn: text("kanban_column").notNull(),
9
+ owner: text("owner"),
10
+ soulId: text("soul_id"), // NEW: which soul owns this task
11
+ handoffSource: text("handoff_source"), // NEW: previous owner (for handoffs)
12
+ handoffReason: text("handoff_reason"), // NEW: why handed off
13
+ successCriteria: text("success_criteria"),
14
+ artifacts: text("artifacts"),
15
+ nextAction: text("next_action"),
16
+ scheduledDate: text("scheduled_date"), // ISO date for calendar: "2026-02-21"
17
+ project: text("project"), // Freeform project tag: "arcane", "budgetapp", etc.
18
+ type: text("type").default("task"), // "project" | "pipeline" | "phase" | "task"
19
+ parentId: text("parent_id"), // FK to tasks.id (self-reference for hierarchy)
20
+ startDate: text("start_date"), // ISO date: "2026-03-01" (range start)
21
+ endDate: text("end_date"), // ISO date: "2026-04-15" (range end)
22
+ color: text("color"), // hex color for Gantt bars
23
+ description: text("description"), // markdown body for projects/phases
24
+ needsApproval: integer("needs_approval").default(1), // 0=Daedalus can start, 1=wait for Gui
25
+ triggerKind: text("trigger_kind").default("none"), // "none" | "at" | "cron"
26
+ triggerAt: text("trigger_at"), // ISO datetime for one-shot trigger
27
+ triggerCron: text("trigger_cron"), // cron expression (e.g. "0 10 * * 1")
28
+ triggerTz: text("trigger_tz").default("America/Montreal"), // timezone for cron eval
29
+ isRecurring: integer("is_recurring").default(0), // 1=auto-recreate after done
30
+ capacityClass: text("capacity_class").default("normal"), // "light" | "normal" | "heavy"
31
+ autoPriority: integer("auto_priority").default(0), // higher = dispatched first
32
+ // Mesh execution fields (synced from active-tasks.md)
33
+ execution: text("execution"), // "mesh" = dispatched via mesh bridge; null = manual/Daedalus
34
+ meshTaskId: text("mesh_task_id"), // NATS KV task ID (e.g. "MESH-TEST-003")
35
+ meshNode: text("mesh_node"), // node that claimed the task (e.g. "calos-ubuntu")
36
+ metric: text("metric"), // mechanical success check (e.g. "tests pass")
37
+ budgetMinutes: integer("budget_minutes").default(30), // agent time budget
38
+ scope: text("scope"), // JSON array of allowed file paths
39
+ showInCalendar: integer("show_in_calendar").default(0), // 1=show meta-task in calendar view
40
+ acknowledgedAt: text("acknowledged_at"), // ISO datetime — when Daedalus acknowledged auto-dispatch
41
+ updatedAt: text("updated_at").notNull(),
42
+ createdAt: text("created_at")
43
+ .notNull()
44
+ .default(sql`(datetime('now'))`),
45
+ sortOrder: integer("sort_order").default(0),
46
+ });
47
+
48
+ export const memoryDocs = sqliteTable("memory_docs", {
49
+ id: integer("id").primaryKey({ autoIncrement: true }),
50
+ source: text("source").notNull(),
51
+ category: text("category"),
52
+ filePath: text("file_path").notNull().unique(),
53
+ title: text("title"),
54
+ date: text("date"),
55
+ frontmatter: text("frontmatter"),
56
+ content: text("content").notNull(),
57
+ modifiedAt: text("modified_at"),
58
+ indexedAt: text("indexed_at")
59
+ .notNull()
60
+ .default(sql`(datetime('now'))`),
61
+ });
62
+
63
+ export const activityLog = sqliteTable("activity_log", {
64
+ id: integer("id").primaryKey({ autoIncrement: true }),
65
+ eventType: text("event_type").notNull(),
66
+ taskId: text("task_id"),
67
+ description: text("description").notNull(),
68
+ timestamp: text("timestamp")
69
+ .notNull()
70
+ .default(sql`(datetime('now'))`),
71
+ });
72
+
73
+ export const soulHandoffs = sqliteTable("soul_handoffs", {
74
+ id: integer("id").primaryKey({ autoIncrement: true }),
75
+ taskId: text("task_id").notNull(),
76
+ fromSoul: text("from_soul").notNull(),
77
+ toSoul: text("to_soul").notNull(),
78
+ reason: text("reason"),
79
+ contextPath: text("context_path"), // Path to handoff document in ClawVault
80
+ timestamp: text("timestamp")
81
+ .notNull()
82
+ .default(sql`(datetime('now'))`),
83
+ });
84
+
85
+ export const soulEvolutionLog = sqliteTable("soul_evolution_log", {
86
+ id: integer("id").primaryKey({ autoIncrement: true }),
87
+ soulId: text("soul_id").notNull(),
88
+ eventId: text("event_id").notNull().unique(), // References evolution/events.jsonl
89
+ eventType: text("event_type").notNull(), // learning, correction, feature_request
90
+ description: text("description").notNull(),
91
+ reviewStatus: text("review_status").notNull().default("pending"), // pending, approved, rejected
92
+ commitHash: text("commit_hash"), // Git commit after approval
93
+ reviewedBy: text("reviewed_by"), // Soul ID of reviewer
94
+ reviewedAt: text("reviewed_at"),
95
+ sourceSoulId: text("source_soul_id"), // Cross-soul: which soul originated this gene
96
+ sourceEventId: text("source_event_id"), // Cross-soul: original event ID
97
+ timestamp: text("timestamp")
98
+ .notNull()
99
+ .default(sql`(datetime('now'))`),
100
+ });
101
+
102
+ export const dependencies = sqliteTable("dependencies", {
103
+ id: integer("id").primaryKey({ autoIncrement: true }),
104
+ sourceId: text("source_id").notNull(), // task that must complete first
105
+ targetId: text("target_id").notNull(), // task that is blocked
106
+ type: text("type").notNull().default("finish_to_start"),
107
+ createdAt: text("created_at")
108
+ .notNull()
109
+ .default(sql`(datetime('now'))`),
110
+ });
111
+
112
+ export type Task = typeof tasks.$inferSelect;
113
+ export type NewTask = typeof tasks.$inferInsert;
114
+ export type Dependency = typeof dependencies.$inferSelect;
115
+ export type NewDependency = typeof dependencies.$inferInsert;
116
+ export type MemoryDoc = typeof memoryDocs.$inferSelect;
117
+ export type NewMemoryDoc = typeof memoryDocs.$inferInsert;
118
+ export type ActivityLogEntry = typeof activityLog.$inferSelect;
119
+ export type SoulHandoff = typeof soulHandoffs.$inferSelect;
120
+ export type NewSoulHandoff = typeof soulHandoffs.$inferInsert;
121
+ export const soulSpawns = sqliteTable("soul_spawns", {
122
+ id: integer("id").primaryKey({ autoIncrement: true }),
123
+ soulId: text("soul_id").notNull(),
124
+ taskId: text("task_id"), // Optional — linked task if spawned for a specific task
125
+ subagentType: text("subagent_type").notNull(), // general-purpose, Explore, etc.
126
+ timestamp: text("timestamp")
127
+ .notNull()
128
+ .default(sql`(datetime('now'))`),
129
+ });
130
+
131
+ // --- Memory Items (extracted atomic facts) ---
132
+
133
+ export const memoryItems = sqliteTable("memory_items", {
134
+ id: integer("id").primaryKey({ autoIncrement: true }),
135
+ factText: text("fact_text").notNull(),
136
+ confidence: integer("confidence").default(70), // 0-100 (stored as int, display as 0.XX)
137
+ sourceDocId: integer("source_doc_id"), // FK to memory_docs.id
138
+ category: text("category"), // work, preferences, people, projects, technical, relationships
139
+ status: text("status").default("active"), // active | archived | stale
140
+ gateDecision: text("gate_decision"), // accepted | rejected
141
+ gateReason: text("gate_reason"), // why accepted/rejected
142
+ extractionSource: text("extraction_source"), // file path or session ID
143
+ lastAccessed: text("last_accessed"),
144
+ supersededBy: integer("superseded_by"), // FK to memory_items.id (temporal chain)
145
+ validFrom: text("valid_from")
146
+ .notNull()
147
+ .default(sql`(datetime('now'))`),
148
+ validTo: text("valid_to"), // null = still valid; set when superseded
149
+ createdAt: text("created_at")
150
+ .notNull()
151
+ .default(sql`(datetime('now'))`),
152
+ });
153
+
154
+ export const memoryAudit = sqliteTable("memory_audit", {
155
+ id: integer("id").primaryKey({ autoIncrement: true }),
156
+ operation: text("operation").notNull(), // extract, gate_accept, gate_reject, merge, archive, search
157
+ itemId: integer("item_id"),
158
+ detail: text("detail"), // JSON or descriptive text
159
+ timestamp: text("timestamp")
160
+ .notNull()
161
+ .default(sql`(datetime('now'))`),
162
+ });
163
+
164
+ export type MemoryItem = typeof memoryItems.$inferSelect;
165
+ export type NewMemoryItem = typeof memoryItems.$inferInsert;
166
+ export type MemoryAuditEntry = typeof memoryAudit.$inferSelect;
167
+
168
+ // --- Knowledge Graph: Entities + Relations ---
169
+
170
+ export const memoryEntities = sqliteTable("memory_entities", {
171
+ id: integer("id").primaryKey({ autoIncrement: true }),
172
+ name: text("name").notNull(), // canonical name: "ManaWell", "Gui", "Arcane"
173
+ type: text("type").notNull(), // person | project | contract | concept | tool | file
174
+ aliases: text("aliases"), // JSON array of alternate names: ["mana well", "ManaWell.sol"]
175
+ firstSeen: text("first_seen")
176
+ .notNull()
177
+ .default(sql`(datetime('now'))`),
178
+ lastSeen: text("last_seen")
179
+ .notNull()
180
+ .default(sql`(datetime('now'))`),
181
+ accessCount: integer("access_count").default(1),
182
+ metadata: text("metadata"), // JSON: extra type-specific data
183
+ });
184
+
185
+ export const memoryRelations = sqliteTable("memory_relations", {
186
+ id: integer("id").primaryKey({ autoIncrement: true }),
187
+ sourceEntityId: integer("source_entity_id").notNull(), // FK to memory_entities.id
188
+ targetEntityId: integer("target_entity_id").notNull(), // FK to memory_entities.id
189
+ relationType: text("relation_type").notNull(), // owns | uses | depends_on | blocks | part_of | related_to | supersedes
190
+ confidence: integer("confidence").default(80), // 0-100
191
+ sourceItemId: integer("source_item_id"), // FK to memory_items.id (which fact established this relation)
192
+ validFrom: text("valid_from")
193
+ .notNull()
194
+ .default(sql`(datetime('now'))`),
195
+ validTo: text("valid_to"), // null = still valid
196
+ createdAt: text("created_at")
197
+ .notNull()
198
+ .default(sql`(datetime('now'))`),
199
+ });
200
+
201
+ // --- Entity-Item junction (which entities appear in which facts) ---
202
+
203
+ export const memoryEntityItems = sqliteTable("memory_entity_items", {
204
+ id: integer("id").primaryKey({ autoIncrement: true }),
205
+ entityId: integer("entity_id").notNull(), // FK to memory_entities.id
206
+ itemId: integer("item_id").notNull(), // FK to memory_items.id
207
+ });
208
+
209
+ export type MemoryEntity = typeof memoryEntities.$inferSelect;
210
+ export type NewMemoryEntity = typeof memoryEntities.$inferInsert;
211
+ export type MemoryRelation = typeof memoryRelations.$inferSelect;
212
+ export type NewMemoryRelation = typeof memoryRelations.$inferInsert;
213
+ export type MemoryEntityItem = typeof memoryEntityItems.$inferSelect;
214
+
215
+ export type SoulEvolution = typeof soulEvolutionLog.$inferSelect;
216
+ export type NewSoulEvolution = typeof soulEvolutionLog.$inferInsert;
217
+ export type SoulSpawn = typeof soulSpawns.$inferSelect;
218
+ export type NewSoulSpawn = typeof soulSpawns.$inferInsert;