monomind 1.11.13 → 1.12.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/.claude/agents/generated/channel-intelligence-director.md +87 -0
- package/.claude/agents/generated/chief-growth-officer.md +88 -0
- package/.claude/agents/generated/content-seo-strategist.md +90 -0
- package/.claude/agents/generated/developer-community-strategist.md +91 -0
- package/.claude/agents/generated/outreach-partnership-strategist.md +90 -0
- package/.claude/agents/generated/social-media-strategist.md +91 -0
- package/.claude/agents/generated/video-visual-strategist.md +90 -0
- package/.claude/commands/mastermind/idea.md +1 -1
- package/.claude/helpers/auto-memory-hook.mjs +13 -4
- package/.claude/helpers/control-start.cjs +5 -0
- package/.claude/helpers/event-logger.cjs +114 -0
- package/.claude/helpers/handlers/adr-draft-handler.cjs +19 -5
- package/.claude/helpers/handlers/agent-start-handler.cjs +13 -4
- package/.claude/helpers/handlers/compact-handler.cjs +2 -0
- package/.claude/helpers/handlers/edit-handler.cjs +1 -1
- package/.claude/helpers/handlers/gates-handler.cjs +3 -0
- package/.claude/helpers/handlers/graph-status-handler.cjs +14 -8
- package/.claude/helpers/handlers/loops-status-handler.cjs +5 -2
- package/.claude/helpers/handlers/route-handler.cjs +13 -6
- package/.claude/helpers/handlers/session-handler.cjs +11 -4
- package/.claude/helpers/handlers/session-restore-handler.cjs +21 -11
- package/.claude/helpers/handlers/task-handler.cjs +13 -5
- package/.claude/helpers/intelligence.cjs +7 -2
- package/.claude/helpers/loop-tracker.cjs +15 -3
- package/.claude/helpers/memory.cjs +6 -1
- package/.claude/helpers/router.cjs +5 -2
- package/.claude/helpers/session.cjs +2 -0
- package/.claude/helpers/statusline.cjs +10 -2
- package/.claude/helpers/utils/micro-agents.cjs +20 -4
- package/.claude/scheduled_tasks.lock +1 -1
- package/.claude/settings.json +92 -1
- package/.claude/skills/mastermind/_protocol.md +23 -13
- package/.claude/skills/mastermind/architect.md +6 -9
- package/.claude/skills/mastermind/build.md +3 -3
- package/.claude/skills/mastermind/content.md +3 -3
- package/.claude/skills/mastermind/createorg.md +2 -2
- package/.claude/skills/mastermind/finance.md +3 -3
- package/.claude/skills/mastermind/idea.md +5 -3
- package/.claude/skills/mastermind/marketing.md +3 -3
- package/.claude/skills/mastermind/monitor.md +2 -2
- package/.claude/skills/mastermind/release.md +3 -3
- package/.claude/skills/mastermind/research.md +3 -3
- package/.claude/skills/mastermind/review.md +3 -3
- package/.claude/skills/mastermind/runorg.md +153 -86
- package/.claude/skills/mastermind/sales.md +3 -3
- package/README.md +286 -129
- package/package.json +19 -2
- package/packages/@monomind/cli/README.md +286 -129
- package/packages/@monomind/cli/bundled-graph/dist/src/build.js +73 -0
- package/packages/@monomind/cli/bundled-graph/dist/src/cluster.js +120 -0
- package/packages/@monomind/cli/bundled-graph/package.json +57 -0
- package/packages/@monomind/cli/dist/src/agents/halt-signal.d.ts +25 -0
- package/packages/@monomind/cli/dist/src/agents/halt-signal.js +76 -0
- package/packages/@monomind/cli/dist/src/agents/index.d.ts +18 -0
- package/packages/@monomind/cli/dist/src/agents/index.js +13 -0
- package/packages/@monomind/cli/dist/src/agents/managed-agent.d.ts +41 -0
- package/packages/@monomind/cli/dist/src/agents/managed-agent.js +69 -0
- package/packages/@monomind/cli/dist/src/agents/prompt-experiment.d.ts +23 -0
- package/packages/@monomind/cli/dist/src/agents/prompt-experiment.js +49 -0
- package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.d.ts +22 -0
- package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.js +80 -0
- package/packages/@monomind/cli/dist/src/agents/registry-builder.js +2 -0
- package/packages/@monomind/cli/dist/src/agents/registry-query.d.ts +71 -0
- package/packages/@monomind/cli/dist/src/agents/registry-query.js +125 -0
- package/packages/@monomind/cli/dist/src/agents/score-decay.d.ts +19 -0
- package/packages/@monomind/cli/dist/src/agents/score-decay.js +22 -0
- package/packages/@monomind/cli/dist/src/agents/shared-instructions-loader.d.ts +13 -0
- package/packages/@monomind/cli/dist/src/agents/shared-instructions-loader.js +40 -0
- package/packages/@monomind/cli/dist/src/agents/specialization-scorer.d.ts +54 -0
- package/packages/@monomind/cli/dist/src/agents/specialization-scorer.js +212 -0
- package/packages/@monomind/cli/dist/src/agents/termination-watcher.d.ts +30 -0
- package/packages/@monomind/cli/dist/src/agents/termination-watcher.js +84 -0
- package/packages/@monomind/cli/dist/src/agents/trigger-index.d.ts +20 -0
- package/packages/@monomind/cli/dist/src/agents/trigger-index.js +38 -0
- package/packages/@monomind/cli/dist/src/agents/trigger-scanner.d.ts +64 -0
- package/packages/@monomind/cli/dist/src/agents/trigger-scanner.js +308 -0
- package/packages/@monomind/cli/dist/src/agents/version-diff.d.ts +18 -0
- package/packages/@monomind/cli/dist/src/agents/version-diff.js +64 -0
- package/packages/@monomind/cli/dist/src/agents/version-store.d.ts +60 -0
- package/packages/@monomind/cli/dist/src/agents/version-store.js +235 -0
- package/packages/@monomind/cli/dist/src/autopilot-state.js +10 -5
- package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.js +13 -0
- package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.js +20 -9
- package/packages/@monomind/cli/dist/src/benchmarks/pretrain/index.d.ts +45 -0
- package/packages/@monomind/cli/dist/src/benchmarks/pretrain/index.js +404 -0
- package/packages/@monomind/cli/dist/src/browser/actions.js +10 -3
- package/packages/@monomind/cli/dist/src/browser/browser.js +12 -2
- package/packages/@monomind/cli/dist/src/browser/cdp.js +21 -3
- package/packages/@monomind/cli/dist/src/browser/har.js +27 -5
- package/packages/@monomind/cli/dist/src/commands/agent-wasm.d.ts +14 -0
- package/packages/@monomind/cli/dist/src/commands/agent-wasm.js +333 -0
- package/packages/@monomind/cli/dist/src/commands/agent.js +11 -8
- package/packages/@monomind/cli/dist/src/commands/analyze.js +36 -21
- package/packages/@monomind/cli/dist/src/commands/autopilot.js +12 -4
- package/packages/@monomind/cli/dist/src/commands/benchmark.js +51 -8
- package/packages/@monomind/cli/dist/src/commands/browse.js +5 -2
- package/packages/@monomind/cli/dist/src/commands/claims.js +29 -11
- package/packages/@monomind/cli/dist/src/commands/cleanup.js +25 -5
- package/packages/@monomind/cli/dist/src/commands/config.js +15 -7
- package/packages/@monomind/cli/dist/src/commands/daemon.js +6 -0
- package/packages/@monomind/cli/dist/src/commands/deployment.js +34 -19
- package/packages/@monomind/cli/dist/src/commands/doctor.js +151 -20
- package/packages/@monomind/cli/dist/src/commands/guidance.js +15 -2
- package/packages/@monomind/cli/dist/src/commands/hive-mind.js +37 -14
- package/packages/@monomind/cli/dist/src/commands/hooks.js +42 -25
- package/packages/@monomind/cli/dist/src/commands/init.js +9 -4
- package/packages/@monomind/cli/dist/src/commands/issues.js +29 -26
- package/packages/@monomind/cli/dist/src/commands/mcp.js +11 -5
- package/packages/@monomind/cli/dist/src/commands/memory.js +10 -0
- package/packages/@monomind/cli/dist/src/commands/migrate.js +5 -5
- package/packages/@monomind/cli/dist/src/commands/monograph.js +18 -5
- package/packages/@monomind/cli/dist/src/commands/monovector/backup.js +8 -2
- package/packages/@monomind/cli/dist/src/commands/monovector/benchmark.js +20 -7
- package/packages/@monomind/cli/dist/src/commands/monovector/import.js +15 -0
- package/packages/@monomind/cli/dist/src/commands/monovector/migrate.js +4 -1
- package/packages/@monomind/cli/dist/src/commands/monovector/optimize.js +11 -0
- package/packages/@monomind/cli/dist/src/commands/monovector/setup.js +11 -1
- package/packages/@monomind/cli/dist/src/commands/neural.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/performance.js +20 -7
- package/packages/@monomind/cli/dist/src/commands/platforms.js +90 -8
- package/packages/@monomind/cli/dist/src/commands/plugins.js +12 -5
- package/packages/@monomind/cli/dist/src/commands/process.js +33 -10
- package/packages/@monomind/cli/dist/src/commands/progress.js +5 -3
- package/packages/@monomind/cli/dist/src/commands/providers.js +5 -5
- package/packages/@monomind/cli/dist/src/commands/replay.js +8 -2
- package/packages/@monomind/cli/dist/src/commands/route.js +27 -7
- package/packages/@monomind/cli/dist/src/commands/security.js +4 -0
- package/packages/@monomind/cli/dist/src/commands/session.js +12 -1
- package/packages/@monomind/cli/dist/src/commands/start.js +11 -4
- package/packages/@monomind/cli/dist/src/commands/status.js +7 -4
- package/packages/@monomind/cli/dist/src/commands/swarm.js +27 -13
- package/packages/@monomind/cli/dist/src/commands/task.js +26 -11
- package/packages/@monomind/cli/dist/src/commands/tokens.js +7 -2
- package/packages/@monomind/cli/dist/src/commands/transfer-store.js +36 -22
- package/packages/@monomind/cli/dist/src/commands/ui.js +68 -0
- package/packages/@monomind/cli/dist/src/commands/update.js +15 -3
- package/packages/@monomind/cli/dist/src/commands/workflow.js +39 -6
- package/packages/@monomind/cli/dist/src/consensus/audit-writer.js +18 -7
- package/packages/@monomind/cli/dist/src/consensus/index.d.ts +7 -0
- package/packages/@monomind/cli/dist/src/consensus/index.js +6 -0
- package/packages/@monomind/cli/dist/src/consensus/vote-signer.js +25 -8
- package/packages/@monomind/cli/dist/src/context/context-provider.d.ts +44 -0
- package/packages/@monomind/cli/dist/src/context/context-provider.js +25 -0
- package/packages/@monomind/cli/dist/src/context/git-state-provider.d.ts +12 -0
- package/packages/@monomind/cli/dist/src/context/git-state-provider.js +34 -0
- package/packages/@monomind/cli/dist/src/context/index.d.ts +12 -0
- package/packages/@monomind/cli/dist/src/context/index.js +12 -0
- package/packages/@monomind/cli/dist/src/context/project-conventions-provider.d.ts +15 -0
- package/packages/@monomind/cli/dist/src/context/project-conventions-provider.js +19 -0
- package/packages/@monomind/cli/dist/src/context/prompt-assembler.d.ts +26 -0
- package/packages/@monomind/cli/dist/src/context/prompt-assembler.js +93 -0
- package/packages/@monomind/cli/dist/src/context/task-history-provider.d.ts +24 -0
- package/packages/@monomind/cli/dist/src/context/task-history-provider.js +32 -0
- package/packages/@monomind/cli/dist/src/context/user-preferences-provider.d.ts +14 -0
- package/packages/@monomind/cli/dist/src/context/user-preferences-provider.js +27 -0
- package/packages/@monomind/cli/dist/src/dlq/dlq-reader.d.ts +31 -0
- package/packages/@monomind/cli/dist/src/dlq/dlq-reader.js +81 -0
- package/packages/@monomind/cli/dist/src/dlq/dlq-writer.d.ts +24 -0
- package/packages/@monomind/cli/dist/src/dlq/dlq-writer.js +65 -0
- package/packages/@monomind/cli/dist/src/dlq/index.d.ts +10 -0
- package/packages/@monomind/cli/dist/src/dlq/index.js +7 -0
- package/packages/@monomind/cli/dist/src/eval/dataset-manager.d.ts +33 -0
- package/packages/@monomind/cli/dist/src/eval/dataset-manager.js +107 -0
- package/packages/@monomind/cli/dist/src/eval/dataset-runner.d.ts +23 -0
- package/packages/@monomind/cli/dist/src/eval/dataset-runner.js +59 -0
- package/packages/@monomind/cli/dist/src/eval/index.d.ts +10 -0
- package/packages/@monomind/cli/dist/src/eval/index.js +7 -0
- package/packages/@monomind/cli/dist/src/eval/trace-collector.d.ts +40 -0
- package/packages/@monomind/cli/dist/src/eval/trace-collector.js +102 -0
- package/packages/@monomind/cli/dist/src/index.js +7 -3
- package/packages/@monomind/cli/dist/src/infrastructure/in-memory-repositories.d.ts +68 -0
- package/packages/@monomind/cli/dist/src/infrastructure/in-memory-repositories.js +264 -0
- package/packages/@monomind/cli/dist/src/init/executor.js +14 -11
- package/packages/@monomind/cli/dist/src/init/shared-instructions-generator.js +20 -4
- package/packages/@monomind/cli/dist/src/init/statusline-generator.js +33 -12
- package/packages/@monomind/cli/dist/src/interactive/interrupt.d.ts +22 -0
- package/packages/@monomind/cli/dist/src/interactive/interrupt.js +71 -0
- package/packages/@monomind/cli/dist/src/mcp/deprecation-injector.d.ts +25 -0
- package/packages/@monomind/cli/dist/src/mcp/deprecation-injector.js +48 -0
- package/packages/@monomind/cli/dist/src/mcp/tool-registry.d.ts +61 -0
- package/packages/@monomind/cli/dist/src/mcp/tool-registry.js +246 -0
- package/packages/@monomind/cli/dist/src/mcp-tools/a2a-tools.js +98 -13
- package/packages/@monomind/cli/dist/src/mcp-tools/agent-tools.js +16 -3
- package/packages/@monomind/cli/dist/src/mcp-tools/analyze-tools.js +80 -17
- package/packages/@monomind/cli/dist/src/mcp-tools/browser-tools.js +84 -22
- package/packages/@monomind/cli/dist/src/mcp-tools/claims-tools.js +35 -7
- package/packages/@monomind/cli/dist/src/mcp-tools/config-tools.js +82 -17
- package/packages/@monomind/cli/dist/src/mcp-tools/coordination-tools.js +37 -4
- package/packages/@monomind/cli/dist/src/mcp-tools/daa-tools.js +49 -7
- package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.js +45 -18
- package/packages/@monomind/cli/dist/src/mcp-tools/github-tools.js +75 -25
- package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.js +32 -10
- package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +91 -20
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +188 -29
- package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +25 -7
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-compat.js +11 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +148 -26
- package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.js +44 -9
- package/packages/@monomind/cli/dist/src/mcp-tools/performance-tools.js +45 -10
- package/packages/@monomind/cli/dist/src/mcp-tools/progress-tools.js +7 -4
- package/packages/@monomind/cli/dist/src/mcp-tools/request-tracker.js +15 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.js +61 -9
- package/packages/@monomind/cli/dist/src/mcp-tools/session-tools.js +45 -14
- package/packages/@monomind/cli/dist/src/mcp-tools/swarm-tools.js +15 -3
- package/packages/@monomind/cli/dist/src/mcp-tools/system-tools.js +14 -7
- package/packages/@monomind/cli/dist/src/mcp-tools/task-tools.js +52 -10
- package/packages/@monomind/cli/dist/src/mcp-tools/terminal-tools.js +40 -6
- package/packages/@monomind/cli/dist/src/mcp-tools/transfer-tools.js +37 -4
- package/packages/@monomind/cli/dist/src/mcp-tools/wasm-agent-tools.d.ts +9 -0
- package/packages/@monomind/cli/dist/src/mcp-tools/wasm-agent-tools.js +230 -0
- package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.js +29 -6
- package/packages/@monomind/cli/dist/src/memory/ewc-consolidation.js +26 -10
- package/packages/@monomind/cli/dist/src/memory/intelligence.js +80 -19
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +21 -2
- package/packages/@monomind/cli/dist/src/memory/memory-initializer.js +67 -3
- package/packages/@monomind/cli/dist/src/memory/sona-optimizer.js +14 -4
- package/packages/@monomind/cli/dist/src/model/complexity-scorer.d.ts +21 -0
- package/packages/@monomind/cli/dist/src/model/complexity-scorer.js +106 -0
- package/packages/@monomind/cli/dist/src/model/index.d.ts +4 -0
- package/packages/@monomind/cli/dist/src/model/index.js +4 -0
- package/packages/@monomind/cli/dist/src/model/model-settings.d.ts +22 -0
- package/packages/@monomind/cli/dist/src/model/model-settings.js +33 -0
- package/packages/@monomind/cli/dist/src/model/model-tier-resolver.d.ts +24 -0
- package/packages/@monomind/cli/dist/src/model/model-tier-resolver.js +65 -0
- package/packages/@monomind/cli/dist/src/monovector/capabilities.d.ts +34 -0
- package/packages/@monomind/cli/dist/src/monovector/capabilities.js +37 -0
- package/packages/@monomind/cli/dist/src/monovector/command-outcomes.js +43 -7
- package/packages/@monomind/cli/dist/src/monovector/coverage-router.js +8 -4
- package/packages/@monomind/cli/dist/src/monovector/coverage-tools.js +6 -3
- package/packages/@monomind/cli/dist/src/monovector/diff-classifier.js +13 -0
- package/packages/@monomind/cli/dist/src/monovector/route-outcomes.d.ts +2 -1
- package/packages/@monomind/cli/dist/src/monovector/route-outcomes.js +46 -4
- package/packages/@monomind/cli/dist/src/observability/replay-reader.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/orchestration/index.d.ts +7 -0
- package/packages/@monomind/cli/dist/src/orchestration/index.js +6 -0
- package/packages/@monomind/cli/dist/src/orchestration/mode-dispatcher.d.ts +11 -0
- package/packages/@monomind/cli/dist/src/orchestration/mode-dispatcher.js +31 -0
- package/packages/@monomind/cli/dist/src/orchestration/routing-modes.d.ts +68 -0
- package/packages/@monomind/cli/dist/src/orchestration/routing-modes.js +180 -0
- package/packages/@monomind/cli/dist/src/plugins/manager.js +8 -3
- package/packages/@monomind/cli/dist/src/plugins/store/discovery.js +46 -2
- package/packages/@monomind/cli/dist/src/plugins/store/search.js +5 -4
- package/packages/@monomind/cli/dist/src/plugins/tests/demo-plugin-store.d.ts +7 -0
- package/packages/@monomind/cli/dist/src/plugins/tests/demo-plugin-store.js +126 -0
- package/packages/@monomind/cli/dist/src/plugins/tests/standalone-test.d.ts +12 -0
- package/packages/@monomind/cli/dist/src/plugins/tests/standalone-test.js +188 -0
- package/packages/@monomind/cli/dist/src/plugins/tests/test-plugin-store.d.ts +7 -0
- package/packages/@monomind/cli/dist/src/plugins/tests/test-plugin-store.js +206 -0
- package/packages/@monomind/cli/dist/src/production/circuit-breaker.js +17 -3
- package/packages/@monomind/cli/dist/src/production/error-handler.js +3 -0
- package/packages/@monomind/cli/dist/src/production/monitoring.js +20 -3
- package/packages/@monomind/cli/dist/src/production/rate-limiter.js +13 -4
- package/packages/@monomind/cli/dist/src/production/retry.js +17 -9
- package/packages/@monomind/cli/dist/src/routing/embed-worker.js +6 -2
- package/packages/@monomind/cli/dist/src/routing/embedder.js +0 -0
- package/packages/@monomind/cli/dist/src/routing/llm-caller.js +13 -2
- package/packages/@monomind/cli/dist/src/routing/route-layer-factory.js +18 -3
- package/packages/@monomind/cli/dist/src/runtime/headless.d.ts +60 -0
- package/packages/@monomind/cli/dist/src/runtime/headless.js +284 -0
- package/packages/@monomind/cli/dist/src/services/agentic-flow-bridge.d.ts +50 -0
- package/packages/@monomind/cli/dist/src/services/agentic-flow-bridge.js +95 -0
- package/packages/@monomind/cli/dist/src/services/claim-service.d.ts +1 -0
- package/packages/@monomind/cli/dist/src/services/claim-service.js +8 -0
- package/packages/@monomind/cli/dist/src/services/config-file-manager.js +14 -2
- package/packages/@monomind/cli/dist/src/services/container-worker-pool.d.ts +197 -0
- package/packages/@monomind/cli/dist/src/services/container-worker-pool.js +623 -0
- package/packages/@monomind/cli/dist/src/services/headless-worker-executor.js +18 -2
- package/packages/@monomind/cli/dist/src/services/index.d.ts +13 -0
- package/packages/@monomind/cli/dist/src/services/index.js +11 -0
- package/packages/@monomind/cli/dist/src/services/worker-daemon.js +53 -12
- package/packages/@monomind/cli/dist/src/services/worker-queue.d.ts +201 -0
- package/packages/@monomind/cli/dist/src/services/worker-queue.js +594 -0
- package/packages/@monomind/cli/dist/src/swarm/communication-graph.d.ts +25 -0
- package/packages/@monomind/cli/dist/src/swarm/communication-graph.js +77 -0
- package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.d.ts +31 -0
- package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.js +61 -0
- package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.d.ts +19 -0
- package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.js +68 -0
- package/packages/@monomind/cli/dist/src/transfer/anonymization/index.d.ts +0 -3
- package/packages/@monomind/cli/dist/src/transfer/anonymization/index.js +16 -1
- package/packages/@monomind/cli/dist/src/transfer/deploy-seraphine.d.ts +13 -0
- package/packages/@monomind/cli/dist/src/transfer/deploy-seraphine.js +205 -0
- package/packages/@monomind/cli/dist/src/transfer/export.js +8 -0
- package/packages/@monomind/cli/dist/src/transfer/ipfs/upload.js +33 -3
- package/packages/@monomind/cli/dist/src/transfer/serialization/cfp.js +9 -3
- package/packages/@monomind/cli/dist/src/transfer/storage/gcs.js +37 -3
- package/packages/@monomind/cli/dist/src/transfer/store/discovery.js +45 -3
- package/packages/@monomind/cli/dist/src/transfer/store/download.js +5 -0
- package/packages/@monomind/cli/dist/src/transfer/store/publish.js +13 -1
- package/packages/@monomind/cli/dist/src/transfer/store/registry.d.ts +8 -0
- package/packages/@monomind/cli/dist/src/transfer/store/registry.js +30 -5
- package/packages/@monomind/cli/dist/src/transfer/store/search.js +20 -5
- package/packages/@monomind/cli/dist/src/transfer/store/tests/standalone-test.d.ts +12 -0
- package/packages/@monomind/cli/dist/src/transfer/store/tests/standalone-test.js +190 -0
- package/packages/@monomind/cli/dist/src/transfer/test-seraphine.d.ts +6 -0
- package/packages/@monomind/cli/dist/src/transfer/test-seraphine.js +105 -0
- package/packages/@monomind/cli/dist/src/transfer/tests/test-store.d.ts +7 -0
- package/packages/@monomind/cli/dist/src/transfer/tests/test-store.js +214 -0
- package/packages/@monomind/cli/dist/src/update/checker.js +59 -7
- package/packages/@monomind/cli/dist/src/update/executor.js +50 -3
- package/packages/@monomind/cli/dist/src/update/index.js +18 -1
- package/packages/@monomind/cli/dist/src/update/rate-limiter.d.ts +6 -0
- package/packages/@monomind/cli/dist/src/update/rate-limiter.js +79 -7
- package/packages/@monomind/cli/dist/src/update/validator.js +52 -1
- package/packages/@monomind/cli/dist/src/workflow/condition-evaluator.d.ts +10 -0
- package/packages/@monomind/cli/dist/src/workflow/condition-evaluator.js +82 -0
- package/packages/@monomind/cli/dist/src/workflow/context-resolver.d.ts +12 -0
- package/packages/@monomind/cli/dist/src/workflow/context-resolver.js +23 -0
- package/packages/@monomind/cli/dist/src/workflow/dag-builder.d.ts +17 -0
- package/packages/@monomind/cli/dist/src/workflow/dag-builder.js +129 -0
- package/packages/@monomind/cli/dist/src/workflow/dag-executor.d.ts +9 -0
- package/packages/@monomind/cli/dist/src/workflow/dag-executor.js +116 -0
- package/packages/@monomind/cli/dist/src/workflow/dag-types.d.ts +41 -0
- package/packages/@monomind/cli/dist/src/workflow/dag-types.js +8 -0
- package/packages/@monomind/cli/dist/src/workflow/dsl-parser.d.ts +12 -0
- package/packages/@monomind/cli/dist/src/workflow/dsl-parser.js +20 -0
- package/packages/@monomind/cli/dist/src/workflow/dsl-schema.d.ts +165 -0
- package/packages/@monomind/cli/dist/src/workflow/dsl-schema.js +82 -0
- package/packages/@monomind/cli/dist/src/workflow/index.d.ts +13 -0
- package/packages/@monomind/cli/dist/src/workflow/index.js +11 -0
- package/packages/@monomind/cli/dist/src/workflow/template-engine.d.ts +11 -0
- package/packages/@monomind/cli/dist/src/workflow/template-engine.js +40 -0
- package/packages/@monomind/cli/dist/src/workflow/workflow-executor.d.ts +29 -0
- package/packages/@monomind/cli/dist/src/workflow/workflow-executor.js +227 -0
- package/packages/@monomind/cli/package.json +9 -10
- package/packages/@monomind/guidance/dist/adversarial.d.ts +284 -0
- package/packages/@monomind/guidance/dist/adversarial.js +572 -0
- package/packages/@monomind/guidance/dist/analyzer.d.ts +530 -0
- package/packages/@monomind/guidance/dist/analyzer.js +2518 -0
- package/packages/@monomind/guidance/dist/artifacts.d.ts +283 -0
- package/packages/@monomind/guidance/dist/artifacts.js +356 -0
- package/packages/@monomind/guidance/dist/authority.d.ts +290 -0
- package/packages/@monomind/guidance/dist/authority.js +558 -0
- package/packages/@monomind/guidance/dist/capabilities.d.ts +209 -0
- package/packages/@monomind/guidance/dist/capabilities.js +485 -0
- package/packages/@monomind/guidance/dist/coherence.d.ts +233 -0
- package/packages/@monomind/guidance/dist/coherence.js +372 -0
- package/packages/@monomind/guidance/dist/compiler.d.ts +87 -0
- package/packages/@monomind/guidance/dist/compiler.js +419 -0
- package/packages/@monomind/guidance/dist/conformance-kit.d.ts +225 -0
- package/packages/@monomind/guidance/dist/conformance-kit.js +629 -0
- package/packages/@monomind/guidance/dist/continue-gate.d.ts +214 -0
- package/packages/@monomind/guidance/dist/continue-gate.js +353 -0
- package/packages/@monomind/guidance/dist/crypto-utils.d.ts +17 -0
- package/packages/@monomind/guidance/dist/crypto-utils.js +24 -0
- package/packages/@monomind/guidance/dist/evolution.d.ts +282 -0
- package/packages/@monomind/guidance/dist/evolution.js +500 -0
- package/packages/@monomind/guidance/dist/gates.d.ts +79 -0
- package/packages/@monomind/guidance/dist/gates.js +302 -0
- package/packages/@monomind/guidance/dist/gateway.d.ts +206 -0
- package/packages/@monomind/guidance/dist/gateway.js +452 -0
- package/packages/@monomind/guidance/dist/generators.d.ts +153 -0
- package/packages/@monomind/guidance/dist/generators.js +682 -0
- package/packages/@monomind/guidance/dist/headless.d.ts +177 -0
- package/packages/@monomind/guidance/dist/headless.js +342 -0
- package/packages/@monomind/guidance/dist/hooks.d.ts +109 -0
- package/packages/@monomind/guidance/dist/hooks.js +347 -0
- package/packages/@monomind/guidance/dist/index.d.ts +205 -0
- package/packages/@monomind/guidance/dist/index.js +321 -0
- package/packages/@monomind/guidance/dist/ledger.d.ts +162 -0
- package/packages/@monomind/guidance/dist/ledger.js +375 -0
- package/packages/@monomind/guidance/dist/manifest-validator.d.ts +289 -0
- package/packages/@monomind/guidance/dist/manifest-validator.js +838 -0
- package/packages/@monomind/guidance/dist/memory-gate.d.ts +222 -0
- package/packages/@monomind/guidance/dist/memory-gate.js +382 -0
- package/packages/@monomind/guidance/dist/meta-governance.d.ts +265 -0
- package/packages/@monomind/guidance/dist/meta-governance.js +348 -0
- package/packages/@monomind/guidance/dist/optimizer.d.ts +104 -0
- package/packages/@monomind/guidance/dist/optimizer.js +329 -0
- package/packages/@monomind/guidance/dist/persistence.d.ts +189 -0
- package/packages/@monomind/guidance/dist/persistence.js +464 -0
- package/packages/@monomind/guidance/dist/proof.d.ts +185 -0
- package/packages/@monomind/guidance/dist/proof.js +238 -0
- package/packages/@monomind/guidance/dist/retriever.d.ts +116 -0
- package/packages/@monomind/guidance/dist/retriever.js +394 -0
- package/packages/@monomind/guidance/dist/ruvbot-integration.d.ts +370 -0
- package/packages/@monomind/guidance/dist/ruvbot-integration.js +738 -0
- package/packages/@monomind/guidance/dist/temporal.d.ts +426 -0
- package/packages/@monomind/guidance/dist/temporal.js +658 -0
- package/packages/@monomind/guidance/dist/trust.d.ts +283 -0
- package/packages/@monomind/guidance/dist/trust.js +473 -0
- package/packages/@monomind/guidance/dist/truth-anchors.d.ts +276 -0
- package/packages/@monomind/guidance/dist/truth-anchors.js +488 -0
- package/packages/@monomind/guidance/dist/types.d.ts +378 -0
- package/packages/@monomind/guidance/dist/types.js +10 -0
- package/packages/@monomind/guidance/dist/uncertainty.d.ts +372 -0
- package/packages/@monomind/guidance/dist/uncertainty.js +619 -0
- package/packages/@monomind/guidance/dist/wasm-kernel.d.ts +48 -0
- package/packages/@monomind/guidance/dist/wasm-kernel.js +158 -0
|
@@ -172,7 +172,7 @@ module.exports = {
|
|
|
172
172
|
const remaining = fs.readdirSync(regDir).filter(f => f.endsWith('.json')).length;
|
|
173
173
|
const _actPath = path.join(CWD, '.monomind', 'metrics', 'swarm-activity.json');
|
|
174
174
|
let _prevLastActive = 0;
|
|
175
|
-
try { _prevLastActive = (JSON.parse(fs.readFileSync(_actPath, 'utf-8'))?.swarm?.lastActive) || 0; } catch { /* ignore */ }
|
|
175
|
+
try { var _actSt = fs.statSync(_actPath); if (_actSt.size < 65536) { _prevLastActive = (JSON.parse(fs.readFileSync(_actPath, 'utf-8'))?.swarm?.lastActive) || 0; } } catch { /* ignore */ }
|
|
176
176
|
fs.writeFileSync(_actPath, JSON.stringify({
|
|
177
177
|
timestamp: new Date().toISOString(),
|
|
178
178
|
swarm: {
|
|
@@ -217,7 +217,8 @@ module.exports = {
|
|
|
217
217
|
try {
|
|
218
218
|
var haltFile = path.join(CWD, 'data', 'halt-signals.jsonl');
|
|
219
219
|
if (fs.existsSync(haltFile)) {
|
|
220
|
-
var
|
|
220
|
+
var haltSt = fs.statSync(haltFile);
|
|
221
|
+
var haltLines = haltSt.size < 1048576 ? fs.readFileSync(haltFile, 'utf-8').trim().split('\n').filter(Boolean) : [];
|
|
221
222
|
if (haltLines.length > 0) {
|
|
222
223
|
console.warn('[HALT_DETECTED] ' + haltLines.length + ' halt signal(s) present');
|
|
223
224
|
}
|
|
@@ -298,8 +299,11 @@ module.exports = {
|
|
|
298
299
|
var settingsPath = path.join(CWD, '.claude', 'settings.json');
|
|
299
300
|
var adrCfg = {};
|
|
300
301
|
if (fs.existsSync(settingsPath)) {
|
|
301
|
-
var
|
|
302
|
-
|
|
302
|
+
var settingsSt = fs.statSync(settingsPath);
|
|
303
|
+
if (settingsSt.size < 524288) {
|
|
304
|
+
var s = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
|
|
305
|
+
adrCfg = (s.monomind && s.monomind.adr) || {};
|
|
306
|
+
}
|
|
303
307
|
}
|
|
304
308
|
if (adrCfg.autoGenerate) {
|
|
305
309
|
var taskAgent = hookInput.agentSlug || hookInput.agent_slug || '';
|
|
@@ -307,7 +311,11 @@ module.exports = {
|
|
|
307
311
|
var isArchitectLevel = ['architect', 'system-architect', 'software-architect'].includes(taskAgent)
|
|
308
312
|
|| /\b(architecture|design decision|adr|trade-?off|migration strategy)\b/.test(taskDescAdr);
|
|
309
313
|
if (isArchitectLevel && taskDescAdr.length > 30) {
|
|
310
|
-
|
|
314
|
+
// Guard adrCfg.directory against path traversal outside CWD
|
|
315
|
+
var rawAdrDir = typeof adrCfg.directory === 'string' ? adrCfg.directory : 'docs/adrs';
|
|
316
|
+
var resolvedAdrDir = path.resolve(CWD, rawAdrDir);
|
|
317
|
+
if (!resolvedAdrDir.startsWith(CWD + path.sep) && resolvedAdrDir !== CWD) { throw new Error('adr.directory outside project'); }
|
|
318
|
+
var adrDir = resolvedAdrDir;
|
|
311
319
|
fs.mkdirSync(adrDir, { recursive: true });
|
|
312
320
|
var adrNum = (fs.readdirSync(adrDir).filter(function(f) { return f.endsWith('.md'); }).length + 1)
|
|
313
321
|
.toString().padStart(4, '0');
|
|
@@ -20,9 +20,13 @@ function ensureDir() {
|
|
|
20
20
|
try { fs.mkdirSync(INTEL_DIR, { recursive: true }); } catch (_) {}
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
var MAX_PATTERNS_SIZE = 10 * 1024 * 1024; // 10 MiB guard
|
|
24
|
+
|
|
23
25
|
function loadPatterns() {
|
|
24
26
|
try {
|
|
25
27
|
if (fs.existsSync(PATTERNS_FILE)) {
|
|
28
|
+
var st = fs.statSync(PATTERNS_FILE);
|
|
29
|
+
if (st.size > MAX_PATTERNS_SIZE) { _patterns = []; return; }
|
|
26
30
|
_patterns = JSON.parse(fs.readFileSync(PATTERNS_FILE, 'utf-8'));
|
|
27
31
|
}
|
|
28
32
|
} catch (_) { _patterns = []; }
|
|
@@ -77,8 +81,9 @@ function feedback(success) {
|
|
|
77
81
|
function storePattern(pattern) {
|
|
78
82
|
ensureDir();
|
|
79
83
|
loadPatterns();
|
|
80
|
-
|
|
81
|
-
_patterns.
|
|
84
|
+
var safeId = String(pattern.id || '').slice(0, 256);
|
|
85
|
+
_patterns = _patterns.filter(function(p) { return p.id !== safeId; });
|
|
86
|
+
_patterns.push(Object.assign({ storedAt: new Date().toISOString() }, pattern, { id: safeId }));
|
|
82
87
|
try {
|
|
83
88
|
fs.writeFileSync(PATTERNS_FILE, JSON.stringify(_patterns.slice(-500), null, 2), 'utf-8');
|
|
84
89
|
} catch (_) {}
|
|
@@ -15,13 +15,20 @@ const path = require('path');
|
|
|
15
15
|
const CWD = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
16
16
|
const LOOPS_DIR = path.join(CWD, '.monomind', 'loops');
|
|
17
17
|
|
|
18
|
+
const STDIN_MAX_BYTES = 1 * 1024 * 1024; // 1 MiB cap to prevent OOM
|
|
19
|
+
|
|
18
20
|
async function readStdin() {
|
|
19
21
|
if (process.stdin.isTTY) return '';
|
|
20
22
|
return new Promise((resolve) => {
|
|
21
23
|
let data = '';
|
|
24
|
+
let bytesRead = 0;
|
|
22
25
|
const timer = setTimeout(() => { process.stdin.removeAllListeners(); resolve(data); }, 3000);
|
|
23
26
|
process.stdin.setEncoding('utf8');
|
|
24
|
-
process.stdin.on('data', chunk => {
|
|
27
|
+
process.stdin.on('data', chunk => {
|
|
28
|
+
bytesRead += Buffer.byteLength(chunk, 'utf8');
|
|
29
|
+
if (bytesRead > STDIN_MAX_BYTES) { clearTimeout(timer); resolve(''); return; }
|
|
30
|
+
data += chunk;
|
|
31
|
+
});
|
|
25
32
|
process.stdin.on('end', () => { clearTimeout(timer); resolve(data); });
|
|
26
33
|
process.stdin.on('error', () => { clearTimeout(timer); resolve(data); });
|
|
27
34
|
process.stdin.resume();
|
|
@@ -60,7 +67,9 @@ async function main() {
|
|
|
60
67
|
try { hookInput = JSON.parse(raw); } catch { process.exit(0); }
|
|
61
68
|
|
|
62
69
|
const toolInput = hookInput.tool_input || hookInput.toolInput || {};
|
|
63
|
-
const
|
|
70
|
+
const rawSessionId = hookInput.session_id || hookInput.sessionId || hookInput.id || '';
|
|
71
|
+
// Sanitize sessionId to prevent path traversal — allow only alphanumeric, dash, underscore, dot
|
|
72
|
+
const sessionId = String(rawSessionId).replace(/[^a-zA-Z0-9_.\-]/g, '').slice(0, 128);
|
|
64
73
|
|
|
65
74
|
if (!sessionId) { process.exit(0); }
|
|
66
75
|
|
|
@@ -75,7 +84,10 @@ async function main() {
|
|
|
75
84
|
let existing = {};
|
|
76
85
|
try {
|
|
77
86
|
if (fs.existsSync(loopFile)) {
|
|
78
|
-
|
|
87
|
+
const stat = fs.statSync(loopFile);
|
|
88
|
+
if (stat.size <= 512 * 1024) { // 512 KiB guard to prevent OOM
|
|
89
|
+
existing = JSON.parse(fs.readFileSync(loopFile, 'utf-8'));
|
|
90
|
+
}
|
|
79
91
|
}
|
|
80
92
|
} catch { /* start fresh */ }
|
|
81
93
|
|
|
@@ -16,9 +16,13 @@ function ensureDir() {
|
|
|
16
16
|
try { fs.mkdirSync(MEMORY_DIR, { recursive: true }); } catch (_) {}
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
var MAX_INDEX_SIZE = 50 * 1024 * 1024; // 50 MiB guard
|
|
20
|
+
|
|
19
21
|
function loadIndex() {
|
|
20
22
|
try {
|
|
21
23
|
if (!fs.existsSync(MEMORY_INDEX)) return [];
|
|
24
|
+
var st = fs.statSync(MEMORY_INDEX);
|
|
25
|
+
if (st.size > MAX_INDEX_SIZE) return [];
|
|
22
26
|
return JSON.parse(fs.readFileSync(MEMORY_INDEX, 'utf-8'));
|
|
23
27
|
} catch (_) {
|
|
24
28
|
return [];
|
|
@@ -36,7 +40,8 @@ function saveIndex(entries) {
|
|
|
36
40
|
|
|
37
41
|
function store(key, value, namespace) {
|
|
38
42
|
var entries = loadIndex();
|
|
39
|
-
var ns = namespace || 'default';
|
|
43
|
+
var ns = String(namespace || 'default').slice(0, 128);
|
|
44
|
+
key = String(key || '').slice(0, 512);
|
|
40
45
|
// Remove existing entry with same key+namespace
|
|
41
46
|
entries = entries.filter(function(e) { return !(e.key === key && e.namespace === ns); });
|
|
42
47
|
entries.push({ key: key, value: value, namespace: ns, storedAt: new Date().toISOString() });
|
|
@@ -35,13 +35,16 @@ const DEFAULT_RESULT = {
|
|
|
35
35
|
extrasMatches: [],
|
|
36
36
|
};
|
|
37
37
|
|
|
38
|
+
var MAX_PROMPT = 2000;
|
|
39
|
+
|
|
38
40
|
function routeTask(prompt) {
|
|
39
41
|
if (!prompt || typeof prompt !== 'string') return DEFAULT_RESULT;
|
|
42
|
+
var safePrompt = prompt.slice(0, MAX_PROMPT);
|
|
40
43
|
|
|
41
44
|
var best = null;
|
|
42
45
|
for (var i = 0; i < KEYWORD_ROUTES.length; i++) {
|
|
43
46
|
var rule = KEYWORD_ROUTES[i];
|
|
44
|
-
if (rule.pattern.test(
|
|
47
|
+
if (rule.pattern.test(safePrompt)) {
|
|
45
48
|
if (!best || rule.confidence > best.confidence) {
|
|
46
49
|
best = rule;
|
|
47
50
|
}
|
|
@@ -54,7 +57,7 @@ function routeTask(prompt) {
|
|
|
54
57
|
agent: best.agent,
|
|
55
58
|
agentSlug: best.agent.toLowerCase().replace(/\s+/g, '-'),
|
|
56
59
|
confidence: best.confidence,
|
|
57
|
-
reason: 'Keyword match: ' + best.pattern.toString().slice(
|
|
60
|
+
reason: ('Keyword match: ' + best.pattern.toString()).slice(0, 80),
|
|
58
61
|
semanticRouting: false,
|
|
59
62
|
specificAgents: [],
|
|
60
63
|
skillMatches: [],
|
|
@@ -17,6 +17,8 @@ function ensureDir() {
|
|
|
17
17
|
function restore() {
|
|
18
18
|
try {
|
|
19
19
|
if (!fs.existsSync(SESSION_FILE)) return null;
|
|
20
|
+
var st = fs.statSync(SESSION_FILE);
|
|
21
|
+
if (st.size > 1 * 1024 * 1024) return null; // 1 MiB guard
|
|
20
22
|
var raw = fs.readFileSync(SESSION_FILE, 'utf-8');
|
|
21
23
|
var data = JSON.parse(raw);
|
|
22
24
|
if (!data || !data.sessionId) return null;
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
17
17
|
const fs = require('fs');
|
|
18
18
|
const path = require('path');
|
|
19
|
-
const { execSync } = require('child_process');
|
|
19
|
+
const { execSync, spawnSync } = require('child_process');
|
|
20
20
|
const os = require('os');
|
|
21
21
|
|
|
22
22
|
// Configuration
|
|
@@ -204,6 +204,8 @@ function getModelFromSessionJSONL() {
|
|
|
204
204
|
if (files.length === 0) return null;
|
|
205
205
|
|
|
206
206
|
const sessionFile = path.join(projectsDir, files[0].f);
|
|
207
|
+
// Guard against OOM: skip session files larger than 10 MB
|
|
208
|
+
try { if (fs.statSync(sessionFile).size > 10 * 1024 * 1024) return null; } catch { return null; }
|
|
207
209
|
const raw = fs.readFileSync(sessionFile, 'utf-8');
|
|
208
210
|
const lines = raw.split('\n').filter(Boolean);
|
|
209
211
|
|
|
@@ -922,7 +924,13 @@ function getGraphifyStats() {
|
|
|
922
924
|
|
|
923
925
|
try {
|
|
924
926
|
if (fs.existsSync(dbPath)) {
|
|
925
|
-
|
|
927
|
+
// Use spawnSync array args to prevent shell injection via dbPath (CWD-derived)
|
|
928
|
+
const result = spawnSync(
|
|
929
|
+
'sqlite3',
|
|
930
|
+
[dbPath, 'SELECT (SELECT COUNT(*) FROM nodes), (SELECT COUNT(*) FROM edges);'],
|
|
931
|
+
{ encoding: 'utf-8', timeout: 1000 }
|
|
932
|
+
);
|
|
933
|
+
const out = (result.stdout || '').trim();
|
|
926
934
|
if (out) {
|
|
927
935
|
const [n, e] = out.split('|').map(v => parseInt(v, 10) || 0);
|
|
928
936
|
if (n > 0) return { nodes: n, edges: e, exists: true };
|
|
@@ -77,15 +77,18 @@ function _triggerExtractFromFrontmatter(content, agentSlug) {
|
|
|
77
77
|
return triggers;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
function _triggerCollectMdFiles(dir) {
|
|
80
|
+
function _triggerCollectMdFiles(dir, _depth) {
|
|
81
|
+
var depth = (_depth === undefined) ? 0 : _depth;
|
|
82
|
+
if (depth > 5) return []; // cap recursion depth to prevent stack overflow DoS
|
|
81
83
|
var results = [];
|
|
82
84
|
try {
|
|
83
85
|
var entries = fs.readdirSync(dir);
|
|
84
86
|
for (var i = 0; i < entries.length; i++) {
|
|
87
|
+
if (results.length >= 200) break; // cap total file count to prevent DoS
|
|
85
88
|
var full = path.join(dir, entries[i]);
|
|
86
89
|
try {
|
|
87
90
|
var st = fs.lstatSync(full);
|
|
88
|
-
if (st.isDirectory()) results = results.concat(_triggerCollectMdFiles(full));
|
|
91
|
+
if (st.isDirectory()) results = results.concat(_triggerCollectMdFiles(full, depth + 1));
|
|
89
92
|
else if (entries[i].endsWith('.md')) results.push(full);
|
|
90
93
|
} catch (e) {}
|
|
91
94
|
}
|
|
@@ -98,7 +101,11 @@ function _triggerBuildIndex(agentDir) {
|
|
|
98
101
|
var files = _triggerCollectMdFiles(agentDir);
|
|
99
102
|
for (var i = 0; i < files.length; i++) {
|
|
100
103
|
var content;
|
|
101
|
-
try {
|
|
104
|
+
try {
|
|
105
|
+
var _fst = fs.statSync(files[i]);
|
|
106
|
+
if (_fst.size > 256 * 1024) continue; // skip files > 256 KiB to prevent OOM
|
|
107
|
+
content = fs.readFileSync(files[i], 'utf-8');
|
|
108
|
+
} catch (e) { continue; }
|
|
102
109
|
var slug = files[i].split('/').pop().replace(/\.md$/i, '').toLowerCase().replace(/[^a-z0-9-]/g, '-');
|
|
103
110
|
patterns = patterns.concat(_triggerExtractFromFrontmatter(content, slug));
|
|
104
111
|
}
|
|
@@ -114,6 +121,8 @@ function scanMicroAgentTriggers(prompt) {
|
|
|
114
121
|
|
|
115
122
|
try {
|
|
116
123
|
if (fs.existsSync(indexPath)) {
|
|
124
|
+
var _idxSt = fs.statSync(indexPath);
|
|
125
|
+
if (_idxSt.size > 512 * 1024) { throw new Error('trigger-index.json exceeds 512 KiB'); }
|
|
117
126
|
var idx = JSON.parse(fs.readFileSync(indexPath, 'utf-8'));
|
|
118
127
|
var age = Date.now() - new Date(idx.builtAt || 0).getTime();
|
|
119
128
|
if (age < 3600000 && Array.isArray(idx.patterns)) {
|
|
@@ -140,6 +149,7 @@ function scanMicroAgentTriggers(prompt) {
|
|
|
140
149
|
if (p.mode !== 'inject' && p.mode !== 'takeover') continue;
|
|
141
150
|
if (seen[p.agentSlug]) continue;
|
|
142
151
|
try {
|
|
152
|
+
if (typeof p.pattern !== 'string' || p.pattern.length > 500) continue; // cap pattern length to prevent ReDoS
|
|
143
153
|
var re = new RegExp(p.pattern, 'i');
|
|
144
154
|
var m = re.exec(prompt);
|
|
145
155
|
if (m) {
|
|
@@ -164,6 +174,8 @@ function _buildKnowledgeSearchFn(knowledgeDir) {
|
|
|
164
174
|
if (!fs.existsSync(chunksFile)) return [];
|
|
165
175
|
var lines;
|
|
166
176
|
try {
|
|
177
|
+
var _cSt = fs.statSync(chunksFile);
|
|
178
|
+
if (_cSt.size > 4 * 1024 * 1024) return []; // skip > 4 MiB to prevent OOM
|
|
167
179
|
lines = fs.readFileSync(chunksFile, 'utf-8').trim().split('\n').filter(Boolean);
|
|
168
180
|
} catch (e) { return []; }
|
|
169
181
|
|
|
@@ -209,6 +221,8 @@ function _autoIndexKnowledge(knowledgeDir) {
|
|
|
209
221
|
} catch (e) {}
|
|
210
222
|
}
|
|
211
223
|
try {
|
|
224
|
+
var _sSt = fs.statSync(path.join(CWD, '.monomind', 'graph', 'stats.json'));
|
|
225
|
+
if (_sSt.size > 256 * 1024) { throw new Error('stats.json exceeds 256 KiB'); }
|
|
212
226
|
var statsForHash = JSON.parse(fs.readFileSync(path.join(CWD, '.monomind', 'graph', 'stats.json'), 'utf-8'));
|
|
213
227
|
hashInput += 'monograph:' + (statsForHash.builtAt || 0) + ';';
|
|
214
228
|
} catch(e) {}
|
|
@@ -220,7 +234,7 @@ function _autoIndexKnowledge(knowledgeDir) {
|
|
|
220
234
|
try { existingHash = fs.readFileSync(hashFile, 'utf-8').trim(); } catch (e) {}
|
|
221
235
|
|
|
222
236
|
var existingChunkCount = 0;
|
|
223
|
-
try { if (fs.existsSync(chunksFile)) { existingChunkCount = fs.readFileSync(chunksFile, 'utf-8').trim().split('\n').filter(Boolean).length; } } catch (e) {}
|
|
237
|
+
try { if (fs.existsSync(chunksFile)) { var _ecSt = fs.statSync(chunksFile); if (_ecSt.size <= 4 * 1024 * 1024) { existingChunkCount = fs.readFileSync(chunksFile, 'utf-8').trim().split('\n').filter(Boolean).length; } } } catch (e) {}
|
|
224
238
|
if (existingHash === contentHash && existingChunkCount > 0) return 0;
|
|
225
239
|
|
|
226
240
|
var newLines = [];
|
|
@@ -228,6 +242,8 @@ function _autoIndexKnowledge(knowledgeDir) {
|
|
|
228
242
|
var src = sources[si];
|
|
229
243
|
try {
|
|
230
244
|
if (!fs.existsSync(src.filePath)) continue;
|
|
245
|
+
var _srcSt = fs.statSync(src.filePath);
|
|
246
|
+
if (_srcSt.size > 512 * 1024) continue; // skip > 512 KiB to prevent OOM
|
|
231
247
|
var content = fs.readFileSync(src.filePath, 'utf-8');
|
|
232
248
|
var sections = content.split(/\n{2,}|\n(?=#{1,3} )/);
|
|
233
249
|
for (var ci = 0; ci < sections.length; ci++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"sessionId":"
|
|
1
|
+
{"sessionId":"ed60b548-7aa2-4e96-bcec-4eaf8aa33732","pid":74650,"procStart":"Mon Jun 1 16:07:08 2026","acquiredAt":1780344677932}
|
package/.claude/settings.json
CHANGED
|
@@ -65,6 +65,16 @@
|
|
|
65
65
|
"timeout": 3000
|
|
66
66
|
}
|
|
67
67
|
]
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"matcher": ".*",
|
|
71
|
+
"hooks": [
|
|
72
|
+
{
|
|
73
|
+
"type": "command",
|
|
74
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/event-logger.cjs\" pre-tool",
|
|
75
|
+
"timeout": 2000
|
|
76
|
+
}
|
|
77
|
+
]
|
|
68
78
|
}
|
|
69
79
|
],
|
|
70
80
|
"PostToolUse": [
|
|
@@ -107,6 +117,27 @@
|
|
|
107
117
|
"timeout": 2000
|
|
108
118
|
}
|
|
109
119
|
]
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"matcher": ".*",
|
|
123
|
+
"hooks": [
|
|
124
|
+
{
|
|
125
|
+
"type": "command",
|
|
126
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/event-logger.cjs\" post-tool",
|
|
127
|
+
"timeout": 2000
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
}
|
|
131
|
+
],
|
|
132
|
+
"Notification": [
|
|
133
|
+
{
|
|
134
|
+
"hooks": [
|
|
135
|
+
{
|
|
136
|
+
"type": "command",
|
|
137
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/event-logger.cjs\" notification",
|
|
138
|
+
"timeout": 2000
|
|
139
|
+
}
|
|
140
|
+
]
|
|
110
141
|
}
|
|
111
142
|
],
|
|
112
143
|
"UserPromptSubmit": [
|
|
@@ -118,6 +149,15 @@
|
|
|
118
149
|
"timeout": 10000
|
|
119
150
|
}
|
|
120
151
|
]
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"hooks": [
|
|
155
|
+
{
|
|
156
|
+
"type": "command",
|
|
157
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/event-logger.cjs\" user-prompt",
|
|
158
|
+
"timeout": 2000
|
|
159
|
+
}
|
|
160
|
+
]
|
|
121
161
|
}
|
|
122
162
|
],
|
|
123
163
|
"SessionStart": [
|
|
@@ -142,6 +182,11 @@
|
|
|
142
182
|
"type": "command",
|
|
143
183
|
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/control-start.cjs\"",
|
|
144
184
|
"timeout": 5000
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"type": "command",
|
|
188
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/event-logger.cjs\" session-start",
|
|
189
|
+
"timeout": 2000
|
|
145
190
|
}
|
|
146
191
|
]
|
|
147
192
|
}
|
|
@@ -153,6 +198,11 @@
|
|
|
153
198
|
"type": "command",
|
|
154
199
|
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/hook-handler.cjs\" session-end",
|
|
155
200
|
"timeout": 10000
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"type": "command",
|
|
204
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/event-logger.cjs\" session-end",
|
|
205
|
+
"timeout": 2000
|
|
156
206
|
}
|
|
157
207
|
]
|
|
158
208
|
}
|
|
@@ -164,6 +214,11 @@
|
|
|
164
214
|
"type": "command",
|
|
165
215
|
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/auto-memory-hook.mjs\" sync",
|
|
166
216
|
"timeout": 10000
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"type": "command",
|
|
220
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/event-logger.cjs\" stop",
|
|
221
|
+
"timeout": 2000
|
|
167
222
|
}
|
|
168
223
|
]
|
|
169
224
|
}
|
|
@@ -180,6 +235,11 @@
|
|
|
180
235
|
"type": "command",
|
|
181
236
|
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/hook-handler.cjs\" session-end",
|
|
182
237
|
"timeout": 5000
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"type": "command",
|
|
241
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/event-logger.cjs\" compact",
|
|
242
|
+
"timeout": 2000
|
|
183
243
|
}
|
|
184
244
|
]
|
|
185
245
|
},
|
|
@@ -194,6 +254,11 @@
|
|
|
194
254
|
"type": "command",
|
|
195
255
|
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/hook-handler.cjs\" session-end",
|
|
196
256
|
"timeout": 6000
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"type": "command",
|
|
260
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/event-logger.cjs\" compact",
|
|
261
|
+
"timeout": 2000
|
|
197
262
|
}
|
|
198
263
|
]
|
|
199
264
|
}
|
|
@@ -210,6 +275,22 @@
|
|
|
210
275
|
"type": "command",
|
|
211
276
|
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/hook-handler.cjs\" pre-task",
|
|
212
277
|
"timeout": 3000
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"type": "command",
|
|
281
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/event-logger.cjs\" subagent-start",
|
|
282
|
+
"timeout": 2000
|
|
283
|
+
}
|
|
284
|
+
]
|
|
285
|
+
}
|
|
286
|
+
],
|
|
287
|
+
"SubagentStop": [
|
|
288
|
+
{
|
|
289
|
+
"hooks": [
|
|
290
|
+
{
|
|
291
|
+
"type": "command",
|
|
292
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/event-logger.cjs\" subagent-stop",
|
|
293
|
+
"timeout": 2000
|
|
213
294
|
}
|
|
214
295
|
]
|
|
215
296
|
}
|
|
@@ -221,6 +302,11 @@
|
|
|
221
302
|
"type": "command",
|
|
222
303
|
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/hook-handler.cjs\" post-task",
|
|
223
304
|
"timeout": 5000
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"type": "command",
|
|
308
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/event-logger.cjs\" teammate-idle",
|
|
309
|
+
"timeout": 2000
|
|
224
310
|
}
|
|
225
311
|
]
|
|
226
312
|
}
|
|
@@ -232,6 +318,11 @@
|
|
|
232
318
|
"type": "command",
|
|
233
319
|
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/hook-handler.cjs\" post-task",
|
|
234
320
|
"timeout": 5000
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"type": "command",
|
|
324
|
+
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/helpers/event-logger.cjs\" task-completed",
|
|
325
|
+
"timeout": 2000
|
|
235
326
|
}
|
|
236
327
|
]
|
|
237
328
|
}
|
|
@@ -239,7 +330,7 @@
|
|
|
239
330
|
},
|
|
240
331
|
"attribution": {
|
|
241
332
|
"commit": "Co-Authored-By: nokhodian <nokhodian@gmail.com>",
|
|
242
|
-
"pr": "
|
|
333
|
+
"pr": "🤖 Generated with [monomind](https://github.com/monoes/monomind)"
|
|
243
334
|
},
|
|
244
335
|
"monomind": {
|
|
245
336
|
"version": "3.5.2",
|
|
@@ -289,14 +289,16 @@ If the user is running across multiple repos for the same project, they MUST use
|
|
|
289
289
|
# Compatible with macOS bash 3.2
|
|
290
290
|
project_name="${project_name:-$(basename "$PWD")}"
|
|
291
291
|
canonical="${project_name}-<domain>"
|
|
292
|
+
board_tracking=true
|
|
292
293
|
|
|
293
294
|
# Step 1 — Resolve space
|
|
294
295
|
space_id=$(monotask space list 2>/dev/null | awk -F'|' '{gsub(/^ +| +$/,"",$1);gsub(/^ +| +$/,"",$2);if($2==n)print $1}' n="$project_name" | head -1)
|
|
295
296
|
[ -z "$space_id" ] && space_id=$(monotask space create "$project_name" 2>/dev/null | grep -oE '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')
|
|
296
|
-
[ -z "$space_id" ] && { echo "
|
|
297
|
+
[ -z "$space_id" ] && { echo "[mastermind] monotask board unavailable — board tracking skipped."; board_tracking=false; }
|
|
297
298
|
|
|
298
299
|
# Step 2 — Find existing board by canonical name or create
|
|
299
300
|
# board list format is "uuid: name" (colon-space separator, NOT pipe)
|
|
301
|
+
if [ "$board_tracking" = "true" ]; then
|
|
300
302
|
board_id=$(monotask board list 2>/dev/null | awk -F': ' '{gsub(/^ +| +$/,"",$1);gsub(/^ +| +$/,"",$2);if($2==n)print $1}' n="$canonical" | head -1)
|
|
301
303
|
if [ -n "$board_id" ]; then
|
|
302
304
|
# Step 3a — Fetch column IDs from existing board
|
|
@@ -307,12 +309,15 @@ if [ -n "$board_id" ]; then
|
|
|
307
309
|
else
|
|
308
310
|
# Step 3b — Create board and columns
|
|
309
311
|
board_id=$(monotask board create --space "$space_id" "$canonical" --json 2>/dev/null | jq -r '.id // empty')
|
|
310
|
-
[ -z "$board_id" ] && echo "[mastermind] monotask board unavailable — board tracking skipped."
|
|
312
|
+
[ -z "$board_id" ] && { echo "[mastermind] monotask board unavailable — board tracking skipped."; board_tracking=false; }
|
|
313
|
+
if [ "$board_tracking" = "true" ]; then
|
|
311
314
|
monotask space boards add "$space_id" "$board_id" >/dev/null 2>&1 || true
|
|
312
|
-
todo_col=$(monotask column create "$board_id" "Todo" --json | jq -r '.id // empty')
|
|
313
|
-
doing_col=$(monotask column create "$board_id" "Doing" --json | jq -r '.id // empty')
|
|
314
|
-
done_col=$(monotask column create "$board_id" "Done" --json | jq -r '.id // empty')
|
|
315
|
-
[ -z "$todo_col" ] && { echo "
|
|
315
|
+
todo_col=$(monotask column create "$board_id" "Todo" --json 2>/dev/null | jq -r '.id // empty')
|
|
316
|
+
doing_col=$(monotask column create "$board_id" "Doing" --json 2>/dev/null | jq -r '.id // empty')
|
|
317
|
+
done_col=$(monotask column create "$board_id" "Done" --json 2>/dev/null | jq -r '.id // empty')
|
|
318
|
+
[ -z "$todo_col" ] && { echo "[mastermind] monotask board unavailable — board tracking skipped."; board_tracking=false; }
|
|
319
|
+
fi
|
|
320
|
+
fi
|
|
316
321
|
fi
|
|
317
322
|
```
|
|
318
323
|
|
|
@@ -321,15 +326,17 @@ When master.md runs multiple domains, resolve the space **once** before the loop
|
|
|
321
326
|
```bash
|
|
322
327
|
# Compatible with macOS bash 3.2 — jq accumulation instead of declare -A
|
|
323
328
|
project_name="<resolved project_name>"
|
|
329
|
+
board_tracking=true
|
|
324
330
|
space_id=$(monotask space list 2>/dev/null | awk -F'|' '{gsub(/^ +| +$/,"",$1);gsub(/^ +| +$/,"",$2);if($2==n)print $1}' n="$project_name" | head -1)
|
|
325
331
|
[ -z "$space_id" ] && space_id=$(monotask space create "$project_name" 2>/dev/null | grep -oE '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')
|
|
326
|
-
[ -z "$space_id" ] && { echo "
|
|
332
|
+
[ -z "$space_id" ] && { echo "[mastermind] monotask board unavailable — board tracking skipped."; board_tracking=false; }
|
|
327
333
|
|
|
328
334
|
state_patch='{}'
|
|
329
335
|
for domain in build marketing ops; do # substitute actual domain list
|
|
330
336
|
canonical="${project_name}-${domain}"
|
|
337
|
+
if [ "$board_tracking" = "true" ]; then
|
|
331
338
|
# board list format is "uuid: name" (colon-space separator, NOT pipe)
|
|
332
|
-
board_id=$(monotask board list 2>/dev/null | awk -F': ' '{gsub(/^ +| +$/,"",$1);gsub(/^ +| +$/,"",$2);if($2==n)print $1}' n="$canonical" | head -1)
|
|
339
|
+
board_id=$(monotask board list 2>/dev/null | awk -F': ' '{gsub(/^ +| +$/,"",$1);gsub(/^ +| +$/,"",$2);if($2==n)print $1}' n="$canonical" | head -1)
|
|
333
340
|
if [ -n "$board_id" ]; then
|
|
334
341
|
cols_json=$(monotask column list "$board_id" --json 2>/dev/null || echo '[]')
|
|
335
342
|
todo_col=$(echo "$cols_json" | jq -r '[.[] | select(.title=="Todo" or .title=="Backlog")] | .[0].id // empty')
|
|
@@ -337,12 +344,15 @@ board_id=$(monotask board list 2>/dev/null | awk -F': ' '{gsub(/^ +| +$/,"",$1);
|
|
|
337
344
|
done_col=$(echo "$cols_json" | jq -r '[.[] | select(.title=="Done")] | .[0].id // empty')
|
|
338
345
|
else
|
|
339
346
|
board_id=$(monotask board create --space "$space_id" "$canonical" --json 2>/dev/null | jq -r '.id // empty')
|
|
340
|
-
[ -z "$board_id" ] && echo "[mastermind] monotask board unavailable — board tracking skipped."
|
|
347
|
+
[ -z "$board_id" ] && { echo "[mastermind] monotask board unavailable — board tracking skipped."; board_tracking=false; }
|
|
348
|
+
if [ "$board_tracking" = "true" ]; then
|
|
341
349
|
monotask space boards add "$space_id" "$board_id" >/dev/null 2>&1 || true
|
|
342
|
-
todo_col=$(monotask column create "$board_id" "Todo" --json | jq -r '.id // empty')
|
|
343
|
-
doing_col=$(monotask column create "$board_id" "Doing" --json | jq -r '.id // empty')
|
|
344
|
-
done_col=$(monotask column create "$board_id" "Done" --json | jq -r '.id // empty')
|
|
345
|
-
[ -z "$todo_col" ] && { echo "
|
|
350
|
+
todo_col=$(monotask column create "$board_id" "Todo" --json 2>/dev/null | jq -r '.id // empty')
|
|
351
|
+
doing_col=$(monotask column create "$board_id" "Doing" --json 2>/dev/null | jq -r '.id // empty')
|
|
352
|
+
done_col=$(monotask column create "$board_id" "Done" --json 2>/dev/null | jq -r '.id // empty')
|
|
353
|
+
[ -z "$todo_col" ] && { echo "[mastermind] monotask board unavailable — board tracking skipped."; board_tracking=false; }
|
|
354
|
+
fi
|
|
355
|
+
fi
|
|
346
356
|
fi
|
|
347
357
|
state_patch=$(echo "$state_patch" | jq \
|
|
348
358
|
--arg d "$domain" --arg b "$board_id" \
|
|
@@ -88,17 +88,17 @@ If this skill is invoked directly (not by master):
|
|
|
88
88
|
```
|
|
89
89
|
After the bash above completes, apply the 60% classification rule: sum the total file count across all extensions. If any single extension group exceeds 60% of the total, set `<stack>` to that stack's name (e.g. `typescript`, `python`, `go`); otherwise set `<stack>` to `multi-stack`. Use this value for `Stack: <stack>` in all subsequent briefings.
|
|
90
90
|
If `scope` was not provided by the caller, infer it from the prompt: "review"/"audit"/"check"/"assess" → `review`; "deduplicate"/"dedup"/"consolidate" → `deduplicate`; "design"/"architect"/"model"/"bounded context" → `design`; "migrate"/"migration"/"port to"/"convert" → `migrate`; no keyword match or multiple keyword matches → `all`. Use the resolved scope for all subsequent steps.
|
|
91
|
-
5. If `board_id` was not provided by the caller: find or create monotask space `<project_name>`, then create board `architect` within it
|
|
91
|
+
5. If `board_id` was not provided by the caller: find or create monotask space `<project_name>`, then create board `architect` within it. Before executing the bash block below, substitute the resolved `project_name` (or `basename "$PWD"` if not provided) for every `<project_name>` occurrence:
|
|
92
92
|
```bash
|
|
93
93
|
space_id=$(monotask space list 2>/dev/null | awk -F' \| ' -v n="<project_name>" '$2==n{print $1}' | head -1)
|
|
94
94
|
[ -z "$space_id" ] && space_id=$(monotask space create "<project_name>" 2>&1 | grep -oE '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')
|
|
95
95
|
result=$(monotask board create "architect" --json 2>/dev/null)
|
|
96
96
|
board_id=$(echo "$result" | jq -r '.id // empty')
|
|
97
97
|
[ -n "$board_id" ] && [ -n "$space_id" ] && monotask space boards add "$space_id" "$board_id" >/dev/null 2>&1 || true
|
|
98
|
-
[ -z "$board_id" ] && echo "[
|
|
99
|
-
echo "$board_id"
|
|
98
|
+
[ -z "$board_id" ] && { echo "[mastermind] monotask board unavailable — board tracking skipped."; board_tracking=false; }
|
|
99
|
+
echo "${board_id:-}"
|
|
100
100
|
```
|
|
101
|
-
If
|
|
101
|
+
If board_id is empty after this block, set `board_tracking=false` and continue — do not abort. Card creation steps later are skipped when `board_tracking=false`.
|
|
102
102
|
6. Proceed with complexity assessment below
|
|
103
103
|
7. At end: emit `session:complete` (if `caller` is `standalone`). Before executing the curl below, substitute the resolved sessionId for `<sessionId>`:
|
|
104
104
|
```bash
|
|
@@ -363,13 +363,10 @@ For each stream, identify:
|
|
|
363
363
|
- Dependencies between streams (e.g. coupling analysis before deduplication plan)
|
|
364
364
|
|
|
365
365
|
STEP 3 — CREATE TASKS
|
|
366
|
-
For each architecture stream, create a monotask card on the project board
|
|
367
|
-
|
|
368
|
-
If BOARD_ID is non-empty: First resolve column IDs (slash commands are not available inside background Task agents — use bash directly):
|
|
366
|
+
For each architecture stream, create a monotask card on the project board. First resolve column IDs (slash commands are not available inside background Task agents — use bash directly):
|
|
369
367
|
|
|
370
368
|
\`\`\`bash
|
|
371
|
-
|
|
372
|
-
columns=$([ -n "$BOARD_ID" ] && monotask column list "$BOARD_ID" --json || echo '[]')
|
|
369
|
+
columns=$(monotask column list "$BOARD_ID" --json)
|
|
373
370
|
COL_TODO_ID=$(echo "$columns" | jq -r '.[] | select(.title == "Todo" or .title == "Backlog") | .id' | head -1)
|
|
374
371
|
COL_DONE_ID=$(echo "$columns" | jq -r '.[] | select(.title == "Done") | .id' | head -1)
|
|
375
372
|
\`\`\`
|
|
@@ -52,8 +52,8 @@ If this skill is invoked directly (not by master):
|
|
|
52
52
|
space_id=$(monotask space list 2>/dev/null | awk -F' \| ' -v n="$project_name" '$2==n{print $1}' | head -1)
|
|
53
53
|
[ -z "$space_id" ] && space_id=$(monotask space create "$project_name" 2>&1 | grep -oE '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')
|
|
54
54
|
[ -z "$space_id" ] && { echo "ERROR: Could not find or create space '$project_name'"; exit 1; }
|
|
55
|
-
board_id=$(monotask board create "development" --json
|
|
56
|
-
[ -z "$board_id" ] && echo "
|
|
55
|
+
board_id=$(monotask board create "development" --json | jq -r '.id // empty')
|
|
56
|
+
[ -z "$board_id" ] && { echo "ERROR: Failed to create development board"; exit 1; }
|
|
57
57
|
monotask space boards add "$space_id" "$board_id" >/dev/null 2>&1 || true
|
|
58
58
|
todo_col=$(monotask column create "$board_id" "Todo" --json | jq -r '.id')
|
|
59
59
|
doing_col=$(monotask column create "$board_id" "Doing" --json | jq -r '.id')
|
|
@@ -120,7 +120,7 @@ Spawn one Task agent per task (all in parallel where dependencies allow):
|
|
|
120
120
|
- Code review: subagent_type "reviewer"
|
|
121
121
|
- TDD/SPARC work: subagent_type "sparc-coder"
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
Also run /mastermind:do --board <board_id> to track execution.
|
|
124
124
|
|
|
125
125
|
STEP 4 — COLLECT AND RETURN
|
|
126
126
|
Collect all agent output schemas. Return to caller:
|
|
@@ -73,8 +73,8 @@ If this skill is invoked directly (not by master):
|
|
|
73
73
|
space_id=$(monotask space list 2>/dev/null | awk -F' \| ' -v n="$project_name" '$2==n{print $1}' | head -1)
|
|
74
74
|
[ -z "$space_id" ] && space_id=$(monotask space create "$project_name" 2>&1 | grep -oE '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')
|
|
75
75
|
[ -z "$space_id" ] && { echo "ERROR: Could not find or create space '$project_name'"; exit 1; }
|
|
76
|
-
board_id=$(monotask board create "content" --json
|
|
77
|
-
[ -z "$board_id" ] && echo "
|
|
76
|
+
board_id=$(monotask board create "content" --json | jq -r '.id // empty')
|
|
77
|
+
[ -z "$board_id" ] && { echo "ERROR: Failed to create content board"; exit 1; }
|
|
78
78
|
monotask space boards add "$space_id" "$board_id" >/dev/null 2>&1 || true
|
|
79
79
|
todo_col=$(monotask column create "$board_id" "Todo" --json | jq -r '.id')
|
|
80
80
|
doing_col=$(monotask column create "$board_id" "Doing" --json | jq -r '.id')
|
|
@@ -147,7 +147,7 @@ Stage 2 draft: subagent_type "Content Creator"
|
|
|
147
147
|
Stage 3 edit: subagent_type "Technical Writer"
|
|
148
148
|
Stage 4 format/publish: subagent_type "Content Creator"
|
|
149
149
|
|
|
150
|
-
|
|
150
|
+
Also run /mastermind:do --board <board_id> to track execution.
|
|
151
151
|
|
|
152
152
|
STEP 4 — COLLECT AND RETURN
|
|
153
153
|
Collect the final formatted content. Return to caller:
|