@monoes/monomindcli 1.11.14 → 1.13.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/master.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 +24 -10
- package/.claude/helpers/handlers/session-handler.cjs +11 -4
- package/.claude/helpers/handlers/session-restore-handler.cjs +35 -19
- package/.claude/helpers/handlers/task-handler.cjs +13 -5
- package/.claude/helpers/hook-handler.cjs +40 -0
- package/.claude/helpers/intelligence.cjs +130 -53
- package/.claude/helpers/loop-tracker.cjs +15 -3
- package/.claude/helpers/memory-palace.cjs +461 -0
- package/.claude/helpers/memory.cjs +138 -14
- package/.claude/helpers/metrics-db.mjs +87 -0
- package/.claude/helpers/router.cjs +300 -42
- package/.claude/helpers/session.cjs +89 -30
- package/.claude/helpers/statusline.cjs +148 -4
- package/.claude/helpers/toggle-statusline.cjs +73 -0
- package/.claude/helpers/token-tracker.cjs +934 -0
- package/.claude/helpers/utils/micro-agents.cjs +20 -4
- package/.claude/helpers/utils/monograph.cjs +39 -4
- package/.claude/helpers/utils/telemetry.cjs +3 -3
- package/.claude/skills/mastermind/_protocol.md +25 -15
- package/.claude/skills/mastermind/architect.md +3 -3
- package/.claude/skills/mastermind/autodev.md +4 -2
- package/.claude/skills/mastermind/idea.md +10 -0
- package/.claude/skills/mastermind/ops.md +3 -3
- package/.claude/skills/mastermind/runorg.md +153 -86
- package/dist/src/agents/registry-builder.d.ts.map +1 -1
- package/dist/src/agents/registry-builder.js +2 -0
- package/dist/src/agents/registry-builder.js.map +1 -1
- package/dist/src/autopilot-state.d.ts.map +1 -1
- package/dist/src/autopilot-state.js +10 -5
- package/dist/src/autopilot-state.js.map +1 -1
- package/dist/src/benchmarks/benchmark-runner.d.ts.map +1 -1
- package/dist/src/benchmarks/benchmark-runner.js +13 -0
- package/dist/src/benchmarks/benchmark-runner.js.map +1 -1
- package/dist/src/benchmarks/metric-evaluators.d.ts.map +1 -1
- package/dist/src/benchmarks/metric-evaluators.js +20 -9
- package/dist/src/benchmarks/metric-evaluators.js.map +1 -1
- package/dist/src/browser/actions.d.ts.map +1 -1
- package/dist/src/browser/actions.js +10 -3
- package/dist/src/browser/actions.js.map +1 -1
- package/dist/src/browser/browser.d.ts.map +1 -1
- package/dist/src/browser/browser.js +12 -2
- package/dist/src/browser/browser.js.map +1 -1
- package/dist/src/browser/cdp.d.ts.map +1 -1
- package/dist/src/browser/cdp.js +21 -3
- package/dist/src/browser/cdp.js.map +1 -1
- package/dist/src/browser/har.d.ts.map +1 -1
- package/dist/src/browser/har.js +27 -5
- package/dist/src/browser/har.js.map +1 -1
- package/dist/src/commands/agent.d.ts.map +1 -1
- package/dist/src/commands/agent.js +11 -8
- package/dist/src/commands/agent.js.map +1 -1
- package/dist/src/commands/analyze.d.ts.map +1 -1
- package/dist/src/commands/analyze.js +36 -21
- package/dist/src/commands/analyze.js.map +1 -1
- package/dist/src/commands/autopilot.d.ts.map +1 -1
- package/dist/src/commands/autopilot.js +12 -4
- package/dist/src/commands/autopilot.js.map +1 -1
- package/dist/src/commands/benchmark.d.ts.map +1 -1
- package/dist/src/commands/benchmark.js +51 -8
- package/dist/src/commands/benchmark.js.map +1 -1
- package/dist/src/commands/browse.d.ts.map +1 -1
- package/dist/src/commands/browse.js +5 -2
- package/dist/src/commands/browse.js.map +1 -1
- package/dist/src/commands/claims.d.ts.map +1 -1
- package/dist/src/commands/claims.js +29 -11
- package/dist/src/commands/claims.js.map +1 -1
- package/dist/src/commands/cleanup.d.ts.map +1 -1
- package/dist/src/commands/cleanup.js +25 -5
- package/dist/src/commands/cleanup.js.map +1 -1
- package/dist/src/commands/config.d.ts.map +1 -1
- package/dist/src/commands/config.js +15 -7
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/daemon.d.ts.map +1 -1
- package/dist/src/commands/daemon.js +6 -0
- package/dist/src/commands/daemon.js.map +1 -1
- package/dist/src/commands/deployment.d.ts.map +1 -1
- package/dist/src/commands/deployment.js +34 -19
- package/dist/src/commands/deployment.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +133 -15
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/guidance.d.ts.map +1 -1
- package/dist/src/commands/guidance.js +15 -2
- package/dist/src/commands/guidance.js.map +1 -1
- package/dist/src/commands/hive-mind.d.ts.map +1 -1
- package/dist/src/commands/hive-mind.js +37 -14
- package/dist/src/commands/hive-mind.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +42 -25
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +9 -4
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/issues.d.ts.map +1 -1
- package/dist/src/commands/issues.js +29 -26
- package/dist/src/commands/issues.js.map +1 -1
- package/dist/src/commands/mcp.d.ts.map +1 -1
- package/dist/src/commands/mcp.js +11 -5
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/memory.d.ts.map +1 -1
- package/dist/src/commands/memory.js +10 -0
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/migrate.js +5 -5
- package/dist/src/commands/migrate.js.map +1 -1
- package/dist/src/commands/monograph.d.ts.map +1 -1
- package/dist/src/commands/monograph.js +18 -5
- package/dist/src/commands/monograph.js.map +1 -1
- package/dist/src/commands/monovector/backup.d.ts.map +1 -1
- package/dist/src/commands/monovector/backup.js +8 -2
- package/dist/src/commands/monovector/backup.js.map +1 -1
- package/dist/src/commands/monovector/benchmark.d.ts.map +1 -1
- package/dist/src/commands/monovector/benchmark.js +20 -7
- package/dist/src/commands/monovector/benchmark.js.map +1 -1
- package/dist/src/commands/monovector/import.d.ts.map +1 -1
- package/dist/src/commands/monovector/import.js +15 -0
- package/dist/src/commands/monovector/import.js.map +1 -1
- package/dist/src/commands/monovector/migrate.d.ts.map +1 -1
- package/dist/src/commands/monovector/migrate.js +4 -1
- package/dist/src/commands/monovector/migrate.js.map +1 -1
- package/dist/src/commands/monovector/optimize.d.ts.map +1 -1
- package/dist/src/commands/monovector/optimize.js +11 -0
- package/dist/src/commands/monovector/optimize.js.map +1 -1
- package/dist/src/commands/monovector/setup.d.ts.map +1 -1
- package/dist/src/commands/monovector/setup.js +11 -1
- package/dist/src/commands/monovector/setup.js.map +1 -1
- package/dist/src/commands/neural.js +1 -1
- package/dist/src/commands/neural.js.map +1 -1
- package/dist/src/commands/performance.d.ts.map +1 -1
- package/dist/src/commands/performance.js +20 -7
- package/dist/src/commands/performance.js.map +1 -1
- package/dist/src/commands/platforms.d.ts.map +1 -1
- package/dist/src/commands/platforms.js +90 -8
- package/dist/src/commands/platforms.js.map +1 -1
- package/dist/src/commands/plugins.d.ts.map +1 -1
- package/dist/src/commands/plugins.js +12 -5
- package/dist/src/commands/plugins.js.map +1 -1
- package/dist/src/commands/process.d.ts.map +1 -1
- package/dist/src/commands/process.js +33 -10
- package/dist/src/commands/process.js.map +1 -1
- package/dist/src/commands/progress.d.ts.map +1 -1
- package/dist/src/commands/progress.js +5 -3
- package/dist/src/commands/progress.js.map +1 -1
- package/dist/src/commands/providers.js +5 -5
- package/dist/src/commands/providers.js.map +1 -1
- package/dist/src/commands/replay.d.ts.map +1 -1
- package/dist/src/commands/replay.js +8 -2
- package/dist/src/commands/replay.js.map +1 -1
- package/dist/src/commands/route.d.ts.map +1 -1
- package/dist/src/commands/route.js +27 -7
- package/dist/src/commands/route.js.map +1 -1
- package/dist/src/commands/security.d.ts.map +1 -1
- package/dist/src/commands/security.js +4 -0
- package/dist/src/commands/security.js.map +1 -1
- package/dist/src/commands/session.d.ts.map +1 -1
- package/dist/src/commands/session.js +12 -1
- package/dist/src/commands/session.js.map +1 -1
- package/dist/src/commands/start.d.ts.map +1 -1
- package/dist/src/commands/start.js +11 -4
- package/dist/src/commands/start.js.map +1 -1
- package/dist/src/commands/status.d.ts.map +1 -1
- package/dist/src/commands/status.js +7 -4
- package/dist/src/commands/status.js.map +1 -1
- package/dist/src/commands/swarm.d.ts.map +1 -1
- package/dist/src/commands/swarm.js +27 -13
- package/dist/src/commands/swarm.js.map +1 -1
- package/dist/src/commands/task.d.ts.map +1 -1
- package/dist/src/commands/task.js +26 -11
- package/dist/src/commands/task.js.map +1 -1
- package/dist/src/commands/tokens.d.ts.map +1 -1
- package/dist/src/commands/tokens.js +7 -2
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/commands/transfer-store.d.ts.map +1 -1
- package/dist/src/commands/transfer-store.js +36 -22
- package/dist/src/commands/transfer-store.js.map +1 -1
- package/dist/src/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +15 -3
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/commands/workflow.d.ts.map +1 -1
- package/dist/src/commands/workflow.js +39 -6
- package/dist/src/commands/workflow.js.map +1 -1
- package/dist/src/consensus/audit-writer.d.ts.map +1 -1
- package/dist/src/consensus/audit-writer.js +18 -7
- package/dist/src/consensus/audit-writer.js.map +1 -1
- package/dist/src/consensus/vote-signer.d.ts.map +1 -1
- package/dist/src/consensus/vote-signer.js +25 -8
- package/dist/src/consensus/vote-signer.js.map +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +14 -11
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/shared-instructions-generator.d.ts.map +1 -1
- package/dist/src/init/shared-instructions-generator.js +20 -4
- package/dist/src/init/shared-instructions-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.d.ts.map +1 -1
- package/dist/src/init/statusline-generator.js +36 -15
- package/dist/src/init/statusline-generator.js.map +1 -1
- package/dist/src/mcp-tools/a2a-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/a2a-tools.js +98 -13
- package/dist/src/mcp-tools/a2a-tools.js.map +1 -1
- package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +16 -3
- package/dist/src/mcp-tools/agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/analyze-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/analyze-tools.js +80 -17
- package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
- package/dist/src/mcp-tools/browser-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/browser-tools.js +84 -22
- package/dist/src/mcp-tools/browser-tools.js.map +1 -1
- package/dist/src/mcp-tools/claims-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/claims-tools.js +35 -7
- package/dist/src/mcp-tools/claims-tools.js.map +1 -1
- package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/config-tools.js +82 -17
- package/dist/src/mcp-tools/config-tools.js.map +1 -1
- package/dist/src/mcp-tools/coordination-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/coordination-tools.js +37 -4
- package/dist/src/mcp-tools/coordination-tools.js.map +1 -1
- package/dist/src/mcp-tools/daa-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/daa-tools.js +49 -7
- package/dist/src/mcp-tools/daa-tools.js.map +1 -1
- package/dist/src/mcp-tools/embeddings-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/embeddings-tools.js +45 -18
- package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
- package/dist/src/mcp-tools/github-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/github-tools.js +75 -25
- package/dist/src/mcp-tools/github-tools.js.map +1 -1
- package/dist/src/mcp-tools/guidance-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/guidance-tools.js +32 -10
- package/dist/src/mcp-tools/guidance-tools.js.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.js +91 -20
- package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +188 -29
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +25 -7
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph-compat.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph-compat.js +11 -2
- package/dist/src/mcp-tools/monograph-compat.js.map +1 -1
- package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph-tools.js +476 -62
- package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
- package/dist/src/mcp-tools/neural-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/neural-tools.js +44 -9
- package/dist/src/mcp-tools/neural-tools.js.map +1 -1
- package/dist/src/mcp-tools/performance-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/performance-tools.js +45 -10
- package/dist/src/mcp-tools/performance-tools.js.map +1 -1
- package/dist/src/mcp-tools/progress-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/progress-tools.js +7 -4
- package/dist/src/mcp-tools/progress-tools.js.map +1 -1
- package/dist/src/mcp-tools/request-tracker.d.ts.map +1 -1
- package/dist/src/mcp-tools/request-tracker.js +15 -1
- package/dist/src/mcp-tools/request-tracker.js.map +1 -1
- package/dist/src/mcp-tools/security-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/security-tools.js +61 -9
- package/dist/src/mcp-tools/security-tools.js.map +1 -1
- package/dist/src/mcp-tools/session-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/session-tools.js +45 -14
- package/dist/src/mcp-tools/session-tools.js.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.js +15 -3
- package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
- package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/system-tools.js +14 -7
- package/dist/src/mcp-tools/system-tools.js.map +1 -1
- package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/task-tools.js +52 -10
- package/dist/src/mcp-tools/task-tools.js.map +1 -1
- package/dist/src/mcp-tools/terminal-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/terminal-tools.js +40 -6
- package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.js +37 -4
- package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.js +29 -6
- package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
- package/dist/src/memory/ewc-consolidation.d.ts.map +1 -1
- package/dist/src/memory/ewc-consolidation.js +26 -10
- package/dist/src/memory/ewc-consolidation.js.map +1 -1
- package/dist/src/memory/intelligence.d.ts.map +1 -1
- package/dist/src/memory/intelligence.js +80 -19
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +21 -2
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +67 -3
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/sona-optimizer.d.ts.map +1 -1
- package/dist/src/memory/sona-optimizer.js +14 -4
- package/dist/src/memory/sona-optimizer.js.map +1 -1
- package/dist/src/monovector/command-outcomes.d.ts.map +1 -1
- package/dist/src/monovector/command-outcomes.js +43 -7
- package/dist/src/monovector/command-outcomes.js.map +1 -1
- package/dist/src/monovector/coverage-router.d.ts.map +1 -1
- package/dist/src/monovector/coverage-router.js +8 -4
- package/dist/src/monovector/coverage-router.js.map +1 -1
- package/dist/src/monovector/coverage-tools.d.ts.map +1 -1
- package/dist/src/monovector/coverage-tools.js +6 -3
- package/dist/src/monovector/coverage-tools.js.map +1 -1
- package/dist/src/monovector/diff-classifier.d.ts.map +1 -1
- package/dist/src/monovector/diff-classifier.js +13 -0
- package/dist/src/monovector/diff-classifier.js.map +1 -1
- package/dist/src/monovector/route-outcomes.d.ts +2 -1
- package/dist/src/monovector/route-outcomes.d.ts.map +1 -1
- package/dist/src/monovector/route-outcomes.js +46 -4
- package/dist/src/monovector/route-outcomes.js.map +1 -1
- package/dist/src/plugins/manager.d.ts.map +1 -1
- package/dist/src/plugins/manager.js +8 -3
- package/dist/src/plugins/manager.js.map +1 -1
- package/dist/src/plugins/store/discovery.d.ts.map +1 -1
- package/dist/src/plugins/store/discovery.js +46 -2
- package/dist/src/plugins/store/discovery.js.map +1 -1
- package/dist/src/plugins/store/search.d.ts.map +1 -1
- package/dist/src/plugins/store/search.js +5 -4
- package/dist/src/plugins/store/search.js.map +1 -1
- package/dist/src/production/circuit-breaker.d.ts.map +1 -1
- package/dist/src/production/circuit-breaker.js +17 -3
- package/dist/src/production/circuit-breaker.js.map +1 -1
- package/dist/src/production/error-handler.d.ts.map +1 -1
- package/dist/src/production/error-handler.js +3 -0
- package/dist/src/production/error-handler.js.map +1 -1
- package/dist/src/production/monitoring.d.ts.map +1 -1
- package/dist/src/production/monitoring.js +20 -3
- package/dist/src/production/monitoring.js.map +1 -1
- package/dist/src/production/rate-limiter.d.ts.map +1 -1
- package/dist/src/production/rate-limiter.js +13 -4
- package/dist/src/production/rate-limiter.js.map +1 -1
- package/dist/src/production/retry.d.ts.map +1 -1
- package/dist/src/production/retry.js +17 -9
- package/dist/src/production/retry.js.map +1 -1
- package/dist/src/routing/embed-worker.js +6 -2
- package/dist/src/routing/embed-worker.js.map +1 -1
- package/dist/src/routing/embedder.d.ts.map +1 -1
- package/dist/src/routing/embedder.js +0 -0
- package/dist/src/routing/embedder.js.map +1 -1
- package/dist/src/routing/llm-caller.d.ts.map +1 -1
- package/dist/src/routing/llm-caller.js +13 -2
- package/dist/src/routing/llm-caller.js.map +1 -1
- package/dist/src/routing/route-layer-factory.d.ts.map +1 -1
- package/dist/src/routing/route-layer-factory.js +18 -3
- package/dist/src/routing/route-layer-factory.js.map +1 -1
- package/dist/src/services/claim-service.d.ts +1 -0
- package/dist/src/services/claim-service.d.ts.map +1 -1
- package/dist/src/services/claim-service.js +8 -0
- package/dist/src/services/claim-service.js.map +1 -1
- package/dist/src/services/config-file-manager.d.ts.map +1 -1
- package/dist/src/services/config-file-manager.js +14 -2
- package/dist/src/services/config-file-manager.js.map +1 -1
- package/dist/src/services/headless-worker-executor.d.ts.map +1 -1
- package/dist/src/services/headless-worker-executor.js +18 -2
- package/dist/src/services/headless-worker-executor.js.map +1 -1
- package/dist/src/services/worker-daemon.d.ts.map +1 -1
- package/dist/src/services/worker-daemon.js +348 -17
- package/dist/src/services/worker-daemon.js.map +1 -1
- package/dist/src/transfer/anonymization/index.d.ts +0 -3
- package/dist/src/transfer/anonymization/index.d.ts.map +1 -1
- package/dist/src/transfer/anonymization/index.js +16 -1
- package/dist/src/transfer/anonymization/index.js.map +1 -1
- package/dist/src/transfer/export.d.ts.map +1 -1
- package/dist/src/transfer/export.js +8 -0
- package/dist/src/transfer/export.js.map +1 -1
- package/dist/src/transfer/ipfs/upload.d.ts.map +1 -1
- package/dist/src/transfer/ipfs/upload.js +33 -3
- package/dist/src/transfer/ipfs/upload.js.map +1 -1
- package/dist/src/transfer/serialization/cfp.d.ts.map +1 -1
- package/dist/src/transfer/serialization/cfp.js +8 -2
- package/dist/src/transfer/serialization/cfp.js.map +1 -1
- package/dist/src/transfer/storage/gcs.d.ts.map +1 -1
- package/dist/src/transfer/storage/gcs.js +37 -3
- package/dist/src/transfer/storage/gcs.js.map +1 -1
- package/dist/src/transfer/store/discovery.d.ts.map +1 -1
- package/dist/src/transfer/store/discovery.js +45 -3
- package/dist/src/transfer/store/discovery.js.map +1 -1
- package/dist/src/transfer/store/download.d.ts.map +1 -1
- package/dist/src/transfer/store/download.js +5 -0
- package/dist/src/transfer/store/download.js.map +1 -1
- package/dist/src/transfer/store/publish.d.ts.map +1 -1
- package/dist/src/transfer/store/publish.js +13 -1
- package/dist/src/transfer/store/publish.js.map +1 -1
- package/dist/src/transfer/store/registry.d.ts +8 -0
- package/dist/src/transfer/store/registry.d.ts.map +1 -1
- package/dist/src/transfer/store/registry.js +30 -5
- package/dist/src/transfer/store/registry.js.map +1 -1
- package/dist/src/transfer/store/search.d.ts.map +1 -1
- package/dist/src/transfer/store/search.js +20 -5
- package/dist/src/transfer/store/search.js.map +1 -1
- package/dist/src/ui/collector.mjs +39 -5
- package/dist/src/ui/dashboard.html +1603 -1284
- package/dist/src/ui/orgs.html +722 -12
- package/dist/src/ui/server.mjs +717 -136
- package/dist/src/update/checker.d.ts.map +1 -1
- package/dist/src/update/checker.js +59 -7
- package/dist/src/update/checker.js.map +1 -1
- package/dist/src/update/executor.d.ts.map +1 -1
- package/dist/src/update/executor.js +50 -3
- package/dist/src/update/executor.js.map +1 -1
- package/dist/src/update/index.d.ts.map +1 -1
- package/dist/src/update/index.js +18 -1
- package/dist/src/update/index.js.map +1 -1
- package/dist/src/update/rate-limiter.d.ts +6 -0
- package/dist/src/update/rate-limiter.d.ts.map +1 -1
- package/dist/src/update/rate-limiter.js +79 -7
- package/dist/src/update/rate-limiter.js.map +1 -1
- package/dist/src/update/validator.d.ts.map +1 -1
- package/dist/src/update/validator.js +52 -1
- package/dist/src/update/validator.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -3
- package/dist/src/ui/data/mastermind-events.jsonl +0 -59
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* metrics-db.mjs — Lightweight metrics aggregation helper.
|
|
4
|
+
* Reads .monomind/metrics/*.json files and produces summary output.
|
|
5
|
+
*
|
|
6
|
+
* Commands:
|
|
7
|
+
* sync — aggregate metrics files → JSON summary (default)
|
|
8
|
+
* status — print current metrics status as JSON
|
|
9
|
+
* export — export metrics to timestamped file
|
|
10
|
+
* (other) — print usage hint, exit 0
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import path from 'path';
|
|
14
|
+
import fs from 'fs';
|
|
15
|
+
import { fileURLToPath } from 'url';
|
|
16
|
+
|
|
17
|
+
const CWD = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
18
|
+
const METRICS_DIR = path.join(CWD, '.monomind', 'metrics');
|
|
19
|
+
|
|
20
|
+
function safeRead(filePath) {
|
|
21
|
+
try {
|
|
22
|
+
if (!fs.existsSync(filePath)) return null;
|
|
23
|
+
return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
|
|
24
|
+
} catch (_) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function aggregate() {
|
|
30
|
+
const recentEdits = safeRead(path.join(METRICS_DIR, 'recent-edits.json'));
|
|
31
|
+
const toolCalls = safeRead(path.join(METRICS_DIR, 'tool-calls.json'));
|
|
32
|
+
const hookLatency = safeRead(path.join(METRICS_DIR, 'hook-latency.json'));
|
|
33
|
+
const tokenSummary = safeRead(path.join(METRICS_DIR, 'token-summary.json'));
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
aggregatedAt: new Date().toISOString(),
|
|
37
|
+
recentEdits: recentEdits ? (recentEdits.edits || []).length : 0,
|
|
38
|
+
toolCalls: toolCalls ? Object.keys(toolCalls.calls || {}).length : 0,
|
|
39
|
+
hookLatency: hookLatency ? Object.keys(hookLatency).filter(k => k !== 'lastUpdated').length : 0,
|
|
40
|
+
tokenSummary: tokenSummary ? { todayCost: tokenSummary.todayCost, monthCost: tokenSummary.monthCost } : null,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function cmdSync() {
|
|
45
|
+
const summary = aggregate();
|
|
46
|
+
process.stdout.write(JSON.stringify(summary) + '\n');
|
|
47
|
+
process.exit(0);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function cmdStatus() {
|
|
51
|
+
const summary = aggregate();
|
|
52
|
+
process.stdout.write(JSON.stringify({ status: 'ok', metrics: summary }) + '\n');
|
|
53
|
+
process.exit(0);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function cmdExport() {
|
|
57
|
+
const summary = aggregate();
|
|
58
|
+
const ts = new Date().toISOString().replace(/[:.]/g, '-');
|
|
59
|
+
const exportPath = path.join(METRICS_DIR, `export-${ts}.json`);
|
|
60
|
+
try {
|
|
61
|
+
fs.mkdirSync(METRICS_DIR, { recursive: true });
|
|
62
|
+
fs.writeFileSync(exportPath, JSON.stringify(summary, null, 2));
|
|
63
|
+
process.stdout.write(`Exported metrics to ${exportPath}\n`);
|
|
64
|
+
} catch (e) {
|
|
65
|
+
process.stdout.write(`Exported metrics (in-memory only): ${JSON.stringify(summary)}\n`);
|
|
66
|
+
}
|
|
67
|
+
process.exit(0);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function cmdUsage(unknownCmd) {
|
|
71
|
+
process.stdout.write(
|
|
72
|
+
`Usage: metrics-db.mjs [sync|status|export]\n` +
|
|
73
|
+
(unknownCmd ? ` Unknown command: ${unknownCmd}\n` : '')
|
|
74
|
+
);
|
|
75
|
+
process.exit(0);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// ── main ──────────────────────────────────────────────────────────────────────
|
|
79
|
+
|
|
80
|
+
const cmd = process.argv[2] || 'sync';
|
|
81
|
+
|
|
82
|
+
switch (cmd) {
|
|
83
|
+
case 'sync': cmdSync(); break;
|
|
84
|
+
case 'status': cmdStatus(); break;
|
|
85
|
+
case 'export': cmdExport(); break;
|
|
86
|
+
default: cmdUsage(cmd); break;
|
|
87
|
+
}
|
|
@@ -2,59 +2,234 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Keyword-based task router for hook-handler.cjs
|
|
4
4
|
* Returns: { agent, agentSlug, confidence, reason, semanticRouting, specificAgents, skillMatches, extrasMatches }
|
|
5
|
+
*
|
|
6
|
+
* Exports:
|
|
7
|
+
* routeTask(prompt) → routing result object
|
|
8
|
+
* routeTaskSemantic(prompt) → alias for routeTask
|
|
9
|
+
* matchSkills(prompt, topN) → array of { skill, invoke, score }
|
|
10
|
+
* matchExtras(prompt, topN) → array of { slug, name, category, score }
|
|
11
|
+
* buildCategoryList() → array of { name, count, examples }
|
|
12
|
+
* getAgentsInCategory(cat) → array of { slug, name }
|
|
13
|
+
* AGENT_CAPABILITIES → { [slug]: string[] }
|
|
14
|
+
* TASK_PATTERNS → { [agentSlug]: RegExp }
|
|
5
15
|
*/
|
|
6
16
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
// ── Dev patterns (slug-correct) ─────────────────────────────────────────────
|
|
18
|
+
// TASK_PATTERNS: { keywords: agentSlug } — exported for introspection
|
|
19
|
+
// Values are agent slugs; keys describe what keywords trigger that agent.
|
|
20
|
+
|
|
21
|
+
var TASK_PATTERNS = {
|
|
22
|
+
'test|spec|coverage|vitest|jest|mocha|e2e': 'tester',
|
|
23
|
+
'review|audit|code quality|lint|refactor|cleanup': 'reviewer',
|
|
24
|
+
'architect|system design|ADR|bounded context|architecture': 'architect',
|
|
25
|
+
'security|vulnerability|CVE|injection|XSS|CSRF|OWASP': 'security-engineer',
|
|
26
|
+
'deploy|CI/CD|docker|kubernetes|infra|devops|helm|terraform': 'devops',
|
|
27
|
+
'document|readme|docs|api reference|jsdoc': 'technical-writer',
|
|
28
|
+
'research|investigate|explore|analyze|survey|compare': 'researcher',
|
|
29
|
+
'plan|roadmap|prioritize|breakdown|estimate': 'planner',
|
|
30
|
+
'mobile|ios|android|react native|flutter': 'mobile-dev',
|
|
31
|
+
'ml|machine learning|neural network|model training': 'ai-engineer',
|
|
32
|
+
'api|rest|graphql|endpoint|http|websocket|grpc|optimize': 'backend-dev',
|
|
33
|
+
'ui|frontend|react|vue|component|css|layout|style': 'frontend-dev',
|
|
34
|
+
'bug|fix|error|feature|implement|build|create|develop': 'coder',
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
// Internal routing patterns (regex per slug for routeTask)
|
|
38
|
+
var _ROUTING_PATTERNS = {
|
|
39
|
+
'tester': /\b(test|tests|spec|coverage|vitest|jest|mocha|e2e)\b/i,
|
|
40
|
+
'reviewer': /\b(review|audit|code quality|lint|smell|refactor|clean up|cleanup)\b/i,
|
|
41
|
+
'architect': /\b(architect|system design|ADR|domain|bounded context|microservice|architecture)\b/i,
|
|
42
|
+
'security-engineer': /\b(security|vulnerability|CVE|injection|XSS|CSRF|OWASP)\b/i,
|
|
43
|
+
'devops': /\b(deploy|CI\/CD|docker|kubernetes|infra|devops|helm|terraform)\b/i,
|
|
44
|
+
'technical-writer': /\b(document|readme|docs|api reference|jsdoc|write up)\b/i,
|
|
45
|
+
'researcher': /\b(research|investigate|explore|analyze|survey|compare)\b/i,
|
|
46
|
+
'planner': /\b(plan|roadmap|prioritize|breakdown|estimate)\b/i,
|
|
47
|
+
'mobile-dev': /\b(mobile|ios|android|react native|flutter)\b/i,
|
|
48
|
+
'ai-engineer': /\b(ml|machine learning|neural network|model training|inference)\b/i,
|
|
49
|
+
'backend-dev': /\b(api|rest|graphql|endpoint|http|websocket|grpc|optimize)\b/i,
|
|
50
|
+
'frontend-dev': /\b(ui|frontend|react|vue|component|css|layout|style)\b/i,
|
|
51
|
+
'coder': /\b(bug|fix|error|exception|crash|broken|fail|regression|feature|implement|add|build|create|develop|new|memory|vector|embedding|hook|swarm|agent|mcp|cli|routing|monomind)\b/i,
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
var TASK_CONFIDENCES = {
|
|
55
|
+
'tester': 0.85,
|
|
56
|
+
'reviewer': 0.82,
|
|
57
|
+
'architect': 0.85,
|
|
58
|
+
'security-engineer': 0.90,
|
|
59
|
+
'devops': 0.85,
|
|
60
|
+
'technical-writer': 0.82,
|
|
61
|
+
'researcher': 0.78,
|
|
62
|
+
'planner': 0.80,
|
|
63
|
+
'mobile-dev': 0.88,
|
|
64
|
+
'ai-engineer': 0.85,
|
|
65
|
+
'backend-dev': 0.80,
|
|
66
|
+
'frontend-dev': 0.80,
|
|
67
|
+
'coder': 0.80,
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
var TASK_AGENTS = {
|
|
71
|
+
'tester': 'Tester',
|
|
72
|
+
'reviewer': 'Reviewer',
|
|
73
|
+
'architect': 'Architect',
|
|
74
|
+
'security-engineer': 'Security Engineer',
|
|
75
|
+
'devops': 'DevOps',
|
|
76
|
+
'technical-writer': 'Technical Writer',
|
|
77
|
+
'researcher': 'Researcher',
|
|
78
|
+
'planner': 'Planner',
|
|
79
|
+
'mobile-dev': 'Mobile Developer',
|
|
80
|
+
'ai-engineer': 'AI Engineer',
|
|
81
|
+
'backend-dev': 'Backend Developer',
|
|
82
|
+
'frontend-dev': 'Frontend Developer',
|
|
83
|
+
'coder': 'Coder',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
// Priority order: higher-priority slugs checked first
|
|
87
|
+
var DEV_PRIORITY = [
|
|
88
|
+
'tester', 'reviewer', 'architect', 'security-engineer', 'devops',
|
|
89
|
+
'mobile-dev', 'ai-engineer', 'frontend-dev', 'backend-dev',
|
|
90
|
+
'researcher', 'planner', 'technical-writer', 'coder',
|
|
25
91
|
];
|
|
26
92
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
93
|
+
// ── AGENT_CAPABILITIES ────────────────────────────────────────────────────────
|
|
94
|
+
|
|
95
|
+
var AGENT_CAPABILITIES = {
|
|
96
|
+
'coder': ['implement', 'fix', 'build', 'develop', 'create'],
|
|
97
|
+
'tester': ['test', 'spec', 'coverage', 'vitest', 'jest', 'e2e'],
|
|
98
|
+
'reviewer': ['review', 'audit', 'refactor', 'code quality', 'lint'],
|
|
99
|
+
'researcher': ['research', 'investigate', 'analyze', 'survey', 'compare'],
|
|
100
|
+
'architect': ['design', 'architecture', 'ADR', 'domain', 'microservice'],
|
|
101
|
+
'planner': ['plan', 'roadmap', 'strategy', 'prioritize', 'estimate'],
|
|
102
|
+
'security-engineer': ['security', 'vulnerability', 'CVE', 'XSS', 'CSRF'],
|
|
103
|
+
'backend-dev': ['api', 'rest', 'graphql', 'endpoint', 'http', 'grpc'],
|
|
104
|
+
'frontend-dev': ['ui', 'frontend', 'react', 'css', 'component', 'layout'],
|
|
105
|
+
'devops': ['deploy', 'docker', 'kubernetes', 'CI/CD', 'terraform'],
|
|
106
|
+
'mobile-dev': ['mobile', 'ios', 'android', 'react native', 'flutter'],
|
|
107
|
+
'ai-engineer': ['ml', 'machine learning', 'model', 'neural', 'inference'],
|
|
108
|
+
'technical-writer': ['docs', 'readme', 'document', 'jsdoc', 'api reference'],
|
|
36
109
|
};
|
|
37
110
|
|
|
111
|
+
// ── Non-dev domain agent registry ─────────────────────────────────────────────
|
|
112
|
+
|
|
113
|
+
var DOMAIN_AGENTS = [
|
|
114
|
+
// Marketing
|
|
115
|
+
{ slug: 'content-strategist', name: 'Content Strategist', category: 'marketing',
|
|
116
|
+
keywords: /\b(content|brand|blogging|copywriting|content strategy)\b/i },
|
|
117
|
+
{ slug: 'seo-specialist', name: 'SEO Specialist', category: 'marketing',
|
|
118
|
+
keywords: /\b(seo|search engine|keyword research|backlink|organic traffic)\b/i },
|
|
119
|
+
{ slug: 'social-media-manager', name: 'Social Media Manager', category: 'marketing',
|
|
120
|
+
keywords: /\b(social media|instagram|tiktok|twitter|linkedin|facebook|campaign)\b/i },
|
|
121
|
+
{ slug: 'marketing-analyst', name: 'Marketing Analyst', category: 'marketing',
|
|
122
|
+
keywords: /\b(marketing|advertising|analytics|conversion|funnel|cpm|cpa)\b/i },
|
|
123
|
+
|
|
124
|
+
// Sales
|
|
125
|
+
{ slug: 'sales-strategist', name: 'Sales Strategist', category: 'sales',
|
|
126
|
+
keywords: /\b(sales|crm|lead generation|prospect|quota|sales revenue)\b/i },
|
|
127
|
+
{ slug: 'account-manager', name: 'Account Manager', category: 'sales',
|
|
128
|
+
keywords: /\b(account management|client relationship|upsell|renewal|b2b)\b/i },
|
|
129
|
+
|
|
130
|
+
// Academic
|
|
131
|
+
{ slug: 'academic-researcher', name: 'Academic Researcher', category: 'academic',
|
|
132
|
+
keywords: /\b(anthropolog|ethnograph|kinship|cultural ritual|qualitative study|thesis|dissertation|peer review|academic)\b/i },
|
|
133
|
+
{ slug: 'data-scientist', name: 'Data Scientist', category: 'academic',
|
|
134
|
+
keywords: /\b(statistical analysis|regression|hypothesis|p-value|dataset|R studio)\b/i },
|
|
135
|
+
|
|
136
|
+
// Game development
|
|
137
|
+
{ slug: 'game-developer', name: 'Game Developer', category: 'game-development',
|
|
138
|
+
keywords: /\b(unity|unreal|godot|game engine|shader|sprite|tilemap|game jam)\b/i },
|
|
139
|
+
{ slug: 'game-designer', name: 'Game Designer', category: 'game-development',
|
|
140
|
+
keywords: /\b(game design|game mechanic|level design|player experience|narrative design)\b/i },
|
|
141
|
+
|
|
142
|
+
// Legal / Finance
|
|
143
|
+
{ slug: 'legal-advisor', name: 'Legal Advisor', category: 'legal',
|
|
144
|
+
keywords: /\b(legal|contract|compliance|regulation|gdpr|liability|intellectual property)\b/i },
|
|
145
|
+
{ slug: 'financial-analyst', name: 'Financial Analyst', category: 'finance',
|
|
146
|
+
keywords: /\b(finance|investment|portfolio|valuation|balance sheet|ROI|P&L)\b/i },
|
|
147
|
+
|
|
148
|
+
// HR / Operations
|
|
149
|
+
{ slug: 'hr-specialist', name: 'HR Specialist', category: 'hr',
|
|
150
|
+
keywords: /\b(hiring|recruitment|onboarding|performance review|employee|hr|human resources)\b/i },
|
|
151
|
+
];
|
|
152
|
+
|
|
153
|
+
// Categories that are opt-in (only returned when keywords match)
|
|
154
|
+
var OPT_IN_CATEGORIES = new Set(['academic', 'game-development', 'legal', 'finance', 'hr']);
|
|
155
|
+
|
|
156
|
+
// Marketing is also opt-in — keywords must match
|
|
157
|
+
var MARKETING_OPTIN = /\b(marketing|seo|social media|advertising|campaign|content strategy|tiktok|instagram|brand)\b/i;
|
|
158
|
+
|
|
159
|
+
// ── Skills registry ────────────────────────────────────────────────────────────
|
|
160
|
+
|
|
161
|
+
var SKILLS = [
|
|
162
|
+
{ skill: 'mastermind', invoke: '/mastermind', description: 'Select swarm topology', keywords: /\b(swarm|topology|hive|mastermind|multi.agent)\b/i },
|
|
163
|
+
{ skill: 'monodesign', invoke: '/monodesign', description: 'Frontend design and UI', keywords: /\b(design|ui|ux|component|visual|layout|css|theme)\b/i },
|
|
164
|
+
{ skill: 'monomotion', invoke: '/monomotion', description: 'Web animations and motion', keywords: /\b(animate|animation|motion|gsap|transition|scroll)\b/i },
|
|
165
|
+
{ skill: 'graphify', invoke: '/graphify', description: 'Input to knowledge graph', keywords: /\b(graph|knowledge|monograph|node|edge|visualize)\b/i },
|
|
166
|
+
];
|
|
167
|
+
|
|
168
|
+
// ── Utilities ─────────────────────────────────────────────────────────────────
|
|
169
|
+
|
|
170
|
+
var MAX_PROMPT = 2000;
|
|
171
|
+
|
|
172
|
+
// ── routeTask ─────────────────────────────────────────────────────────────────
|
|
173
|
+
|
|
38
174
|
function routeTask(prompt) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
175
|
+
// Empty / null → confidence 0
|
|
176
|
+
if (!prompt || typeof prompt !== 'string' || prompt.trim() === '') {
|
|
177
|
+
return {
|
|
178
|
+
agent: 'coder',
|
|
179
|
+
agentSlug: 'coder',
|
|
180
|
+
confidence: 0,
|
|
181
|
+
reason: 'Default routing — empty input',
|
|
182
|
+
semanticRouting: false,
|
|
183
|
+
specificAgents: [],
|
|
184
|
+
skillMatches: [],
|
|
185
|
+
extrasMatches: [],
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
var safePrompt = prompt.slice(0, MAX_PROMPT);
|
|
190
|
+
|
|
191
|
+
// Check non-dev domain agents first (only if opt-in keywords match)
|
|
192
|
+
var extras = matchExtras(safePrompt);
|
|
193
|
+
if (extras.length > 0) {
|
|
194
|
+
var topExtra = extras[0];
|
|
195
|
+
return {
|
|
196
|
+
agent: topExtra.name,
|
|
197
|
+
agentSlug: topExtra.slug,
|
|
198
|
+
confidence: 0.80,
|
|
199
|
+
reason: 'Domain: ' + topExtra.category,
|
|
200
|
+
semanticRouting: false,
|
|
201
|
+
specificAgents: extras,
|
|
202
|
+
skillMatches: [],
|
|
203
|
+
extrasMatches: extras,
|
|
204
|
+
};
|
|
49
205
|
}
|
|
50
206
|
|
|
51
|
-
|
|
207
|
+
// Check dev patterns in priority order
|
|
208
|
+
for (var i = 0; i < DEV_PRIORITY.length; i++) {
|
|
209
|
+
var slug = DEV_PRIORITY[i];
|
|
210
|
+
var pattern = _ROUTING_PATTERNS[slug];
|
|
211
|
+
if (pattern && pattern.test(safePrompt)) {
|
|
212
|
+
var confidence = TASK_CONFIDENCES[slug] || 0.75;
|
|
213
|
+
var skills = matchSkills(safePrompt);
|
|
214
|
+
return {
|
|
215
|
+
agent: TASK_AGENTS[slug],
|
|
216
|
+
agentSlug: slug,
|
|
217
|
+
confidence: confidence,
|
|
218
|
+
reason: ('Keyword match: ' + slug).slice(0, 80),
|
|
219
|
+
semanticRouting: false,
|
|
220
|
+
specificAgents: [{ slug: slug, name: TASK_AGENTS[slug], confidence: confidence }],
|
|
221
|
+
skillMatches: skills,
|
|
222
|
+
extrasMatches: [],
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
}
|
|
52
226
|
|
|
227
|
+
// No match → default
|
|
53
228
|
return {
|
|
54
|
-
agent:
|
|
55
|
-
agentSlug:
|
|
56
|
-
confidence:
|
|
57
|
-
reason: '
|
|
229
|
+
agent: 'coder',
|
|
230
|
+
agentSlug: 'coder',
|
|
231
|
+
confidence: 0.5,
|
|
232
|
+
reason: 'Default routing — no strong keyword match',
|
|
58
233
|
semanticRouting: false,
|
|
59
234
|
specificAgents: [],
|
|
60
235
|
skillMatches: [],
|
|
@@ -62,7 +237,90 @@ function routeTask(prompt) {
|
|
|
62
237
|
};
|
|
63
238
|
}
|
|
64
239
|
|
|
240
|
+
// ── matchSkills ────────────────────────────────────────────────────────────────
|
|
241
|
+
|
|
242
|
+
function matchSkills(prompt, topN) {
|
|
243
|
+
if (!prompt || typeof prompt !== 'string') return [];
|
|
244
|
+
topN = topN || 5;
|
|
245
|
+
var safePrompt = prompt.slice(0, MAX_PROMPT);
|
|
246
|
+
|
|
247
|
+
var scored = [];
|
|
248
|
+
for (var i = 0; i < SKILLS.length; i++) {
|
|
249
|
+
var s = SKILLS[i];
|
|
250
|
+
if (s.keywords.test(safePrompt)) {
|
|
251
|
+
scored.push({ skill: s.skill, invoke: s.invoke, description: s.description, score: 1.0 });
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
scored.sort(function(a, b) { return b.score - a.score; });
|
|
256
|
+
return scored.slice(0, topN);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// ── matchExtras ────────────────────────────────────────────────────────────────
|
|
260
|
+
|
|
261
|
+
function matchExtras(prompt, topN) {
|
|
262
|
+
if (!prompt || typeof prompt !== 'string') return [];
|
|
263
|
+
topN = topN || 8;
|
|
264
|
+
var safePrompt = prompt.slice(0, MAX_PROMPT);
|
|
265
|
+
|
|
266
|
+
var scored = [];
|
|
267
|
+
for (var i = 0; i < DOMAIN_AGENTS.length; i++) {
|
|
268
|
+
var a = DOMAIN_AGENTS[i];
|
|
269
|
+
if (!a.keywords.test(safePrompt)) continue;
|
|
270
|
+
|
|
271
|
+
// Opt-in categories: only include if keywords explicitly match
|
|
272
|
+
if (OPT_IN_CATEGORIES.has(a.category)) {
|
|
273
|
+
scored.push({ slug: a.slug, name: a.name, category: a.category, score: 1.0 });
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// Marketing is opt-in too
|
|
278
|
+
if (a.category === 'marketing') {
|
|
279
|
+
if (MARKETING_OPTIN.test(safePrompt)) {
|
|
280
|
+
scored.push({ slug: a.slug, name: a.name, category: a.category, score: 1.0 });
|
|
281
|
+
}
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
// Sales: only include when sales keywords match
|
|
286
|
+
scored.push({ slug: a.slug, name: a.name, category: a.category, score: 1.0 });
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
scored.sort(function(a, b) { return b.score - a.score; });
|
|
290
|
+
return scored.slice(0, topN);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// ── buildCategoryList ─────────────────────────────────────────────────────────
|
|
294
|
+
|
|
295
|
+
function buildCategoryList() {
|
|
296
|
+
var catMap = {};
|
|
297
|
+
for (var i = 0; i < DOMAIN_AGENTS.length; i++) {
|
|
298
|
+
var a = DOMAIN_AGENTS[i];
|
|
299
|
+
if (!catMap[a.category]) catMap[a.category] = { name: a.category, count: 0, examples: [] };
|
|
300
|
+
catMap[a.category].count++;
|
|
301
|
+
if (catMap[a.category].examples.length < 3) catMap[a.category].examples.push(a.slug);
|
|
302
|
+
}
|
|
303
|
+
return Object.values(catMap);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// ── getAgentsInCategory ────────────────────────────────────────────────────────
|
|
307
|
+
|
|
308
|
+
function getAgentsInCategory(category) {
|
|
309
|
+
if (!category || typeof category !== 'string') return [];
|
|
310
|
+
return DOMAIN_AGENTS
|
|
311
|
+
.filter(function(a) { return a.category === category; })
|
|
312
|
+
.map(function(a) { return { slug: a.slug, name: a.name }; });
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// ── exports ────────────────────────────────────────────────────────────────────
|
|
316
|
+
|
|
65
317
|
module.exports = {
|
|
66
318
|
routeTask: routeTask,
|
|
67
319
|
routeTaskSemantic: routeTask,
|
|
320
|
+
matchSkills: matchSkills,
|
|
321
|
+
matchExtras: matchExtras,
|
|
322
|
+
buildCategoryList: buildCategoryList,
|
|
323
|
+
getAgentsInCategory: getAgentsInCategory,
|
|
324
|
+
AGENT_CAPABILITIES: AGENT_CAPABILITIES,
|
|
325
|
+
TASK_PATTERNS: TASK_PATTERNS,
|
|
68
326
|
};
|
|
@@ -1,63 +1,122 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
3
|
* Session state management for hook-handler.cjs
|
|
4
|
-
* Persists session data to .monomind/
|
|
4
|
+
* Persists session data to .monomind/sessions/current.json
|
|
5
|
+
*
|
|
6
|
+
* API: start(), restore(), end(), status(), metric(key), update(patch)
|
|
5
7
|
*/
|
|
6
8
|
|
|
7
9
|
const path = require('path');
|
|
8
10
|
const fs = require('fs');
|
|
9
11
|
|
|
10
12
|
const CWD = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
11
|
-
const
|
|
13
|
+
const SESSIONS_DIR = path.join(CWD, '.monomind', 'sessions');
|
|
14
|
+
const CURRENT_FILE = path.join(SESSIONS_DIR, 'current.json');
|
|
15
|
+
|
|
16
|
+
var KNOWN_METRICS = new Set(['edits', 'commands', 'tasks', 'errors']);
|
|
12
17
|
|
|
13
18
|
function ensureDir() {
|
|
14
|
-
try { fs.mkdirSync(
|
|
19
|
+
try { fs.mkdirSync(SESSIONS_DIR, { recursive: true }); } catch (_) {}
|
|
15
20
|
}
|
|
16
21
|
|
|
17
|
-
function
|
|
22
|
+
function readCurrent() {
|
|
18
23
|
try {
|
|
19
|
-
if (!fs.existsSync(
|
|
20
|
-
var
|
|
24
|
+
if (!fs.existsSync(CURRENT_FILE)) return null;
|
|
25
|
+
var st = fs.statSync(CURRENT_FILE);
|
|
26
|
+
if (st.size > 1 * 1024 * 1024) return null;
|
|
27
|
+
var raw = fs.readFileSync(CURRENT_FILE, 'utf-8');
|
|
21
28
|
var data = JSON.parse(raw);
|
|
22
|
-
if (!data || !data.
|
|
23
|
-
console.log('[OK] Session restored: ' + data.sessionId);
|
|
29
|
+
if (!data || !data.id) return null;
|
|
24
30
|
return data;
|
|
25
31
|
} catch (_) {
|
|
26
32
|
return null;
|
|
27
33
|
}
|
|
28
34
|
}
|
|
29
35
|
|
|
30
|
-
function
|
|
36
|
+
function writeCurrent(data) {
|
|
31
37
|
ensureDir();
|
|
32
|
-
var sessionId = 'session-' + Date.now();
|
|
33
|
-
var data = { sessionId: sessionId, startedAt: new Date().toISOString(), editCount: 0, taskCount: 0 };
|
|
34
38
|
try {
|
|
35
|
-
fs.writeFileSync(
|
|
36
|
-
console.log('[OK] Session started: ' + sessionId);
|
|
39
|
+
fs.writeFileSync(CURRENT_FILE, JSON.stringify(data, null, 2), 'utf-8');
|
|
37
40
|
} catch (_) {}
|
|
38
|
-
return data;
|
|
39
41
|
}
|
|
40
42
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
43
|
+
// ── start ──────────────────────────────────────────────────────────────────────
|
|
44
|
+
|
|
45
|
+
function start() {
|
|
46
|
+
var sessionId = 'session-' + Date.now();
|
|
47
|
+
var sess = {
|
|
48
|
+
id: sessionId,
|
|
49
|
+
startedAt: new Date().toISOString(),
|
|
50
|
+
context: {},
|
|
51
|
+
metrics: { edits: 0, commands: 0, tasks: 0, errors: 0 },
|
|
52
|
+
};
|
|
53
|
+
writeCurrent(sess);
|
|
54
|
+
return sess;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// ── restore ────────────────────────────────────────────────────────────────────
|
|
58
|
+
|
|
59
|
+
function restore() {
|
|
60
|
+
var data = readCurrent();
|
|
61
|
+
if (!data) return null;
|
|
62
|
+
data.restoredAt = new Date().toISOString();
|
|
63
|
+
writeCurrent(data);
|
|
64
|
+
return data;
|
|
51
65
|
}
|
|
52
66
|
|
|
67
|
+
// ── end ────────────────────────────────────────────────────────────────────────
|
|
68
|
+
|
|
53
69
|
function end() {
|
|
70
|
+
var data = readCurrent();
|
|
71
|
+
if (!data) return null;
|
|
72
|
+
|
|
73
|
+
var startTs = new Date(data.startedAt).getTime();
|
|
74
|
+
var endTs = Date.now();
|
|
75
|
+
var duration = endTs - startTs;
|
|
76
|
+
|
|
77
|
+
var archived = Object.assign({}, data, {
|
|
78
|
+
endedAt: new Date(endTs).toISOString(),
|
|
79
|
+
duration: duration,
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
// Archive to <session-id>.json
|
|
54
83
|
try {
|
|
55
|
-
var
|
|
56
|
-
|
|
57
|
-
update({ endedAt: new Date().toISOString() });
|
|
58
|
-
console.log('[OK] Session ended: ' + data.sessionId);
|
|
59
|
-
}
|
|
84
|
+
var archivePath = path.join(SESSIONS_DIR, data.id + '.json');
|
|
85
|
+
fs.writeFileSync(archivePath, JSON.stringify(archived, null, 2), 'utf-8');
|
|
60
86
|
} catch (_) {}
|
|
87
|
+
|
|
88
|
+
// Remove current.json
|
|
89
|
+
try { fs.unlinkSync(CURRENT_FILE); } catch (_) {}
|
|
90
|
+
|
|
91
|
+
return archived;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// ── status ─────────────────────────────────────────────────────────────────────
|
|
95
|
+
|
|
96
|
+
function status() {
|
|
97
|
+
return readCurrent();
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// ── metric ─────────────────────────────────────────────────────────────────────
|
|
101
|
+
|
|
102
|
+
function metric(key) {
|
|
103
|
+
var data = readCurrent();
|
|
104
|
+
if (!data) return null;
|
|
105
|
+
if (!KNOWN_METRICS.has(key)) return data;
|
|
106
|
+
|
|
107
|
+
data.metrics[key] = (data.metrics[key] || 0) + 1;
|
|
108
|
+
writeCurrent(data);
|
|
109
|
+
return data;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// ── update ─────────────────────────────────────────────────────────────────────
|
|
113
|
+
|
|
114
|
+
function update(patch) {
|
|
115
|
+
var existing = readCurrent();
|
|
116
|
+
if (!existing) return null;
|
|
117
|
+
var merged = Object.assign({}, existing, patch, { updatedAt: new Date().toISOString() });
|
|
118
|
+
writeCurrent(merged);
|
|
119
|
+
return merged;
|
|
61
120
|
}
|
|
62
121
|
|
|
63
|
-
module.exports = { restore,
|
|
122
|
+
module.exports = { start, restore, end, status, metric, update };
|