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,204 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const { getGepAssetsDir } = require('./paths');
4
+
5
+ function ensureDir(dir) {
6
+ if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
7
+ }
8
+
9
+ function readJsonIfExists(filePath, fallback) {
10
+ try {
11
+ if (!fs.existsSync(filePath)) return fallback;
12
+ const raw = fs.readFileSync(filePath, 'utf8');
13
+ if (!raw.trim()) return fallback;
14
+ return JSON.parse(raw);
15
+ } catch {
16
+ return fallback;
17
+ }
18
+ }
19
+
20
+ function writeJsonAtomic(filePath, obj) {
21
+ const dir = path.dirname(filePath);
22
+ ensureDir(dir);
23
+ const tmp = `${filePath}.tmp`;
24
+ fs.writeFileSync(tmp, JSON.stringify(obj, null, 2) + '\n', 'utf8');
25
+ fs.renameSync(tmp, filePath);
26
+ }
27
+
28
+ function getDefaultGenes() {
29
+ return {
30
+ version: 1,
31
+ genes: [
32
+ {
33
+ type: 'Gene',
34
+ id: 'gene_gep_repair_from_errors',
35
+ category: 'repair',
36
+ signals_match: ['error', 'exception', 'failed', 'unstable'],
37
+ preconditions: ['signals contains error-related indicators'],
38
+ strategy: [
39
+ 'Extract structured signals from logs and user instructions',
40
+ 'Select an existing Gene by signals match (no improvisation)',
41
+ 'Estimate blast radius (files, lines) before editing',
42
+ 'Apply smallest reversible patch',
43
+ 'Validate using declared validation steps; rollback on failure',
44
+ 'Solidify knowledge: append EvolutionEvent, update Gene/Capsule store',
45
+ ],
46
+ constraints: {
47
+ max_files: 12,
48
+ forbidden_paths: ['.git', 'node_modules'],
49
+ },
50
+ validation: ['node index.js run', 'node -e "require(\\"./src/evolve\\")"'],
51
+ },
52
+ {
53
+ type: 'Gene',
54
+ id: 'gene_gep_optimize_prompt_and_assets',
55
+ category: 'optimize',
56
+ signals_match: ['protocol', 'gep', 'prompt', 'audit', 'reusable'],
57
+ preconditions: ['need stricter, auditable evolution protocol outputs'],
58
+ strategy: [
59
+ 'Extract signals and determine selection rationale via Selector JSON',
60
+ 'Prefer reusing existing Gene/Capsule; only create if no match exists',
61
+ 'Refactor prompt assembly to embed assets (genes, capsules, parent event)',
62
+ 'Reduce noise and ambiguity; enforce strict output schema',
63
+ 'Validate by running node index.js run and ensuring no runtime errors',
64
+ 'Solidify: record EvolutionEvent, update Gene definitions, create Capsule on success',
65
+ ],
66
+ constraints: {
67
+ max_files: 20,
68
+ forbidden_paths: ['.git', 'node_modules'],
69
+ },
70
+ validation: ['node index.js run'],
71
+ },
72
+ ],
73
+ };
74
+ }
75
+
76
+ function getDefaultCapsules() {
77
+ return { version: 1, capsules: [] };
78
+ }
79
+
80
+ function genesPath() {
81
+ return path.join(getGepAssetsDir(), 'genes.json');
82
+ }
83
+
84
+ function capsulesPath() {
85
+ return path.join(getGepAssetsDir(), 'capsules.json');
86
+ }
87
+
88
+ function eventsPath() {
89
+ return path.join(getGepAssetsDir(), 'events.jsonl');
90
+ }
91
+
92
+ function candidatesPath() {
93
+ return path.join(getGepAssetsDir(), 'candidates.jsonl');
94
+ }
95
+
96
+ function loadGenes() {
97
+ return readJsonIfExists(genesPath(), getDefaultGenes()).genes || [];
98
+ }
99
+
100
+ function loadCapsules() {
101
+ return readJsonIfExists(capsulesPath(), getDefaultCapsules()).capsules || [];
102
+ }
103
+
104
+ function getLastEventId() {
105
+ try {
106
+ const p = eventsPath();
107
+ if (!fs.existsSync(p)) return null;
108
+ const raw = fs.readFileSync(p, 'utf8');
109
+ const lines = raw.split('\n').map(l => l.trim()).filter(Boolean);
110
+ if (lines.length === 0) return null;
111
+ const last = JSON.parse(lines[lines.length - 1]);
112
+ return last && typeof last.id === 'string' ? last.id : null;
113
+ } catch {
114
+ return null;
115
+ }
116
+ }
117
+
118
+ function readAllEvents() {
119
+ try {
120
+ const p = eventsPath();
121
+ if (!fs.existsSync(p)) return [];
122
+ const raw = fs.readFileSync(p, 'utf8');
123
+ return raw
124
+ .split('\n')
125
+ .map(l => l.trim())
126
+ .filter(Boolean)
127
+ .map(l => {
128
+ try {
129
+ return JSON.parse(l);
130
+ } catch {
131
+ return null;
132
+ }
133
+ })
134
+ .filter(Boolean);
135
+ } catch {
136
+ return [];
137
+ }
138
+ }
139
+
140
+ function appendEventJsonl(eventObj) {
141
+ const dir = getGepAssetsDir();
142
+ ensureDir(dir);
143
+ fs.appendFileSync(eventsPath(), JSON.stringify(eventObj) + '\n', 'utf8');
144
+ }
145
+
146
+ function appendCandidateJsonl(candidateObj) {
147
+ const dir = getGepAssetsDir();
148
+ ensureDir(dir);
149
+ fs.appendFileSync(candidatesPath(), JSON.stringify(candidateObj) + '\n', 'utf8');
150
+ }
151
+
152
+ function readRecentCandidates(limit = 20) {
153
+ try {
154
+ const p = candidatesPath();
155
+ if (!fs.existsSync(p)) return [];
156
+ const raw = fs.readFileSync(p, 'utf8');
157
+ const lines = raw.split('\n').map(l => l.trim()).filter(Boolean);
158
+ const recent = lines.slice(Math.max(0, lines.length - limit));
159
+ return recent
160
+ .map(l => {
161
+ try {
162
+ return JSON.parse(l);
163
+ } catch {
164
+ return null;
165
+ }
166
+ })
167
+ .filter(Boolean);
168
+ } catch {
169
+ return [];
170
+ }
171
+ }
172
+
173
+ function upsertGene(geneObj) {
174
+ const current = readJsonIfExists(genesPath(), getDefaultGenes());
175
+ const genes = Array.isArray(current.genes) ? current.genes : [];
176
+ const idx = genes.findIndex(g => g && g.id === geneObj.id);
177
+ if (idx >= 0) genes[idx] = geneObj;
178
+ else genes.push(geneObj);
179
+ writeJsonAtomic(genesPath(), { version: current.version || 1, genes });
180
+ }
181
+
182
+ function appendCapsule(capsuleObj) {
183
+ const current = readJsonIfExists(capsulesPath(), getDefaultCapsules());
184
+ const capsules = Array.isArray(current.capsules) ? current.capsules : [];
185
+ capsules.push(capsuleObj);
186
+ writeJsonAtomic(capsulesPath(), { version: current.version || 1, capsules });
187
+ }
188
+
189
+ module.exports = {
190
+ loadGenes,
191
+ loadCapsules,
192
+ readAllEvents,
193
+ getLastEventId,
194
+ appendEventJsonl,
195
+ appendCandidateJsonl,
196
+ readRecentCandidates,
197
+ upsertGene,
198
+ appendCapsule,
199
+ genesPath,
200
+ capsulesPath,
201
+ eventsPath,
202
+ candidatesPath,
203
+ };
204
+
@@ -0,0 +1,134 @@
1
+ function stableHash(input) {
2
+ // Deterministic lightweight hash (not cryptographic).
3
+ const s = String(input || '');
4
+ let h = 2166136261;
5
+ for (let i = 0; i < s.length; i++) {
6
+ h ^= s.charCodeAt(i);
7
+ h = Math.imul(h, 16777619);
8
+ }
9
+ return (h >>> 0).toString(16).padStart(8, '0');
10
+ }
11
+
12
+ function clip(text, maxChars) {
13
+ const s = String(text || '');
14
+ if (!maxChars || s.length <= maxChars) return s;
15
+ return s.slice(0, Math.max(0, maxChars - 20)) + ' ...[TRUNCATED]';
16
+ }
17
+
18
+ function toLines(text) {
19
+ return String(text || '')
20
+ .split('\n')
21
+ .map(l => l.trimEnd())
22
+ .filter(Boolean);
23
+ }
24
+
25
+ function extractToolCalls(transcript) {
26
+ const lines = toLines(transcript);
27
+ const calls = [];
28
+ for (const line of lines) {
29
+ const m = line.match(/\[TOOL:\s*([^\]]+)\]/i);
30
+ if (m && m[1]) calls.push(m[1].trim());
31
+ }
32
+ return calls;
33
+ }
34
+
35
+ function countFreq(items) {
36
+ const map = new Map();
37
+ for (const it of items) map.set(it, (map.get(it) || 0) + 1);
38
+ return map;
39
+ }
40
+
41
+ function buildFiveQuestionsShape({ title, signals, evidence }) {
42
+ // Keep it short and structured; this is a template, not a perfect inference.
43
+ const input = 'Recent session transcript + memory snippets + user instructions';
44
+ const output = 'A safe, auditable evolution patch guided by GEP assets';
45
+ const invariants = 'Protocol order, small reversible patches, validation, append-only events';
46
+ const params = `Signals: ${Array.isArray(signals) ? signals.join(', ') : ''}`.trim();
47
+ const failurePoints = 'Missing signals, over-broad changes, skipped validation, missing knowledge solidification';
48
+ return {
49
+ title: String(title || '').slice(0, 120),
50
+ input,
51
+ output,
52
+ invariants,
53
+ params: params || 'Signals: (none)',
54
+ failure_points: failurePoints,
55
+ evidence: clip(evidence, 240),
56
+ };
57
+ }
58
+
59
+ function extractCapabilityCandidates({ recentSessionTranscript, signals }) {
60
+ const candidates = [];
61
+ const toolCalls = extractToolCalls(recentSessionTranscript);
62
+ const freq = countFreq(toolCalls);
63
+
64
+ for (const [tool, count] of freq.entries()) {
65
+ if (count < 2) continue;
66
+ const title = `Repeated tool usage: ${tool}`;
67
+ const evidence = `Observed ${count} occurrences of tool call marker for ${tool}.`;
68
+ const shape = buildFiveQuestionsShape({ title, signals, evidence });
69
+ candidates.push({
70
+ type: 'CapabilityCandidate',
71
+ id: `cand_${stableHash(title)}`,
72
+ title,
73
+ source: 'transcript',
74
+ created_at: new Date().toISOString(),
75
+ signals: Array.isArray(signals) ? signals : [],
76
+ shape,
77
+ });
78
+ }
79
+
80
+ // Signals-as-candidates: capture recurring pain points as reusable capability shapes.
81
+ const signalList = Array.isArray(signals) ? signals : [];
82
+ const signalCandidates = [
83
+ { signal: 'log_error', title: 'Repair recurring runtime errors' },
84
+ { signal: 'protocol_drift', title: 'Prevent protocol drift and enforce auditable outputs' },
85
+ { signal: 'windows_shell_incompatible', title: 'Avoid platform-specific shell assumptions (Windows compatibility)' },
86
+ { signal: 'session_logs_missing', title: 'Harden session log detection and fallback behavior' },
87
+ ];
88
+
89
+ for (const sc of signalCandidates) {
90
+ if (!signalList.includes(sc.signal)) continue;
91
+ const evidence = `Signal present: ${sc.signal}`;
92
+ const shape = buildFiveQuestionsShape({ title: sc.title, signals, evidence });
93
+ candidates.push({
94
+ type: 'CapabilityCandidate',
95
+ id: `cand_${stableHash(sc.signal)}`,
96
+ title: sc.title,
97
+ source: 'signals',
98
+ created_at: new Date().toISOString(),
99
+ signals: signalList,
100
+ shape,
101
+ });
102
+ }
103
+
104
+ // Dedup by id
105
+ const seen = new Set();
106
+ return candidates.filter(c => {
107
+ if (!c || !c.id) return false;
108
+ if (seen.has(c.id)) return false;
109
+ seen.add(c.id);
110
+ return true;
111
+ });
112
+ }
113
+
114
+ function renderCandidatesPreview(candidates, maxChars = 1400) {
115
+ const list = Array.isArray(candidates) ? candidates : [];
116
+ const lines = [];
117
+ for (const c of list) {
118
+ const s = c && c.shape ? c.shape : {};
119
+ lines.push(`- ${c.id}: ${c.title}`);
120
+ lines.push(` - input: ${s.input || ''}`);
121
+ lines.push(` - output: ${s.output || ''}`);
122
+ lines.push(` - invariants: ${s.invariants || ''}`);
123
+ lines.push(` - params: ${s.params || ''}`);
124
+ lines.push(` - failure_points: ${s.failure_points || ''}`);
125
+ if (s.evidence) lines.push(` - evidence: ${s.evidence}`);
126
+ }
127
+ return clip(lines.join('\n'), maxChars);
128
+ }
129
+
130
+ module.exports = {
131
+ extractCapabilityCandidates,
132
+ renderCandidatesPreview,
133
+ };
134
+
@@ -0,0 +1,23 @@
1
+ const path = require('path');
2
+
3
+ function getRepoRoot() {
4
+ // src/gep/paths.js -> repo root
5
+ return path.resolve(__dirname, '..', '..');
6
+ }
7
+
8
+ function getMemoryDir() {
9
+ const repoRoot = getRepoRoot();
10
+ return process.env.MEMORY_DIR || path.join(repoRoot, 'memory');
11
+ }
12
+
13
+ function getGepAssetsDir() {
14
+ const repoRoot = getRepoRoot();
15
+ return process.env.GEP_ASSETS_DIR || path.join(repoRoot, 'assets', 'gep');
16
+ }
17
+
18
+ module.exports = {
19
+ getRepoRoot,
20
+ getMemoryDir,
21
+ getGepAssetsDir,
22
+ };
23
+
@@ -0,0 +1,254 @@
1
+ function buildGepPrompt({
2
+ nowIso,
3
+ context,
4
+ signals,
5
+ selector,
6
+ parentEventId,
7
+ selectedGene,
8
+ capsuleCandidates,
9
+ genesPreview,
10
+ capsulesPreview,
11
+ capabilityCandidatesPreview,
12
+ }) {
13
+ const parentValue = parentEventId ? `"${parentEventId}"` : 'null';
14
+ const selectedGeneId = selectedGene && selectedGene.id ? selectedGene.id : null;
15
+ const capsuleIds = (capsuleCandidates || []).map(c => c && c.id).filter(Boolean);
16
+
17
+ const basePrompt = `
18
+ GEP — GENOME EVOLUTION PROTOCOL (STANDARD EXECUTION) [${nowIso}]
19
+
20
+ You are not a chat assistant.
21
+ You are not a free agent.
22
+ You are a protocol-bound evolution execution engine.
23
+
24
+ All actions must comply with this protocol.
25
+ Any deviation is a failure even if the outcome appears correct.
26
+
27
+ ━━━━━━━━━━━━━━━━━━━━━━
28
+ I. Protocol Positioning (Non-Negotiable)
29
+ ━━━━━━━━━━━━━━━━━━━━━━
30
+
31
+ Protocol goals:
32
+ - Convert reasoning into reusable, auditable, shareable evolution assets
33
+ - Make evolution a standard process, not improvisation
34
+ - Reduce future reasoning cost for similar problems
35
+
36
+ Protocol compliance overrides local optimality.
37
+
38
+ ━━━━━━━━━━━━━━━━━━━━━━
39
+ II. Mandatory Evolution Object Model (All Required)
40
+ ━━━━━━━━━━━━━━━━━━━━━━
41
+
42
+ Every evolution run must explicitly output the following three objects.
43
+ Missing any one is an immediate failure.
44
+
45
+ ──────────────────────
46
+ 1 EvolutionEvent
47
+ ──────────────────────
48
+
49
+ You must emit an EvolutionEvent with all fields present:
50
+
51
+ \`\`\`json
52
+ {
53
+ "type": "EvolutionEvent",
54
+ "id": "evt_<timestamp>",
55
+ "parent": ${parentValue},
56
+ "intent": "repair | optimize | innovate",
57
+ "signals": ["<signal_1>", "<signal_2>"],
58
+ "genes_used": ["<gene_id>"],
59
+ "blast_radius": {
60
+ "files": <number>,
61
+ "lines": <number>
62
+ },
63
+ "outcome": {
64
+ "status": "success | failed",
65
+ "score": <0.0-1.0>
66
+ }
67
+ }
68
+ \`\`\`
69
+
70
+ EvolutionEvent is the only legal node type in the evolution tree.
71
+
72
+ ──────────────────────
73
+ 2 Gene
74
+ ──────────────────────
75
+
76
+ If a Gene is used, you must reuse an existing Gene first.
77
+ Only create a new Gene when no match exists.
78
+
79
+ Gene must follow this schema:
80
+
81
+ \`\`\`json
82
+ {
83
+ "type": "Gene",
84
+ "id": "gene_<name>",
85
+ "category": "repair | optimize | innovate",
86
+ "signals_match": ["<pattern>"],
87
+ "preconditions": ["<condition>"],
88
+ "strategy": [
89
+ "<step_1>",
90
+ "<step_2>"
91
+ ],
92
+ "constraints": {
93
+ "max_files": <number>,
94
+ "forbidden_paths": ["<path>"]
95
+ },
96
+ "validation": ["<check_1>", "<check_2>"]
97
+ }
98
+ \`\`\`
99
+
100
+ A Gene is an evolution interface definition, not code or generic advice.
101
+
102
+ ──────────────────────
103
+ 3 Capsule
104
+ ──────────────────────
105
+
106
+ Only when evolution succeeds, you must generate a Capsule:
107
+
108
+ \`\`\`json
109
+ {
110
+ "type": "Capsule",
111
+ "id": "capsule_<timestamp>",
112
+ "trigger": ["<signal>"],
113
+ "gene": "<gene_id>",
114
+ "summary": "<one sentence>",
115
+ "confidence": <0.0-1.0>
116
+ }
117
+ \`\`\`
118
+
119
+ Capsules exist to prevent repeated reasoning for similar problems.
120
+
121
+ ━━━━━━━━━━━━━━━━━━━━━━
122
+ III. Standard Evolution Execution (Strict Order)
123
+ ━━━━━━━━━━━━━━━━━━━━━━
124
+
125
+ Follow this order exactly. Do not skip, merge, or reorder steps:
126
+
127
+ 1 Signal Extraction
128
+ - Extract structured signals from logs, errors, metrics, or instructions
129
+ - Do not proceed to repair or optimize before signals are extracted
130
+
131
+ 2 Selection
132
+ - Prefer existing Genes first
133
+ - Then consider existing Capsules
134
+ - No improvisation or trial-and-error strategies
135
+
136
+ You must provide a clear, auditable selection rationale.
137
+
138
+ 3 Patch Execution
139
+ - All changes must be small and reversible
140
+ - blast_radius must be estimated and recorded before edits
141
+
142
+ 4 Validation
143
+ - Execute Gene-declared validation steps
144
+ - On failure, rollback
145
+ - Failure must still record an EvolutionEvent
146
+
147
+ 5 Knowledge Solidification (Mandatory)
148
+ - Update or add Gene if a new pattern is found
149
+ - Generate Capsule on success
150
+ - Append EvolutionEvent
151
+
152
+ If knowledge solidification is missing, the evolution is a failure even if functionality works.
153
+
154
+ ━━━━━━━━━━━━━━━━━━━━━━
155
+ IV. Selector (Mandatory Decision Logic)
156
+ ━━━━━━━━━━━━━━━━━━━━━━
157
+
158
+ When choosing a Gene or Capsule, you must emit a Selector decision.
159
+
160
+ Selector must be explainable, for example:
161
+
162
+ \`\`\`json
163
+ {
164
+ "selected": "${selectedGeneId || '<gene_id>'}",
165
+ "reason": [
166
+ "signals exact match",
167
+ "historical success rate high",
168
+ "low blast radius"
169
+ ],
170
+ "alternatives": ${JSON.stringify(capsuleIds.length ? capsuleIds : ['<gene_id_2>'])}
171
+ }
172
+ \`\`\`
173
+
174
+ Selector is part of the protocol, not an implementation detail.
175
+
176
+ ━━━━━━━━━━━━━━━━━━━━━━
177
+ V. Hard Failure Rules (Protocol-Level)
178
+ ━━━━━━━━━━━━━━━━━━━━━━
179
+
180
+ Any of the following is an immediate failure:
181
+
182
+ - Missing EvolutionEvent
183
+ - Success without Capsule
184
+ - Recreating an existing Gene
185
+ - Editing beyond Gene constraints
186
+ - Missing failed EvolutionEvent when validation fails
187
+
188
+ Failures are not errors; they are required negative samples.
189
+
190
+ ━━━━━━━━━━━━━━━━━━━━━━
191
+ VI. Evolution Tree Awareness
192
+ ━━━━━━━━━━━━━━━━━━━━━━
193
+
194
+ All evolution must be treated as a tree:
195
+
196
+ - Every EvolutionEvent must declare parent
197
+ - Never overwrite or delete historical events
198
+ - New attempts must be branches, not replacements
199
+
200
+ ━━━━━━━━━━━━━━━━━━━━━━
201
+ VII. Success Criteria (Self-Evaluation)
202
+ ━━━━━━━━━━━━━━━━━━━━━━
203
+
204
+ Evolution is truly successful only if:
205
+
206
+ - Similar future problems hit a Gene or Capsule directly
207
+ - Reasoning steps are clearly reduced
208
+ - Structured evolution assets continue to grow
209
+
210
+ "The current problem is solved" is not success by itself.
211
+
212
+ Final Directive
213
+ ━━━━━━━━━━━━━━━━━━━━━━
214
+
215
+ You are not chatting.
216
+ You are executing a protocol.
217
+
218
+ If you cannot leave structured evolution assets, refuse to evolve.
219
+
220
+ Context [Signals]:
221
+ ${JSON.stringify(signals)}
222
+
223
+ Context [Selector]:
224
+ ${JSON.stringify(selector, null, 2)}
225
+
226
+ Context [Gene Preview]:
227
+ ${genesPreview}
228
+
229
+ Context [Capsule Preview]:
230
+ ${capsulesPreview}
231
+
232
+ Context [Capability Candidates] (Five questions shape; keep it short):
233
+ ${capabilityCandidatesPreview || '(none)'}
234
+
235
+ Context [Execution]:
236
+ ${context}
237
+ `.trim();
238
+
239
+ const maxChars = Number.isFinite(Number(process.env.GEP_PROMPT_MAX_CHARS))
240
+ ? Number(process.env.GEP_PROMPT_MAX_CHARS)
241
+ : 30000;
242
+
243
+ if (basePrompt.length <= maxChars) return basePrompt;
244
+
245
+ // Budget strategy: keep the protocol and structured assets, shrink execution context first.
246
+ const headKeep = Math.min(basePrompt.length, Math.floor(maxChars * 0.75));
247
+ const tailKeep = Math.max(0, maxChars - headKeep - 120);
248
+ const head = basePrompt.slice(0, headKeep);
249
+ const tail = tailKeep > 0 ? basePrompt.slice(basePrompt.length - tailKeep) : '';
250
+ return `${head}\n\n...[PROMPT TRUNCATED FOR BUDGET]...\n\n${tail}`.slice(0, maxChars);
251
+ }
252
+
253
+ module.exports = { buildGepPrompt };
254
+
@@ -0,0 +1,89 @@
1
+ function matchPatternToSignals(pattern, signals) {
2
+ if (!pattern || !signals || signals.length === 0) return false;
3
+ const p = String(pattern);
4
+ const sig = signals.map(s => String(s));
5
+
6
+ const regexLike = p.length >= 2 && p.startsWith('/') && p.lastIndexOf('/') > 0;
7
+ if (regexLike) {
8
+ const lastSlash = p.lastIndexOf('/');
9
+ const body = p.slice(1, lastSlash);
10
+ const flags = p.slice(lastSlash + 1);
11
+ try {
12
+ const re = new RegExp(body, flags || 'i');
13
+ return sig.some(s => re.test(s));
14
+ } catch (e) {
15
+ // fallback to substring
16
+ }
17
+ }
18
+
19
+ const needle = p.toLowerCase();
20
+ return sig.some(s => s.toLowerCase().includes(needle));
21
+ }
22
+
23
+ function scoreGene(gene, signals) {
24
+ if (!gene || gene.type !== 'Gene') return 0;
25
+ const patterns = Array.isArray(gene.signals_match) ? gene.signals_match : [];
26
+ if (patterns.length === 0) return 0;
27
+ let score = 0;
28
+ for (const pat of patterns) {
29
+ if (matchPatternToSignals(pat, signals)) score += 1;
30
+ }
31
+ return score;
32
+ }
33
+
34
+ function selectGene(genes, signals) {
35
+ const scored = genes
36
+ .map(g => ({ gene: g, score: scoreGene(g, signals) }))
37
+ .filter(x => x.score > 0)
38
+ .sort((a, b) => b.score - a.score);
39
+
40
+ if (scored.length === 0) return { selected: null, alternatives: [] };
41
+ return {
42
+ selected: scored[0].gene,
43
+ alternatives: scored.slice(1, 4).map(x => x.gene),
44
+ };
45
+ }
46
+
47
+ function selectCapsule(capsules, signals) {
48
+ const scored = (capsules || [])
49
+ .map(c => {
50
+ const triggers = Array.isArray(c.trigger) ? c.trigger : [];
51
+ const score = triggers.reduce((acc, t) => (matchPatternToSignals(t, signals) ? acc + 1 : acc), 0);
52
+ return { capsule: c, score };
53
+ })
54
+ .filter(x => x.score > 0)
55
+ .sort((a, b) => b.score - a.score);
56
+ return scored.length ? scored[0].capsule : null;
57
+ }
58
+
59
+ function selectGeneAndCapsule({ genes, capsules, signals }) {
60
+ const { selected, alternatives } = selectGene(genes, signals);
61
+ const capsule = selectCapsule(capsules, signals);
62
+ const selector = buildSelectorDecision({ gene: selected, capsule, signals, alternatives });
63
+ return {
64
+ selectedGene: selected,
65
+ capsuleCandidates: capsule ? [capsule] : [],
66
+ selector,
67
+ };
68
+ }
69
+
70
+ function buildSelectorDecision({ gene, capsule, signals, alternatives }) {
71
+ const reason = [];
72
+ if (gene) reason.push('signals match gene.signals_match');
73
+ if (capsule) reason.push('capsule trigger matches signals');
74
+ if (!gene) reason.push('no matching gene found; new gene may be required');
75
+ if (signals && signals.length) reason.push(`signals: ${signals.join(', ')}`);
76
+ return {
77
+ selected: gene ? gene.id : null,
78
+ reason,
79
+ alternatives: Array.isArray(alternatives) ? alternatives.map(g => g.id) : [],
80
+ };
81
+ }
82
+
83
+ module.exports = {
84
+ selectGeneAndCapsule,
85
+ selectGene,
86
+ selectCapsule,
87
+ buildSelectorDecision,
88
+ };
89
+