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.
- package/LICENSE +21 -0
- package/README.md +184 -0
- package/bin/discord-read.js +228 -0
- package/bin/fleet-deploy.js +365 -0
- package/bin/lane-watchdog.js +232 -0
- package/bin/mesh-agent.js +714 -0
- package/bin/mesh-bridge.js +535 -0
- package/bin/mesh-deploy-listener.js +322 -0
- package/bin/mesh-deploy.js +1048 -0
- package/bin/mesh-health-publisher.js +247 -0
- package/bin/mesh-task-daemon.js +451 -0
- package/bin/mesh-tool-discord.js +293 -0
- package/bin/mesh.js +649 -0
- package/boot/manifest.yaml +187 -0
- package/cli.js +35 -0
- package/config/daemon.json.template +16 -0
- package/config/obsidian-sync.json.template +39 -0
- package/config/openclaw.json.template +124 -0
- package/config/transcript-sources.json.template +22 -0
- package/identity/AGENTS.md +201 -0
- package/identity/CLAUDE.md +64 -0
- package/identity/DELEGATION.md +304 -0
- package/identity/HEARTBEAT.md +163 -0
- package/identity/MEMORY_SPEC.md +368 -0
- package/identity/PRINCIPLES.md +81 -0
- package/identity/SOUL.md +48 -0
- package/identity/TOOLS.md +47 -0
- package/install.sh +895 -0
- package/lib/agent-activity.js +390 -0
- package/lib/kanban-io.js +352 -0
- package/lib/mesh-registry.js +194 -0
- package/lib/mesh-roles.js +13 -0
- package/lib/mesh-tasks.js +306 -0
- package/lib/nats-resolve.js +108 -0
- package/mission-control/README.md +36 -0
- package/mission-control/drizzle/0000_simple_silhouette.sql +62 -0
- package/mission-control/drizzle/meta/0000_snapshot.json +413 -0
- package/mission-control/drizzle/meta/_journal.json +13 -0
- package/mission-control/drizzle.config.ts +13 -0
- package/mission-control/eslint.config.mjs +18 -0
- package/mission-control/next.config.ts +7 -0
- package/mission-control/package-lock.json +10518 -0
- package/mission-control/package.json +49 -0
- package/mission-control/postcss.config.mjs +7 -0
- package/mission-control/public/file.svg +1 -0
- package/mission-control/public/globe.svg +1 -0
- package/mission-control/public/next.svg +1 -0
- package/mission-control/public/vercel.svg +1 -0
- package/mission-control/public/window.svg +1 -0
- package/mission-control/scripts/enrich-descriptions.js +193 -0
- package/mission-control/scripts/gen-chronology.js +102 -0
- package/mission-control/scripts/import-pipeline-v2.js +523 -0
- package/mission-control/scripts/import-pipeline.js +295 -0
- package/mission-control/src/app/api/activity/live/route.ts +27 -0
- package/mission-control/src/app/api/activity/route.ts +47 -0
- package/mission-control/src/app/api/burndown/route.ts +112 -0
- package/mission-control/src/app/api/critical-path/route.ts +159 -0
- package/mission-control/src/app/api/dependencies/route.ts +176 -0
- package/mission-control/src/app/api/memory/categories/route.ts +93 -0
- package/mission-control/src/app/api/memory/consolidate/route.ts +107 -0
- package/mission-control/src/app/api/memory/doc/route.ts +89 -0
- package/mission-control/src/app/api/memory/flush/route.ts +129 -0
- package/mission-control/src/app/api/memory/graph/route.ts +105 -0
- package/mission-control/src/app/api/memory/items/route.ts +86 -0
- package/mission-control/src/app/api/memory/list/route.ts +48 -0
- package/mission-control/src/app/api/memory/retrieve/route.ts +51 -0
- package/mission-control/src/app/api/memory/search/route.ts +143 -0
- package/mission-control/src/app/api/memory/sync/route.ts +23 -0
- package/mission-control/src/app/api/memory/wikilinks/route.ts +75 -0
- package/mission-control/src/app/api/mesh/events/route.ts +67 -0
- package/mission-control/src/app/api/mesh/nodes/route.ts +221 -0
- package/mission-control/src/app/api/mesh/tokens/route.ts +133 -0
- package/mission-control/src/app/api/projects/route.ts +102 -0
- package/mission-control/src/app/api/resolve-path/route.ts +92 -0
- package/mission-control/src/app/api/scheduler/tick/route.ts +38 -0
- package/mission-control/src/app/api/scheduler/waves/route.ts +54 -0
- package/mission-control/src/app/api/screenshot/route.ts +127 -0
- package/mission-control/src/app/api/settings/gateway/route.ts +92 -0
- package/mission-control/src/app/api/skills/[id]/health/route.ts +57 -0
- package/mission-control/src/app/api/skills/list/route.ts +41 -0
- package/mission-control/src/app/api/souls/[id]/evolution/route.ts +253 -0
- package/mission-control/src/app/api/souls/[id]/prompt/route.ts +205 -0
- package/mission-control/src/app/api/souls/[id]/propagate/route.ts +146 -0
- package/mission-control/src/app/api/souls/route.ts +174 -0
- package/mission-control/src/app/api/tasks/[id]/handoff/route.ts +115 -0
- package/mission-control/src/app/api/tasks/[id]/route.ts +266 -0
- package/mission-control/src/app/api/tasks/[id]/tree/route.ts +94 -0
- package/mission-control/src/app/api/tasks/route.ts +253 -0
- package/mission-control/src/app/api/tts/route.ts +47 -0
- package/mission-control/src/app/api/workspace/files/route.ts +88 -0
- package/mission-control/src/app/api/workspace/read/route.ts +73 -0
- package/mission-control/src/app/burndown/page.tsx +309 -0
- package/mission-control/src/app/calendar/page.tsx +839 -0
- package/mission-control/src/app/favicon.ico +0 -0
- package/mission-control/src/app/globals.css +67 -0
- package/mission-control/src/app/graph/page.tsx +352 -0
- package/mission-control/src/app/layout.tsx +35 -0
- package/mission-control/src/app/live/page.tsx +232 -0
- package/mission-control/src/app/memory/page.tsx +154 -0
- package/mission-control/src/app/mesh/page.tsx +457 -0
- package/mission-control/src/app/obsidian/page.tsx +252 -0
- package/mission-control/src/app/page.tsx +70 -0
- package/mission-control/src/app/roadmap/page.tsx +1757 -0
- package/mission-control/src/app/settings/page.tsx +260 -0
- package/mission-control/src/app/souls/page.tsx +573 -0
- package/mission-control/src/components/board/activity-timeline.tsx +96 -0
- package/mission-control/src/components/board/daily-board.tsx +373 -0
- package/mission-control/src/components/board/kanban-board.tsx +364 -0
- package/mission-control/src/components/board/kanban-column.tsx +105 -0
- package/mission-control/src/components/board/live-stream.tsx +116 -0
- package/mission-control/src/components/board/skill-health-card.tsx +128 -0
- package/mission-control/src/components/board/status-banner.tsx +124 -0
- package/mission-control/src/components/board/task-card.tsx +454 -0
- package/mission-control/src/components/board/unified-task-dialog.tsx +1043 -0
- package/mission-control/src/components/layout/resizable-layout.tsx +68 -0
- package/mission-control/src/components/layout/sidebar.tsx +90 -0
- package/mission-control/src/components/live/audio-spectrum.tsx +106 -0
- package/mission-control/src/components/live/chat-bubble.tsx +52 -0
- package/mission-control/src/components/live/chat-input.tsx +92 -0
- package/mission-control/src/components/memory/doc-reader.tsx +172 -0
- package/mission-control/src/components/memory/memory-list.tsx +169 -0
- package/mission-control/src/components/memory/search-bar.tsx +67 -0
- package/mission-control/src/components/memory/search-results.tsx +149 -0
- package/mission-control/src/components/obsidian/backlinks-panel.tsx +52 -0
- package/mission-control/src/components/obsidian/file-tree.tsx +186 -0
- package/mission-control/src/components/obsidian/local-graph.tsx +107 -0
- package/mission-control/src/components/obsidian/obsidian-graph.tsx +192 -0
- package/mission-control/src/components/obsidian/obsidian-reader.tsx +246 -0
- package/mission-control/src/lib/activity.ts +29 -0
- package/mission-control/src/lib/config.ts +21 -0
- package/mission-control/src/lib/db/index.ts +429 -0
- package/mission-control/src/lib/db/schema.ts +218 -0
- package/mission-control/src/lib/gateway-notify.ts +113 -0
- package/mission-control/src/lib/hooks.ts +536 -0
- package/mission-control/src/lib/memory/categories.ts +125 -0
- package/mission-control/src/lib/memory/entities.ts +482 -0
- package/mission-control/src/lib/memory/extract.ts +369 -0
- package/mission-control/src/lib/memory/retrieval.ts +281 -0
- package/mission-control/src/lib/memory/wikilinks.ts +147 -0
- package/mission-control/src/lib/nats.ts +126 -0
- package/mission-control/src/lib/parsers/clawvault-doc.ts +98 -0
- package/mission-control/src/lib/parsers/daily-log.ts +73 -0
- package/mission-control/src/lib/parsers/memory-md.ts +81 -0
- package/mission-control/src/lib/parsers/task-markdown.ts +459 -0
- package/mission-control/src/lib/parsers/transcript.ts +209 -0
- package/mission-control/src/lib/scheduler.ts +394 -0
- package/mission-control/src/lib/speech/use-speech-pipeline.ts +176 -0
- package/mission-control/src/lib/sync/memory.ts +224 -0
- package/mission-control/src/lib/sync/tasks.ts +271 -0
- package/mission-control/src/lib/tts/edge.ts +31 -0
- package/mission-control/src/lib/tts/google.ts +78 -0
- package/mission-control/src/lib/tts/index.ts +39 -0
- package/mission-control/src/lib/tts/types.ts +18 -0
- package/mission-control/tsconfig.json +42 -0
- package/obsidian-vault/.obsidian/app.json +10 -0
- package/obsidian-vault/.obsidian/community-plugins.json +8 -0
- package/obsidian-vault/.obsidian/graph.json +40 -0
- package/obsidian-vault/.obsidian/plugins/obsidian-local-rest-api/main.js +58769 -0
- package/obsidian-vault/.obsidian/plugins/obsidian-local-rest-api/manifest.json +10 -0
- package/obsidian-vault/.obsidian/plugins/obsidian-local-rest-api/styles.css +47 -0
- package/obsidian-vault/00-meta/.gitkeep +0 -0
- package/obsidian-vault/01-architecture/.gitkeep +0 -0
- package/obsidian-vault/02-smart-contracts/.gitkeep +0 -0
- package/obsidian-vault/03-backend/.gitkeep +0 -0
- package/obsidian-vault/04-mobile/.gitkeep +0 -0
- package/obsidian-vault/05-ar-mapping/.gitkeep +0 -0
- package/obsidian-vault/06-3d-assets/.gitkeep +0 -0
- package/obsidian-vault/07-sound-music/.gitkeep +0 -0
- package/obsidian-vault/08-lore/.gitkeep +0 -0
- package/obsidian-vault/09-quests-playthrough/.gitkeep +0 -0
- package/obsidian-vault/10-economy/.gitkeep +0 -0
- package/obsidian-vault/11-nft-assets/.gitkeep +0 -0
- package/obsidian-vault/12-nft-mechanics/.gitkeep +0 -0
- package/obsidian-vault/13-dao-guild-social/.gitkeep +0 -0
- package/obsidian-vault/14-game-progression/.gitkeep +0 -0
- package/obsidian-vault/15-analytics/.gitkeep +0 -0
- package/obsidian-vault/16-security/.gitkeep +0 -0
- package/obsidian-vault/17-devops/.gitkeep +0 -0
- package/obsidian-vault/18-marketplace/.gitkeep +0 -0
- package/obsidian-vault/19-decisions/.gitkeep +0 -0
- package/obsidian-vault/20-business-strategy/.gitkeep +0 -0
- package/obsidian-vault/21-legal-regulatory/.gitkeep +0 -0
- package/obsidian-vault/nodes/.gitkeep +0 -0
- package/openclaw.env.example +17 -0
- package/package.json +45 -0
- package/services/launchd/ai.openclaw.gateway.plist +59 -0
- package/services/launchd/ai.openclaw.lane-watchdog.plist +32 -0
- package/services/launchd/ai.openclaw.log-rotate.plist +28 -0
- package/services/launchd/ai.openclaw.memory-daemon.plist +36 -0
- package/services/launchd/ai.openclaw.mesh-agent.plist +38 -0
- package/services/launchd/ai.openclaw.mesh-bridge.plist +36 -0
- package/services/launchd/ai.openclaw.mesh-deploy-listener.plist +33 -0
- package/services/launchd/ai.openclaw.mesh-health-publisher.plist +29 -0
- package/services/launchd/ai.openclaw.mesh-task-daemon.plist +36 -0
- package/services/launchd/ai.openclaw.mesh-tool-discord.plist +36 -0
- package/services/launchd/ai.openclaw.mission-control.plist +41 -0
- package/services/service-manifest.json +13 -0
- package/services/systemd/openclaw-gateway.service +21 -0
- package/services/systemd/openclaw-lane-watchdog.service +21 -0
- package/services/systemd/openclaw-log-rotate.service +13 -0
- package/services/systemd/openclaw-log-rotate.timer +9 -0
- package/services/systemd/openclaw-memory-daemon.service +21 -0
- package/services/systemd/openclaw-mesh-agent.service +19 -0
- package/services/systemd/openclaw-mesh-bridge.service +21 -0
- package/services/systemd/openclaw-mesh-deploy-listener.service +23 -0
- package/services/systemd/openclaw-mesh-health-publisher.service +21 -0
- package/services/systemd/openclaw-mesh-task-daemon.service +21 -0
- package/services/systemd/openclaw-mesh-tool-discord.service +21 -0
- package/services/systemd/openclaw-mission-control.service +22 -0
- package/skills/1password/.clawhub/origin.json +7 -0
- package/skills/1password/SKILL.md +63 -0
- package/skills/1password/references/cli-examples.md +29 -0
- package/skills/1password/references/get-started.md +17 -0
- package/skills/acquisition-channel-advisor/SKILL.md +643 -0
- package/skills/acquisition-channel-advisor/examples/conversation-flow.md +531 -0
- package/skills/agent-browser/.clawhub/origin.json +7 -0
- package/skills/agent-browser/CONTRIBUTING.md +63 -0
- package/skills/agent-browser/SKILL.md +338 -0
- package/skills/agentic-compass/.clawhub/origin.json +7 -0
- package/skills/agentic-compass/README.md +96 -0
- package/skills/agentic-compass/SKILL.md +112 -0
- package/skills/agentic-compass/references/README.md +5 -0
- package/skills/agentic-compass/scripts/agentic-compass.py +196 -0
- package/skills/arcane-dev-ops/SKILL.md +61 -0
- package/skills/arcane-dev-ops/references/checklist.md +22 -0
- package/skills/arcane-dev-ops/references/validation-cases.md +11 -0
- package/skills/arcane-dev-ops/scripts/prepush_check.sh +41 -0
- package/skills/auto-updater/.clawhub/origin.json +7 -0
- package/skills/auto-updater/SKILL.md +158 -0
- package/skills/auto-updater/references/agent-guide.md +152 -0
- package/skills/auto-updater/references/summary-examples.md +109 -0
- package/skills/business-health-diagnostic/SKILL.md +782 -0
- package/skills/byterover/.clawhub/origin.json +7 -0
- package/skills/byterover/SKILL.md +105 -0
- package/skills/byterover/TROUBLESHOOTING.md +50 -0
- package/skills/byterover/WORKFLOWS.md +229 -0
- package/skills/capability-evolver/.clawhub/origin.json +7 -0
- package/skills/capability-evolver/CONTRIBUTING.md +11 -0
- package/skills/capability-evolver/README.md +157 -0
- package/skills/capability-evolver/README.zh-CN.md +112 -0
- package/skills/capability-evolver/SKILL.md +93 -0
- package/skills/capability-evolver/assets/gep/capsules.json +5 -0
- package/skills/capability-evolver/assets/gep/genes.json +104 -0
- package/skills/capability-evolver/index.js +59 -0
- package/skills/capability-evolver/package.json +22 -0
- package/skills/capability-evolver/scripts/analyze_by_skill.js +121 -0
- package/skills/capability-evolver/scripts/build_public.js +350 -0
- package/skills/capability-evolver/scripts/export_history.js +98 -0
- package/skills/capability-evolver/scripts/extract_log.js +85 -0
- package/skills/capability-evolver/scripts/generate_history.js +75 -0
- package/skills/capability-evolver/scripts/human_report.js +147 -0
- package/skills/capability-evolver/scripts/publish_public.js +516 -0
- package/skills/capability-evolver/scripts/suggest_version.js +89 -0
- package/skills/capability-evolver/src/evolve.js +594 -0
- package/skills/capability-evolver/src/gep/assetStore.js +204 -0
- package/skills/capability-evolver/src/gep/candidates.js +134 -0
- package/skills/capability-evolver/src/gep/paths.js +23 -0
- package/skills/capability-evolver/src/gep/prompt.js +254 -0
- package/skills/capability-evolver/src/gep/selector.js +89 -0
- package/skills/capability-evolver/src/gep/signals.js +27 -0
- package/skills/cc-godmode/.clawhub/origin.json +7 -0
- package/skills/cc-godmode/CHANGELOG.md +66 -0
- package/skills/cc-godmode/README.md +293 -0
- package/skills/cc-godmode/SKILL.md +242 -0
- package/skills/cc-godmode/docs/AGENTS.md +332 -0
- package/skills/cc-godmode/docs/MIGRATION.md +206 -0
- package/skills/cc-godmode/docs/TROUBLESHOOTING.md +357 -0
- package/skills/cc-godmode/docs/WORKFLOWS.md +329 -0
- package/skills/cc-godmode/references/agents.md +433 -0
- package/skills/cc-godmode/scripts/build-skill.js +232 -0
- package/skills/clawdbot-filesystem/.clawhub/origin.json +7 -0
- package/skills/clawdbot-filesystem/LICENSE.md +21 -0
- package/skills/clawdbot-filesystem/README.md +322 -0
- package/skills/clawdbot-filesystem/SKILL.md +219 -0
- package/skills/clawdbot-filesystem/config.json +41 -0
- package/skills/clawdbot-filesystem/package.json +69 -0
- package/skills/clawdbot-security-check/.clawhub/origin.json +7 -0
- package/skills/clawdbot-security-check/README.md +168 -0
- package/skills/clawdbot-security-check/SKILL.md +145 -0
- package/skills/clawdbot-security-check/references/audit-checks.md +521 -0
- package/skills/clawdbot-security-check/skill.json +42 -0
- package/skills/clawddocs/.clawhub/origin.json +7 -0
- package/skills/clawddocs/SKILL.md +176 -0
- package/skills/clawddocs/package.json +9 -0
- package/skills/clawddocs/scripts/build-index.sh +17 -0
- package/skills/clawddocs/scripts/cache.sh +13 -0
- package/skills/clawddocs/scripts/fetch-doc.sh +7 -0
- package/skills/clawddocs/scripts/recent.sh +5 -0
- package/skills/clawddocs/scripts/search.sh +8 -0
- package/skills/clawddocs/scripts/sitemap.sh +23 -0
- package/skills/clawddocs/scripts/track-changes.sh +16 -0
- package/skills/clawddocs/snippets/common-configs.md +69 -0
- package/skills/clawguard/.clawhub/origin.json +7 -0
- package/skills/clawguard/SKILL.md +137 -0
- package/skills/company-research/SKILL.md +393 -0
- package/skills/company-research/examples/sample.md +164 -0
- package/skills/company-research/template.md +60 -0
- package/skills/crypto-price/.clawhub/origin.json +7 -0
- package/skills/crypto-price/ARCHITECTURE.md +437 -0
- package/skills/crypto-price/README.md +194 -0
- package/skills/crypto-price/SKILL.md +61 -0
- package/skills/crypto-price/requirements.txt +1 -0
- package/skills/crypto-price/scripts/get_price_chart.py +988 -0
- package/skills/customer-journey-map/SKILL.md +343 -0
- package/skills/customer-journey-map/examples/sample.md +33 -0
- package/skills/customer-journey-map/template.md +28 -0
- package/skills/customer-journey-mapping-workshop/SKILL.md +522 -0
- package/skills/deep-research/.clawhub/origin.json +7 -0
- package/skills/deep-research/SKILL.md +93 -0
- package/skills/deep-research/rules/logic.md +32 -0
- package/skills/discord-telegram-triage/SKILL.md +59 -0
- package/skills/discord-telegram-triage/references/discord-runbook.md +28 -0
- package/skills/discord-telegram-triage/references/validation-cases.md +11 -0
- package/skills/discord-telegram-triage/scripts/triage_snapshot.sh +23 -0
- package/skills/discovery-interview-prep/SKILL.md +408 -0
- package/skills/discovery-process/SKILL.md +503 -0
- package/skills/discovery-process/examples/sample.md +60 -0
- package/skills/discovery-process/template.md +39 -0
- package/skills/dist/arcane-dev-ops.skill +0 -0
- package/skills/dist/discord-telegram-triage.skill +0 -0
- package/skills/dist/founder-brief-summarizer.skill +0 -0
- package/skills/epic-breakdown-advisor/SKILL.md +664 -0
- package/skills/epic-hypothesis/SKILL.md +285 -0
- package/skills/epic-hypothesis/examples/sample.md +104 -0
- package/skills/epic-hypothesis/template.md +30 -0
- package/skills/excel/.clawhub/origin.json +7 -0
- package/skills/excel/SKILL.md +332 -0
- package/skills/excel/scripts/excel.py +1120 -0
- package/skills/fast-browser-use/.clawhub/origin.json +7 -0
- package/skills/fast-browser-use/CODEBUDDY.md +142 -0
- package/skills/fast-browser-use/Cargo.toml +77 -0
- package/skills/fast-browser-use/README.md +62 -0
- package/skills/fast-browser-use/SKILL.md +217 -0
- package/skills/fast-browser-use/package-lock.json +28 -0
- package/skills/fast-browser-use/package.json +8 -0
- package/skills/fast-browser-use/rustfmt.toml +10 -0
- package/skills/fast-browser-use/src/bin/cli.rs +373 -0
- package/skills/fast-browser-use/src/bin/mcp_server.rs +203 -0
- package/skills/fast-browser-use/src/browser/config.rs +136 -0
- package/skills/fast-browser-use/src/browser/debug.rs +16 -0
- package/skills/fast-browser-use/src/browser/mod.rs +61 -0
- package/skills/fast-browser-use/src/browser/session.rs +478 -0
- package/skills/fast-browser-use/src/dom/element.rs +442 -0
- package/skills/fast-browser-use/src/dom/extract_dom.js +849 -0
- package/skills/fast-browser-use/src/dom/mod.rs +14 -0
- package/skills/fast-browser-use/src/dom/tree.rs +296 -0
- package/skills/fast-browser-use/src/dom/yaml.rs +149 -0
- package/skills/fast-browser-use/src/error.rs +115 -0
- package/skills/fast-browser-use/src/lib.rs +17 -0
- package/skills/fast-browser-use/src/mcp/handler.rs +63 -0
- package/skills/fast-browser-use/src/mcp/mod.rs +81 -0
- package/skills/fast-browser-use/src/tools/Readability.min.js +1480 -0
- package/skills/fast-browser-use/src/tools/annotate.rs +165 -0
- package/skills/fast-browser-use/src/tools/click.rs +84 -0
- package/skills/fast-browser-use/src/tools/close.rs +35 -0
- package/skills/fast-browser-use/src/tools/close_tab.rs +45 -0
- package/skills/fast-browser-use/src/tools/convert_to_markdown.js +117 -0
- package/skills/fast-browser-use/src/tools/cookies.rs +58 -0
- package/skills/fast-browser-use/src/tools/debug.rs +44 -0
- package/skills/fast-browser-use/src/tools/evaluate.rs +40 -0
- package/skills/fast-browser-use/src/tools/extract.rs +66 -0
- package/skills/fast-browser-use/src/tools/go_back.rs +35 -0
- package/skills/fast-browser-use/src/tools/go_forward.rs +35 -0
- package/skills/fast-browser-use/src/tools/hover.js +33 -0
- package/skills/fast-browser-use/src/tools/hover.rs +97 -0
- package/skills/fast-browser-use/src/tools/html_to_markdown.rs +99 -0
- package/skills/fast-browser-use/src/tools/input.rs +93 -0
- package/skills/fast-browser-use/src/tools/local_storage.rs +159 -0
- package/skills/fast-browser-use/src/tools/markdown.rs +181 -0
- package/skills/fast-browser-use/src/tools/mod.rs +326 -0
- package/skills/fast-browser-use/src/tools/navigate.rs +55 -0
- package/skills/fast-browser-use/src/tools/new_tab.rs +60 -0
- package/skills/fast-browser-use/src/tools/press_key.rs +78 -0
- package/skills/fast-browser-use/src/tools/read_links.rs +59 -0
- package/skills/fast-browser-use/src/tools/readability_script.rs +8 -0
- package/skills/fast-browser-use/src/tools/screenshot.rs +47 -0
- package/skills/fast-browser-use/src/tools/scroll.js +22 -0
- package/skills/fast-browser-use/src/tools/scroll.rs +95 -0
- package/skills/fast-browser-use/src/tools/select.js +23 -0
- package/skills/fast-browser-use/src/tools/select.rs +129 -0
- package/skills/fast-browser-use/src/tools/sitemap.rs +426 -0
- package/skills/fast-browser-use/src/tools/snapshot.rs +324 -0
- package/skills/fast-browser-use/src/tools/switch_tab.rs +69 -0
- package/skills/fast-browser-use/src/tools/tab_list.rs +76 -0
- package/skills/fast-browser-use/src/tools/utils.rs +92 -0
- package/skills/fast-browser-use/src/tools/wait.rs +53 -0
- package/skills/fast-browser-use/test_auth.json +3 -0
- package/skills/fast-browser-use/test_state.json +6 -0
- package/skills/fast-browser-use/tests/browser_tools_integration.rs +233 -0
- package/skills/fast-browser-use/tests/cli_recipes_integration.rs +112 -0
- package/skills/fast-browser-use/tests/cookies_integration.rs +56 -0
- package/skills/fast-browser-use/tests/debug_integration.rs +83 -0
- package/skills/fast-browser-use/tests/dom_integration.rs +170 -0
- package/skills/fast-browser-use/tests/local_storage_integration.rs +75 -0
- package/skills/fast-browser-use/tests/markdown_integration.rs +448 -0
- package/skills/fast-browser-use/tests/navigation_integration.rs +241 -0
- package/skills/fast-browser-use/tests/sitemap_integration.rs +326 -0
- package/skills/fast-browser-use/tests/tab_management_integration.rs +300 -0
- package/skills/feature-investment-advisor/SKILL.md +639 -0
- package/skills/feature-investment-advisor/examples/conversation-flow.md +538 -0
- package/skills/finance-based-pricing-advisor/SKILL.md +763 -0
- package/skills/finance-metrics-quickref/SKILL.md +309 -0
- package/skills/find-skills/.clawhub/origin.json +7 -0
- package/skills/find-skills/SKILL.md +143 -0
- package/skills/flavor-text-writer/SKILL.md +27 -0
- package/skills/founder-brief-summarizer/SKILL.md +52 -0
- package/skills/founder-brief-summarizer/references/response-templates.md +15 -0
- package/skills/founder-brief-summarizer/references/validation-cases.md +11 -0
- package/skills/founder-brief-summarizer/scripts/brief_template.sh +28 -0
- package/skills/frontend-design/.clawhub/origin.json +7 -0
- package/skills/frontend-design/LICENSE.txt +190 -0
- package/skills/frontend-design/SKILL.md +53 -0
- package/skills/gemini/.clawhub/origin.json +7 -0
- package/skills/gemini/SKILL.md +33 -0
- package/skills/gemini-deep-research/.clawhub/origin.json +7 -0
- package/skills/gemini-deep-research/SKILL.md +78 -0
- package/skills/gemini-deep-research/scripts/deep_research.py +176 -0
- package/skills/git-essentials/.clawhub/origin.json +7 -0
- package/skills/git-essentials/SKILL.md +239 -0
- package/skills/git-essentials/references/advanced.md +211 -0
- package/skills/github/.clawhub/origin.json +7 -0
- package/skills/github/SKILL.md +57 -0
- package/skills/google-drive/.clawhub/origin.json +7 -0
- package/skills/google-drive/LICENSE.txt +21 -0
- package/skills/google-drive/SKILL.md +320 -0
- package/skills/growth-loop/SKILL.md +270 -0
- package/skills/growth-loop/_meta.json +9 -0
- package/skills/growth-loop/references/diagnosis-framework.md +84 -0
- package/skills/growth-loop/references/platform-benchmarks.md +79 -0
- package/skills/growth-loop/scripts/init-campaign.sh +274 -0
- package/skills/humanize-ai-text/.clawhub/origin.json +7 -0
- package/skills/humanize-ai-text/SKILL.md +192 -0
- package/skills/humanize-ai-text/scripts/compare.py +58 -0
- package/skills/humanize-ai-text/scripts/detect.py +160 -0
- package/skills/humanize-ai-text/scripts/patterns.json +191 -0
- package/skills/humanize-ai-text/scripts/transform.py +127 -0
- package/skills/humanizer/.clawhub/origin.json +7 -0
- package/skills/humanizer/README.md +82 -0
- package/skills/humanizer/SKILL.md +443 -0
- package/skills/jobs-to-be-done/SKILL.md +378 -0
- package/skills/jobs-to-be-done/examples/sample.md +80 -0
- package/skills/jobs-to-be-done/template.md +65 -0
- package/skills/lean-ux-canvas/SKILL.md +561 -0
- package/skills/lean-ux-canvas/examples/sample.md +88 -0
- package/skills/lean-ux-canvas/template.md +32 -0
- package/skills/markdown-formatter/.clawhub/origin.json +7 -0
- package/skills/markdown-formatter/README.md +137 -0
- package/skills/markdown-formatter/SKILL.md +369 -0
- package/skills/markdown-formatter/config.json +20 -0
- package/skills/markdown-formatter/index.js +439 -0
- package/skills/markdown-formatter/package.json +23 -0
- package/skills/markdown-formatter/test.js +23 -0
- package/skills/marketing-mode/.clawhub/origin.json +7 -0
- package/skills/marketing-mode/README.md +49 -0
- package/skills/marketing-mode/SKILL.md +703 -0
- package/skills/marketing-mode/mode-prompt.md +39 -0
- package/skills/marketing-mode/skill.json +51 -0
- package/skills/memory-hygiene/.clawhub/origin.json +7 -0
- package/skills/memory-hygiene/SKILL.md +91 -0
- package/skills/memory-setup/.clawhub/origin.json +7 -0
- package/skills/memory-setup/SKILL.md +180 -0
- package/skills/memorylayer/.clawhub/origin.json +7 -0
- package/skills/memorylayer/README.md +197 -0
- package/skills/memorylayer/SKILL.md +227 -0
- package/skills/memorylayer/examples/agent-integration.js +145 -0
- package/skills/memorylayer/examples/basic-usage.js +87 -0
- package/skills/memorylayer/examples/token-savings-demo.js +183 -0
- package/skills/memorylayer/index.js +115 -0
- package/skills/memorylayer/package-lock.json +295 -0
- package/skills/memorylayer/package.json +27 -0
- package/skills/memorylayer/python/memorylayer_skill.py +230 -0
- package/skills/memorylayer/python/requirements.txt +7 -0
- package/skills/mesh/SKILL.md +184 -0
- package/skills/model-usage/.clawhub/origin.json +7 -0
- package/skills/model-usage/SKILL.md +54 -0
- package/skills/model-usage/references/codexbar-cli.md +28 -0
- package/skills/model-usage/scripts/model_usage.py +310 -0
- package/skills/moltbook-interact/.clawhub/origin.json +7 -0
- package/skills/moltbook-interact/INSTALL.md +139 -0
- package/skills/moltbook-interact/README.md +198 -0
- package/skills/moltbook-interact/SKILL.md +72 -0
- package/skills/moltbook-interact/references/api.md +106 -0
- package/skills/moltbook-interact/scripts/moltbook.sh +142 -0
- package/skills/moltbook-registry/.clawhub/origin.json +7 -0
- package/skills/moltbook-registry/README.md +26 -0
- package/skills/moltbook-registry/SKILL.md +82 -0
- package/skills/moltbook-registry/index.js +180 -0
- package/skills/moltbook-registry/package.json +11 -0
- package/skills/mythril-scanner/SKILL.md +27 -0
- package/skills/n8n/.clawhub/origin.json +7 -0
- package/skills/n8n/SKILL.md +141 -0
- package/skills/n8n/references/api.md +156 -0
- package/skills/n8n/scripts/n8n_api.py +158 -0
- package/skills/n8n-workflow-automation/.clawhub/origin.json +7 -0
- package/skills/n8n-workflow-automation/SKILL.md +103 -0
- package/skills/n8n-workflow-automation/assets/runbook-template.md +32 -0
- package/skills/narrative-designer/SKILL.md +27 -0
- package/skills/ontology/.clawhub/origin.json +7 -0
- package/skills/ontology/SKILL.md +236 -0
- package/skills/ontology/references/queries.md +211 -0
- package/skills/ontology/references/schema.md +322 -0
- package/skills/ontology/scripts/ontology.py +374 -0
- package/skills/openai-image-gen/.clawhub/origin.json +7 -0
- package/skills/openai-image-gen/SKILL.md +45 -0
- package/skills/openai-image-gen/scripts/gen.py +227 -0
- package/skills/openclaw-agent-optimize/.clawhub/origin.json +7 -0
- package/skills/openclaw-agent-optimize/SKILL.md +33 -0
- package/skills/openclaw-agent-optimize/references/agent-orchestration.md +20 -0
- package/skills/openclaw-agent-optimize/references/context-management.md +15 -0
- package/skills/openclaw-agent-optimize/references/continuous-learning.md +14 -0
- package/skills/openclaw-agent-optimize/references/cron-optimization.md +16 -0
- package/skills/openclaw-agent-optimize/references/memory-patterns.md +14 -0
- package/skills/openclaw-agent-optimize/references/model-selection.md +18 -0
- package/skills/openclaw-skill-scanner/.clawhub/origin.json +7 -0
- package/skills/openclaw-skill-scanner/SKILL.md +88 -0
- package/skills/openclaw-skill-scanner/install-hook.sh +294 -0
- package/skills/openclaw-skill-scanner/report-template.md +53 -0
- package/skills/openclaw-skill-scanner/scanner.py +929 -0
- package/skills/openclaw-skill-scanner/whitelist.json +18 -0
- package/skills/opportunity-solution-tree/SKILL.md +428 -0
- package/skills/opportunity-solution-tree/examples/sample.md +104 -0
- package/skills/opportunity-solution-tree/template.md +33 -0
- package/skills/pdf/.clawhub/origin.json +7 -0
- package/skills/pdf/SKILL.md +304 -0
- package/skills/pestel-analysis/SKILL.md +384 -0
- package/skills/pestel-analysis/examples/sample.md +143 -0
- package/skills/pestel-analysis/template.md +53 -0
- package/skills/pol-probe/SKILL.md +217 -0
- package/skills/pol-probe/examples/sample.md +136 -0
- package/skills/pol-probe/template.md +59 -0
- package/skills/pol-probe-advisor/SKILL.md +492 -0
- package/skills/positioning-statement/SKILL.md +229 -0
- package/skills/positioning-statement/examples/sample.md +51 -0
- package/skills/positioning-statement/template.md +25 -0
- package/skills/positioning-workshop/SKILL.md +424 -0
- package/skills/prd-development/SKILL.md +654 -0
- package/skills/prd-development/examples/sample.md +43 -0
- package/skills/prd-development/template.md +55 -0
- package/skills/press-release/SKILL.md +277 -0
- package/skills/press-release/examples/sample.md +73 -0
- package/skills/press-release/template.md +39 -0
- package/skills/prioritization-advisor/SKILL.md +451 -0
- package/skills/proactive-messages/.clawhub/origin.json +7 -0
- package/skills/proactive-messages/SKILL.md +91 -0
- package/skills/problem-framing-canvas/SKILL.md +466 -0
- package/skills/problem-framing-canvas/examples/sample.md +58 -0
- package/skills/problem-framing-canvas/template.md +22 -0
- package/skills/problem-statement/SKILL.md +255 -0
- package/skills/problem-statement/examples/sample.md +82 -0
- package/skills/problem-statement/template.md +37 -0
- package/skills/product-strategy-session/SKILL.md +434 -0
- package/skills/product-strategy-session/examples/sample.md +67 -0
- package/skills/product-strategy-session/template.md +38 -0
- package/skills/prompt-guard/.clawhub/origin.json +7 -0
- package/skills/prompt-guard/ARCHITECTURE.md +364 -0
- package/skills/prompt-guard/CHANGELOG.md +200 -0
- package/skills/prompt-guard/README.md +215 -0
- package/skills/prompt-guard/SECURITY.md +66 -0
- package/skills/prompt-guard/SKILL.md +174 -0
- package/skills/prompt-guard/blog/how-i-secured-my-ai-agent.md +185 -0
- package/skills/prompt-guard/config.example.yaml +56 -0
- package/skills/prompt-guard/references/detection-patterns.md +298 -0
- package/skills/prompt-guard/requirements.txt +1 -0
- package/skills/prompt-guard/scripts/analyze_log.py +224 -0
- package/skills/prompt-guard/scripts/audit.py +344 -0
- package/skills/prompt-guard/scripts/detect.py +1587 -0
- package/skills/prompt-guard/scripts/hivefence.py +345 -0
- package/skills/proto-persona/SKILL.md +336 -0
- package/skills/proto-persona/examples/sample.md +97 -0
- package/skills/proto-persona/template.md +45 -0
- package/skills/recommendation-canvas/SKILL.md +382 -0
- package/skills/recommendation-canvas/examples/sample.md +94 -0
- package/skills/recommendation-canvas/template.md +86 -0
- package/skills/refactor-suggest/.clawhub/origin.json +7 -0
- package/skills/refactor-suggest/SKILL.md +94 -0
- package/skills/roadmap-planning/SKILL.md +506 -0
- package/skills/roadmap-planning/examples/sample.md +62 -0
- package/skills/roadmap-planning/template.md +30 -0
- package/skills/saas-economics-efficiency-metrics/SKILL.md +694 -0
- package/skills/saas-economics-efficiency-metrics/examples/cash-trap.md +365 -0
- package/skills/saas-economics-efficiency-metrics/examples/healthy-unit-economics.md +279 -0
- package/skills/saas-economics-efficiency-metrics/template.md +263 -0
- package/skills/saas-revenue-growth-metrics/SKILL.md +629 -0
- package/skills/saas-revenue-growth-metrics/examples/healthy-saas.md +131 -0
- package/skills/saas-revenue-growth-metrics/examples/warning-signs.md +229 -0
- package/skills/saas-revenue-growth-metrics/template.md +192 -0
- package/skills/save-money/.clawhub/origin.json +7 -0
- package/skills/save-money/SKILL.md +173 -0
- package/skills/scripts/golden_skills_v3.sh +32 -0
- package/skills/search/.clawhub/origin.json +7 -0
- package/skills/search/SKILL.md +18 -0
- package/skills/search/skill.json +1 -0
- package/skills/second-brain/.clawhub/origin.json +7 -0
- package/skills/second-brain/SKILL.md +278 -0
- package/skills/second-brain/scripts/ensue-api.sh +37 -0
- package/skills/self-improving-agent/.clawhub/origin.json +7 -0
- package/skills/self-improving-agent/.learnings/ERRORS.md +5 -0
- package/skills/self-improving-agent/.learnings/FEATURE_REQUESTS.md +5 -0
- package/skills/self-improving-agent/.learnings/LEARNINGS.md +5 -0
- package/skills/self-improving-agent/SKILL.md +130 -0
- package/skills/self-improving-agent/assets/LEARNINGS.md +45 -0
- package/skills/self-improving-agent/assets/SKILL-TEMPLATE.md +177 -0
- package/skills/self-improving-agent/hooks/openclaw/HOOK.md +23 -0
- package/skills/self-improving-agent/hooks/openclaw/handler.js +56 -0
- package/skills/self-improving-agent/hooks/openclaw/handler.ts +62 -0
- package/skills/self-improving-agent/references/examples.md +374 -0
- package/skills/self-improving-agent/references/hooks-setup.md +223 -0
- package/skills/self-improving-agent/references/openclaw-integration.md +248 -0
- package/skills/self-improving-agent/references/templates.md +480 -0
- package/skills/self-improving-agent/scripts/activator.sh +20 -0
- package/skills/self-improving-agent/scripts/error-detector.sh +55 -0
- package/skills/self-improving-agent/scripts/extract-skill.sh +203 -0
- package/skills/self-improving-agent-1-0-2/.clawhub/origin.json +7 -0
- package/skills/self-improving-agent-1-0-2/SKILL.md +562 -0
- package/skills/self-improving-agent-1-0-2/assets/LEARNINGS.md +45 -0
- package/skills/self-improving-agent-1-0-2/assets/SKILL-TEMPLATE.md +182 -0
- package/skills/self-improving-agent-1-0-2/references/clawdbot-integration.md +311 -0
- package/skills/self-improving-agent-1-0-2/references/examples.md +374 -0
- package/skills/self-improving-agent-1-0-2/references/hooks-setup.md +223 -0
- package/skills/self-improving-agent-1-0-2/scripts/activator.sh +20 -0
- package/skills/self-improving-agent-1-0-2/scripts/error-detector.sh +55 -0
- package/skills/self-improving-agent-1-0-2/scripts/extract-skill.sh +203 -0
- package/skills/self-love-confidence/.clawhub/origin.json +7 -0
- package/skills/self-love-confidence/SKILL.md +79 -0
- package/skills/self-reflection/.clawhub/origin.json +7 -0
- package/skills/self-reflection/README.md +292 -0
- package/skills/self-reflection/SKILL.md +110 -0
- package/skills/self-reflection/self-reflection.example.json +6 -0
- package/skills/slither-analyzer/SKILL.md +27 -0
- package/skills/solidity-audit/SKILL.md +27 -0
- package/skills/soulcraft/.clawhub/origin.json +7 -0
- package/skills/soulcraft/README.md +123 -0
- package/skills/soulcraft/SKILL.md +340 -0
- package/skills/soulcraft/references/question-bank.md +154 -0
- package/skills/soulcraft/references/soul-examples.md +207 -0
- package/skills/soulcraft/research/RESEARCH_REPORT.md +317 -0
- package/skills/spotify-player/.clawhub/origin.json +7 -0
- package/skills/spotify-player/SKILL.md +44 -0
- package/skills/storyboard/SKILL.md +259 -0
- package/skills/storyboard/examples/sample.md +71 -0
- package/skills/storyboard/template.md +41 -0
- package/skills/summarize/.clawhub/origin.json +7 -0
- package/skills/summarize/SKILL.md +59 -0
- package/skills/superdesign/.clawhub/origin.json +7 -0
- package/skills/superdesign/SKILL.md +224 -0
- package/skills/tam-sam-som-calculator/SKILL.md +399 -0
- package/skills/tam-sam-som-calculator/examples/sample.md +142 -0
- package/skills/tam-sam-som-calculator/scripts/market-sizing.py +95 -0
- package/skills/tam-sam-som-calculator/template.md +35 -0
- package/skills/tavily-search/.clawhub/origin.json +7 -0
- package/skills/tavily-search/SKILL.md +49 -0
- package/skills/tavily-search/scripts/extract.mjs +59 -0
- package/skills/tavily-search/scripts/search.mjs +101 -0
- package/skills/twitter/SKILL.md +74 -0
- package/skills/twitter/_meta.json +9 -0
- package/skills/twitter/references/validation-cases.md +53 -0
- package/skills/twitter/scripts/twitter.sh +421 -0
- package/skills/ui-ux-pro-max/.clawhub/origin.json +7 -0
- package/skills/ui-ux-pro-max/SKILL.md +54 -0
- package/skills/ui-ux-pro-max/assets/data/charts.csv +26 -0
- package/skills/ui-ux-pro-max/assets/data/colors.csv +97 -0
- package/skills/ui-ux-pro-max/assets/data/icons.csv +101 -0
- package/skills/ui-ux-pro-max/assets/data/landing.csv +31 -0
- package/skills/ui-ux-pro-max/assets/data/products.csv +97 -0
- package/skills/ui-ux-pro-max/assets/data/react-performance.csv +45 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/astro.csv +54 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/flutter.csv +53 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/html-tailwind.csv +56 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/jetpack-compose.csv +53 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nextjs.csv +53 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nuxt-ui.csv +51 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nuxtjs.csv +59 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/react-native.csv +52 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/react.csv +54 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/shadcn.csv +61 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/svelte.csv +54 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/swiftui.csv +51 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/vue.csv +50 -0
- package/skills/ui-ux-pro-max/assets/data/styles.csv +68 -0
- package/skills/ui-ux-pro-max/assets/data/typography.csv +58 -0
- package/skills/ui-ux-pro-max/assets/data/ui-reasoning.csv +101 -0
- package/skills/ui-ux-pro-max/assets/data/ux-guidelines.csv +100 -0
- package/skills/ui-ux-pro-max/assets/data/web-interface.csv +31 -0
- package/skills/ui-ux-pro-max/references/upstream-README.md +488 -0
- package/skills/ui-ux-pro-max/references/upstream-skill-content.md +288 -0
- package/skills/ui-ux-pro-max/scripts/__init__.py +0 -0
- package/skills/ui-ux-pro-max/scripts/core.py +253 -0
- package/skills/ui-ux-pro-max/scripts/design_system.py +1071 -0
- package/skills/ui-ux-pro-max/scripts/search.py +111 -0
- package/skills/user-story/SKILL.md +272 -0
- package/skills/user-story/examples/sample.md +110 -0
- package/skills/user-story/scripts/user-story-template.py +65 -0
- package/skills/user-story/template.md +32 -0
- package/skills/user-story-mapping/SKILL.md +296 -0
- package/skills/user-story-mapping/examples/sample.md +77 -0
- package/skills/user-story-mapping/template.md +41 -0
- package/skills/user-story-mapping-workshop/SKILL.md +485 -0
- package/skills/user-story-mapping-workshop/template.md +28 -0
- package/skills/user-story-splitting/SKILL.md +313 -0
- package/skills/user-story-splitting/examples/sample.md +147 -0
- package/skills/user-story-splitting/template.md +37 -0
- package/skills/wacli/.clawhub/origin.json +7 -0
- package/skills/wacli/SKILL.md +53 -0
- package/skills/web-search/.clawhub/origin.json +7 -0
- package/skills/web-search/SKILL.md +151 -0
- package/skills/web-search/references/api-details.md +207 -0
- package/skills/web-search/scripts/search.py +576 -0
- package/skills/workshop-facilitation/SKILL.md +88 -0
- package/skills/world-builder/SKILL.md +27 -0
- package/souls/blockchain-auditor/PRINCIPLES.md +75 -0
- package/souls/blockchain-auditor/SOUL.md +56 -0
- package/souls/blockchain-auditor/capabilities.json +33 -0
- package/souls/blockchain-auditor/evolution/capsules.json +4 -0
- package/souls/blockchain-auditor/evolution/events.jsonl +1 -0
- package/souls/blockchain-auditor/evolution/genes.json +62 -0
- package/souls/daedalus/PRINCIPLES.md +78 -0
- package/souls/daedalus/SOUL.md +48 -0
- package/souls/daedalus/capabilities.json +46 -0
- package/souls/identity-architect/PRINCIPLES.md +83 -0
- package/souls/identity-architect/SOUL.md +66 -0
- package/souls/identity-architect/capabilities.json +38 -0
- package/souls/identity-architect/evolution/capsules.json +4 -0
- package/souls/identity-architect/evolution/events.jsonl +0 -0
- package/souls/identity-architect/evolution/genes.json +4 -0
- package/souls/infra-ops/PRINCIPLES.md +77 -0
- package/souls/infra-ops/SOUL.md +56 -0
- package/souls/infra-ops/capabilities.json +33 -0
- package/souls/infra-ops/evolution/capsules.json +4 -0
- package/souls/infra-ops/evolution/events.jsonl +0 -0
- package/souls/infra-ops/evolution/genes.json +4 -0
- package/souls/lore-writer/PRINCIPLES.md +74 -0
- package/souls/lore-writer/SOUL.md +54 -0
- package/souls/lore-writer/capabilities.json +37 -0
- package/souls/lore-writer/evolution/capsules.json +4 -0
- package/souls/lore-writer/evolution/events.jsonl +0 -0
- package/souls/lore-writer/evolution/genes.json +4 -0
- package/souls/qa-evidence/PRINCIPLES.md +97 -0
- package/souls/qa-evidence/SOUL.md +66 -0
- package/souls/qa-evidence/capabilities.json +32 -0
- package/souls/qa-evidence/evolution/capsules.json +4 -0
- package/souls/qa-evidence/evolution/events.jsonl +0 -0
- package/souls/qa-evidence/evolution/genes.json +4 -0
- package/souls/registry.json +211 -0
- package/souls/sync-registry.js +65 -0
- package/uninstall.sh +102 -0
- package/workspace-bin/auto-checkpoint +60 -0
- package/workspace-bin/clawvault-access-control +65 -0
- package/workspace-bin/clawvault-local +28 -0
- package/workspace-bin/compile-boot +494 -0
- package/workspace-bin/daily-log-writer.mjs +251 -0
- package/workspace-bin/evolve +540 -0
- package/workspace-bin/fitness_score.py +395 -0
- package/workspace-bin/hooks/pre-commit +80 -0
- package/workspace-bin/install-daemon +299 -0
- package/workspace-bin/lane-watchdog.js +232 -0
- package/workspace-bin/lib/__init__.py +0 -0
- package/workspace-bin/lib/frontmatter.py +114 -0
- package/workspace-bin/memory-daemon.mjs +879 -0
- package/workspace-bin/memory-maintenance.mjs +531 -0
- package/workspace-bin/mesh-bridge.mjs +154 -0
- package/workspace-bin/multi-review +130 -0
- package/workspace-bin/obsidian +125 -0
- package/workspace-bin/obsidian-sync.mjs +888 -0
- package/workspace-bin/openclaw-register-source +102 -0
- package/workspace-bin/proactive-scan +147 -0
- package/workspace-bin/quality-gate +175 -0
- package/workspace-bin/screenshot +96 -0
- package/workspace-bin/session-recap +453 -0
- package/workspace-bin/skill-audit +494 -0
- package/workspace-bin/skill-quality-check +134 -0
- package/workspace-bin/skill-routing-eval +599 -0
- package/workspace-bin/soul-prompt +251 -0
- package/workspace-bin/subagent-audit.mjs +267 -0
- package/workspace-bin/test-multi-soul-workflow +130 -0
- package/workspace-bin/trust-registry +465 -0
- package/workspace-docs/AGENTS.md +201 -0
- package/workspace-docs/CLAUDE.md +64 -0
- package/workspace-docs/PRINCIPLES.md +81 -0
- package/workspace-docs/SOUL.md +48 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
n8n API client for Clawdbot
|
|
4
|
+
Manages workflows, executions, and credentials via n8n REST API
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
import sys
|
|
9
|
+
import json
|
|
10
|
+
import argparse
|
|
11
|
+
import requests
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
from typing import Optional, Dict, Any, List
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class N8nClient:
|
|
17
|
+
"""n8n API client"""
|
|
18
|
+
|
|
19
|
+
def __init__(self, base_url: str = None, api_key: str = None):
|
|
20
|
+
self.base_url = base_url or os.getenv('N8N_BASE_URL')
|
|
21
|
+
self.api_key = api_key or os.getenv('N8N_API_KEY')
|
|
22
|
+
|
|
23
|
+
if not self.api_key:
|
|
24
|
+
raise ValueError("N8N_API_KEY not found in environment")
|
|
25
|
+
|
|
26
|
+
self.session = requests.Session()
|
|
27
|
+
self.session.headers.update({
|
|
28
|
+
'X-N8N-API-KEY': self.api_key,
|
|
29
|
+
'Accept': 'application/json',
|
|
30
|
+
'Content-Type': 'application/json'
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
def _request(self, method: str, endpoint: str, **kwargs) -> Dict[str, Any]:
|
|
34
|
+
"""Make API request"""
|
|
35
|
+
url = f"{self.base_url}/api/v1/{endpoint.lstrip('/')}"
|
|
36
|
+
response = self.session.request(method, url, **kwargs)
|
|
37
|
+
|
|
38
|
+
try:
|
|
39
|
+
response.raise_for_status()
|
|
40
|
+
return response.json() if response.content else {}
|
|
41
|
+
except requests.exceptions.HTTPError as e:
|
|
42
|
+
error_msg = f"HTTP {response.status_code}: {response.text}"
|
|
43
|
+
raise Exception(error_msg) from e
|
|
44
|
+
|
|
45
|
+
# Workflows
|
|
46
|
+
def list_workflows(self, active: bool = None) -> List[Dict]:
|
|
47
|
+
"""List all workflows"""
|
|
48
|
+
params = {}
|
|
49
|
+
if active is not None:
|
|
50
|
+
params['active'] = str(active).lower()
|
|
51
|
+
return self._request('GET', 'workflows', params=params)
|
|
52
|
+
|
|
53
|
+
def get_workflow(self, workflow_id: str) -> Dict:
|
|
54
|
+
"""Get workflow details"""
|
|
55
|
+
return self._request('GET', f'workflows/{workflow_id}')
|
|
56
|
+
|
|
57
|
+
def create_workflow(self, workflow_data: Dict) -> Dict:
|
|
58
|
+
"""Create new workflow"""
|
|
59
|
+
return self._request('POST', 'workflows', json=workflow_data)
|
|
60
|
+
|
|
61
|
+
def update_workflow(self, workflow_id: str, workflow_data: Dict) -> Dict:
|
|
62
|
+
"""Update existing workflow"""
|
|
63
|
+
return self._request('PATCH', f'workflows/{workflow_id}', json=workflow_data)
|
|
64
|
+
|
|
65
|
+
def delete_workflow(self, workflow_id: str) -> Dict:
|
|
66
|
+
"""Delete workflow"""
|
|
67
|
+
return self._request('DELETE', f'workflows/{workflow_id}')
|
|
68
|
+
|
|
69
|
+
def activate_workflow(self, workflow_id: str) -> Dict:
|
|
70
|
+
"""Activate workflow"""
|
|
71
|
+
return self._request('PATCH', f'workflows/{workflow_id}', json={'active': True})
|
|
72
|
+
|
|
73
|
+
def deactivate_workflow(self, workflow_id: str) -> Dict:
|
|
74
|
+
"""Deactivate workflow"""
|
|
75
|
+
return self._request('PATCH', f'workflows/{workflow_id}', json={'active': False})
|
|
76
|
+
|
|
77
|
+
# Executions
|
|
78
|
+
def list_executions(self, workflow_id: str = None, limit: int = 20) -> List[Dict]:
|
|
79
|
+
"""List workflow executions"""
|
|
80
|
+
params = {'limit': limit}
|
|
81
|
+
if workflow_id:
|
|
82
|
+
params['workflowId'] = workflow_id
|
|
83
|
+
return self._request('GET', 'executions', params=params)
|
|
84
|
+
|
|
85
|
+
def get_execution(self, execution_id: str) -> Dict:
|
|
86
|
+
"""Get execution details"""
|
|
87
|
+
return self._request('GET', f'executions/{execution_id}')
|
|
88
|
+
|
|
89
|
+
def delete_execution(self, execution_id: str) -> Dict:
|
|
90
|
+
"""Delete execution"""
|
|
91
|
+
return self._request('DELETE', f'executions/{execution_id}')
|
|
92
|
+
|
|
93
|
+
# Manual execution
|
|
94
|
+
def execute_workflow(self, workflow_id: str, data: Dict = None) -> Dict:
|
|
95
|
+
"""Manually trigger workflow execution"""
|
|
96
|
+
payload = {'workflowId': workflow_id}
|
|
97
|
+
if data:
|
|
98
|
+
payload['data'] = data
|
|
99
|
+
return self._request('POST', f'workflows/{workflow_id}/execute', json=payload)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def main():
|
|
103
|
+
parser = argparse.ArgumentParser(description='n8n API Client')
|
|
104
|
+
parser.add_argument('action', choices=[
|
|
105
|
+
'list-workflows', 'get-workflow', 'activate', 'deactivate',
|
|
106
|
+
'list-executions', 'get-execution', 'execute'
|
|
107
|
+
])
|
|
108
|
+
parser.add_argument('--id', help='Workflow or execution ID')
|
|
109
|
+
parser.add_argument('--active', type=lambda x: x.lower() == 'true', help='Filter by active status')
|
|
110
|
+
parser.add_argument('--limit', type=int, default=20, help='Limit results')
|
|
111
|
+
parser.add_argument('--data', help='JSON data for execution')
|
|
112
|
+
parser.add_argument('--pretty', action='store_true', help='Pretty print JSON output')
|
|
113
|
+
|
|
114
|
+
args = parser.parse_args()
|
|
115
|
+
|
|
116
|
+
try:
|
|
117
|
+
client = N8nClient()
|
|
118
|
+
result = None
|
|
119
|
+
|
|
120
|
+
if args.action == 'list-workflows':
|
|
121
|
+
result = client.list_workflows(active=args.active)
|
|
122
|
+
elif args.action == 'get-workflow':
|
|
123
|
+
if not args.id:
|
|
124
|
+
raise ValueError("--id required for get-workflow")
|
|
125
|
+
result = client.get_workflow(args.id)
|
|
126
|
+
elif args.action == 'activate':
|
|
127
|
+
if not args.id:
|
|
128
|
+
raise ValueError("--id required for activate")
|
|
129
|
+
result = client.activate_workflow(args.id)
|
|
130
|
+
elif args.action == 'deactivate':
|
|
131
|
+
if not args.id:
|
|
132
|
+
raise ValueError("--id required for deactivate")
|
|
133
|
+
result = client.deactivate_workflow(args.id)
|
|
134
|
+
elif args.action == 'list-executions':
|
|
135
|
+
result = client.list_executions(workflow_id=args.id, limit=args.limit)
|
|
136
|
+
elif args.action == 'get-execution':
|
|
137
|
+
if not args.id:
|
|
138
|
+
raise ValueError("--id required for get-execution")
|
|
139
|
+
result = client.get_execution(args.id)
|
|
140
|
+
elif args.action == 'execute':
|
|
141
|
+
if not args.id:
|
|
142
|
+
raise ValueError("--id required for execute")
|
|
143
|
+
data = json.loads(args.data) if args.data else None
|
|
144
|
+
result = client.execute_workflow(args.id, data=data)
|
|
145
|
+
|
|
146
|
+
# Output
|
|
147
|
+
if args.pretty:
|
|
148
|
+
print(json.dumps(result, indent=2))
|
|
149
|
+
else:
|
|
150
|
+
print(json.dumps(result))
|
|
151
|
+
|
|
152
|
+
except Exception as e:
|
|
153
|
+
print(f"Error: {e}", file=sys.stderr)
|
|
154
|
+
sys.exit(1)
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
if __name__ == '__main__':
|
|
158
|
+
main()
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: n8n-workflow-automation
|
|
3
|
+
description: "Design and output n8n workflow JSON with triggers, idempotency, error handling, logging, retries, and human-in-the-loop review queues. Use when you need an auditable n8n automation that won’t silently fail."
|
|
4
|
+
triggers:
|
|
5
|
+
- "build an n8n workflow"
|
|
6
|
+
- "create an n8n automation"
|
|
7
|
+
- "add error handling to this n8n flow"
|
|
8
|
+
- "make this n8n workflow idempotent"
|
|
9
|
+
negative_triggers:
|
|
10
|
+
- "write a bash script to automate this"
|
|
11
|
+
- "set up a CI/CD pipeline"
|
|
12
|
+
- "build a growth loop"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# n8n workflow automation with retries, logging, and review queues
|
|
16
|
+
|
|
17
|
+
## PURPOSE
|
|
18
|
+
Designs and outputs n8n workflow JSON with robust triggers, idempotency, error handling, logging, retries, and human-in-the-loop review queues.
|
|
19
|
+
|
|
20
|
+
## WHEN TO USE
|
|
21
|
+
- TRIGGERS:
|
|
22
|
+
- Build an n8n workflow that runs every Monday and emails the compliance summary.
|
|
23
|
+
- Add error handling and retries to this workflow, plus a review queue for failures.
|
|
24
|
+
- Create a webhook workflow that logs every run and writes a status row to a tracker.
|
|
25
|
+
- Make this n8n flow idempotent so it does not duplicate records when it reruns.
|
|
26
|
+
- Instrument this workflow with audit logs and a human approval step.
|
|
27
|
+
- DO NOT USE WHEN…
|
|
28
|
+
- You need code-only automation without n8n (use a scripting/CI skill).
|
|
29
|
+
- You need to bypass security controls or hide audit trails.
|
|
30
|
+
- You need to purchase or recommend prohibited items/services.
|
|
31
|
+
|
|
32
|
+
## INPUTS
|
|
33
|
+
- REQUIRED:
|
|
34
|
+
- Workflow intent: trigger type + schedule/timezone + success criteria.
|
|
35
|
+
- Targets: where to write results (email/Drive/Sheet/DB) and required fields.
|
|
36
|
+
- OPTIONAL:
|
|
37
|
+
- Existing n8n workflow JSON to modify.
|
|
38
|
+
- Sample payloads / example records.
|
|
39
|
+
- Definition of dedup keys (what makes a record unique).
|
|
40
|
+
- EXAMPLES:
|
|
41
|
+
- Cron: Monday 08:00 Europe/London; send summary email + Drive upload
|
|
42
|
+
- Webhook: receive JSON; route to folders
|
|
43
|
+
|
|
44
|
+
## OUTPUTS
|
|
45
|
+
- Default (read-only): a workflow design spec (nodes, data contracts, failure modes).
|
|
46
|
+
- If explicitly requested: `workflow.json` (n8n importable JSON) + `runbook.md` (from template).
|
|
47
|
+
Success = workflow is idempotent, logs every run, retries safely, and routes failures to a review queue.
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## WORKFLOW
|
|
51
|
+
1. Clarify trigger:
|
|
52
|
+
- Cron/webhook/manual; schedule/timezone; concurrency expectations.
|
|
53
|
+
2. Define data contract:
|
|
54
|
+
- input schema, required fields, and validation rules.
|
|
55
|
+
3. Design idempotency:
|
|
56
|
+
- choose dedup key(s) and storage (DB/Sheet) to prevent duplicates on retries.
|
|
57
|
+
4. Add observability:
|
|
58
|
+
- generate `run_id`, log start/end, store status row and error details.
|
|
59
|
+
5. Implement error handling:
|
|
60
|
+
- per-node error branches, retry with backoff, and final failure notification.
|
|
61
|
+
6. Add human-in-the-loop (HITL) review queue:
|
|
62
|
+
- write failed items to a queue (Sheet/DB) and require approval to reprocess.
|
|
63
|
+
7. “No silent failure” gates:
|
|
64
|
+
- if counts/thresholds fail, stop workflow and alert.
|
|
65
|
+
8. Output:
|
|
66
|
+
- If asked for JSON: produce importable n8n workflow JSON + runbook.
|
|
67
|
+
9. STOP AND ASK THE USER if:
|
|
68
|
+
- destination systems are unknown,
|
|
69
|
+
- no dedup key exists,
|
|
70
|
+
- credential strategy (env vars) is not specified,
|
|
71
|
+
- the workflow needs privileged access not yet approved.
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
## OUTPUT FORMAT
|
|
75
|
+
If outputting **n8n workflow JSON**, conform to:
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"name": "<workflow name>",
|
|
80
|
+
"nodes": [ { "name": "Trigger", "type": "n8n-nodes-base.cron", "parameters": {}, "position": [0,0] } ],
|
|
81
|
+
"connections": {},
|
|
82
|
+
"settings": {},
|
|
83
|
+
"active": false
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Also output `runbook.md` using `assets/runbook-template.md`.
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
## SAFETY & EDGE CASES
|
|
91
|
+
- Read-only by default; only emit workflow JSON when explicitly requested.
|
|
92
|
+
- Do not include secrets in JSON; reference env vars/credential names only.
|
|
93
|
+
- Include audit logging + failure notifications; avoid workflows that can silently drop data.
|
|
94
|
+
- Prefer least privilege: call only required APIs and minimize scopes.
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
## EXAMPLES
|
|
98
|
+
- Input: “Cron every Monday, email compliance summary, retry failures.”
|
|
99
|
+
Output: Node map + `workflow.json` with Cron → Fetch → Aggregate → Email, plus error branches to review queue.
|
|
100
|
+
|
|
101
|
+
- Input: “Webhook that logs runs and writes status row.”
|
|
102
|
+
Output: Webhook → Validate → Process → Append status row; on error → log + notify + queue.
|
|
103
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# n8n Workflow Runbook Template
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
- What the workflow does and why it exists.
|
|
5
|
+
|
|
6
|
+
## Triggers
|
|
7
|
+
- Cron / Webhook / Manual
|
|
8
|
+
- Schedule, timezone, and expected frequency.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
- Source systems and credentials (reference env vars only).
|
|
12
|
+
|
|
13
|
+
## Outputs
|
|
14
|
+
- Where results go (email, Google Sheet/Drive, database), including file naming.
|
|
15
|
+
|
|
16
|
+
## Idempotency
|
|
17
|
+
- Dedup key:
|
|
18
|
+
- Safe re-run behavior:
|
|
19
|
+
|
|
20
|
+
## Error handling
|
|
21
|
+
- Retry policy:
|
|
22
|
+
- Failure notifications:
|
|
23
|
+
- Review queue link/location:
|
|
24
|
+
|
|
25
|
+
## Logging & audit
|
|
26
|
+
- Run ID:
|
|
27
|
+
- What is logged per run:
|
|
28
|
+
- Where logs are stored:
|
|
29
|
+
|
|
30
|
+
## Operational checks
|
|
31
|
+
- Expected counts/thresholds:
|
|
32
|
+
- “Stop the line” conditions:
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: narrative-designer
|
|
3
|
+
description: >
|
|
4
|
+
Narrative Designer — stub skill.
|
|
5
|
+
TODO: implement full skill definition.
|
|
6
|
+
version: 0.1.0
|
|
7
|
+
user-invocable: true
|
|
8
|
+
metadata:
|
|
9
|
+
openclaw:
|
|
10
|
+
requires:
|
|
11
|
+
bins: []
|
|
12
|
+
os:
|
|
13
|
+
- macos
|
|
14
|
+
- linux
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Narrative Designer
|
|
18
|
+
|
|
19
|
+
> **Status: stub** — This skill is referenced by the lore-writer soul but not yet implemented.
|
|
20
|
+
|
|
21
|
+
## When to use
|
|
22
|
+
|
|
23
|
+
(To be defined)
|
|
24
|
+
|
|
25
|
+
## Commands
|
|
26
|
+
|
|
27
|
+
(To be defined)
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ontology
|
|
3
|
+
description: Typed knowledge graph for structured agent memory and composable skills. Use when creating/querying entities (Person, Project, Task, Event, Document), linking related objects, enforcing constraints, planning multi-step actions as graph transformations, or when skills need to share state. Trigger on "remember", "what do I know about", "link X to Y", "show dependencies", entity CRUD, or cross-skill data access.
|
|
4
|
+
triggers:
|
|
5
|
+
- "link X to Y"
|
|
6
|
+
- "show dependencies for this project"
|
|
7
|
+
- "create a new entity"
|
|
8
|
+
- "what do I know about"
|
|
9
|
+
- "query the knowledge graph"
|
|
10
|
+
negative_triggers:
|
|
11
|
+
- "save this to my second brain"
|
|
12
|
+
- "search the web for"
|
|
13
|
+
- "remember this preference"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Ontology
|
|
17
|
+
|
|
18
|
+
A typed vocabulary + constraint system for representing knowledge as a verifiable graph.
|
|
19
|
+
|
|
20
|
+
## Core Concept
|
|
21
|
+
|
|
22
|
+
Everything is an **entity** with a **type**, **properties**, and **relations** to other entities. Every mutation is validated against type constraints before committing.
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
Entity: { id, type, properties, relations, created, updated }
|
|
26
|
+
Relation: { from_id, relation_type, to_id, properties }
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## When to Use
|
|
30
|
+
|
|
31
|
+
| Trigger | Action |
|
|
32
|
+
|---------|--------|
|
|
33
|
+
| "Remember that..." | Create/update entity |
|
|
34
|
+
| "What do I know about X?" | Query graph |
|
|
35
|
+
| "Link X to Y" | Create relation |
|
|
36
|
+
| "Show all tasks for project Z" | Graph traversal |
|
|
37
|
+
| "What depends on X?" | Dependency query |
|
|
38
|
+
| Planning multi-step work | Model as graph transformations |
|
|
39
|
+
| Skill needs shared state | Read/write ontology objects |
|
|
40
|
+
|
|
41
|
+
## Core Types
|
|
42
|
+
|
|
43
|
+
```yaml
|
|
44
|
+
# Agents & People
|
|
45
|
+
Person: { name, email?, phone?, notes? }
|
|
46
|
+
Organization: { name, type?, members[] }
|
|
47
|
+
|
|
48
|
+
# Work
|
|
49
|
+
Project: { name, status, goals[], owner? }
|
|
50
|
+
Task: { title, status, due?, priority?, assignee?, blockers[] }
|
|
51
|
+
Goal: { description, target_date?, metrics[] }
|
|
52
|
+
|
|
53
|
+
# Time & Place
|
|
54
|
+
Event: { title, start, end?, location?, attendees[], recurrence? }
|
|
55
|
+
Location: { name, address?, coordinates? }
|
|
56
|
+
|
|
57
|
+
# Information
|
|
58
|
+
Document: { title, path?, url?, summary? }
|
|
59
|
+
Message: { content, sender, recipients[], thread? }
|
|
60
|
+
Thread: { subject, participants[], messages[] }
|
|
61
|
+
Note: { content, tags[], refs[] }
|
|
62
|
+
|
|
63
|
+
# Resources
|
|
64
|
+
Account: { service, username, credential_ref? }
|
|
65
|
+
Device: { name, type, identifiers[] }
|
|
66
|
+
Credential: { service, secret_ref } # Never store secrets directly
|
|
67
|
+
|
|
68
|
+
# Meta
|
|
69
|
+
Action: { type, target, timestamp, outcome? }
|
|
70
|
+
Policy: { scope, rule, enforcement }
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Storage
|
|
74
|
+
|
|
75
|
+
Default: `memory/ontology/graph.jsonl`
|
|
76
|
+
|
|
77
|
+
```jsonl
|
|
78
|
+
{"op":"create","entity":{"id":"p_001","type":"Person","properties":{"name":"Alice"}}}
|
|
79
|
+
{"op":"create","entity":{"id":"proj_001","type":"Project","properties":{"name":"Website Redesign","status":"active"}}}
|
|
80
|
+
{"op":"relate","from":"proj_001","rel":"has_owner","to":"p_001"}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Query via scripts or direct file ops. For complex graphs, migrate to SQLite.
|
|
84
|
+
|
|
85
|
+
## Workflows
|
|
86
|
+
|
|
87
|
+
### Create Entity
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
python3 scripts/ontology.py create --type Person --props '{"name":"Alice","email":"alice@example.com"}'
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Query
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
python3 scripts/ontology.py query --type Task --where '{"status":"open"}'
|
|
97
|
+
python3 scripts/ontology.py get --id task_001
|
|
98
|
+
python3 scripts/ontology.py related --id proj_001 --rel has_task
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Link Entities
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
python3 scripts/ontology.py relate --from proj_001 --rel has_task --to task_001
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Validate
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
python3 scripts/ontology.py validate # Check all constraints
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Constraints
|
|
114
|
+
|
|
115
|
+
Define in `memory/ontology/schema.yaml`:
|
|
116
|
+
|
|
117
|
+
```yaml
|
|
118
|
+
types:
|
|
119
|
+
Task:
|
|
120
|
+
required: [title, status]
|
|
121
|
+
status_enum: [open, in_progress, blocked, done]
|
|
122
|
+
|
|
123
|
+
Event:
|
|
124
|
+
required: [title, start]
|
|
125
|
+
validate: "end >= start if end exists"
|
|
126
|
+
|
|
127
|
+
Credential:
|
|
128
|
+
required: [service, secret_ref]
|
|
129
|
+
forbidden_properties: [password, secret, token] # Force indirection
|
|
130
|
+
|
|
131
|
+
relations:
|
|
132
|
+
has_owner:
|
|
133
|
+
from_types: [Project, Task]
|
|
134
|
+
to_types: [Person]
|
|
135
|
+
cardinality: many_to_one
|
|
136
|
+
|
|
137
|
+
blocks:
|
|
138
|
+
from_types: [Task]
|
|
139
|
+
to_types: [Task]
|
|
140
|
+
acyclic: true # No circular dependencies
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Skill Contract
|
|
144
|
+
|
|
145
|
+
Skills that use ontology should declare:
|
|
146
|
+
|
|
147
|
+
```yaml
|
|
148
|
+
# In SKILL.md frontmatter or header
|
|
149
|
+
ontology:
|
|
150
|
+
reads: [Task, Project, Person]
|
|
151
|
+
writes: [Task, Action]
|
|
152
|
+
preconditions:
|
|
153
|
+
- "Task.assignee must exist"
|
|
154
|
+
postconditions:
|
|
155
|
+
- "Created Task has status=open"
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Planning as Graph Transformation
|
|
159
|
+
|
|
160
|
+
Model multi-step plans as a sequence of graph operations:
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
Plan: "Schedule team meeting and create follow-up tasks"
|
|
164
|
+
|
|
165
|
+
1. CREATE Event { title: "Team Sync", attendees: [p_001, p_002] }
|
|
166
|
+
2. RELATE Event -> has_project -> proj_001
|
|
167
|
+
3. CREATE Task { title: "Prepare agenda", assignee: p_001 }
|
|
168
|
+
4. RELATE Task -> for_event -> event_001
|
|
169
|
+
5. CREATE Task { title: "Send summary", assignee: p_001, blockers: [task_001] }
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Each step is validated before execution. Rollback on constraint violation.
|
|
173
|
+
|
|
174
|
+
## Integration Patterns
|
|
175
|
+
|
|
176
|
+
### With Causal Inference
|
|
177
|
+
|
|
178
|
+
Log ontology mutations as causal actions:
|
|
179
|
+
|
|
180
|
+
```python
|
|
181
|
+
# When creating/updating entities, also log to causal action log
|
|
182
|
+
action = {
|
|
183
|
+
"action": "create_entity",
|
|
184
|
+
"domain": "ontology",
|
|
185
|
+
"context": {"type": "Task", "project": "proj_001"},
|
|
186
|
+
"outcome": "created"
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Cross-Skill Communication
|
|
191
|
+
|
|
192
|
+
```python
|
|
193
|
+
# Email skill creates commitment
|
|
194
|
+
commitment = ontology.create("Commitment", {
|
|
195
|
+
"source_message": msg_id,
|
|
196
|
+
"description": "Send report by Friday",
|
|
197
|
+
"due": "2026-01-31"
|
|
198
|
+
})
|
|
199
|
+
|
|
200
|
+
# Task skill picks it up
|
|
201
|
+
tasks = ontology.query("Commitment", {"status": "pending"})
|
|
202
|
+
for c in tasks:
|
|
203
|
+
ontology.create("Task", {
|
|
204
|
+
"title": c.description,
|
|
205
|
+
"due": c.due,
|
|
206
|
+
"source": c.id
|
|
207
|
+
})
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Quick Start
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
# Initialize ontology storage
|
|
214
|
+
mkdir -p memory/ontology
|
|
215
|
+
touch memory/ontology/graph.jsonl
|
|
216
|
+
|
|
217
|
+
# Create schema (optional but recommended)
|
|
218
|
+
cat > memory/ontology/schema.yaml << 'EOF'
|
|
219
|
+
types:
|
|
220
|
+
Task:
|
|
221
|
+
required: [title, status]
|
|
222
|
+
Project:
|
|
223
|
+
required: [name]
|
|
224
|
+
Person:
|
|
225
|
+
required: [name]
|
|
226
|
+
EOF
|
|
227
|
+
|
|
228
|
+
# Start using
|
|
229
|
+
python3 scripts/ontology.py create --type Person --props '{"name":"Alice"}'
|
|
230
|
+
python3 scripts/ontology.py list --type Person
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## References
|
|
234
|
+
|
|
235
|
+
- `references/schema.md` — Full type definitions and constraint patterns
|
|
236
|
+
- `references/queries.md` — Query language and traversal examples
|