@monoes/monomindcli 1.18.15 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/core/researcher.md +29 -24
- package/.claude/agents/github/code-review-swarm.md +1 -1
- package/.claude/agents/github/github-modes.md +1 -1
- package/.claude/agents/github/issue-tracker.md +1 -3
- package/.claude/agents/github/multi-repo-swarm.md +1 -1
- package/.claude/agents/github/pr-manager.md +1 -3
- package/.claude/agents/github/project-board-sync.md +1 -1
- package/.claude/agents/github/release-manager.md +1 -1
- package/.claude/agents/github/repo-architect.md +4 -12
- package/.claude/agents/github/swarm-issue.md +1 -1
- package/.claude/agents/github/swarm-pr.md +1 -1
- package/.claude/agents/github/sync-coordinator.md +1 -1
- package/.claude/agents/github/workflow-automation.md +1 -1
- package/.claude/agents/goal/goal-planner.md +1 -2
- package/.claude/agents/specialized/specialized-workflow-architect.md +11 -14
- package/.claude/agents/testing/production-validator.md +8 -7
- package/.claude/agents/testing/testing-evidence-collector.md +3 -1
- package/.claude/commands/github/issue-tracker.md +0 -2
- package/.claude/commands/github/pr-manager.md +0 -2
- package/.claude/commands/github/repo-architect.md +3 -10
- package/.claude/commands/mastermind/code-review.md +4 -4
- package/.claude/commands/mastermind/help.md +5 -5
- package/.claude/commands/mastermind/okf-export.md +14 -0
- package/.claude/commands/mastermind/okf-import.md +15 -0
- package/.claude/commands/workflows/README.md +0 -1
- package/.claude/commands/workflows/workflow-create.md +0 -1
- package/.claude/commands/workflows/workflow-execute.md +1 -3
- package/.claude/commands/workflows/workflow-export.md +0 -2
- package/.claude/helpers/handlers/agent-start-handler.cjs +28 -36
- package/.claude/helpers/handlers/capture-handler.cjs +110 -0
- package/.claude/helpers/handlers/edit-handler.cjs +15 -0
- package/.claude/helpers/handlers/gates-handler.cjs +2 -8
- package/.claude/helpers/handlers/route-handler.cjs +314 -245
- package/.claude/helpers/handlers/session-handler.cjs +182 -163
- package/.claude/helpers/handlers/session-restore-handler.cjs +95 -53
- package/.claude/helpers/handlers/task-handler.cjs +17 -160
- package/.claude/helpers/hook-handler.cjs +153 -16
- package/.claude/helpers/intelligence.cjs +255 -15
- package/.claude/helpers/learning-service.mjs +1 -0
- package/.claude/helpers/mastermind-activate.cjs +33 -51
- package/.claude/helpers/monolean-activate.cjs +13 -3
- package/.claude/helpers/monolean-propagate.cjs +7 -3
- package/.claude/helpers/router.cjs +122 -11
- package/.claude/helpers/skill-registry.json +0 -189
- package/.claude/skills/github-toolkit/SKILL.md +60 -0
- package/.claude/skills/hive-mind-advanced/SKILL.md +0 -15
- package/.claude/skills/hooks-automation/SKILL.md +0 -1
- package/.claude/skills/mastermind-skills/_protocol.md +1 -1
- package/.claude/skills/mastermind-skills/architect.md +5 -6
- package/.claude/skills/mastermind-skills/autodev.md +8 -5
- package/.claude/skills/mastermind-skills/build.md +1 -2
- package/.claude/skills/mastermind-skills/review.md +8 -5
- package/.claude/skills/mastermind-skills/techport.md +37 -3
- package/.claude/skills/memory-toolkit/SKILL.md +75 -0
- package/.claude/skills/monodesign/document.md +9 -6
- package/.claude/skills/monodesign/extract.md +1 -1
- package/.claude/skills/monodesign/reference/document.md +1 -1
- package/.claude/skills/monodesign/reference/live.md +1 -1
- package/.claude/skills/monolean/SKILL.md +1 -1
- package/.claude/skills/specialagent/SKILL.md +2 -4
- package/.claude/skills/swarm-advanced/SKILL.md +0 -1
- package/README.md +2 -5
- package/bin/mcp-server.js +11 -1
- package/dist/src/autopilot-state.d.ts.map +1 -1
- package/dist/src/autopilot-state.js +4 -5
- package/dist/src/autopilot-state.js.map +1 -1
- package/dist/src/browser/dashboard/server.d.ts.map +1 -1
- package/dist/src/browser/dashboard/server.js +69 -1
- package/dist/src/browser/dashboard/server.js.map +1 -1
- package/dist/src/browser/dashboard/ui.html +214 -1764
- package/dist/src/capabilities/index.d.ts +0 -2
- package/dist/src/capabilities/index.d.ts.map +1 -1
- package/dist/src/capabilities/index.js +0 -1
- package/dist/src/capabilities/index.js.map +1 -1
- package/dist/src/commands/agent-lifecycle.d.ts.map +1 -1
- package/dist/src/commands/agent-lifecycle.js +2 -6
- package/dist/src/commands/agent-lifecycle.js.map +1 -1
- package/dist/src/commands/agent-ops.d.ts +1 -2
- package/dist/src/commands/agent-ops.d.ts.map +1 -1
- package/dist/src/commands/agent-ops.js +1 -59
- package/dist/src/commands/agent-ops.js.map +1 -1
- package/dist/src/commands/agent.d.ts.map +1 -1
- package/dist/src/commands/agent.js +2 -3
- package/dist/src/commands/agent.js.map +1 -1
- package/dist/src/commands/analyze-diff.js +1 -1
- package/dist/src/commands/analyze-diff.js.map +1 -1
- package/dist/src/commands/analyze.d.ts +0 -4
- package/dist/src/commands/analyze.d.ts.map +1 -1
- package/dist/src/commands/analyze.js +1 -29
- package/dist/src/commands/analyze.js.map +1 -1
- package/dist/src/commands/browse-action.d.ts.map +1 -1
- package/dist/src/commands/browse-action.js +94 -2
- package/dist/src/commands/browse-action.js.map +1 -1
- package/dist/src/commands/completions.d.ts.map +1 -1
- package/dist/src/commands/completions.js +12 -76
- package/dist/src/commands/completions.js.map +1 -1
- package/dist/src/commands/config.d.ts.map +1 -1
- package/dist/src/commands/config.js +0 -6
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/doctor-project-checks.d.ts +13 -3
- package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
- package/dist/src/commands/doctor-project-checks.js +131 -23
- package/dist/src/commands/doctor-project-checks.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +6 -5
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/guidance.d.ts +5 -1
- package/dist/src/commands/guidance.d.ts.map +1 -1
- package/dist/src/commands/guidance.js +11 -556
- package/dist/src/commands/guidance.js.map +1 -1
- package/dist/src/commands/hive-mind-comms.d.ts.map +1 -1
- package/dist/src/commands/hive-mind-comms.js +11 -4
- package/dist/src/commands/hive-mind-comms.js.map +1 -1
- package/dist/src/commands/hive-mind-helpers.js +2 -2
- package/dist/src/commands/hive-mind-helpers.js.map +1 -1
- package/dist/src/commands/hive-mind-ops.d.ts +1 -3
- package/dist/src/commands/hive-mind-ops.d.ts.map +1 -1
- package/dist/src/commands/hive-mind-ops.js +2 -116
- package/dist/src/commands/hive-mind-ops.js.map +1 -1
- package/dist/src/commands/hive-mind.d.ts +4 -4
- package/dist/src/commands/hive-mind.d.ts.map +1 -1
- package/dist/src/commands/hive-mind.js +11 -11
- package/dist/src/commands/hive-mind.js.map +1 -1
- package/dist/src/commands/hooks-coverage-commands.d.ts.map +1 -1
- package/dist/src/commands/hooks-coverage-commands.js +8 -7
- package/dist/src/commands/hooks-coverage-commands.js.map +1 -1
- package/dist/src/commands/hooks-coverage-gaps.js +1 -1
- package/dist/src/commands/hooks-coverage-gaps.js.map +1 -1
- package/dist/src/commands/hooks-coverage-routing.js +2 -2
- package/dist/src/commands/hooks-coverage-routing.js.map +1 -1
- package/dist/src/commands/hooks-extended-commands.d.ts +0 -3
- package/dist/src/commands/hooks-extended-commands.d.ts.map +1 -1
- package/dist/src/commands/hooks-extended-commands.js +0 -307
- package/dist/src/commands/hooks-extended-commands.js.map +1 -1
- package/dist/src/commands/hooks-formatting.d.ts +1 -5
- package/dist/src/commands/hooks-formatting.d.ts.map +1 -1
- package/dist/src/commands/hooks-formatting.js +1 -18
- package/dist/src/commands/hooks-formatting.js.map +1 -1
- package/dist/src/commands/hooks-workers.d.ts +1 -1
- package/dist/src/commands/hooks-workers.d.ts.map +1 -1
- package/dist/src/commands/hooks-workers.js +82 -330
- package/dist/src/commands/hooks-workers.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +1 -12
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.d.ts +2 -55
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +23 -216
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/init-wizard.d.ts.map +1 -1
- package/dist/src/commands/init-wizard.js +3 -5
- package/dist/src/commands/init-wizard.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +4 -24
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/mcp.d.ts.map +1 -1
- package/dist/src/commands/mcp.js +32 -4
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/memory-admin.d.ts +1 -2
- package/dist/src/commands/memory-admin.d.ts.map +1 -1
- package/dist/src/commands/memory-admin.js +1 -118
- package/dist/src/commands/memory-admin.js.map +1 -1
- package/dist/src/commands/memory-transfer.d.ts +1 -2
- package/dist/src/commands/memory-transfer.d.ts.map +1 -1
- package/dist/src/commands/memory-transfer.js +5 -171
- package/dist/src/commands/memory-transfer.js.map +1 -1
- package/dist/src/commands/memory.d.ts.map +1 -1
- package/dist/src/commands/memory.js +3 -6
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/neural-core.d.ts +3 -1
- package/dist/src/commands/neural-core.d.ts.map +1 -1
- package/dist/src/commands/neural-core.js +154 -15
- package/dist/src/commands/neural-core.js.map +1 -1
- package/dist/src/commands/neural-optimize.d.ts.map +1 -1
- package/dist/src/commands/neural-optimize.js +13 -15
- package/dist/src/commands/neural-optimize.js.map +1 -1
- package/dist/src/commands/neural-registry.d.ts +1 -1
- package/dist/src/commands/neural-registry.js +14 -14
- package/dist/src/commands/neural-registry.js.map +1 -1
- package/dist/src/commands/neural.d.ts +1 -1
- package/dist/src/commands/neural.js +6 -6
- 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 +68 -58
- package/dist/src/commands/performance.js.map +1 -1
- package/dist/src/commands/providers.d.ts.map +1 -1
- package/dist/src/commands/providers.js +77 -117
- package/dist/src/commands/providers.js.map +1 -1
- package/dist/src/commands/search-universal.d.ts +7 -1
- package/dist/src/commands/search-universal.d.ts.map +1 -1
- package/dist/src/commands/search-universal.js +59 -5
- package/dist/src/commands/search-universal.js.map +1 -1
- package/dist/src/commands/security-cve.d.ts.map +1 -1
- package/dist/src/commands/security-cve.js +3 -5
- package/dist/src/commands/security-cve.js.map +1 -1
- package/dist/src/commands/security-misc.d.ts +0 -1
- package/dist/src/commands/security-misc.d.ts.map +1 -1
- package/dist/src/commands/security-misc.js +69 -45
- package/dist/src/commands/security-misc.js.map +1 -1
- package/dist/src/commands/security.d.ts.map +1 -1
- package/dist/src/commands/security.js +2 -4
- 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 +137 -281
- 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 +2 -59
- 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 +18 -29
- 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 +113 -66
- 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 +2 -49
- package/dist/src/commands/task.js.map +1 -1
- package/dist/src/consensus/audit-writer.d.ts.map +1 -1
- package/dist/src/consensus/audit-writer.js +43 -1
- package/dist/src/consensus/audit-writer.js.map +1 -1
- package/dist/src/consensus/tally.d.ts +19 -0
- package/dist/src/consensus/tally.d.ts.map +1 -0
- package/dist/src/consensus/tally.js +34 -0
- package/dist/src/consensus/tally.js.map +1 -0
- package/dist/src/index.d.ts +3 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +13 -9
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/claudemd-generator.d.ts.map +1 -1
- package/dist/src/init/claudemd-generator.js +10 -14
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +42 -100
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/helpers-generator.d.ts.map +1 -1
- package/dist/src/init/helpers-generator.js +2 -22
- package/dist/src/init/helpers-generator.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +0 -13
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.d.ts.map +1 -1
- package/dist/src/init/statusline-generator.js +62 -0
- package/dist/src/init/statusline-generator.js.map +1 -1
- package/dist/src/init/types.d.ts +3 -9
- package/dist/src/init/types.d.ts.map +1 -1
- package/dist/src/init/types.js +0 -5
- package/dist/src/init/types.js.map +1 -1
- package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
- package/dist/src/knowledge/document-pipeline.js +18 -8
- package/dist/src/knowledge/document-pipeline.js.map +1 -1
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +0 -8
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-server.d.ts.map +1 -1
- package/dist/src/mcp-server.js +14 -0
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +0 -17
- package/dist/src/mcp-tools/agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/coherence/causal-infer.d.ts +5 -5
- package/dist/src/mcp-tools/coherence/causal-infer.d.ts.map +1 -1
- package/dist/src/mcp-tools/coherence/causal-infer.js +32 -46
- package/dist/src/mcp-tools/coherence/causal-infer.js.map +1 -1
- package/dist/src/mcp-tools/coherence/coherence-check.d.ts.map +1 -1
- package/dist/src/mcp-tools/coherence/coherence-check.js +1 -19
- package/dist/src/mcp-tools/coherence/coherence-check.js.map +1 -1
- package/dist/src/mcp-tools/coherence/consensus-verify.d.ts +2 -3
- package/dist/src/mcp-tools/coherence/consensus-verify.d.ts.map +1 -1
- package/dist/src/mcp-tools/coherence/consensus-verify.js +22 -20
- package/dist/src/mcp-tools/coherence/consensus-verify.js.map +1 -1
- package/dist/src/mcp-tools/coherence/memory-gate.d.ts +3 -2
- package/dist/src/mcp-tools/coherence/memory-gate.d.ts.map +1 -1
- package/dist/src/mcp-tools/coherence/memory-gate.js +32 -19
- package/dist/src/mcp-tools/coherence/memory-gate.js.map +1 -1
- package/dist/src/mcp-tools/coherence/quantum-topology.d.ts +4 -4
- package/dist/src/mcp-tools/coherence/quantum-topology.d.ts.map +1 -1
- package/dist/src/mcp-tools/coherence/quantum-topology.js +11 -17
- package/dist/src/mcp-tools/coherence/quantum-topology.js.map +1 -1
- package/dist/src/mcp-tools/coherence/spectral-analyze.d.ts +2 -3
- package/dist/src/mcp-tools/coherence/spectral-analyze.d.ts.map +1 -1
- package/dist/src/mcp-tools/coherence/spectral-analyze.js +51 -32
- package/dist/src/mcp-tools/coherence/spectral-analyze.js.map +1 -1
- package/dist/src/mcp-tools/coherence/types.d.ts +8 -11
- package/dist/src/mcp-tools/coherence/types.d.ts.map +1 -1
- package/dist/src/mcp-tools/coherence/types.js +3 -18
- package/dist/src/mcp-tools/coherence/types.js.map +1 -1
- package/dist/src/mcp-tools/embeddings-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/embeddings-tools.js +1 -7
- package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
- package/dist/src/mcp-tools/graphify-tools.js +2 -2
- package/dist/src/mcp-tools/graphify-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 +9 -19
- package/dist/src/mcp-tools/guidance-tools.js.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.d.ts +8 -1
- package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.js +198 -40
- package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-advanced.d.ts +18 -0
- package/dist/src/mcp-tools/hooks-advanced.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-advanced.js +25 -0
- package/dist/src/mcp-tools/hooks-advanced.js.map +1 -0
- package/dist/src/mcp-tools/hooks-intelligence.d.ts +4 -8
- package/dist/src/mcp-tools/hooks-intelligence.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-intelligence.js +33 -482
- package/dist/src/mcp-tools/hooks-intelligence.js.map +1 -1
- package/dist/src/mcp-tools/hooks-routing.d.ts +1 -3
- package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-routing.js +96 -202
- package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
- package/dist/src/mcp-tools/hooks-synthesis.d.ts +31 -0
- package/dist/src/mcp-tools/hooks-synthesis.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-synthesis.js +196 -0
- package/dist/src/mcp-tools/hooks-synthesis.js.map +1 -0
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +10 -11
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/index.d.ts +0 -3
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +0 -4
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +24 -9
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph-tools.d.ts +6 -0
- package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph-tools.js +370 -95
- package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
- package/dist/src/mcp-tools/neural-tools.d.ts +8 -9
- package/dist/src/mcp-tools/neural-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/neural-tools.js +249 -539
- 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 +5 -17
- package/dist/src/mcp-tools/performance-tools.js.map +1 -1
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.js +2 -2
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.js.map +1 -1
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts +4 -4
- package/dist/src/mcp-tools/quality-tools.d.ts +7 -2
- package/dist/src/mcp-tools/quality-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/quality-tools.js +7 -257
- package/dist/src/mcp-tools/quality-tools.js.map +1 -1
- package/dist/src/mcp-tools/security-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/security-tools.js +103 -0
- package/dist/src/mcp-tools/security-tools.js.map +1 -1
- package/dist/src/memory/intelligence.d.ts +9 -9
- package/dist/src/memory/intelligence.d.ts.map +1 -1
- package/dist/src/memory/intelligence.js +71 -59
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts +1 -0
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +47 -5
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-read.d.ts.map +1 -1
- package/dist/src/memory/memory-read.js +1 -19
- package/dist/src/memory/memory-read.js.map +1 -1
- package/dist/src/suggest.d.ts.map +1 -1
- package/dist/src/suggest.js +1 -12
- package/dist/src/suggest.js.map +1 -1
- package/dist/src/transfer/store/discovery.d.ts +3 -2
- package/dist/src/transfer/store/discovery.d.ts.map +1 -1
- package/dist/src/transfer/store/discovery.js +22 -70
- package/dist/src/transfer/store/discovery.js.map +1 -1
- package/dist/src/update/checker.d.ts.map +1 -1
- package/dist/src/update/checker.js +0 -1
- package/dist/src/update/checker.js.map +1 -1
- package/dist/src/utils/cosine-similarity.d.ts +22 -0
- package/dist/src/utils/cosine-similarity.d.ts.map +1 -0
- package/dist/src/utils/cosine-similarity.js +38 -0
- package/dist/src/utils/cosine-similarity.js.map +1 -0
- package/dist/src/utils/input-guards.d.ts +51 -0
- package/dist/src/utils/input-guards.d.ts.map +1 -0
- package/dist/src/utils/input-guards.js +223 -0
- package/dist/src/utils/input-guards.js.map +1 -0
- package/dist/src/utils/json-file.d.ts +33 -0
- package/dist/src/utils/json-file.d.ts.map +1 -0
- package/dist/src/utils/json-file.js +57 -0
- package/dist/src/utils/json-file.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -6
- package/scripts/sync-claude-assets.sh +16 -20
- package/.claude/agents/generated/case-analyst.md +0 -50
- package/.claude/agents/generated/channel-intelligence-director.md +0 -87
- package/.claude/agents/generated/chief-growth-officer.md +0 -88
- package/.claude/agents/generated/churn-analyst.md +0 -53
- package/.claude/agents/generated/code-reviewer.md +0 -55
- package/.claude/agents/generated/code-validator.md +0 -57
- package/.claude/agents/generated/complexity-scanner.md +0 -56
- package/.claude/agents/generated/content-seo-strategist.md +0 -90
- package/.claude/agents/generated/copy-editor.md +0 -45
- package/.claude/agents/generated/court-reporter.md +0 -50
- package/.claude/agents/generated/defender.md +0 -51
- package/.claude/agents/generated/devbot-orchestrator.md +0 -58
- package/.claude/agents/generated/devbot-planner.md +0 -63
- package/.claude/agents/generated/developer-community-strategist.md +0 -91
- package/.claude/agents/generated/editor-in-chief.md +0 -45
- package/.claude/agents/generated/fact-checker.md +0 -45
- package/.claude/agents/generated/impact-assessor.md +0 -54
- package/.claude/agents/generated/judge.md +0 -51
- package/.claude/agents/generated/outreach-partnership-strategist.md +0 -90
- package/.claude/agents/generated/prosecutor.md +0 -51
- package/.claude/agents/generated/reporter.md +0 -45
- package/.claude/agents/generated/social-media-strategist.md +0 -91
- package/.claude/agents/generated/video-visual-strategist.md +0 -90
- package/.claude/agents/reengineer-squad/boss.md +0 -113
- package/.claude/agents/reengineer-squad/critic-architect.md +0 -132
- package/.claude/agents/reengineer-squad/git-manager.md +0 -145
- package/.claude/agents/reengineer-squad/idea-generator.md +0 -95
- package/.claude/agents/reengineer-squad/implementer.md +0 -112
- package/.claude/agents/reengineer-squad/integration-planner.md +0 -112
- package/.claude/agents/reengineer-squad/source-analyst.md +0 -103
- package/.claude/agents/reengineer-squad/target-analyst.md +0 -118
- package/.claude/agents/reengineer-squad/tester.md +0 -105
- package/.claude/agents/sparc/architecture.md +0 -453
- package/.claude/agents/sparc/pseudocode.md +0 -299
- package/.claude/agents/sparc/refinement.md +0 -504
- package/.claude/agents/sparc/specification.md +0 -258
- package/.claude/agents/templates/implementer-sparc-coder.md +0 -231
- package/.claude/commands/sparc/analyzer.md +0 -35
- package/.claude/commands/sparc/architect.md +0 -36
- package/.claude/commands/sparc/ask.md +0 -56
- package/.claude/commands/sparc/batch-executor.md +0 -37
- package/.claude/commands/sparc/code.md +0 -48
- package/.claude/commands/sparc/coder.md +0 -37
- package/.claude/commands/sparc/debug.md +0 -42
- package/.claude/commands/sparc/debugger.md +0 -37
- package/.claude/commands/sparc/designer.md +0 -36
- package/.claude/commands/sparc/devops.md +0 -68
- package/.claude/commands/sparc/docs-writer.md +0 -39
- package/.claude/commands/sparc/documenter.md +0 -37
- package/.claude/commands/sparc/innovator.md +0 -37
- package/.claude/commands/sparc/integration.md +0 -42
- package/.claude/commands/sparc/mcp.md +0 -76
- package/.claude/commands/sparc/memory-manager.md +0 -57
- package/.claude/commands/sparc/optimizer.md +0 -37
- package/.claude/commands/sparc/orchestrator.md +0 -70
- package/.claude/commands/sparc/post-deployment-monitoring-mode.md +0 -42
- package/.claude/commands/sparc/refinement-optimization-mode.md +0 -42
- package/.claude/commands/sparc/researcher.md +0 -37
- package/.claude/commands/sparc/reviewer.md +0 -37
- package/.claude/commands/sparc/security-review.md +0 -39
- package/.claude/commands/sparc/sparc-modes.md +0 -120
- package/.claude/commands/sparc/sparc.md +0 -71
- package/.claude/commands/sparc/spec-pseudocode.md +0 -39
- package/.claude/commands/sparc/supabase-admin.md +0 -301
- package/.claude/commands/sparc/swarm-coordinator.md +0 -50
- package/.claude/commands/sparc/tdd.md +0 -37
- package/.claude/commands/sparc/tester.md +0 -37
- package/.claude/commands/sparc/tutorial.md +0 -38
- package/.claude/commands/sparc/workflow-manager.md +0 -37
- package/.claude/commands/sparc.md +0 -112
- package/.claude/helpers/auto-memory-hook.mjs +0 -503
- package/.claude/skills/sparc-methodology/SKILL.md +0 -950
- package/dist/src/capabilities/enrichment.d.ts +0 -44
- package/dist/src/capabilities/enrichment.d.ts.map +0 -1
- package/dist/src/capabilities/enrichment.js +0 -141
- package/dist/src/capabilities/enrichment.js.map +0 -1
- package/dist/src/commands/analyze-boundaries.d.ts +0 -14
- package/dist/src/commands/analyze-boundaries.d.ts.map +0 -1
- package/dist/src/commands/analyze-boundaries.js +0 -295
- package/dist/src/commands/analyze-boundaries.js.map +0 -1
- package/dist/src/commands/analyze-graph.d.ts +0 -14
- package/dist/src/commands/analyze-graph.d.ts.map +0 -1
- package/dist/src/commands/analyze-graph.js +0 -304
- package/dist/src/commands/analyze-graph.js.map +0 -1
- package/dist/src/commands/claims.d.ts +0 -10
- package/dist/src/commands/claims.d.ts.map +0 -1
- package/dist/src/commands/claims.js +0 -650
- package/dist/src/commands/claims.js.map +0 -1
- package/dist/src/commands/daemon.d.ts +0 -8
- package/dist/src/commands/daemon.d.ts.map +0 -1
- package/dist/src/commands/daemon.js +0 -681
- package/dist/src/commands/daemon.js.map +0 -1
- package/dist/src/commands/deployment.d.ts +0 -10
- package/dist/src/commands/deployment.d.ts.map +0 -1
- package/dist/src/commands/deployment.js +0 -706
- package/dist/src/commands/deployment.js.map +0 -1
- package/dist/src/commands/enrich.d.ts +0 -10
- package/dist/src/commands/enrich.d.ts.map +0 -1
- package/dist/src/commands/enrich.js +0 -58
- package/dist/src/commands/enrich.js.map +0 -1
- package/dist/src/commands/issues.d.ts +0 -21
- package/dist/src/commands/issues.d.ts.map +0 -1
- package/dist/src/commands/issues.js +0 -575
- package/dist/src/commands/issues.js.map +0 -1
- package/dist/src/commands/workflow.d.ts +0 -8
- package/dist/src/commands/workflow.d.ts.map +0 -1
- package/dist/src/commands/workflow.js +0 -677
- package/dist/src/commands/workflow.js.map +0 -1
- package/dist/src/mcp-tools/workflow-tools.d.ts +0 -8
- package/dist/src/mcp-tools/workflow-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/workflow-tools.js +0 -717
- package/dist/src/mcp-tools/workflow-tools.js.map +0 -1
- package/dist/src/services/claim-service.d.ts +0 -198
- package/dist/src/services/claim-service.d.ts.map +0 -1
- package/dist/src/services/claim-service.js +0 -890
- package/dist/src/services/claim-service.js.map +0 -1
- package/dist/src/services/headless-worker-executor.d.ts +0 -311
- package/dist/src/services/headless-worker-executor.d.ts.map +0 -1
- package/dist/src/services/headless-worker-executor.js +0 -1183
- package/dist/src/services/headless-worker-executor.js.map +0 -1
- package/dist/src/services/worker-daemon.d.ts +0 -248
- package/dist/src/services/worker-daemon.d.ts.map +0 -1
- package/dist/src/services/worker-daemon.js +0 -1417
- package/dist/src/services/worker-daemon.js.map +0 -1
- package/dist/src/ui/.monomind/capture/active-run.json +0 -1
- package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/real-events-1782290897.convs.jsonl +0 -3
- package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/real-events-1782290897.jsonl +0 -11
- package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/rigid-qa-restart-1782288201.jsonl +0 -540
- package/dist/src/ui/.monomind/orgs/system-trial-qa-threads.jsonl +0 -3
- package/dist/src/ui/.monomind/orgs/test-event-fix/runs/rigid-qa-restart-1782288201.jsonl +0 -2
|
@@ -7,8 +7,10 @@
|
|
|
7
7
|
import { join, resolve, sep } from 'path';
|
|
8
8
|
import { execSync } from 'child_process';
|
|
9
9
|
import { statSync } from 'fs';
|
|
10
|
+
import { randomUUID } from 'crypto';
|
|
10
11
|
import { getProjectCwd } from './types.js';
|
|
11
12
|
let _cachedDbPath;
|
|
13
|
+
let _cachedCwd;
|
|
12
14
|
function _isValidDb(p) {
|
|
13
15
|
try {
|
|
14
16
|
return statSync(p).size >= 100;
|
|
@@ -18,15 +20,19 @@ function _isValidDb(p) {
|
|
|
18
20
|
}
|
|
19
21
|
}
|
|
20
22
|
function getDbPath() {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
const cwd = getProjectCwd();
|
|
24
|
+
// Invalidate cache when project root changes (e.g. MONOMIND_CWD set after initialize)
|
|
25
|
+
if (_cachedDbPath && _cachedCwd === cwd)
|
|
26
|
+
return _cachedDbPath;
|
|
27
|
+
_cachedCwd = cwd;
|
|
28
|
+
_cachedDbPath = undefined;
|
|
29
|
+
const direct = join(cwd, '.monomind', 'monograph.db');
|
|
24
30
|
if (_isValidDb(direct)) {
|
|
25
31
|
_cachedDbPath = direct;
|
|
26
32
|
return direct;
|
|
27
33
|
}
|
|
28
34
|
try {
|
|
29
|
-
const root = execSync('git rev-parse --show-toplevel', { cwd
|
|
35
|
+
const root = execSync('git rev-parse --show-toplevel', { cwd, encoding: 'utf8' }).trim();
|
|
30
36
|
const candidate = join(root, '.monomind', 'monograph.db');
|
|
31
37
|
if (_isValidDb(candidate)) {
|
|
32
38
|
_cachedDbPath = candidate;
|
|
@@ -34,12 +40,60 @@ function getDbPath() {
|
|
|
34
40
|
}
|
|
35
41
|
}
|
|
36
42
|
catch { /* not in a git repo */ }
|
|
37
|
-
|
|
43
|
+
// Don't cache failures — the DB may be created by a subsequent build
|
|
38
44
|
return direct;
|
|
39
45
|
}
|
|
40
46
|
function text(t) {
|
|
41
47
|
return { content: [{ type: 'text', text: t }] };
|
|
42
48
|
}
|
|
49
|
+
function ensureDbExists() {
|
|
50
|
+
const p = getDbPath();
|
|
51
|
+
if (!_isValidDb(p)) {
|
|
52
|
+
throw new Error(`Monograph index not built yet. Run monograph_build first (path: ${p}).`);
|
|
53
|
+
}
|
|
54
|
+
return p;
|
|
55
|
+
}
|
|
56
|
+
// ── Active watcher registry ──────────────────────────────────────────────────
|
|
57
|
+
const _activeWatchers = new Map();
|
|
58
|
+
function applyPprRerank(db, seedNodes, damping, maxResults) {
|
|
59
|
+
const propagated = new Map();
|
|
60
|
+
for (const r of seedNodes) {
|
|
61
|
+
propagated.set(r.id, r.score);
|
|
62
|
+
}
|
|
63
|
+
const neighborStmt = db.prepare('SELECT target_id FROM edges WHERE source_id = @id');
|
|
64
|
+
for (const r of seedNodes) {
|
|
65
|
+
const neighbors = neighborStmt.all({ id: r.id });
|
|
66
|
+
for (const n of neighbors) {
|
|
67
|
+
const boost = r.score * damping;
|
|
68
|
+
const current = propagated.get(n.target_id) ?? 0;
|
|
69
|
+
propagated.set(n.target_id, Math.max(current, boost));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const seedIds = new Set(seedNodes.map(r => r.id));
|
|
73
|
+
const ranked = seedNodes.map(r => ({
|
|
74
|
+
...r,
|
|
75
|
+
combinedScore: Math.max(r.score, propagated.get(r.id) ?? 0),
|
|
76
|
+
boostedByNeighbors: false,
|
|
77
|
+
}));
|
|
78
|
+
for (const [id, score] of propagated) {
|
|
79
|
+
if (!seedIds.has(id)) {
|
|
80
|
+
const node = db.prepare('SELECT id, name, label, file_path, start_line FROM nodes WHERE id = @id').get({ id });
|
|
81
|
+
if (node) {
|
|
82
|
+
ranked.push({
|
|
83
|
+
id: node.id, name: node.name, label: node.label,
|
|
84
|
+
filePath: node.file_path, startLine: node.start_line,
|
|
85
|
+
score: 0, combinedScore: score, boostedByNeighbors: true,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
ranked.sort((a, b) => b.combinedScore - a.combinedScore);
|
|
91
|
+
return ranked.slice(0, maxResults).map(r => ({
|
|
92
|
+
id: r.id, name: r.name, label: r.label,
|
|
93
|
+
filePath: r.filePath, startLine: r.startLine,
|
|
94
|
+
score: r.combinedScore, boostedByNeighbors: r.boostedByNeighbors,
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
43
97
|
// ── monograph_build ───────────────────────────────────────────────────────────
|
|
44
98
|
const monographBuildTool = {
|
|
45
99
|
name: 'monograph_build',
|
|
@@ -78,13 +132,18 @@ const monographQueryTool = {
|
|
|
78
132
|
query: { type: 'string', description: 'Search terms' },
|
|
79
133
|
limit: { type: 'number', description: 'Max results (default 20)' },
|
|
80
134
|
label: { type: 'string', description: 'Filter by node type: Class, Function, Method, etc.' },
|
|
135
|
+
rerank: { type: 'boolean', description: 'Apply HippoRAG-style PPR graph reranking to boost neighbors of top hits (default: true)' },
|
|
136
|
+
damping: { type: 'number', description: 'PPR damping factor when rerank=true (0-1, default 0.5)' },
|
|
81
137
|
},
|
|
82
138
|
required: ['query'],
|
|
83
139
|
},
|
|
84
140
|
handler: async (input) => {
|
|
141
|
+
const dbPath = getDbPath();
|
|
142
|
+
if (!_isValidDb(dbPath))
|
|
143
|
+
return text('Monograph index not built yet. Run monograph_build first.');
|
|
85
144
|
const { openDb, closeDb, ftsSearch } = await import('@monoes/monograph');
|
|
86
145
|
const { hybridQuery } = await import('@monoes/monograph');
|
|
87
|
-
const db = openDb(
|
|
146
|
+
const db = openDb(dbPath);
|
|
88
147
|
try {
|
|
89
148
|
// Cap limit: passed directly to SQLite queries and hybridQuery; an
|
|
90
149
|
// unlimited value saturates memory with rows.
|
|
@@ -101,19 +160,49 @@ const monographQueryTool = {
|
|
|
101
160
|
? rawQuery.slice(0, MAX_MONOGRAPH_QUERY_LEN)
|
|
102
161
|
: rawQuery;
|
|
103
162
|
const label = input.label;
|
|
163
|
+
const rerank = input.rerank ?? true;
|
|
164
|
+
const damping = input.damping ?? 0.5;
|
|
104
165
|
if (process.env['MONOGRAPH_EMBEDDINGS'] === 'true') {
|
|
105
|
-
const results = await hybridQuery(db, query, { limit, label });
|
|
166
|
+
const results = await hybridQuery(db, query, { limit: rerank ? limit * 2 : limit, label });
|
|
106
167
|
if (results.length === 0)
|
|
107
168
|
return text('No results found.');
|
|
169
|
+
if (rerank) {
|
|
170
|
+
const seeds = results.map(r => ({
|
|
171
|
+
id: r.id, name: r.name ?? r.id, label: r.label ?? '?',
|
|
172
|
+
filePath: r.filePath ?? '', startLine: r.startLine ?? null,
|
|
173
|
+
score: r.score,
|
|
174
|
+
}));
|
|
175
|
+
const reranked = applyPprRerank(db, seeds, damping, limit);
|
|
176
|
+
const lines = reranked.map(r => {
|
|
177
|
+
const loc = r.filePath ? (r.startLine != null ? `${r.filePath}:${r.startLine}` : r.filePath) : '';
|
|
178
|
+
const tag = r.boostedByNeighbors ? ' [PPR-boosted]' : '';
|
|
179
|
+
return `[${r.label}] ${r.name} ${loc} (score: ${r.score.toFixed(4)})${tag}`;
|
|
180
|
+
});
|
|
181
|
+
return text(lines.join('\n'));
|
|
182
|
+
}
|
|
108
183
|
const lines = results.map(r => {
|
|
109
184
|
const loc = r.filePath ? (r.startLine != null ? `${r.filePath}:${r.startLine}` : r.filePath) : '';
|
|
110
185
|
return `[${r.label ?? '?'}] ${r.name ?? r.id} ${loc} (score: ${r.score.toFixed(4)})`;
|
|
111
186
|
});
|
|
112
187
|
return text(lines.join('\n'));
|
|
113
188
|
}
|
|
114
|
-
const results = ftsSearch(db, query, limit, label);
|
|
189
|
+
const results = ftsSearch(db, query, rerank ? limit * 2 : limit, label);
|
|
115
190
|
if (results.length === 0)
|
|
116
191
|
return text('No results found.');
|
|
192
|
+
if (rerank) {
|
|
193
|
+
const seeds = results.map(r => ({
|
|
194
|
+
id: r.id, name: r.name, label: r.label,
|
|
195
|
+
filePath: r.filePath ?? '', startLine: r.startLine ?? null,
|
|
196
|
+
score: Math.abs(r.rank),
|
|
197
|
+
}));
|
|
198
|
+
const reranked = applyPprRerank(db, seeds, damping, limit);
|
|
199
|
+
const lines = reranked.map(r => {
|
|
200
|
+
const loc = r.filePath ? (r.startLine != null ? `${r.filePath}:${r.startLine}` : r.filePath) : '';
|
|
201
|
+
const tag = r.boostedByNeighbors ? ' [PPR-boosted]' : '';
|
|
202
|
+
return `[${r.label}] ${r.name} ${loc} (score: ${r.score.toFixed(3)})${tag}`;
|
|
203
|
+
});
|
|
204
|
+
return text(lines.join('\n'));
|
|
205
|
+
}
|
|
117
206
|
const lines = results.map(r => {
|
|
118
207
|
const loc = r.filePath ? (r.startLine != null ? `${r.filePath}:${r.startLine}` : r.filePath) : '';
|
|
119
208
|
return `[${r.label}] ${r.name} ${loc} (score: ${r.rank.toFixed(3)})`;
|
|
@@ -131,8 +220,11 @@ const monographStatsTool = {
|
|
|
131
220
|
description: 'Show node/edge/community counts and index freshness.',
|
|
132
221
|
inputSchema: { type: 'object', properties: {} },
|
|
133
222
|
handler: async () => {
|
|
223
|
+
const dbPath = getDbPath();
|
|
224
|
+
if (!_isValidDb(dbPath))
|
|
225
|
+
return text('Monograph index not built yet. Run monograph_build first.');
|
|
134
226
|
const { openDb, closeDb, countNodes, countEdges } = await import('@monoes/monograph');
|
|
135
|
-
const db = openDb(
|
|
227
|
+
const db = openDb(dbPath);
|
|
136
228
|
try {
|
|
137
229
|
const nodes = countNodes(db);
|
|
138
230
|
const edges = countEdges(db);
|
|
@@ -201,8 +293,11 @@ const monographGodNodesTool = {
|
|
|
201
293
|
properties: { limit: { type: 'number', description: 'Max nodes to return (default 20)' } },
|
|
202
294
|
},
|
|
203
295
|
handler: async (input) => {
|
|
296
|
+
const dbPath = getDbPath();
|
|
297
|
+
if (!_isValidDb(dbPath))
|
|
298
|
+
return text('Monograph index not built yet. Run monograph_build first.');
|
|
204
299
|
const { openDb, closeDb } = await import('@monoes/monograph');
|
|
205
|
-
const db = openDb(
|
|
300
|
+
const db = openDb(dbPath);
|
|
206
301
|
try {
|
|
207
302
|
// Cap limit: passed directly to the SQL LIMIT clause.
|
|
208
303
|
const MAX_GOD_NODES_LIMIT = 1_000;
|
|
@@ -388,12 +483,27 @@ const monographSuggestTool = {
|
|
|
388
483
|
properties: {
|
|
389
484
|
task: { type: 'string', description: 'Optional task description for task-relevance scoring' },
|
|
390
485
|
limit: { type: 'number', description: 'Max questions (default 10)' },
|
|
486
|
+
checkStaleness: { type: 'boolean', description: 'Check index staleness first and trigger a background rebuild when the index is behind HEAD. Appends a _staleness annotation to the result. (default false)' },
|
|
391
487
|
},
|
|
392
488
|
},
|
|
393
489
|
handler: async (input) => {
|
|
490
|
+
// Health-aware mode (formerly monograph_suggest_auto): check staleness and
|
|
491
|
+
// trigger a background rebuild if the index is behind HEAD.
|
|
492
|
+
let stalenessAnnotation = '';
|
|
493
|
+
if (input.checkStaleness === true) {
|
|
494
|
+
const repoPath = getProjectCwd();
|
|
495
|
+
const stalenessResult = await computeCommitsBehind(repoPath);
|
|
496
|
+
const commitsBehind = stalenessResult?.commitsBehind ?? 0;
|
|
497
|
+
const triggered = triggerBackgroundBuildIfNeeded(repoPath, commitsBehind, STALENESS_THRESHOLD + 1);
|
|
498
|
+
const status = triggered ? 'building' : commitsBehind === 0 ? 'fresh' : 'stale';
|
|
499
|
+
stalenessAnnotation = `\n_staleness: ${JSON.stringify({ commitsBehind, status, triggered })}`;
|
|
500
|
+
}
|
|
501
|
+
const dbPath = getDbPath();
|
|
502
|
+
if (!_isValidDb(dbPath))
|
|
503
|
+
return text('Monograph index not built yet. Run monograph_build first.' + stalenessAnnotation);
|
|
394
504
|
const { openDb, closeDb } = await import('@monoes/monograph');
|
|
395
505
|
const { hybridQuery } = await import('@monoes/monograph');
|
|
396
|
-
const db = openDb(
|
|
506
|
+
const db = openDb(dbPath);
|
|
397
507
|
try {
|
|
398
508
|
// Cap limit and task: limit is passed directly to SQL LIMIT clause;
|
|
399
509
|
// task is forwarded to hybridQuery (embedding path) or FTS.
|
|
@@ -421,7 +531,7 @@ const monographSuggestTool = {
|
|
|
421
531
|
const hits = await hybridQuery(db, task, { limit: 20 });
|
|
422
532
|
const hitIds = new Set(hits.map(h => h.id));
|
|
423
533
|
if (hitIds.size === 0) {
|
|
424
|
-
return text('No suggestions for this task. Run monograph_build first or try a different query.');
|
|
534
|
+
return text('No suggestions for this task. Run monograph_build first or try a different query.' + stalenessAnnotation);
|
|
425
535
|
}
|
|
426
536
|
const rows = db.prepare(`
|
|
427
537
|
SELECT e.relation, e.confidence, n1.name as src, n2.name as tgt,
|
|
@@ -436,7 +546,7 @@ const monographSuggestTool = {
|
|
|
436
546
|
LIMIT 100
|
|
437
547
|
`).all(...[...hitIds], ...[...hitIds]);
|
|
438
548
|
const questions = rows.map(formatSuggestion);
|
|
439
|
-
return text(questions.slice(0, limit).join('\n') || 'No suggestions for this task. Run monograph_build first.');
|
|
549
|
+
return text((questions.slice(0, limit).join('\n') || 'No suggestions for this task. Run monograph_build first.') + stalenessAnnotation);
|
|
440
550
|
}
|
|
441
551
|
const rows = db.prepare(`
|
|
442
552
|
SELECT e.relation, e.confidence, n1.name as src, n2.name as tgt,
|
|
@@ -454,7 +564,7 @@ const monographSuggestTool = {
|
|
|
454
564
|
}));
|
|
455
565
|
if (task)
|
|
456
566
|
scored = scored.sort((a, b) => b.relevance - a.relevance);
|
|
457
|
-
return text(scored.slice(0, limit).map(s => s.q).join('\n') || 'No suggestions. Run monograph_build first.');
|
|
567
|
+
return text((scored.slice(0, limit).map(s => s.q).join('\n') || 'No suggestions. Run monograph_build first.') + stalenessAnnotation);
|
|
458
568
|
}
|
|
459
569
|
finally {
|
|
460
570
|
closeDb(db);
|
|
@@ -521,11 +631,15 @@ const monographWatchTool = {
|
|
|
521
631
|
handler: async (input) => {
|
|
522
632
|
const { MonographWatcher } = await import('@monoes/monograph');
|
|
523
633
|
const repoPath = input.path ?? getProjectCwd();
|
|
634
|
+
if (_activeWatchers.has(repoPath)) {
|
|
635
|
+
return text(`Monograph watcher already running for ${repoPath}.`);
|
|
636
|
+
}
|
|
524
637
|
const watcher = new MonographWatcher(repoPath);
|
|
525
638
|
watcher.on('monograph:updated', (_paths) => {
|
|
526
639
|
import('@monoes/monograph').then(({ buildAsync }) => buildAsync(repoPath)).catch(() => { });
|
|
527
640
|
});
|
|
528
641
|
await watcher.start();
|
|
642
|
+
_activeWatchers.set(repoPath, watcher);
|
|
529
643
|
return text(`Monograph watcher started for ${repoPath}. Watching for file changes...`);
|
|
530
644
|
},
|
|
531
645
|
};
|
|
@@ -533,9 +647,21 @@ const monographWatchTool = {
|
|
|
533
647
|
const monographWatchStopTool = {
|
|
534
648
|
name: 'monograph_watch_stop',
|
|
535
649
|
description: 'Stop the Monograph file watcher.',
|
|
536
|
-
inputSchema: {
|
|
537
|
-
|
|
538
|
-
|
|
650
|
+
inputSchema: {
|
|
651
|
+
type: 'object',
|
|
652
|
+
properties: {
|
|
653
|
+
path: { type: 'string', description: 'Repo path whose watcher to stop (defaults to project cwd)' },
|
|
654
|
+
},
|
|
655
|
+
},
|
|
656
|
+
handler: async (input) => {
|
|
657
|
+
const repoPath = input.path ?? getProjectCwd();
|
|
658
|
+
const watcher = _activeWatchers.get(repoPath);
|
|
659
|
+
if (!watcher) {
|
|
660
|
+
return text(`No active watcher found for ${repoPath}.`);
|
|
661
|
+
}
|
|
662
|
+
await watcher.stop();
|
|
663
|
+
_activeWatchers.delete(repoPath);
|
|
664
|
+
return text(`Monograph watcher stopped for ${repoPath}.`);
|
|
539
665
|
},
|
|
540
666
|
};
|
|
541
667
|
// ── monograph_report ──────────────────────────────────────────────────────────
|
|
@@ -620,14 +746,14 @@ async function computeCommitsBehind(repoPath) {
|
|
|
620
746
|
}
|
|
621
747
|
}
|
|
622
748
|
/**
|
|
623
|
-
* Shared staleness threshold: both monograph_staleness and
|
|
749
|
+
* Shared staleness threshold: both monograph_staleness and monograph_suggest (checkStaleness)
|
|
624
750
|
* trigger a background rebuild only when the index is more than this many commits behind HEAD.
|
|
625
751
|
* Using a shared constant prevents conflicting rebuild pressure during active dev sessions.
|
|
626
752
|
*/
|
|
627
753
|
const STALENESS_THRESHOLD = 10;
|
|
628
754
|
/**
|
|
629
755
|
* Fire-and-forget background rebuild. Uses a module-level guard so concurrent
|
|
630
|
-
* MCP tool calls (e.g. repeated
|
|
756
|
+
* MCP tool calls (e.g. repeated monograph_suggest checkStaleness) don't pile up builds.
|
|
631
757
|
* threshold: minimum commitsBehind to trigger (default STALENESS_THRESHOLD + 1).
|
|
632
758
|
*/
|
|
633
759
|
function triggerBackgroundBuildIfNeeded(repoPath, commitsBehind, threshold = STALENESS_THRESHOLD + 1) {
|
|
@@ -799,7 +925,7 @@ const monographExportTool = {
|
|
|
799
925
|
required: ['format'],
|
|
800
926
|
},
|
|
801
927
|
handler: async (input) => {
|
|
802
|
-
const { openDb, closeDb, toJson, toSvg, toGraphml, toCypher } = await import('@monoes/monograph');
|
|
928
|
+
const { openDb, closeDb, toJson, toSvg, toGraphml, toCypher, toObsidian, toCanvas } = await import('@monoes/monograph');
|
|
803
929
|
const { writeFileSync, mkdirSync } = await import('fs');
|
|
804
930
|
const db = openDb(getDbPath());
|
|
805
931
|
try {
|
|
@@ -833,6 +959,15 @@ const monographExportTool = {
|
|
|
833
959
|
writeFileSync(p, toCypher(nodes, edges));
|
|
834
960
|
return text(`Exported Cypher to ${p}`);
|
|
835
961
|
}
|
|
962
|
+
if (fmt === 'obsidian') {
|
|
963
|
+
toObsidian(nodes, edges, outDir);
|
|
964
|
+
return text(`Exported Obsidian vault to ${outDir}`);
|
|
965
|
+
}
|
|
966
|
+
if (fmt === 'canvas') {
|
|
967
|
+
const p = join(outDir, 'graph.canvas');
|
|
968
|
+
writeFileSync(p, toCanvas(nodes, edges));
|
|
969
|
+
return text(`Exported Canvas to ${p}`);
|
|
970
|
+
}
|
|
836
971
|
return text(`Format ${fmt} export written to ${outDir}`);
|
|
837
972
|
}
|
|
838
973
|
finally {
|
|
@@ -1180,21 +1315,6 @@ const monographApiImpactTool = {
|
|
|
1180
1315
|
}
|
|
1181
1316
|
},
|
|
1182
1317
|
};
|
|
1183
|
-
// ── monograph_embed ───────────────────────────────────────────────────────────
|
|
1184
|
-
const monographEmbedTool = {
|
|
1185
|
-
name: 'monograph_embed',
|
|
1186
|
-
description: 'DEPRECATED — embeddings are disabled; monograph uses BM25 (FTS5) search. This tool is a no-op kept for backward compatibility.',
|
|
1187
|
-
inputSchema: {
|
|
1188
|
-
type: 'object',
|
|
1189
|
-
properties: {
|
|
1190
|
-
codeOnly: { type: 'boolean', description: 'Ignored (embeddings are disabled)' },
|
|
1191
|
-
force: { type: 'boolean', description: 'Ignored (embeddings are disabled)' },
|
|
1192
|
-
},
|
|
1193
|
-
},
|
|
1194
|
-
handler: async () => {
|
|
1195
|
-
return text('Embeddings are disabled — monograph uses BM25 (FTS5) search; this tool is deprecated and does nothing. Use monograph_query instead.');
|
|
1196
|
-
},
|
|
1197
|
-
};
|
|
1198
1318
|
// ── monograph_cypher ──────────────────────────────────────────────────────────
|
|
1199
1319
|
const monographCypherTool = {
|
|
1200
1320
|
name: 'monograph_cypher',
|
|
@@ -1814,39 +1934,6 @@ const monographNeighborsTool = {
|
|
|
1814
1934
|
}
|
|
1815
1935
|
},
|
|
1816
1936
|
};
|
|
1817
|
-
// ── monograph_suggest_auto ────────────────────────────────────────────────────
|
|
1818
|
-
const monographSuggestAutoTool = {
|
|
1819
|
-
name: 'monograph_suggest_auto',
|
|
1820
|
-
description: 'Like monograph_suggest but health-aware: checks staleness first and triggers a background rebuild when the index is behind HEAD before returning suggestions. Result includes a _staleness annotation.',
|
|
1821
|
-
inputSchema: {
|
|
1822
|
-
type: 'object',
|
|
1823
|
-
properties: {
|
|
1824
|
-
task: { type: 'string', description: 'Optional task description for task-relevance scoring' },
|
|
1825
|
-
limit: { type: 'number', description: 'Max questions (default 10)' },
|
|
1826
|
-
},
|
|
1827
|
-
},
|
|
1828
|
-
handler: async (input) => {
|
|
1829
|
-
const repoPath = getProjectCwd();
|
|
1830
|
-
// Check staleness and trigger rebuild if needed (threshold: STALENESS_THRESHOLD commits).
|
|
1831
|
-
const stalenessResult = await computeCommitsBehind(repoPath);
|
|
1832
|
-
const commitsBehind = stalenessResult?.commitsBehind ?? 0;
|
|
1833
|
-
const triggered = triggerBackgroundBuildIfNeeded(repoPath, commitsBehind, STALENESS_THRESHOLD + 1);
|
|
1834
|
-
const stalenessStatus = triggered ? 'building' : commitsBehind === 0 ? 'fresh' : 'stale';
|
|
1835
|
-
// Delegate to the base suggest tool — no logic duplication.
|
|
1836
|
-
const baseResult = await monographSuggestTool.handler(input);
|
|
1837
|
-
// Append staleness annotation to the text content.
|
|
1838
|
-
const stalenessAnnotation = `\n_staleness: ${JSON.stringify({ commitsBehind, status: stalenessStatus, triggered })}`;
|
|
1839
|
-
if (baseResult && Array.isArray(baseResult.content)) {
|
|
1840
|
-
const content = baseResult.content;
|
|
1841
|
-
if (content.length > 0 && content[0].type === 'text') {
|
|
1842
|
-
content[0].text += stalenessAnnotation;
|
|
1843
|
-
}
|
|
1844
|
-
return baseResult;
|
|
1845
|
-
}
|
|
1846
|
-
return baseResult;
|
|
1847
|
-
},
|
|
1848
|
-
};
|
|
1849
|
-
// ── Export all tools ──────────────────────────────────────────────────────────
|
|
1850
1937
|
// ── monograph_dead_code ──────────────────────────────────────────────────────
|
|
1851
1938
|
const monographDeadCodeTool = {
|
|
1852
1939
|
name: 'monograph_dead_code',
|
|
@@ -2048,51 +2135,239 @@ function findStaleDist(repoPath) {
|
|
|
2048
2135
|
findings,
|
|
2049
2136
|
};
|
|
2050
2137
|
}
|
|
2051
|
-
|
|
2138
|
+
// ── monograph_agent_history ───────────────────────────────────────────────────
|
|
2139
|
+
const monographAgentHistoryTool = {
|
|
2140
|
+
name: 'monograph_agent_history',
|
|
2141
|
+
description: 'Query past agent interactions by org, type, session, or time range. Returns rows ordered by timestamp descending.',
|
|
2142
|
+
inputSchema: {
|
|
2143
|
+
type: 'object',
|
|
2144
|
+
properties: {
|
|
2145
|
+
org_name: { type: 'string', description: 'Filter by org name' },
|
|
2146
|
+
agent_type: { type: 'string', description: 'Filter by agent type' },
|
|
2147
|
+
session_id: { type: 'string', description: 'Filter by session id' },
|
|
2148
|
+
since: { type: 'number', description: 'Unix timestamp (ms) — only interactions after this time' },
|
|
2149
|
+
limit: { type: 'number', description: 'Max rows to return (default 50)' },
|
|
2150
|
+
},
|
|
2151
|
+
},
|
|
2152
|
+
handler: async (input) => {
|
|
2153
|
+
const { openDb, closeDb } = await import('@monoes/monograph');
|
|
2154
|
+
const db = openDb(getDbPath());
|
|
2155
|
+
try {
|
|
2156
|
+
const conditions = [];
|
|
2157
|
+
const params = {};
|
|
2158
|
+
if (typeof input.org_name === 'string') {
|
|
2159
|
+
conditions.push('org_name = @org_name');
|
|
2160
|
+
params.org_name = input.org_name;
|
|
2161
|
+
}
|
|
2162
|
+
if (typeof input.agent_type === 'string') {
|
|
2163
|
+
conditions.push('agent_type = @agent_type');
|
|
2164
|
+
params.agent_type = input.agent_type;
|
|
2165
|
+
}
|
|
2166
|
+
if (typeof input.session_id === 'string') {
|
|
2167
|
+
conditions.push('session_id = @session_id');
|
|
2168
|
+
params.session_id = input.session_id;
|
|
2169
|
+
}
|
|
2170
|
+
if (typeof input.since === 'number') {
|
|
2171
|
+
conditions.push('timestamp >= @since');
|
|
2172
|
+
params.since = input.since;
|
|
2173
|
+
}
|
|
2174
|
+
const MAX_LIMIT = 1_000;
|
|
2175
|
+
const rawLimit = input.limit ?? 50;
|
|
2176
|
+
const limit = Number.isFinite(rawLimit) && rawLimit > 0
|
|
2177
|
+
? Math.min(Math.floor(rawLimit), MAX_LIMIT)
|
|
2178
|
+
: 50;
|
|
2179
|
+
params.limit = limit;
|
|
2180
|
+
const where = conditions.length ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
2181
|
+
const sql = `SELECT * FROM agent_interactions ${where} ORDER BY timestamp DESC LIMIT @limit`;
|
|
2182
|
+
const rows = db.prepare(sql).all(params);
|
|
2183
|
+
if (rows.length === 0)
|
|
2184
|
+
return text('No agent interactions found.');
|
|
2185
|
+
return text(JSON.stringify(rows, null, 2));
|
|
2186
|
+
}
|
|
2187
|
+
finally {
|
|
2188
|
+
closeDb(db);
|
|
2189
|
+
}
|
|
2190
|
+
},
|
|
2191
|
+
};
|
|
2192
|
+
// ── monograph_agent_patterns ──────────────────────────────────────────────────
|
|
2193
|
+
const monographAgentPatternsTool = {
|
|
2194
|
+
name: 'monograph_agent_patterns',
|
|
2195
|
+
description: 'Aggregate agent interaction patterns: success rates, costs, and token usage grouped by agent type, org, or session.',
|
|
2196
|
+
inputSchema: {
|
|
2197
|
+
type: 'object',
|
|
2198
|
+
properties: {
|
|
2199
|
+
group_by: {
|
|
2200
|
+
type: 'string',
|
|
2201
|
+
description: "Column to group by: 'agent_type' | 'org_name' | 'session_id'",
|
|
2202
|
+
},
|
|
2203
|
+
since: { type: 'number', description: 'Unix timestamp (ms) — only interactions after this time' },
|
|
2204
|
+
min_count: { type: 'number', description: 'Minimum interaction count to include in results (default 2)' },
|
|
2205
|
+
},
|
|
2206
|
+
required: ['group_by'],
|
|
2207
|
+
},
|
|
2208
|
+
handler: async (input) => {
|
|
2209
|
+
const groupBy = input.group_by;
|
|
2210
|
+
const ALLOWED_GROUP_COLUMNS = new Set(['agent_type', 'org_name', 'session_id']);
|
|
2211
|
+
if (!ALLOWED_GROUP_COLUMNS.has(groupBy)) {
|
|
2212
|
+
return text(`Invalid group_by: ${groupBy}. Must be one of: agent_type, org_name, session_id`);
|
|
2213
|
+
}
|
|
2214
|
+
const { openDb, closeDb } = await import('@monoes/monograph');
|
|
2215
|
+
const db = openDb(getDbPath());
|
|
2216
|
+
try {
|
|
2217
|
+
const params = {};
|
|
2218
|
+
const conditions = [];
|
|
2219
|
+
if (typeof input.since === 'number') {
|
|
2220
|
+
conditions.push('timestamp >= @since');
|
|
2221
|
+
params.since = input.since;
|
|
2222
|
+
}
|
|
2223
|
+
const minCount = typeof input.min_count === 'number' && input.min_count > 0
|
|
2224
|
+
? Math.floor(input.min_count)
|
|
2225
|
+
: 2;
|
|
2226
|
+
params.min_count = minCount;
|
|
2227
|
+
const where = conditions.length ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
2228
|
+
const sql = `
|
|
2229
|
+
SELECT
|
|
2230
|
+
${groupBy} AS group_key,
|
|
2231
|
+
COUNT(*) AS interaction_count,
|
|
2232
|
+
AVG(success) AS success_rate,
|
|
2233
|
+
SUM(tokens_in) AS total_tokens_in,
|
|
2234
|
+
SUM(tokens_out) AS total_tokens_out,
|
|
2235
|
+
SUM(cost_usd) AS total_cost_usd,
|
|
2236
|
+
AVG(duration_ms) AS avg_duration_ms
|
|
2237
|
+
FROM agent_interactions
|
|
2238
|
+
${where}
|
|
2239
|
+
GROUP BY ${groupBy}
|
|
2240
|
+
HAVING COUNT(*) >= @min_count
|
|
2241
|
+
ORDER BY interaction_count DESC
|
|
2242
|
+
`;
|
|
2243
|
+
const rows = db.prepare(sql).all(params);
|
|
2244
|
+
if (rows.length === 0)
|
|
2245
|
+
return text('No agent interaction patterns found.');
|
|
2246
|
+
return text(JSON.stringify(rows, null, 2));
|
|
2247
|
+
}
|
|
2248
|
+
finally {
|
|
2249
|
+
closeDb(db);
|
|
2250
|
+
}
|
|
2251
|
+
},
|
|
2252
|
+
};
|
|
2253
|
+
// ── monograph_agent_record ────────────────────────────────────────────────────
|
|
2254
|
+
const monographAgentRecordTool = {
|
|
2255
|
+
name: 'monograph_agent_record',
|
|
2256
|
+
description: 'Record an agent interaction (called by capture hooks).',
|
|
2257
|
+
inputSchema: {
|
|
2258
|
+
type: 'object',
|
|
2259
|
+
properties: {
|
|
2260
|
+
session_id: { type: 'string', description: 'Session id' },
|
|
2261
|
+
agent_type: { type: 'string', description: 'Agent type' },
|
|
2262
|
+
org_name: { type: 'string', description: 'Org name' },
|
|
2263
|
+
parent_agent: { type: 'string', description: 'Parent agent name/type, if spawned by another agent' },
|
|
2264
|
+
prompt_summary: { type: 'string', description: 'Short summary of the prompt given to the agent' },
|
|
2265
|
+
result_summary: { type: 'string', description: 'Short summary of the agent result' },
|
|
2266
|
+
tokens_in: { type: 'number', description: 'Input tokens consumed (default 0)' },
|
|
2267
|
+
tokens_out: { type: 'number', description: 'Output tokens produced (default 0)' },
|
|
2268
|
+
cost_usd: { type: 'number', description: 'Cost in USD (default 0)' },
|
|
2269
|
+
success: { type: 'boolean', description: 'Whether the interaction succeeded (default true)' },
|
|
2270
|
+
duration_ms: { type: 'number', description: 'Duration in milliseconds (default 0)' },
|
|
2271
|
+
},
|
|
2272
|
+
required: ['session_id', 'agent_type'],
|
|
2273
|
+
},
|
|
2274
|
+
handler: async (input) => {
|
|
2275
|
+
const { openDb, closeDb } = await import('@monoes/monograph');
|
|
2276
|
+
const db = openDb(getDbPath());
|
|
2277
|
+
try {
|
|
2278
|
+
const id = randomUUID();
|
|
2279
|
+
const timestamp = Date.now();
|
|
2280
|
+
db.prepare(`
|
|
2281
|
+
INSERT INTO agent_interactions (
|
|
2282
|
+
id, session_id, org_name, agent_type, parent_agent,
|
|
2283
|
+
prompt_summary, result_summary, tokens_in, tokens_out,
|
|
2284
|
+
cost_usd, success, duration_ms, timestamp
|
|
2285
|
+
) VALUES (
|
|
2286
|
+
@id, @session_id, @org_name, @agent_type, @parent_agent,
|
|
2287
|
+
@prompt_summary, @result_summary, @tokens_in, @tokens_out,
|
|
2288
|
+
@cost_usd, @success, @duration_ms, @timestamp
|
|
2289
|
+
)
|
|
2290
|
+
`).run({
|
|
2291
|
+
id,
|
|
2292
|
+
session_id: input.session_id,
|
|
2293
|
+
org_name: input.org_name ?? null,
|
|
2294
|
+
agent_type: input.agent_type,
|
|
2295
|
+
parent_agent: input.parent_agent ?? null,
|
|
2296
|
+
prompt_summary: input.prompt_summary ?? null,
|
|
2297
|
+
result_summary: input.result_summary ?? null,
|
|
2298
|
+
tokens_in: input.tokens_in ?? 0,
|
|
2299
|
+
tokens_out: input.tokens_out ?? 0,
|
|
2300
|
+
cost_usd: input.cost_usd ?? 0,
|
|
2301
|
+
success: input.success === false ? 0 : 1,
|
|
2302
|
+
duration_ms: input.duration_ms ?? 0,
|
|
2303
|
+
timestamp,
|
|
2304
|
+
});
|
|
2305
|
+
return text(`Recorded agent interaction ${id} for ${input.agent_type} at ${timestamp}`);
|
|
2306
|
+
}
|
|
2307
|
+
finally {
|
|
2308
|
+
closeDb(db);
|
|
2309
|
+
}
|
|
2310
|
+
},
|
|
2311
|
+
};
|
|
2312
|
+
// Advanced tools are only exposed over MCP when MONOGRAPH_MCP_ADVANCED=1.
|
|
2313
|
+
const ADVANCED = process.env['MONOGRAPH_MCP_ADVANCED'] === '1';
|
|
2314
|
+
/** Default-exposed core tools (19). */
|
|
2315
|
+
const coreMonographTools = [
|
|
2052
2316
|
monographBuildTool,
|
|
2053
2317
|
monographQueryTool,
|
|
2318
|
+
monographSuggestTool,
|
|
2319
|
+
monographImpactTool,
|
|
2320
|
+
monographContextTool,
|
|
2321
|
+
monographNeighborsTool,
|
|
2322
|
+
monographDeadCodeTool,
|
|
2054
2323
|
monographStatsTool,
|
|
2055
2324
|
monographHealthTool,
|
|
2325
|
+
monographAugmentTool,
|
|
2056
2326
|
monographGodNodesTool,
|
|
2327
|
+
monographDetectChangesTool,
|
|
2057
2328
|
monographGetNodeTool,
|
|
2329
|
+
monographApiImpactTool,
|
|
2330
|
+
monographRouteMapTool,
|
|
2331
|
+
monographStalenessTool,
|
|
2332
|
+
monographWatchTool,
|
|
2333
|
+
monographWatchStopTool,
|
|
2334
|
+
monographDoctorTool,
|
|
2335
|
+
];
|
|
2336
|
+
/** Advanced tools — gated behind MONOGRAPH_MCP_ADVANCED=1. */
|
|
2337
|
+
const advancedMonographTools = [
|
|
2338
|
+
monographCypherTool,
|
|
2058
2339
|
monographShortestPathTool,
|
|
2059
2340
|
monographCommunityTool,
|
|
2060
2341
|
monographSurprisesTool,
|
|
2061
|
-
|
|
2062
|
-
|
|
2342
|
+
monographShapeCheckTool,
|
|
2343
|
+
monographRenameTool,
|
|
2344
|
+
monographToolMapTool,
|
|
2345
|
+
monographServeTool,
|
|
2063
2346
|
monographVisualizeTool,
|
|
2064
|
-
monographWatchTool,
|
|
2065
|
-
monographWatchStopTool,
|
|
2066
|
-
monographReportTool,
|
|
2067
|
-
monographStalenessTool,
|
|
2068
2347
|
monographSnapshotTool,
|
|
2069
2348
|
monographDiffTool,
|
|
2070
|
-
|
|
2349
|
+
monographReportTool,
|
|
2071
2350
|
monographExportTool,
|
|
2072
|
-
monographContextTool,
|
|
2073
|
-
monographImpactTool,
|
|
2074
|
-
monographDetectChangesTool,
|
|
2075
|
-
monographRenameTool,
|
|
2076
|
-
monographRouteMapTool,
|
|
2077
|
-
monographApiImpactTool,
|
|
2078
|
-
monographCypherTool,
|
|
2079
|
-
monographEmbedTool,
|
|
2080
|
-
monographGroupListTool,
|
|
2081
|
-
monographGroupQueryTool,
|
|
2082
2351
|
monographWikiTool,
|
|
2083
2352
|
monographWikiBuildTool,
|
|
2084
|
-
monographServeTool,
|
|
2085
|
-
monographToolMapTool,
|
|
2086
|
-
monographShapeCheckTool,
|
|
2087
|
-
monographGroupSyncTool,
|
|
2088
|
-
monographAugmentTool,
|
|
2089
|
-
monographInjectContextTool,
|
|
2090
2353
|
monographSkillGenTool,
|
|
2091
2354
|
monographInstallSkillsTool,
|
|
2092
|
-
|
|
2093
|
-
|
|
2355
|
+
monographInjectContextTool,
|
|
2356
|
+
monographGroupListTool,
|
|
2357
|
+
monographGroupQueryTool,
|
|
2358
|
+
monographGroupSyncTool,
|
|
2094
2359
|
monographGroupContractsTool,
|
|
2095
2360
|
monographGroupStatusTool,
|
|
2096
|
-
|
|
2361
|
+
monographListReposTool,
|
|
2362
|
+
monographAgentHistoryTool,
|
|
2363
|
+
monographAgentPatternsTool,
|
|
2364
|
+
monographAgentRecordTool,
|
|
2097
2365
|
];
|
|
2366
|
+
/**
|
|
2367
|
+
* Full tool list regardless of gating — used by the graphify compat shims,
|
|
2368
|
+
* which must resolve targets (e.g. monograph_community) even when the
|
|
2369
|
+
* advanced set is not exposed over MCP.
|
|
2370
|
+
*/
|
|
2371
|
+
export const allMonographTools = [...coreMonographTools, ...advancedMonographTools];
|
|
2372
|
+
export const monographTools = ADVANCED ? allMonographTools : coreMonographTools;
|
|
2098
2373
|
//# sourceMappingURL=monograph-tools.js.map
|