monomind 1.8.0 → 1.9.1
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/.claude/agents/design/design-monodesign.md +121 -0
- package/.claude/agents/github/issue-tracker.md +12 -12
- package/.claude/agents/github/pr-manager.md +10 -10
- package/.claude/agents/github/release-manager.md +49 -105
- package/.claude/agents/github/repo-architect.md +73 -92
- package/.claude/agents/github/sync-coordinator.md +55 -123
- package/.claude/agents/marketing/marketing-competitive-content.md +155 -0
- package/.claude/agents/marketing/marketing-content-creator.md +13 -0
- package/.claude/agents/marketing/marketing-cro-specialist.md +147 -0
- package/.claude/agents/marketing/marketing-email-specialist.md +90 -0
- package/.claude/agents/marketing/marketing-launch-strategist.md +129 -0
- package/.claude/agents/marketing/marketing-pricing-strategist.md +127 -0
- package/.claude/agents/specialists/integration-architect.md +94 -0
- package/.claude/commands/agents/README.md +4 -0
- package/.claude/commands/agents/agent-capabilities.md +6 -2
- package/.claude/commands/agents/agent-coordination.md +4 -0
- package/.claude/commands/agents/agent-spawning.md +4 -0
- package/.claude/commands/agents/agent-types.md +6 -2
- package/.claude/commands/analysis/README.md +14 -5
- package/.claude/commands/analysis/bottleneck-detect.md +30 -123
- package/.claude/commands/analysis/performance-bottlenecks.md +14 -14
- package/.claude/commands/analysis/performance-report.md +38 -11
- package/.claude/commands/analysis/token-efficiency.md +13 -16
- package/.claude/commands/analysis/token-usage.md +34 -12
- package/.claude/commands/automation/README.md +15 -5
- package/.claude/commands/automation/auto-agent.md +49 -85
- package/.claude/commands/automation/self-healing.md +20 -18
- package/.claude/commands/automation/session-memory.md +28 -29
- package/.claude/commands/automation/smart-agents.md +17 -9
- package/.claude/commands/automation/smart-spawn.md +52 -11
- package/.claude/commands/automation/workflow-select.md +46 -11
- package/.claude/commands/browse.md +5 -0
- package/.claude/commands/coordination/README.md +9 -5
- package/.claude/commands/coordination/agent-spawn.md +53 -9
- package/.claude/commands/coordination/swarm-init.md +39 -42
- package/.claude/commands/coordination/task-orchestrate.md +65 -11
- package/.claude/commands/github/README.md +21 -8
- package/.claude/commands/github/github-modes.md +9 -5
- package/.claude/commands/github/issue-tracker.md +34 -33
- package/.claude/commands/github/pr-manager.md +20 -17
- package/.claude/commands/github/release-manager.md +37 -49
- package/.claude/commands/github/repo-architect.md +39 -41
- package/.claude/commands/github/sync-coordinator.md +45 -49
- package/.claude/commands/hive-mind/README.md +42 -17
- package/.claude/commands/hive-mind/hive-mind-consensus.md +68 -4
- package/.claude/commands/hive-mind/hive-mind-init.md +55 -5
- package/.claude/commands/hive-mind/hive-mind-memory.md +69 -4
- package/.claude/commands/hive-mind/hive-mind-spawn.md +71 -10
- package/.claude/commands/hive-mind/hive-mind-status.md +52 -4
- package/.claude/commands/hive-mind/hive-mind-stop.md +51 -4
- package/.claude/commands/hive-mind/hive-mind.md +74 -14
- package/.claude/commands/hooks/README.md +62 -7
- package/.claude/commands/hooks/overview.md +94 -35
- package/.claude/commands/hooks/post-edit.md +48 -87
- package/.claude/commands/hooks/post-task.md +37 -87
- package/.claude/commands/hooks/pre-edit.md +52 -84
- package/.claude/commands/hooks/pre-task.md +46 -81
- package/.claude/commands/hooks/session-end.md +49 -85
- package/.claude/commands/hooks/setup.md +87 -58
- package/.claude/commands/mastermind/_repeat.md +308 -0
- package/.claude/commands/mastermind/architect.md +49 -0
- package/.claude/commands/mastermind/brain.md +98 -0
- package/.claude/commands/mastermind/build.md +22 -0
- package/.claude/commands/mastermind/content.md +22 -0
- package/.claude/commands/mastermind/createorg.md +94 -0
- package/.claude/commands/mastermind/finance.md +22 -0
- package/.claude/commands/mastermind/idea.md +22 -0
- package/.claude/commands/mastermind/marketing.md +22 -0
- package/.claude/commands/mastermind/master.md +379 -0
- package/.claude/commands/mastermind/ops.md +22 -0
- package/.claude/commands/mastermind/release.md +22 -0
- package/.claude/commands/mastermind/research.md +22 -0
- package/.claude/commands/mastermind/review.md +22 -0
- package/.claude/commands/mastermind/runorg.md +106 -0
- package/.claude/commands/mastermind/sales.md +22 -0
- package/.claude/commands/mastermind/techport.md +17 -0
- package/.claude/commands/memory/README.md +75 -5
- package/.claude/commands/memory/memory-search.md +63 -11
- package/.claude/commands/monitoring/README.md +64 -4
- package/.claude/commands/monitoring/agent-metrics.md +50 -10
- package/.claude/commands/monitoring/agents.md +59 -32
- package/.claude/commands/monitoring/status.md +96 -34
- package/.claude/commands/monograph/README.md +102 -0
- package/.claude/commands/monograph/monograph-build.md +79 -0
- package/.claude/commands/monograph/monograph-search.md +96 -0
- package/.claude/commands/monograph/monograph-stats.md +53 -0
- package/.claude/commands/monograph/monograph-watch.md +63 -0
- package/.claude/commands/monograph/monograph-wiki.md +91 -0
- package/.claude/commands/monomind/createtask.md +277 -0
- package/.claude/commands/{monomind-do.md → monomind/do.md} +21 -8
- package/.claude/commands/monomind/help.md +118 -0
- package/.claude/commands/{monomind-idea.md → monomind/idea.md} +22 -28
- package/.claude/commands/{monomind-improve.md → monomind/improve.md} +21 -27
- package/.claude/commands/monomind/memory.md +230 -0
- package/.claude/commands/monomind/repeat.md +201 -0
- package/.claude/commands/monomind/review.md +313 -0
- package/.claude/commands/monomind/specialagents.md +125 -0
- package/.claude/commands/monomind/swarm.md +161 -0
- package/.claude/commands/monomind/understand.md +148 -0
- package/.claude/commands/optimization/README.md +69 -5
- package/.claude/commands/optimization/auto-topology.md +66 -43
- package/.claude/commands/optimization/parallel-execution.md +65 -39
- package/.claude/commands/optimization/performance-optimize.md +79 -0
- package/.claude/commands/pair/README.md +48 -230
- package/.claude/commands/pair/examples.md +85 -441
- package/.claude/commands/pair/modes.md +77 -303
- package/.claude/commands/pair/session.md +76 -359
- package/.claude/commands/sparc/analyzer.md +9 -26
- package/.claude/commands/sparc/architect.md +8 -25
- package/.claude/commands/sparc/ask.md +27 -68
- package/.claude/commands/sparc/batch-executor.md +8 -25
- package/.claude/commands/sparc/code.md +12 -53
- package/.claude/commands/sparc/coder.md +8 -25
- package/.claude/commands/sparc/debug.md +12 -53
- package/.claude/commands/sparc/debugger.md +8 -25
- package/.claude/commands/sparc/designer.md +8 -25
- package/.claude/commands/sparc/devops.md +16 -57
- package/.claude/commands/sparc/docs-writer.md +12 -53
- package/.claude/commands/sparc/documenter.md +8 -25
- package/.claude/commands/sparc/innovator.md +8 -25
- package/.claude/commands/sparc/integration.md +12 -53
- package/.claude/commands/sparc/mcp.md +12 -53
- package/.claude/commands/sparc/memory-manager.md +28 -25
- package/.claude/commands/sparc/optimizer.md +8 -25
- package/.claude/commands/sparc/orchestrator.md +35 -97
- package/.claude/commands/sparc/post-deployment-monitoring-mode.md +13 -54
- package/.claude/commands/sparc/refinement-optimization-mode.md +13 -54
- package/.claude/commands/sparc/researcher.md +8 -25
- package/.claude/commands/sparc/reviewer.md +8 -25
- package/.claude/commands/sparc/security-review.md +13 -54
- package/.claude/commands/sparc/sparc-modes.md +97 -151
- package/.claude/commands/sparc/sparc.md +16 -56
- package/.claude/commands/sparc/spec-pseudocode.md +13 -54
- package/.claude/commands/sparc/supabase-admin.md +19 -66
- package/.claude/commands/sparc/swarm-coordinator.md +21 -25
- package/.claude/commands/sparc/tdd.md +8 -25
- package/.claude/commands/sparc/tester.md +8 -25
- package/.claude/commands/sparc/tutorial.md +12 -53
- package/.claude/commands/sparc/workflow-manager.md +8 -25
- package/.claude/commands/sparc.md +76 -130
- package/.claude/commands/stream-chain/pipeline.md +72 -77
- package/.claude/commands/stream-chain/run.md +133 -47
- package/.claude/commands/swarm/README.md +37 -12
- package/.claude/commands/swarm/analysis.md +47 -69
- package/.claude/commands/swarm/development.md +45 -69
- package/.claude/commands/swarm/examples.md +77 -142
- package/.claude/commands/swarm/maintenance.md +47 -74
- package/.claude/commands/swarm/optimization.md +54 -87
- package/.claude/commands/swarm/research.md +47 -107
- package/.claude/commands/swarm/swarm-analysis.md +58 -4
- package/.claude/commands/swarm/swarm-background.md +61 -4
- package/.claude/commands/swarm/swarm-modes.md +63 -4
- package/.claude/commands/swarm/swarm-monitor.md +50 -4
- package/.claude/commands/swarm/swarm-status.md +40 -4
- package/.claude/commands/swarm/swarm-strategies.md +73 -5
- package/.claude/commands/swarm/swarm.md +70 -18
- package/.claude/commands/swarm/testing.md +51 -102
- package/.claude/commands/tokens.md +6 -1
- package/.claude/commands/training/README.md +36 -6
- package/.claude/commands/training/model-update.md +68 -15
- package/.claude/commands/training/neural-patterns.md +54 -55
- package/.claude/commands/training/neural-train.md +70 -16
- package/.claude/commands/training/pattern-learn.md +60 -16
- package/.claude/commands/training/specialization.md +78 -49
- package/.claude/commands/truth/start.md +87 -109
- package/.claude/commands/ts.md +7 -2
- package/.claude/commands/verify/check.md +90 -34
- package/.claude/commands/verify/start.md +71 -94
- package/.claude/commands/workflows/README.md +62 -6
- package/.claude/commands/workflows/development.md +69 -61
- package/.claude/commands/workflows/research.md +73 -47
- package/.claude/commands/workflows/workflow-create.md +75 -16
- package/.claude/commands/workflows/workflow-execute.md +94 -16
- package/.claude/commands/workflows/workflow-export.md +81 -16
- package/.claude/helpers/control-start.cjs +91 -0
- package/.claude/helpers/extras-registry.json +4104 -1991
- package/.claude/helpers/graphify-freshen.cjs +44 -13
- package/.claude/helpers/hook-handler.cjs +256 -1
- package/.claude/helpers/learning-service.mjs +0 -0
- package/.claude/helpers/loop-tracker.cjs +107 -0
- package/.claude/helpers/metrics-db.mjs +0 -0
- package/.claude/helpers/router.cjs +48 -68
- package/.claude/helpers/skill-registry.json +89 -104
- package/.claude/helpers/statusline.cjs +33 -2
- package/.claude/helpers/swarm-hooks.sh +0 -0
- package/.claude/scheduled_tasks.lock +1 -0
- package/.claude/settings.json +15 -0
- package/.claude/skills/.monomind/data/ranked-context.json +5 -0
- package/.claude/skills/.monomind/sessions/current.json +13 -0
- package/.claude/skills/.monomind/sessions/session-1777829336455.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777831614725.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777832095857.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777839814183.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777841847131.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777843309463.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777880867159.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777881884593.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777884090471.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777884808221.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777885672155.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777886852818.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777896532690.json +15 -0
- package/.claude/skills/agentdb-advanced/SKILL.md +11 -12
- package/.claude/skills/agentdb-learning/SKILL.md +20 -21
- package/.claude/skills/agentdb-memory-patterns/SKILL.md +28 -30
- package/.claude/skills/agentdb-optimization/SKILL.md +11 -12
- package/.claude/skills/agentdb-vector-search/SKILL.md +37 -41
- package/.claude/skills/{v3-integration-deep → agentic-integration}/SKILL.md +20 -13
- package/.claude/skills/agentic-jujutsu/SKILL.md +22 -22
- package/.claude/skills/{v3-cli-modernization → cli-modernization}/SKILL.md +17 -8
- package/.claude/skills/{v3-core-implementation → core-implementation}/SKILL.md +33 -8
- package/.claude/skills/{v3-ddd-architecture → ddd-architecture}/SKILL.md +18 -25
- package/.claude/skills/github-code-review/SKILL.md +82 -83
- package/.claude/skills/github-multi-repo/SKILL.md +42 -46
- package/.claude/skills/github-project-management/SKILL.md +83 -88
- package/.claude/skills/github-release-management/SKILL.md +12 -18
- package/.claude/skills/github-workflow-automation/SKILL.md +70 -74
- package/.claude/skills/hooks-automation/SKILL.md +9 -13
- package/.claude/skills/mastermind/_intake.md +83 -0
- package/.claude/skills/mastermind/_protocol.md +275 -0
- package/.claude/skills/mastermind/architect.md +847 -0
- package/.claude/skills/mastermind/build.md +158 -0
- package/.claude/skills/mastermind/content.md +185 -0
- package/.claude/skills/mastermind/createorg.md +318 -0
- package/.claude/skills/mastermind/finance.md +154 -0
- package/.claude/skills/mastermind/idea.md +158 -0
- package/.claude/skills/mastermind/marketing.md +216 -0
- package/.claude/skills/mastermind/monotask.md +350 -0
- package/.claude/skills/mastermind/ops.md +156 -0
- package/.claude/skills/mastermind/references/copywriting-frameworks.md +181 -0
- package/.claude/skills/mastermind/references/persuasion-psychology.md +158 -0
- package/.claude/skills/mastermind/release.md +156 -0
- package/.claude/skills/mastermind/research.md +156 -0
- package/.claude/skills/mastermind/review.md +157 -0
- package/.claude/skills/mastermind/runorg.md +308 -0
- package/.claude/skills/mastermind/sales.md +158 -0
- package/.claude/skills/mastermind/techport.md +743 -0
- package/.claude/skills/{v3-mcp-optimization → mcp-optimization}/SKILL.md +35 -14
- package/.claude/skills/{v3-memory-unification → memory-unification}/SKILL.md +20 -4
- package/.claude/skills/monodesign/SKILL.md +302 -0
- package/.claude/skills/monodesign/reference/adapt.md +190 -0
- package/.claude/skills/monodesign/reference/animate.md +175 -0
- package/.claude/skills/monodesign/reference/antipatterns-catalog.md +187 -0
- package/.claude/skills/monodesign/reference/audit.md +133 -0
- package/.claude/skills/monodesign/reference/bolder.md +113 -0
- package/.claude/skills/monodesign/reference/brand-workflow.md +180 -0
- package/.claude/skills/monodesign/reference/brand.md +114 -0
- package/.claude/skills/monodesign/reference/clarify.md +174 -0
- package/.claude/skills/monodesign/reference/cognitive-load.md +106 -0
- package/.claude/skills/monodesign/reference/color-and-contrast.md +105 -0
- package/.claude/skills/monodesign/reference/colorize.md +154 -0
- package/.claude/skills/monodesign/reference/component-specs.md +260 -0
- package/.claude/skills/monodesign/reference/component-states.md +274 -0
- package/.claude/skills/monodesign/reference/component-system.md +358 -0
- package/.claude/skills/monodesign/reference/copy-formulas.md +160 -0
- package/.claude/skills/monodesign/reference/craft.md +193 -0
- package/.claude/skills/monodesign/reference/critique.md +213 -0
- package/.claude/skills/monodesign/reference/delight.md +302 -0
- package/.claude/skills/monodesign/reference/design-principles.md +246 -0
- package/.claude/skills/monodesign/reference/distill.md +111 -0
- package/.claude/skills/monodesign/reference/document.md +427 -0
- package/.claude/skills/monodesign/reference/extract.md +69 -0
- package/.claude/skills/monodesign/reference/harden.md +347 -0
- package/.claude/skills/monodesign/reference/heuristics-scoring.md +234 -0
- package/.claude/skills/monodesign/reference/image-prompts.md +118 -0
- package/.claude/skills/monodesign/reference/interaction-design.md +195 -0
- package/.claude/skills/monodesign/reference/layout.md +141 -0
- package/.claude/skills/monodesign/reference/live.md +622 -0
- package/.claude/skills/monodesign/reference/motion-design.md +109 -0
- package/.claude/skills/monodesign/reference/onboard.md +234 -0
- package/.claude/skills/monodesign/reference/optimize.md +258 -0
- package/.claude/skills/monodesign/reference/overdrive.md +130 -0
- package/.claude/skills/monodesign/reference/personas.md +179 -0
- package/.claude/skills/monodesign/reference/polish.md +233 -0
- package/.claude/skills/monodesign/reference/pre-delivery-checklist.md +108 -0
- package/.claude/skills/monodesign/reference/product.md +62 -0
- package/.claude/skills/monodesign/reference/quieter.md +99 -0
- package/.claude/skills/monodesign/reference/responsive-design.md +114 -0
- package/.claude/skills/monodesign/reference/shape.md +151 -0
- package/.claude/skills/monodesign/reference/spatial-design.md +100 -0
- package/.claude/skills/monodesign/reference/teach.md +156 -0
- package/.claude/skills/monodesign/reference/token-architecture.md +222 -0
- package/.claude/skills/monodesign/reference/typeset.md +124 -0
- package/.claude/skills/monodesign/reference/typography.md +159 -0
- package/.claude/skills/monodesign/reference/ux-research.md +143 -0
- package/.claude/skills/monodesign/reference/ux-rules.md +211 -0
- package/.claude/skills/monodesign/reference/ux-writing.md +107 -0
- package/.claude/skills/monomotion/SKILL.md +145 -0
- package/.claude/skills/monomotion/rules/api-control.md +139 -0
- package/.claude/skills/monomotion/rules/effects.md +109 -0
- package/.claude/skills/monomotion/rules/integration.md +140 -0
- package/.claude/skills/monomotion/rules/scroll.md +131 -0
- package/.claude/skills/monomotion/rules/sequencing.md +105 -0
- package/.claude/skills/monomotion/rules/svg.md +101 -0
- package/.claude/skills/monomotion/rules/text.md +119 -0
- package/.claude/skills/pair-programming/SKILL.md +1 -1
- package/.claude/skills/performance-analysis/SKILL.md +3 -3
- package/.claude/skills/{v3-performance-optimization → performance-optimization}/SKILL.md +16 -8
- package/.claude/skills/reasoningbank-agentdb/SKILL.md +17 -19
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +4 -6
- package/.claude/skills/{v3-security-overhaul → security-hardening}/SKILL.md +13 -3
- package/.claude/skills/skill-builder/SKILL.md +19 -19
- package/.claude/skills/sparc-methodology/SKILL.md +55 -211
- package/.claude/skills/stop-slop/SKILL.md +67 -0
- package/.claude/skills/stop-slop/references/examples.md +61 -0
- package/.claude/skills/stop-slop/references/phrases.md +130 -0
- package/.claude/skills/stop-slop/references/structures.md +136 -0
- package/.claude/skills/swarm-advanced/SKILL.md +13 -43
- package/.claude/skills/{v3-swarm-coordination → swarm-coordination}/SKILL.md +39 -21
- package/.claude/skills/swarm-orchestration/SKILL.md +12 -12
- package/.claude/skills/verification-quality/SKILL.md +5 -5
- package/.claude/statusline-command.sh +0 -0
- package/.claude/statusline.sh +0 -0
- package/.claude-plugin/scripts/install.sh +0 -0
- package/.claude-plugin/scripts/uninstall.sh +0 -0
- package/.claude-plugin/scripts/verify.sh +0 -0
- package/README.md +5 -5
- package/package.json +17 -17
- package/packages/@monomind/cli/README.md +441 -0
- package/packages/@monomind/cli/bin/cli.js +78 -13
- package/packages/@monomind/cli/bin/mcp-server.js +0 -0
- package/packages/@monomind/cli/dist/src/agents/halt-signal.js +33 -7
- package/packages/@monomind/cli/dist/src/agents/managed-agent.js +5 -2
- package/packages/@monomind/cli/dist/src/agents/prompt-experiment.d.ts +3 -2
- package/packages/@monomind/cli/dist/src/agents/prompt-experiment.js +1 -1
- package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.d.ts +5 -2
- package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.js +26 -4
- package/packages/@monomind/cli/dist/src/agents/specialization-scorer.js +17 -9
- package/packages/@monomind/cli/dist/src/agents/trigger-scanner.d.ts +5 -3
- package/packages/@monomind/cli/dist/src/agents/trigger-scanner.js +58 -10
- package/packages/@monomind/cli/dist/src/agents/version-store.d.ts +0 -1
- package/packages/@monomind/cli/dist/src/agents/version-store.js +44 -21
- package/packages/@monomind/cli/dist/src/autopilot-state.js +79 -28
- package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.d.ts +7 -2
- package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.js +20 -8
- package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.d.ts +2 -1
- package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.js +25 -2
- package/packages/@monomind/cli/dist/src/commands/agent.js +6 -4
- package/packages/@monomind/cli/dist/src/commands/appliance-advanced.js +23 -0
- package/packages/@monomind/cli/dist/src/commands/autopilot.js +3 -3
- package/packages/@monomind/cli/dist/src/commands/benchmark.js +119 -8
- package/packages/@monomind/cli/dist/src/commands/claims.js +22 -14
- package/packages/@monomind/cli/dist/src/commands/config.js +32 -0
- package/packages/@monomind/cli/dist/src/commands/daemon.js +13 -11
- package/packages/@monomind/cli/dist/src/commands/deployment.js +21 -2
- package/packages/@monomind/cli/dist/src/commands/doctor.js +5 -4
- package/packages/@monomind/cli/dist/src/commands/embeddings.js +124 -48
- package/packages/@monomind/cli/dist/src/commands/hive-mind.js +15 -14
- package/packages/@monomind/cli/dist/src/commands/hooks.js +45 -41
- package/packages/@monomind/cli/dist/src/commands/index.d.ts +2 -0
- package/packages/@monomind/cli/dist/src/commands/index.js +20 -7
- package/packages/@monomind/cli/dist/src/commands/init.js +53 -19
- package/packages/@monomind/cli/dist/src/commands/mcp.js +31 -44
- package/packages/@monomind/cli/dist/src/commands/memory.js +47 -15
- package/packages/@monomind/cli/dist/src/commands/migrate.js +156 -108
- package/packages/@monomind/cli/dist/src/commands/monograph.d.ts +8 -0
- package/packages/@monomind/cli/dist/src/commands/monograph.js +526 -0
- package/packages/@monomind/cli/dist/src/commands/neural.js +96 -56
- package/packages/@monomind/cli/dist/src/commands/performance.js +30 -8
- package/packages/@monomind/cli/dist/src/commands/plugins.js +13 -37
- package/packages/@monomind/cli/dist/src/commands/process.js +25 -2
- package/packages/@monomind/cli/dist/src/commands/providers.js +37 -5
- package/packages/@monomind/cli/dist/src/commands/replay.js +4 -4
- package/packages/@monomind/cli/dist/src/commands/route.js +37 -5
- package/packages/@monomind/cli/dist/src/commands/ruvector/import.js +12 -2
- package/packages/@monomind/cli/dist/src/commands/ruvector/init.js +15 -0
- package/packages/@monomind/cli/dist/src/commands/ruvector/status.js +16 -3
- package/packages/@monomind/cli/dist/src/commands/security.js +342 -193
- package/packages/@monomind/cli/dist/src/commands/session.js +51 -8
- package/packages/@monomind/cli/dist/src/commands/start.js +18 -4
- package/packages/@monomind/cli/dist/src/commands/swarm.js +47 -36
- package/packages/@monomind/cli/dist/src/commands/tokens.js +11 -11
- package/packages/@monomind/cli/dist/src/commands/transfer-store.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/workflow.js +31 -4
- package/packages/@monomind/cli/dist/src/config-adapter.d.ts +2 -1
- package/packages/@monomind/cli/dist/src/consensus/audit-writer.js +46 -13
- package/packages/@monomind/cli/dist/src/consensus/vote-signer.d.ts +0 -3
- package/packages/@monomind/cli/dist/src/consensus/vote-signer.js +9 -1
- package/packages/@monomind/cli/dist/src/dlq/dlq-reader.d.ts +4 -2
- package/packages/@monomind/cli/dist/src/dlq/dlq-reader.js +25 -8
- package/packages/@monomind/cli/dist/src/dlq/dlq-replayer.d.ts +10 -3
- package/packages/@monomind/cli/dist/src/dlq/dlq-replayer.js +50 -16
- package/packages/@monomind/cli/dist/src/dlq/dlq-writer.js +27 -5
- package/packages/@monomind/cli/dist/src/eval/dataset-manager.d.ts +2 -2
- package/packages/@monomind/cli/dist/src/eval/dataset-manager.js +26 -16
- package/packages/@monomind/cli/dist/src/eval/trace-collector.js +23 -3
- package/packages/@monomind/cli/dist/src/index.js +12 -10
- package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +8 -8
- package/packages/@monomind/cli/dist/src/init/executor.js +212 -102
- package/packages/@monomind/cli/dist/src/init/helpers-generator.js +35 -22
- package/packages/@monomind/cli/dist/src/init/mcp-generator.js +3 -3
- package/packages/@monomind/cli/dist/src/init/settings-generator.js +10 -3
- package/packages/@monomind/cli/dist/src/init/shared-instructions-generator.js +18 -3
- package/packages/@monomind/cli/dist/src/init/statusline-generator.js +3 -1
- package/packages/@monomind/cli/dist/src/init/types.d.ts +35 -11
- package/packages/@monomind/cli/dist/src/init/types.js +5 -9
- package/packages/@monomind/cli/dist/src/interactive/interrupt.js +8 -3
- package/packages/@monomind/cli/dist/src/mcp/tool-registry.js +38 -4
- package/packages/@monomind/cli/dist/src/mcp-client.js +10 -4
- package/packages/@monomind/cli/dist/src/mcp-server.d.ts +9 -2
- package/packages/@monomind/cli/dist/src/mcp-server.js +182 -35
- package/packages/@monomind/cli/dist/src/mcp-tools/agent-tools.js +66 -34
- package/packages/@monomind/cli/dist/src/mcp-tools/agentdb-tools.js +34 -7
- package/packages/@monomind/cli/dist/src/mcp-tools/analyze-tools.js +25 -16
- package/packages/@monomind/cli/dist/src/mcp-tools/auto-install.js +4 -6
- package/packages/@monomind/cli/dist/src/mcp-tools/autopilot-tools.js +12 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/browser-tools.js +199 -20
- package/packages/@monomind/cli/dist/src/mcp-tools/claims-tools.js +68 -18
- package/packages/@monomind/cli/dist/src/mcp-tools/config-tools.js +33 -5
- package/packages/@monomind/cli/dist/src/mcp-tools/coordination-tools.js +59 -4
- package/packages/@monomind/cli/dist/src/mcp-tools/daa-tools.js +46 -10
- package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.js +46 -5
- package/packages/@monomind/cli/dist/src/mcp-tools/github-tools.js +29 -16
- package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.js +38 -10
- package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +96 -33
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +70 -37
- package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +29 -13
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +5867 -56
- package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.js +121 -37
- package/packages/@monomind/cli/dist/src/mcp-tools/performance-tools.js +21 -8
- package/packages/@monomind/cli/dist/src/mcp-tools/progress-tools.js +10 -8
- package/packages/@monomind/cli/dist/src/mcp-tools/request-tracker.js +4 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/ruvllm-tools.js +19 -8
- package/packages/@monomind/cli/dist/src/mcp-tools/session-tools.js +57 -17
- package/packages/@monomind/cli/dist/src/mcp-tools/swarm-tools.js +35 -17
- package/packages/@monomind/cli/dist/src/mcp-tools/system-tools.js +4 -3
- package/packages/@monomind/cli/dist/src/mcp-tools/task-tools.js +53 -13
- package/packages/@monomind/cli/dist/src/mcp-tools/terminal-tools.js +63 -14
- package/packages/@monomind/cli/dist/src/mcp-tools/transfer-tools.js +21 -16
- package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.js +92 -23
- package/packages/@monomind/cli/dist/src/memory/ewc-consolidation.js +41 -10
- package/packages/@monomind/cli/dist/src/memory/intelligence.d.ts +2 -2
- package/packages/@monomind/cli/dist/src/memory/intelligence.js +39 -13
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.d.ts +1 -0
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +149 -56
- package/packages/@monomind/cli/dist/src/memory/memory-initializer.js +107 -45
- package/packages/@monomind/cli/dist/src/memory/sona-optimizer.d.ts +8 -1
- package/packages/@monomind/cli/dist/src/memory/sona-optimizer.js +25 -8
- package/packages/@monomind/cli/dist/src/observability/replay-reader.d.ts +40 -0
- package/packages/@monomind/cli/dist/src/observability/replay-reader.js +138 -0
- package/packages/@monomind/cli/dist/src/orchestration/routing-modes.js +35 -5
- package/packages/@monomind/cli/dist/src/parser.d.ts +8 -0
- package/packages/@monomind/cli/dist/src/parser.js +48 -14
- package/packages/@monomind/cli/dist/src/plugins/manager.js +112 -19
- package/packages/@monomind/cli/dist/src/plugins/store/discovery.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/plugins/store/discovery.js +80 -62
- package/packages/@monomind/cli/dist/src/production/circuit-breaker.js +8 -1
- package/packages/@monomind/cli/dist/src/production/error-handler.d.ts +4 -2
- package/packages/@monomind/cli/dist/src/production/error-handler.js +27 -5
- package/packages/@monomind/cli/dist/src/production/monitoring.js +8 -4
- package/packages/@monomind/cli/dist/src/production/rate-limiter.js +30 -22
- package/packages/@monomind/cli/dist/src/ruvector/agent-wasm.js +2 -2
- package/packages/@monomind/cli/dist/src/ruvector/coverage-router.js +19 -9
- package/packages/@monomind/cli/dist/src/ruvector/diff-classifier.d.ts +1 -0
- package/packages/@monomind/cli/dist/src/ruvector/diff-classifier.js +26 -6
- package/packages/@monomind/cli/dist/src/ruvector/enhanced-model-router.js +24 -2
- package/packages/@monomind/cli/dist/src/ruvector/index.d.ts +1 -2
- package/packages/@monomind/cli/dist/src/ruvector/index.js +2 -2
- package/packages/@monomind/cli/dist/src/ruvector/model-router.d.ts +4 -2
- package/packages/@monomind/cli/dist/src/ruvector/model-router.js +30 -6
- package/packages/@monomind/cli/dist/src/ruvector/moe-router.d.ts +7 -0
- package/packages/@monomind/cli/dist/src/ruvector/moe-router.js +35 -12
- package/packages/@monomind/cli/dist/src/ruvector/q-learning-router.d.ts +7 -1
- package/packages/@monomind/cli/dist/src/ruvector/q-learning-router.js +40 -9
- package/packages/@monomind/cli/dist/src/services/claim-service.d.ts +3 -1
- package/packages/@monomind/cli/dist/src/services/claim-service.js +33 -2
- package/packages/@monomind/cli/dist/src/services/config-file-manager.d.ts +16 -2
- package/packages/@monomind/cli/dist/src/services/config-file-manager.js +105 -17
- package/packages/@monomind/cli/dist/src/services/container-worker-pool.js +51 -11
- package/packages/@monomind/cli/dist/src/services/headless-worker-executor.d.ts +7 -0
- package/packages/@monomind/cli/dist/src/services/headless-worker-executor.js +188 -45
- package/packages/@monomind/cli/dist/src/services/registry-api.js +62 -9
- package/packages/@monomind/cli/dist/src/services/ruvector-training.js +8 -0
- package/packages/@monomind/cli/dist/src/services/worker-daemon.d.ts +4 -1
- package/packages/@monomind/cli/dist/src/services/worker-daemon.js +112 -28
- package/packages/@monomind/cli/dist/src/services/worker-queue.d.ts +9 -2
- package/packages/@monomind/cli/dist/src/services/worker-queue.js +86 -5
- package/packages/@monomind/cli/dist/src/suggest.js +9 -0
- package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.d.ts +5 -3
- package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.js +17 -5
- package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.d.ts +3 -0
- package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.js +30 -6
- package/packages/@monomind/cli/dist/src/transfer/anonymization/index.js +5 -3
- package/packages/@monomind/cli/dist/src/transfer/export.js +5 -3
- package/packages/@monomind/cli/dist/src/transfer/ipfs/client.js +84 -7
- package/packages/@monomind/cli/dist/src/transfer/ipfs/upload.js +13 -4
- package/packages/@monomind/cli/dist/src/transfer/storage/gcs.js +19 -10
- package/packages/@monomind/cli/dist/src/transfer/store/discovery.d.ts +9 -2
- package/packages/@monomind/cli/dist/src/transfer/store/discovery.js +68 -13
- package/packages/@monomind/cli/dist/src/transfer/store/download.d.ts +15 -6
- package/packages/@monomind/cli/dist/src/transfer/store/download.js +113 -24
- package/packages/@monomind/cli/dist/src/transfer/store/publish.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/transfer/store/publish.js +13 -14
- package/packages/@monomind/cli/dist/src/transfer/store/registry.d.ts +3 -3
- package/packages/@monomind/cli/dist/src/transfer/store/registry.js +32 -16
- package/packages/@monomind/cli/dist/src/update/checker.js +17 -4
- package/packages/@monomind/cli/dist/src/update/executor.js +25 -20
- package/packages/@monomind/cli/dist/src/update/rate-limiter.d.ts +11 -0
- package/packages/@monomind/cli/dist/src/update/rate-limiter.js +23 -3
- package/packages/@monomind/cli/dist/src/utils/parse-jsonl.d.ts +6 -0
- package/packages/@monomind/cli/dist/src/utils/parse-jsonl.js +22 -0
- package/packages/@monomind/cli/dist/src/workflow/condition-evaluator.js +37 -3
- package/packages/@monomind/cli/dist/src/workflow/dag-builder.js +27 -11
- package/packages/@monomind/cli/dist/src/workflow/dag-executor.js +51 -13
- package/packages/@monomind/cli/dist/src/workflow/dsl-schema.d.ts +3 -0
- package/packages/@monomind/cli/dist/src/workflow/dsl-schema.js +6 -2
- package/packages/@monomind/cli/dist/src/workflow/template-engine.js +7 -0
- package/packages/@monomind/cli/dist/src/workflow/workflow-executor.js +95 -14
- package/packages/@monomind/cli/package.json +5 -3
- package/packages/@monomind/guidance/README.md +1192 -0
- package/packages/@monomind/shared/README.md +322 -0
- package/packages/@monomind/shared/dist/types/consensus-audit.d.ts +3 -1
- package/packages/README.md +513 -0
- package/.claude/agents/design/design-brand-guardian.md +0 -323
- package/.claude/agents/design/design-image-prompt-engineer.md +0 -237
- package/.claude/agents/design/design-inclusive-visuals-specialist.md +0 -72
- package/.claude/agents/design/design-ui-designer.md +0 -384
- package/.claude/agents/design/design-ux-architect.md +0 -470
- package/.claude/agents/design/design-ux-researcher.md +0 -330
- package/.claude/agents/design/design-visual-storyteller.md +0 -150
- package/.claude/agents/design/design-whimsy-injector.md +0 -439
- package/.claude/agents/v3/integration-architect.md +0 -338
- package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +0 -54
- package/.claude/commands/coordination/init.md +0 -44
- package/.claude/commands/coordination/orchestrate.md +0 -43
- package/.claude/commands/coordination/spawn.md +0 -45
- package/.claude/commands/github/code-review-swarm.md +0 -550
- package/.claude/commands/github/code-review.md +0 -25
- package/.claude/commands/github/github-swarm.md +0 -121
- package/.claude/commands/github/issue-triage.md +0 -25
- package/.claude/commands/github/multi-repo-swarm.md +0 -519
- package/.claude/commands/github/pr-enhance.md +0 -26
- package/.claude/commands/github/project-board-sync.md +0 -471
- package/.claude/commands/github/release-swarm.md +0 -590
- package/.claude/commands/github/repo-analyze.md +0 -25
- package/.claude/commands/github/swarm-issue.md +0 -482
- package/.claude/commands/github/swarm-pr.md +0 -310
- package/.claude/commands/github/workflow-automation.md +0 -468
- package/.claude/commands/hive-mind/hive-mind-metrics.md +0 -8
- package/.claude/commands/hive-mind/hive-mind-resume.md +0 -8
- package/.claude/commands/hive-mind/hive-mind-sessions.md +0 -8
- package/.claude/commands/hive-mind/hive-mind-wizard.md +0 -8
- package/.claude/commands/list-agents.md +0 -17
- package/.claude/commands/memory/memory-persist.md +0 -25
- package/.claude/commands/memory/memory-usage.md +0 -25
- package/.claude/commands/memory/neural.md +0 -47
- package/.claude/commands/metrics.md +0 -11
- package/.claude/commands/monitoring/real-time-view.md +0 -25
- package/.claude/commands/monitoring/swarm-monitor.md +0 -25
- package/.claude/commands/monomind-createtask.md +0 -302
- package/.claude/commands/monomind-help.md +0 -103
- package/.claude/commands/monomind-memory.md +0 -107
- package/.claude/commands/monomind-repeat.md +0 -149
- package/.claude/commands/monomind-swarm.md +0 -205
- package/.claude/commands/optimization/cache-manage.md +0 -25
- package/.claude/commands/optimization/topology-optimize.md +0 -25
- package/.claude/commands/pair/commands.md +0 -546
- package/.claude/commands/pair/config.md +0 -510
- package/.claude/commands/pair/start.md +0 -209
- package/.claude/commands/use-agent.md +0 -67
- package/.claude/skills/monomind-createtask/SKILL.md +0 -269
- package/.claude/skills/monomind-task-engine/SKILL.md +0 -358
- /package/.claude/agents/{v3 → specialists}/memory-specialist.md +0 -0
- /package/.claude/agents/{v3 → specialists}/performance-engineer.md +0 -0
- /package/.claude/agents/{v3 → specialists}/queen-coordinator.md +0 -0
- /package/.claude/agents/{v3 → specialists}/security-architect.md +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Transfer MCP Tools
|
|
3
3
|
* Pattern and plugin sharing via IPFS-based decentralized registry
|
|
4
4
|
*
|
|
5
|
-
* @module @
|
|
5
|
+
* @module @monomind/cli/mcp-tools/transfer-tools
|
|
6
6
|
* @version 3.0.0
|
|
7
7
|
*/
|
|
8
8
|
/**
|
|
@@ -19,6 +19,21 @@ function createResult(data, isError = false) {
|
|
|
19
19
|
isError,
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Cached PatternStore — initialize() may open IPFS connections, sql.js/WASM,
|
|
24
|
+
* or download registry data. Re-creating on every handler call wastes work
|
|
25
|
+
* and risks file-descriptor / socket-pool leaks on rapid invocations.
|
|
26
|
+
*/
|
|
27
|
+
let cachedPatternStore = null;
|
|
28
|
+
async function getPatternStore() {
|
|
29
|
+
if (cachedPatternStore)
|
|
30
|
+
return cachedPatternStore;
|
|
31
|
+
const { PatternStore } = await import('../transfer/store/index.js');
|
|
32
|
+
const store = new PatternStore();
|
|
33
|
+
await store.initialize();
|
|
34
|
+
cachedPatternStore = store;
|
|
35
|
+
return cachedPatternStore;
|
|
36
|
+
}
|
|
22
37
|
/**
|
|
23
38
|
* Transfer MCP tools for pattern export, import, anonymization, and sharing
|
|
24
39
|
*/
|
|
@@ -116,9 +131,7 @@ export const transferTools = [
|
|
|
116
131
|
},
|
|
117
132
|
handler: async (input) => {
|
|
118
133
|
try {
|
|
119
|
-
const
|
|
120
|
-
const store = new PatternStore();
|
|
121
|
-
await store.initialize();
|
|
134
|
+
const store = await getPatternStore();
|
|
122
135
|
const results = store.search(input);
|
|
123
136
|
return createResult(results);
|
|
124
137
|
}
|
|
@@ -144,9 +157,7 @@ export const transferTools = [
|
|
|
144
157
|
},
|
|
145
158
|
handler: async (input) => {
|
|
146
159
|
try {
|
|
147
|
-
const
|
|
148
|
-
const store = new PatternStore();
|
|
149
|
-
await store.initialize();
|
|
160
|
+
const store = await getPatternStore();
|
|
150
161
|
const pattern = store.getPattern(input.id);
|
|
151
162
|
if (!pattern) {
|
|
152
163
|
return createResult({ error: 'Pattern not found' }, true);
|
|
@@ -179,9 +190,7 @@ export const transferTools = [
|
|
|
179
190
|
},
|
|
180
191
|
handler: async (input) => {
|
|
181
192
|
try {
|
|
182
|
-
const
|
|
183
|
-
const store = new PatternStore();
|
|
184
|
-
await store.initialize();
|
|
193
|
+
const store = await getPatternStore();
|
|
185
194
|
const result = await store.download(input.id, { verify: input.verify });
|
|
186
195
|
return createResult(result);
|
|
187
196
|
}
|
|
@@ -206,9 +215,7 @@ export const transferTools = [
|
|
|
206
215
|
},
|
|
207
216
|
handler: async (input) => {
|
|
208
217
|
try {
|
|
209
|
-
const
|
|
210
|
-
const store = new PatternStore();
|
|
211
|
-
await store.initialize();
|
|
218
|
+
const store = await getPatternStore();
|
|
212
219
|
const featured = store.getFeatured();
|
|
213
220
|
const limit = input.limit || 10;
|
|
214
221
|
return createResult(featured.slice(0, limit));
|
|
@@ -234,9 +241,7 @@ export const transferTools = [
|
|
|
234
241
|
},
|
|
235
242
|
handler: async (input) => {
|
|
236
243
|
try {
|
|
237
|
-
const
|
|
238
|
-
const store = new PatternStore();
|
|
239
|
-
await store.initialize();
|
|
244
|
+
const store = await getPatternStore();
|
|
240
245
|
const trending = store.getTrending();
|
|
241
246
|
const limit = input.limit || 10;
|
|
242
247
|
return createResult(trending.slice(0, limit));
|
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Tool definitions for workflow automation and orchestration.
|
|
5
5
|
*/
|
|
6
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
6
|
+
import { existsSync, readFileSync, writeFileSync, renameSync, mkdirSync, statSync } from 'node:fs';
|
|
7
7
|
import { join } from 'node:path';
|
|
8
|
+
import { randomBytes } from 'node:crypto';
|
|
8
9
|
import { getProjectCwd } from './types.js';
|
|
10
|
+
const MAX_WORKFLOW_STORE_BYTES = 50 * 1024 * 1024; // 50 MB
|
|
9
11
|
// Storage paths
|
|
10
12
|
const STORAGE_DIR = '.monomind';
|
|
11
13
|
const WORKFLOW_DIR = 'workflows';
|
|
@@ -26,6 +28,9 @@ function loadWorkflowStore() {
|
|
|
26
28
|
try {
|
|
27
29
|
const path = getWorkflowPath();
|
|
28
30
|
if (existsSync(path)) {
|
|
31
|
+
if (statSync(path).size > MAX_WORKFLOW_STORE_BYTES) {
|
|
32
|
+
return { workflows: {}, templates: {}, version: '3.0.0' };
|
|
33
|
+
}
|
|
29
34
|
const data = readFileSync(path, 'utf-8');
|
|
30
35
|
return JSON.parse(data);
|
|
31
36
|
}
|
|
@@ -36,9 +41,37 @@ function loadWorkflowStore() {
|
|
|
36
41
|
return { workflows: {}, templates: {}, version: '3.0.0' };
|
|
37
42
|
}
|
|
38
43
|
function saveWorkflowStore(store) {
|
|
44
|
+
// Cap completed/failed/cancelled workflows so the file doesn't grow without
|
|
45
|
+
// bound. Each save serializes the entire store to disk; without eviction
|
|
46
|
+
// a long-running daemon would blow up to GBs of JSON.
|
|
47
|
+
const MAX_WORKFLOWS = 500;
|
|
48
|
+
const MAX_TEMPLATES = 200;
|
|
49
|
+
const TERMINAL = new Set(['completed', 'failed', 'cancelled']);
|
|
50
|
+
const finished = Object.entries(store.workflows ?? {})
|
|
51
|
+
.filter(([, w]) => TERMINAL.has(w.status ?? ''))
|
|
52
|
+
.sort(([, a], [, b]) => {
|
|
53
|
+
const aw = a;
|
|
54
|
+
const bw = b;
|
|
55
|
+
return (aw.completedAt ?? aw.createdAt ?? '').localeCompare(bw.completedAt ?? bw.createdAt ?? '');
|
|
56
|
+
});
|
|
57
|
+
if (finished.length > MAX_WORKFLOWS) {
|
|
58
|
+
for (const [id] of finished.slice(0, finished.length - MAX_WORKFLOWS)) {
|
|
59
|
+
delete store.workflows[id];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const templates = Object.keys(store.templates ?? {});
|
|
63
|
+
if (templates.length > MAX_TEMPLATES) {
|
|
64
|
+
for (const id of templates.slice(0, templates.length - MAX_TEMPLATES)) {
|
|
65
|
+
delete store.templates[id];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
39
68
|
ensureWorkflowDir();
|
|
40
|
-
|
|
69
|
+
const dest = getWorkflowPath();
|
|
70
|
+
const tmp = `${dest}.${process.pid}.${Date.now()}.tmp`;
|
|
71
|
+
writeFileSync(tmp, JSON.stringify(store, null, 2), 'utf-8');
|
|
72
|
+
renameSync(tmp, dest);
|
|
41
73
|
}
|
|
74
|
+
const FORBIDDEN_WORKFLOW_IDS = new Set(['__proto__', 'constructor', 'prototype']);
|
|
42
75
|
export const workflowTools = [
|
|
43
76
|
{
|
|
44
77
|
name: 'workflow_run',
|
|
@@ -69,7 +102,7 @@ export const workflowTools = [
|
|
|
69
102
|
const options = input.options || {};
|
|
70
103
|
const dryRun = options.dryRun;
|
|
71
104
|
// Build workflow from template or inline
|
|
72
|
-
const workflowId = `workflow-${Date.now()}-${
|
|
105
|
+
const workflowId = `workflow-${Date.now()}-${randomBytes(6).toString('hex')}`;
|
|
73
106
|
const stages = [];
|
|
74
107
|
// Generate stages based on template
|
|
75
108
|
const templateName = template || 'custom';
|
|
@@ -158,7 +191,7 @@ export const workflowTools = [
|
|
|
158
191
|
},
|
|
159
192
|
handler: async (input) => {
|
|
160
193
|
const store = loadWorkflowStore();
|
|
161
|
-
const workflowId = `workflow-${Date.now()}-${
|
|
194
|
+
const workflowId = `workflow-${Date.now()}-${randomBytes(6).toString('hex')}`;
|
|
162
195
|
const steps = (input.steps || []).map((s, i) => ({
|
|
163
196
|
stepId: `step-${i + 1}`,
|
|
164
197
|
name: s.name || `Step ${i + 1}`,
|
|
@@ -201,9 +234,17 @@ export const workflowTools = [
|
|
|
201
234
|
required: ['workflowId'],
|
|
202
235
|
},
|
|
203
236
|
handler: async (input) => {
|
|
204
|
-
const store = loadWorkflowStore();
|
|
205
237
|
const workflowId = input.workflowId;
|
|
206
|
-
|
|
238
|
+
if (!workflowId || typeof workflowId !== 'string' || FORBIDDEN_WORKFLOW_IDS.has(workflowId)) {
|
|
239
|
+
return { workflowId, error: 'Workflow not found' };
|
|
240
|
+
}
|
|
241
|
+
const store = loadWorkflowStore();
|
|
242
|
+
// Object.hasOwn defends against bracket-access into Object.prototype
|
|
243
|
+
// members (toString, hasOwnProperty, etc.) — the FORBIDDEN_WORKFLOW_IDS
|
|
244
|
+
// blocklist alone misses these inherited names.
|
|
245
|
+
const workflow = Object.hasOwn(store.workflows, workflowId)
|
|
246
|
+
? store.workflows[workflowId]
|
|
247
|
+
: undefined;
|
|
207
248
|
if (!workflow) {
|
|
208
249
|
return { workflowId, error: 'Workflow not found' };
|
|
209
250
|
}
|
|
@@ -252,9 +293,12 @@ export const workflowTools = [
|
|
|
252
293
|
required: ['workflowId'],
|
|
253
294
|
},
|
|
254
295
|
handler: async (input) => {
|
|
255
|
-
const store = loadWorkflowStore();
|
|
256
296
|
const workflowId = input.workflowId;
|
|
257
|
-
|
|
297
|
+
if (!workflowId || typeof workflowId !== 'string' || FORBIDDEN_WORKFLOW_IDS.has(workflowId)) {
|
|
298
|
+
return { workflowId, error: 'Workflow not found' };
|
|
299
|
+
}
|
|
300
|
+
const store = loadWorkflowStore();
|
|
301
|
+
const workflow = Object.hasOwn(store.workflows, workflowId) ? store.workflows[workflowId] : undefined;
|
|
258
302
|
if (!workflow) {
|
|
259
303
|
return { workflowId, error: 'Workflow not found' };
|
|
260
304
|
}
|
|
@@ -313,6 +357,7 @@ export const workflowTools = [
|
|
|
313
357
|
workflows.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
|
|
314
358
|
// Apply limit
|
|
315
359
|
const limit = input.limit || 20;
|
|
360
|
+
const totalCount = workflows.length;
|
|
316
361
|
workflows = workflows.slice(0, limit);
|
|
317
362
|
return {
|
|
318
363
|
workflows: workflows.map(w => ({
|
|
@@ -323,7 +368,7 @@ export const workflowTools = [
|
|
|
323
368
|
createdAt: w.createdAt,
|
|
324
369
|
completedAt: w.completedAt,
|
|
325
370
|
})),
|
|
326
|
-
total:
|
|
371
|
+
total: totalCount,
|
|
327
372
|
filters: { status: input.status },
|
|
328
373
|
};
|
|
329
374
|
},
|
|
@@ -340,9 +385,12 @@ export const workflowTools = [
|
|
|
340
385
|
required: ['workflowId'],
|
|
341
386
|
},
|
|
342
387
|
handler: async (input) => {
|
|
343
|
-
const store = loadWorkflowStore();
|
|
344
388
|
const workflowId = input.workflowId;
|
|
345
|
-
|
|
389
|
+
if (!workflowId || typeof workflowId !== 'string' || FORBIDDEN_WORKFLOW_IDS.has(workflowId)) {
|
|
390
|
+
return { workflowId, error: 'Workflow not found' };
|
|
391
|
+
}
|
|
392
|
+
const store = loadWorkflowStore();
|
|
393
|
+
const workflow = Object.hasOwn(store.workflows, workflowId) ? store.workflows[workflowId] : undefined;
|
|
346
394
|
if (!workflow) {
|
|
347
395
|
return { workflowId, error: 'Workflow not found' };
|
|
348
396
|
}
|
|
@@ -371,9 +419,12 @@ export const workflowTools = [
|
|
|
371
419
|
required: ['workflowId'],
|
|
372
420
|
},
|
|
373
421
|
handler: async (input) => {
|
|
374
|
-
const store = loadWorkflowStore();
|
|
375
422
|
const workflowId = input.workflowId;
|
|
376
|
-
|
|
423
|
+
if (!workflowId || typeof workflowId !== 'string' || FORBIDDEN_WORKFLOW_IDS.has(workflowId)) {
|
|
424
|
+
return { workflowId, error: 'Workflow not found' };
|
|
425
|
+
}
|
|
426
|
+
const store = loadWorkflowStore();
|
|
427
|
+
const workflow = Object.hasOwn(store.workflows, workflowId) ? store.workflows[workflowId] : undefined;
|
|
377
428
|
if (!workflow) {
|
|
378
429
|
return { workflowId, error: 'Workflow not found' };
|
|
379
430
|
}
|
|
@@ -413,16 +464,21 @@ export const workflowTools = [
|
|
|
413
464
|
required: ['workflowId'],
|
|
414
465
|
},
|
|
415
466
|
handler: async (input) => {
|
|
416
|
-
const store = loadWorkflowStore();
|
|
417
467
|
const workflowId = input.workflowId;
|
|
418
|
-
|
|
468
|
+
if (!workflowId || typeof workflowId !== 'string' || FORBIDDEN_WORKFLOW_IDS.has(workflowId)) {
|
|
469
|
+
return { workflowId, error: 'Workflow not found' };
|
|
470
|
+
}
|
|
471
|
+
const store = loadWorkflowStore();
|
|
472
|
+
const workflow = Object.hasOwn(store.workflows, workflowId)
|
|
473
|
+
? store.workflows[workflowId]
|
|
474
|
+
: undefined;
|
|
419
475
|
if (!workflow) {
|
|
420
476
|
return { workflowId, error: 'Workflow not found' };
|
|
421
477
|
}
|
|
422
|
-
if (workflow.status === 'completed' || workflow.status === 'failed') {
|
|
478
|
+
if (workflow.status === 'completed' || workflow.status === 'failed' || workflow.status === 'cancelled') {
|
|
423
479
|
return { workflowId, error: 'Workflow already finished' };
|
|
424
480
|
}
|
|
425
|
-
workflow.status = '
|
|
481
|
+
workflow.status = 'cancelled';
|
|
426
482
|
workflow.error = input.reason || 'Cancelled by user';
|
|
427
483
|
workflow.completedAt = new Date().toISOString();
|
|
428
484
|
// Mark remaining steps as skipped
|
|
@@ -451,9 +507,12 @@ export const workflowTools = [
|
|
|
451
507
|
required: ['workflowId'],
|
|
452
508
|
},
|
|
453
509
|
handler: async (input) => {
|
|
454
|
-
const store = loadWorkflowStore();
|
|
455
510
|
const workflowId = input.workflowId;
|
|
456
|
-
if (!
|
|
511
|
+
if (!workflowId || typeof workflowId !== 'string' || FORBIDDEN_WORKFLOW_IDS.has(workflowId)) {
|
|
512
|
+
return { workflowId, error: 'Workflow not found' };
|
|
513
|
+
}
|
|
514
|
+
const store = loadWorkflowStore();
|
|
515
|
+
if (!Object.hasOwn(store.workflows, workflowId)) {
|
|
457
516
|
return { workflowId, error: 'Workflow not found' };
|
|
458
517
|
}
|
|
459
518
|
const workflow = store.workflows[workflowId];
|
|
@@ -488,11 +547,15 @@ export const workflowTools = [
|
|
|
488
547
|
const store = loadWorkflowStore();
|
|
489
548
|
const action = input.action;
|
|
490
549
|
if (action === 'save') {
|
|
491
|
-
const
|
|
550
|
+
const rawWorkflowId = input.workflowId;
|
|
551
|
+
if (!rawWorkflowId || typeof rawWorkflowId !== 'string' || FORBIDDEN_WORKFLOW_IDS.has(rawWorkflowId) || !Object.hasOwn(store.workflows, rawWorkflowId)) {
|
|
552
|
+
return { action, error: 'Workflow not found' };
|
|
553
|
+
}
|
|
554
|
+
const workflow = store.workflows[rawWorkflowId];
|
|
492
555
|
if (!workflow) {
|
|
493
556
|
return { action, error: 'Workflow not found' };
|
|
494
557
|
}
|
|
495
|
-
const templateId = `template-${Date.now()}-${
|
|
558
|
+
const templateId = `template-${Date.now()}-${randomBytes(6).toString('hex')}`;
|
|
496
559
|
const template = {
|
|
497
560
|
...workflow,
|
|
498
561
|
workflowId: templateId,
|
|
@@ -521,17 +584,23 @@ export const workflowTools = [
|
|
|
521
584
|
};
|
|
522
585
|
}
|
|
523
586
|
if (action === 'create') {
|
|
524
|
-
const
|
|
587
|
+
const rawTemplateId = input.templateId;
|
|
588
|
+
if (!rawTemplateId || typeof rawTemplateId !== 'string' || FORBIDDEN_WORKFLOW_IDS.has(rawTemplateId) || !Object.hasOwn(store.templates, rawTemplateId)) {
|
|
589
|
+
return { action, error: 'Template not found' };
|
|
590
|
+
}
|
|
591
|
+
const template = store.templates[rawTemplateId];
|
|
525
592
|
if (!template) {
|
|
526
593
|
return { action, error: 'Template not found' };
|
|
527
594
|
}
|
|
528
|
-
const workflowId = `workflow-${Date.now()}-${
|
|
595
|
+
const workflowId = `workflow-${Date.now()}-${randomBytes(6).toString('hex')}`;
|
|
529
596
|
const workflow = {
|
|
530
597
|
...template,
|
|
531
598
|
workflowId,
|
|
532
599
|
name: input.newName || template.name.replace(' Template', ''),
|
|
533
600
|
status: 'ready',
|
|
534
601
|
createdAt: new Date().toISOString(),
|
|
602
|
+
steps: template.steps.map(s => ({ ...s, status: 'pending', result: undefined })),
|
|
603
|
+
variables: { ...template.variables },
|
|
535
604
|
};
|
|
536
605
|
store.workflows[workflowId] = workflow;
|
|
537
606
|
saveWorkflowStore(store);
|
|
@@ -199,6 +199,9 @@ export class EWCConsolidator {
|
|
|
199
199
|
penalty: result.totalPenalty,
|
|
200
200
|
patterns: result.patternsConsolidated
|
|
201
201
|
});
|
|
202
|
+
if (this.consolidationHistory.length > 100) {
|
|
203
|
+
this.consolidationHistory = this.consolidationHistory.slice(-100);
|
|
204
|
+
}
|
|
202
205
|
// Persist to disk
|
|
203
206
|
this.saveToDisk();
|
|
204
207
|
result.success = true;
|
|
@@ -495,7 +498,9 @@ export class EWCConsolidator {
|
|
|
495
498
|
consolidationHistory: this.consolidationHistory.slice(-100),
|
|
496
499
|
savedAt: Date.now()
|
|
497
500
|
};
|
|
498
|
-
|
|
501
|
+
const tmp = this.config.storagePath + '.tmp';
|
|
502
|
+
fs.writeFileSync(tmp, JSON.stringify(state, null, 2));
|
|
503
|
+
fs.renameSync(tmp, this.config.storagePath);
|
|
499
504
|
}
|
|
500
505
|
catch {
|
|
501
506
|
// Silently fail - persistence is best-effort
|
|
@@ -514,20 +519,46 @@ export class EWCConsolidator {
|
|
|
514
519
|
if (state.version !== '1.0.0') {
|
|
515
520
|
throw new Error(`Unsupported state version: ${state.version}`);
|
|
516
521
|
}
|
|
517
|
-
//
|
|
518
|
-
|
|
519
|
-
//
|
|
522
|
+
// Validate globalFisher — must be a finite-numeric vector matching dim.
|
|
523
|
+
// An attacker who can write the persisted file could otherwise inject
|
|
524
|
+
// [Infinity, ...] (freezes learning via the penalty>lambda damping branch)
|
|
525
|
+
// or NaN values that poison ranking unpredictably.
|
|
526
|
+
if (Array.isArray(state.globalFisher)
|
|
527
|
+
&& state.globalFisher.length === this.config.dimensions
|
|
528
|
+
&& state.globalFisher.every((v) => typeof v === 'number' && Number.isFinite(v))) {
|
|
529
|
+
this.globalFisher = state.globalFisher;
|
|
530
|
+
}
|
|
531
|
+
else {
|
|
532
|
+
this.globalFisher = new Array(this.config.dimensions).fill(0);
|
|
533
|
+
}
|
|
534
|
+
// Restore patterns — drop any whose weights/fisherDiagonal are invalid.
|
|
520
535
|
this.patterns.clear();
|
|
521
|
-
if (state.patterns) {
|
|
522
|
-
|
|
536
|
+
if (Array.isArray(state.patterns)) {
|
|
537
|
+
const isFiniteNumberArray = (a, dim) => Array.isArray(a) && a.length === dim && a.every(v => typeof v === 'number' && Number.isFinite(v));
|
|
538
|
+
for (const entry of state.patterns) {
|
|
539
|
+
if (!Array.isArray(entry) || entry.length !== 2)
|
|
540
|
+
continue;
|
|
541
|
+
const [id, pattern] = entry;
|
|
542
|
+
if (typeof id !== 'string' || id.length > 256)
|
|
543
|
+
continue;
|
|
544
|
+
const p = pattern;
|
|
545
|
+
if (!p || typeof p !== 'object')
|
|
546
|
+
continue;
|
|
547
|
+
if (p.weights !== undefined && !isFiniteNumberArray(p.weights, this.config.dimensions))
|
|
548
|
+
continue;
|
|
549
|
+
if (p.fisherDiagonal !== undefined && !isFiniteNumberArray(p.fisherDiagonal, this.config.dimensions))
|
|
550
|
+
continue;
|
|
523
551
|
this.patterns.set(id, pattern);
|
|
524
552
|
}
|
|
525
553
|
}
|
|
526
554
|
// Restore history
|
|
527
|
-
this.consolidationHistory = state.consolidationHistory
|
|
528
|
-
// Update config from persisted values
|
|
529
|
-
|
|
530
|
-
|
|
555
|
+
this.consolidationHistory = Array.isArray(state.consolidationHistory) ? state.consolidationHistory : [];
|
|
556
|
+
// Update config from persisted values, clamped to a sensible range to
|
|
557
|
+
// prevent negative/NaN lambda from inverting the regularization sign.
|
|
558
|
+
if (state.config && typeof state.config.lambda === 'number'
|
|
559
|
+
&& Number.isFinite(state.config.lambda)
|
|
560
|
+
&& state.config.lambda >= 0 && state.config.lambda <= 1000) {
|
|
561
|
+
this.config.lambda = state.config.lambda;
|
|
531
562
|
}
|
|
532
563
|
}
|
|
533
564
|
}
|
|
@@ -212,8 +212,8 @@ declare class LocalReasoningBank {
|
|
|
212
212
|
clear(): void;
|
|
213
213
|
}
|
|
214
214
|
/**
|
|
215
|
-
* Initialize the intelligence system (SONA + ReasoningBank)
|
|
216
|
-
*
|
|
215
|
+
* Initialize the intelligence system (SONA + ReasoningBank).
|
|
216
|
+
* Promise-based singleton: concurrent callers share a single init flight.
|
|
217
217
|
*/
|
|
218
218
|
export declare function initializeIntelligence(config?: Partial<SonaConfig>): Promise<{
|
|
219
219
|
success: boolean;
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*
|
|
11
11
|
* @module v1/cli/intelligence
|
|
12
12
|
*/
|
|
13
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
13
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, renameSync } from 'node:fs';
|
|
14
14
|
import { homedir } from 'node:os';
|
|
15
15
|
import { join } from 'node:path';
|
|
16
16
|
// ============================================================================
|
|
@@ -335,8 +335,26 @@ class LocalReasoningBank {
|
|
|
335
335
|
if (existsSync(path)) {
|
|
336
336
|
const data = JSON.parse(readFileSync(path, 'utf-8'));
|
|
337
337
|
if (Array.isArray(data)) {
|
|
338
|
+
// Validate each persisted pattern. The patterns file is part of the
|
|
339
|
+
// IPFS-distributed pattern transfer flow — without bounds checks, a
|
|
340
|
+
// malicious bundle can inject `confidence: 1e9` (deterministically wins
|
|
341
|
+
// every routing decision) or `keywords: [10000 strings]` (DoS on every
|
|
342
|
+
// findBestPatternMatch call).
|
|
338
343
|
for (const pattern of data) {
|
|
339
|
-
|
|
344
|
+
if (!pattern || typeof pattern !== 'object')
|
|
345
|
+
continue;
|
|
346
|
+
const id = pattern.id;
|
|
347
|
+
if (typeof id !== 'string' || id.length === 0 || id.length > 256)
|
|
348
|
+
continue;
|
|
349
|
+
const conf = pattern.confidence;
|
|
350
|
+
if (conf !== undefined && (typeof conf !== 'number' || !Number.isFinite(conf) || conf < 0 || conf > 1)) {
|
|
351
|
+
continue;
|
|
352
|
+
}
|
|
353
|
+
const keywords = pattern.keywords;
|
|
354
|
+
if (keywords !== undefined && (!Array.isArray(keywords) || keywords.length > 64)) {
|
|
355
|
+
continue;
|
|
356
|
+
}
|
|
357
|
+
this.patterns.set(id, pattern);
|
|
340
358
|
this.patternList.push(pattern);
|
|
341
359
|
}
|
|
342
360
|
}
|
|
@@ -370,7 +388,9 @@ class LocalReasoningBank {
|
|
|
370
388
|
try {
|
|
371
389
|
ensureDataDir();
|
|
372
390
|
const path = getPatternsPath();
|
|
373
|
-
|
|
391
|
+
const tmp = `${path}.${process.pid}.${Date.now()}.tmp`;
|
|
392
|
+
writeFileSync(tmp, JSON.stringify(this.patternList, null, 2), 'utf-8');
|
|
393
|
+
renameSync(tmp, path);
|
|
374
394
|
this.dirty = false;
|
|
375
395
|
}
|
|
376
396
|
catch (error) {
|
|
@@ -514,6 +534,7 @@ class LocalReasoningBank {
|
|
|
514
534
|
let sonaCoordinator = null;
|
|
515
535
|
let reasoningBank = null;
|
|
516
536
|
let intelligenceInitialized = false;
|
|
537
|
+
let initPromise = null;
|
|
517
538
|
let globalStats = {
|
|
518
539
|
trajectoriesRecorded: 0,
|
|
519
540
|
lastAdaptation: null
|
|
@@ -559,14 +580,7 @@ function savePersistedStats() {
|
|
|
559
580
|
* Initialize the intelligence system (SONA + ReasoningBank)
|
|
560
581
|
* Uses optimized local implementations
|
|
561
582
|
*/
|
|
562
|
-
|
|
563
|
-
if (intelligenceInitialized) {
|
|
564
|
-
return {
|
|
565
|
-
success: true,
|
|
566
|
-
sonaEnabled: !!sonaCoordinator,
|
|
567
|
-
reasoningBankEnabled: !!reasoningBank
|
|
568
|
-
};
|
|
569
|
-
}
|
|
583
|
+
async function _doInitializeIntelligence(config) {
|
|
570
584
|
try {
|
|
571
585
|
// Merge config with defaults
|
|
572
586
|
const finalConfig = {
|
|
@@ -598,6 +612,19 @@ export async function initializeIntelligence(config) {
|
|
|
598
612
|
};
|
|
599
613
|
}
|
|
600
614
|
}
|
|
615
|
+
/**
|
|
616
|
+
* Initialize the intelligence system (SONA + ReasoningBank).
|
|
617
|
+
* Promise-based singleton: concurrent callers share a single init flight.
|
|
618
|
+
*/
|
|
619
|
+
export async function initializeIntelligence(config) {
|
|
620
|
+
if (intelligenceInitialized) {
|
|
621
|
+
return { success: true, sonaEnabled: !!sonaCoordinator, reasoningBankEnabled: !!reasoningBank };
|
|
622
|
+
}
|
|
623
|
+
if (!initPromise) {
|
|
624
|
+
initPromise = _doInitializeIntelligence(config);
|
|
625
|
+
}
|
|
626
|
+
return initPromise;
|
|
627
|
+
}
|
|
601
628
|
/**
|
|
602
629
|
* Record a trajectory step for learning
|
|
603
630
|
* Performance: <0.05ms without embedding generation
|
|
@@ -661,7 +688,6 @@ export async function recordStep(step) {
|
|
|
661
688
|
globalStats.lastAdaptation = Date.now();
|
|
662
689
|
}
|
|
663
690
|
globalStats.trajectoriesRecorded++;
|
|
664
|
-
savePersistedStats();
|
|
665
691
|
return true;
|
|
666
692
|
}
|
|
667
693
|
catch {
|
|
@@ -839,7 +865,7 @@ export function clearIntelligence() {
|
|
|
839
865
|
*/
|
|
840
866
|
export function benchmarkAdaptation(iterations = 1000) {
|
|
841
867
|
if (!sonaCoordinator) {
|
|
842
|
-
|
|
868
|
+
return { totalMs: 0, avgMs: 0, minMs: 0, maxMs: 0, targetMet: false };
|
|
843
869
|
}
|
|
844
870
|
const times = [];
|
|
845
871
|
const testEmbedding = Array.from({ length: 384 }, () => Math.random());
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
*
|
|
17
17
|
* @module v1/cli/memory-bridge
|
|
18
18
|
*/
|
|
19
|
+
export declare function safeParseEmbedding(raw: string | null | undefined): number[] | null;
|
|
19
20
|
/**
|
|
20
21
|
* Store an entry via AgentDB v1.
|
|
21
22
|
* Phase 2-5: Routes through MutationGuard → TieredCache → DB → AttestationLog.
|