@monoes/monomindcli 1.19.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/.claude/agents/github/issue-tracker.md +0 -2
  2. package/.claude/agents/github/pr-manager.md +0 -2
  3. package/.claude/agents/github/repo-architect.md +3 -11
  4. package/.claude/agents/goal/goal-planner.md +0 -1
  5. package/.claude/commands/github/issue-tracker.md +0 -2
  6. package/.claude/commands/github/pr-manager.md +0 -2
  7. package/.claude/commands/github/repo-architect.md +3 -10
  8. package/.claude/commands/mastermind/help.md +3 -3
  9. package/.claude/commands/workflows/README.md +0 -1
  10. package/.claude/commands/workflows/workflow-create.md +0 -1
  11. package/.claude/commands/workflows/workflow-execute.md +1 -3
  12. package/.claude/commands/workflows/workflow-export.md +0 -2
  13. package/.claude/helpers/handlers/agent-start-handler.cjs +18 -1
  14. package/.claude/helpers/handlers/edit-handler.cjs +15 -0
  15. package/.claude/helpers/handlers/gates-handler.cjs +2 -8
  16. package/.claude/helpers/handlers/route-handler.cjs +149 -7
  17. package/.claude/helpers/handlers/session-handler.cjs +47 -25
  18. package/.claude/helpers/handlers/session-restore-handler.cjs +80 -43
  19. package/.claude/helpers/handlers/task-handler.cjs +8 -4
  20. package/.claude/helpers/hook-handler.cjs +69 -16
  21. package/.claude/helpers/intelligence.cjs +100 -9
  22. package/.claude/helpers/router.cjs +78 -5
  23. package/.claude/helpers/skill-registry.json +0 -189
  24. package/.claude/helpers/token-tracker.cjs +10 -0
  25. package/.claude/skills/github-toolkit/SKILL.md +60 -0
  26. package/.claude/skills/hive-mind-advanced/SKILL.md +0 -15
  27. package/.claude/skills/hooks-automation/SKILL.md +0 -1
  28. package/.claude/skills/mastermind-skills/_protocol.md +1 -1
  29. package/.claude/skills/mastermind-skills/build.md +1 -2
  30. package/.claude/skills/memory-toolkit/SKILL.md +75 -0
  31. package/.claude/skills/specialagent/SKILL.md +2 -4
  32. package/.claude/skills/swarm-advanced/SKILL.md +0 -1
  33. package/README.md +13 -17
  34. package/dist/src/autopilot-state.d.ts.map +1 -1
  35. package/dist/src/autopilot-state.js +4 -5
  36. package/dist/src/autopilot-state.js.map +1 -1
  37. package/dist/src/browser/dashboard/server.d.ts.map +1 -1
  38. package/dist/src/browser/dashboard/server.js +129 -2
  39. package/dist/src/browser/dashboard/server.js.map +1 -1
  40. package/dist/src/browser/dashboard/ui.html +214 -1764
  41. package/dist/src/capabilities/index.d.ts +0 -2
  42. package/dist/src/capabilities/index.d.ts.map +1 -1
  43. package/dist/src/capabilities/index.js +0 -1
  44. package/dist/src/capabilities/index.js.map +1 -1
  45. package/dist/src/commands/agent-lifecycle.d.ts.map +1 -1
  46. package/dist/src/commands/agent-lifecycle.js +2 -6
  47. package/dist/src/commands/agent-lifecycle.js.map +1 -1
  48. package/dist/src/commands/analyze.d.ts +0 -4
  49. package/dist/src/commands/analyze.d.ts.map +1 -1
  50. package/dist/src/commands/analyze.js +1 -29
  51. package/dist/src/commands/analyze.js.map +1 -1
  52. package/dist/src/commands/browse-workflow.js +2 -2
  53. package/dist/src/commands/completions.d.ts.map +1 -1
  54. package/dist/src/commands/completions.js +3 -22
  55. package/dist/src/commands/completions.js.map +1 -1
  56. package/dist/src/commands/config.d.ts.map +1 -1
  57. package/dist/src/commands/config.js +0 -6
  58. package/dist/src/commands/config.js.map +1 -1
  59. package/dist/src/commands/doctor-project-checks.d.ts +12 -2
  60. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  61. package/dist/src/commands/doctor-project-checks.js +130 -22
  62. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  63. package/dist/src/commands/doctor.d.ts.map +1 -1
  64. package/dist/src/commands/doctor.js +6 -5
  65. package/dist/src/commands/doctor.js.map +1 -1
  66. package/dist/src/commands/guidance.d.ts +5 -1
  67. package/dist/src/commands/guidance.d.ts.map +1 -1
  68. package/dist/src/commands/guidance.js +11 -556
  69. package/dist/src/commands/guidance.js.map +1 -1
  70. package/dist/src/commands/hive-mind-comms.d.ts.map +1 -1
  71. package/dist/src/commands/hive-mind-comms.js +11 -4
  72. package/dist/src/commands/hive-mind-comms.js.map +1 -1
  73. package/dist/src/commands/hive-mind.d.ts +4 -4
  74. package/dist/src/commands/hive-mind.d.ts.map +1 -1
  75. package/dist/src/commands/hive-mind.js +9 -6
  76. package/dist/src/commands/hive-mind.js.map +1 -1
  77. package/dist/src/commands/hooks-formatting.d.ts +1 -5
  78. package/dist/src/commands/hooks-formatting.d.ts.map +1 -1
  79. package/dist/src/commands/hooks-formatting.js +1 -18
  80. package/dist/src/commands/hooks-formatting.js.map +1 -1
  81. package/dist/src/commands/hooks-workers.d.ts +1 -1
  82. package/dist/src/commands/hooks-workers.d.ts.map +1 -1
  83. package/dist/src/commands/hooks-workers.js +82 -330
  84. package/dist/src/commands/hooks-workers.js.map +1 -1
  85. package/dist/src/commands/index.d.ts +0 -5
  86. package/dist/src/commands/index.d.ts.map +1 -1
  87. package/dist/src/commands/index.js +0 -45
  88. package/dist/src/commands/index.js.map +1 -1
  89. package/dist/src/commands/init-wizard.js +1 -1
  90. package/dist/src/commands/init-wizard.js.map +1 -1
  91. package/dist/src/commands/init.d.ts.map +1 -1
  92. package/dist/src/commands/init.js +4 -24
  93. package/dist/src/commands/init.js.map +1 -1
  94. package/dist/src/commands/neural-core.js +11 -11
  95. package/dist/src/commands/neural-core.js.map +1 -1
  96. package/dist/src/commands/neural-optimize.d.ts.map +1 -1
  97. package/dist/src/commands/neural-optimize.js +9 -11
  98. package/dist/src/commands/neural-optimize.js.map +1 -1
  99. package/dist/src/commands/neural-registry.js +10 -10
  100. package/dist/src/commands/neural-registry.js.map +1 -1
  101. package/dist/src/commands/providers.d.ts.map +1 -1
  102. package/dist/src/commands/providers.js +90 -1
  103. package/dist/src/commands/providers.js.map +1 -1
  104. package/dist/src/commands/search-universal.d.ts +7 -1
  105. package/dist/src/commands/search-universal.d.ts.map +1 -1
  106. package/dist/src/commands/search-universal.js +59 -5
  107. package/dist/src/commands/search-universal.js.map +1 -1
  108. package/dist/src/commands/security-cve.d.ts.map +1 -1
  109. package/dist/src/commands/security-cve.js +3 -5
  110. package/dist/src/commands/security-cve.js.map +1 -1
  111. package/dist/src/commands/session.d.ts.map +1 -1
  112. package/dist/src/commands/session.js +143 -3
  113. package/dist/src/commands/session.js.map +1 -1
  114. package/dist/src/commands/start.d.ts.map +1 -1
  115. package/dist/src/commands/start.js +0 -18
  116. package/dist/src/commands/start.js.map +1 -1
  117. package/dist/src/commands/swarm.d.ts.map +1 -1
  118. package/dist/src/commands/swarm.js +112 -65
  119. package/dist/src/commands/swarm.js.map +1 -1
  120. package/dist/src/consensus/audit-writer.d.ts.map +1 -1
  121. package/dist/src/consensus/audit-writer.js +43 -1
  122. package/dist/src/consensus/audit-writer.js.map +1 -1
  123. package/dist/src/consensus/tally.d.ts +19 -0
  124. package/dist/src/consensus/tally.d.ts.map +1 -0
  125. package/dist/src/consensus/tally.js +34 -0
  126. package/dist/src/consensus/tally.js.map +1 -0
  127. package/dist/src/index.d.ts +3 -2
  128. package/dist/src/index.d.ts.map +1 -1
  129. package/dist/src/index.js +9 -12
  130. package/dist/src/index.js.map +1 -1
  131. package/dist/src/init/claudemd-generator.d.ts.map +1 -1
  132. package/dist/src/init/claudemd-generator.js +10 -14
  133. package/dist/src/init/claudemd-generator.js.map +1 -1
  134. package/dist/src/init/executor.d.ts.map +1 -1
  135. package/dist/src/init/executor.js +39 -86
  136. package/dist/src/init/executor.js.map +1 -1
  137. package/dist/src/init/settings-generator.d.ts.map +1 -1
  138. package/dist/src/init/settings-generator.js +0 -12
  139. package/dist/src/init/settings-generator.js.map +1 -1
  140. package/dist/src/init/statusline-generator.d.ts.map +1 -1
  141. package/dist/src/init/statusline-generator.js +62 -0
  142. package/dist/src/init/statusline-generator.js.map +1 -1
  143. package/dist/src/init/types.d.ts +2 -6
  144. package/dist/src/init/types.d.ts.map +1 -1
  145. package/dist/src/init/types.js +0 -3
  146. package/dist/src/init/types.js.map +1 -1
  147. package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
  148. package/dist/src/knowledge/document-pipeline.js +18 -8
  149. package/dist/src/knowledge/document-pipeline.js.map +1 -1
  150. package/dist/src/mcp-client.d.ts.map +1 -1
  151. package/dist/src/mcp-client.js +0 -2
  152. package/dist/src/mcp-client.js.map +1 -1
  153. package/dist/src/mcp-server.d.ts.map +1 -1
  154. package/dist/src/mcp-server.js +12 -14
  155. package/dist/src/mcp-server.js.map +1 -1
  156. package/dist/src/mcp-tools/coherence/coherence-check.d.ts.map +1 -1
  157. package/dist/src/mcp-tools/coherence/coherence-check.js +1 -19
  158. package/dist/src/mcp-tools/coherence/coherence-check.js.map +1 -1
  159. package/dist/src/mcp-tools/coherence/types.d.ts +21 -20
  160. package/dist/src/mcp-tools/coherence/types.d.ts.map +1 -1
  161. package/dist/src/mcp-tools/coherence/types.js +3 -18
  162. package/dist/src/mcp-tools/coherence/types.js.map +1 -1
  163. package/dist/src/mcp-tools/embeddings-tools.d.ts.map +1 -1
  164. package/dist/src/mcp-tools/embeddings-tools.js +1 -7
  165. package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
  166. package/dist/src/mcp-tools/graphify-tools.js +2 -2
  167. package/dist/src/mcp-tools/graphify-tools.js.map +1 -1
  168. package/dist/src/mcp-tools/guidance-tools.d.ts.map +1 -1
  169. package/dist/src/mcp-tools/guidance-tools.js +7 -17
  170. package/dist/src/mcp-tools/guidance-tools.js.map +1 -1
  171. package/dist/src/mcp-tools/hive-mind-tools.d.ts +8 -1
  172. package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -1
  173. package/dist/src/mcp-tools/hive-mind-tools.js +174 -38
  174. package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
  175. package/dist/src/mcp-tools/hooks-advanced.d.ts +18 -0
  176. package/dist/src/mcp-tools/hooks-advanced.d.ts.map +1 -0
  177. package/dist/src/mcp-tools/hooks-advanced.js +25 -0
  178. package/dist/src/mcp-tools/hooks-advanced.js.map +1 -0
  179. package/dist/src/mcp-tools/hooks-intelligence.d.ts +4 -8
  180. package/dist/src/mcp-tools/hooks-intelligence.d.ts.map +1 -1
  181. package/dist/src/mcp-tools/hooks-intelligence.js +33 -482
  182. package/dist/src/mcp-tools/hooks-intelligence.js.map +1 -1
  183. package/dist/src/mcp-tools/hooks-routing.d.ts +1 -0
  184. package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
  185. package/dist/src/mcp-tools/hooks-routing.js +51 -43
  186. package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
  187. package/dist/src/mcp-tools/hooks-synthesis.d.ts +31 -0
  188. package/dist/src/mcp-tools/hooks-synthesis.d.ts.map +1 -0
  189. package/dist/src/mcp-tools/hooks-synthesis.js +196 -0
  190. package/dist/src/mcp-tools/hooks-synthesis.js.map +1 -0
  191. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  192. package/dist/src/mcp-tools/hooks-tools.js +10 -8
  193. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  194. package/dist/src/mcp-tools/index.d.ts +0 -1
  195. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  196. package/dist/src/mcp-tools/index.js +0 -1
  197. package/dist/src/mcp-tools/index.js.map +1 -1
  198. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  199. package/dist/src/mcp-tools/memory-tools.js +20 -29
  200. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  201. package/dist/src/mcp-tools/monograph-tools.d.ts +6 -0
  202. package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
  203. package/dist/src/mcp-tools/monograph-tools.js +78 -220
  204. package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
  205. package/dist/src/mcp-tools/neural-tools.d.ts +9 -4
  206. package/dist/src/mcp-tools/neural-tools.d.ts.map +1 -1
  207. package/dist/src/mcp-tools/neural-tools.js +242 -506
  208. package/dist/src/mcp-tools/neural-tools.js.map +1 -1
  209. package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts +12 -12
  210. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts +4 -4
  211. package/dist/src/mcp-tools/security-tools.d.ts.map +1 -1
  212. package/dist/src/mcp-tools/security-tools.js +103 -0
  213. package/dist/src/mcp-tools/security-tools.js.map +1 -1
  214. package/dist/src/memory/intelligence.d.ts +2 -1
  215. package/dist/src/memory/intelligence.d.ts.map +1 -1
  216. package/dist/src/memory/intelligence.js +56 -43
  217. package/dist/src/memory/intelligence.js.map +1 -1
  218. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  219. package/dist/src/memory/memory-bridge.js +14 -9
  220. package/dist/src/memory/memory-bridge.js.map +1 -1
  221. package/dist/src/memory/memory-read.d.ts.map +1 -1
  222. package/dist/src/memory/memory-read.js +1 -19
  223. package/dist/src/memory/memory-read.js.map +1 -1
  224. package/dist/src/orgrt/types.d.ts +847 -0
  225. package/dist/src/orgrt/types.d.ts.map +1 -0
  226. package/dist/src/orgrt/types.js +51 -0
  227. package/dist/src/orgrt/types.js.map +1 -0
  228. package/dist/src/parser.d.ts.map +1 -1
  229. package/dist/src/parser.js +31 -5
  230. package/dist/src/parser.js.map +1 -1
  231. package/dist/src/suggest.d.ts.map +1 -1
  232. package/dist/src/suggest.js +1 -7
  233. package/dist/src/suggest.js.map +1 -1
  234. package/dist/src/transfer/store/discovery.d.ts +3 -2
  235. package/dist/src/transfer/store/discovery.d.ts.map +1 -1
  236. package/dist/src/transfer/store/discovery.js +22 -70
  237. package/dist/src/transfer/store/discovery.js.map +1 -1
  238. package/dist/src/ui/collector.mjs +69 -44
  239. package/dist/src/ui/dashboard.html +112 -25
  240. package/dist/src/ui/orgs.html +54 -0
  241. package/dist/src/ui/server.mjs +87 -12
  242. package/dist/src/update/checker.d.ts.map +1 -1
  243. package/dist/src/update/checker.js +0 -1
  244. package/dist/src/update/checker.js.map +1 -1
  245. package/dist/src/utils/cosine-similarity.d.ts +22 -0
  246. package/dist/src/utils/cosine-similarity.d.ts.map +1 -0
  247. package/dist/src/utils/cosine-similarity.js +38 -0
  248. package/dist/src/utils/cosine-similarity.js.map +1 -0
  249. package/dist/src/utils/input-guards.d.ts +51 -0
  250. package/dist/src/utils/input-guards.d.ts.map +1 -0
  251. package/dist/src/utils/input-guards.js +223 -0
  252. package/dist/src/utils/input-guards.js.map +1 -0
  253. package/dist/src/utils/json-file.d.ts +33 -0
  254. package/dist/src/utils/json-file.d.ts.map +1 -0
  255. package/dist/src/utils/json-file.js +57 -0
  256. package/dist/src/utils/json-file.js.map +1 -0
  257. package/dist/tsconfig.tsbuildinfo +1 -1
  258. package/package.json +11 -7
  259. package/scripts/setup-ipfs-registry.md +14 -15
  260. package/scripts/sync-claude-assets.sh +16 -20
  261. package/.claude/agents/generated/case-analyst.md +0 -50
  262. package/.claude/agents/generated/channel-intelligence-director.md +0 -87
  263. package/.claude/agents/generated/chief-growth-officer.md +0 -88
  264. package/.claude/agents/generated/churn-analyst.md +0 -53
  265. package/.claude/agents/generated/code-reviewer.md +0 -55
  266. package/.claude/agents/generated/code-validator.md +0 -57
  267. package/.claude/agents/generated/complexity-scanner.md +0 -56
  268. package/.claude/agents/generated/content-seo-strategist.md +0 -90
  269. package/.claude/agents/generated/copy-editor.md +0 -45
  270. package/.claude/agents/generated/court-reporter.md +0 -50
  271. package/.claude/agents/generated/defender.md +0 -51
  272. package/.claude/agents/generated/devbot-orchestrator.md +0 -58
  273. package/.claude/agents/generated/devbot-planner.md +0 -63
  274. package/.claude/agents/generated/developer-community-strategist.md +0 -91
  275. package/.claude/agents/generated/editor-in-chief.md +0 -45
  276. package/.claude/agents/generated/fact-checker.md +0 -45
  277. package/.claude/agents/generated/impact-assessor.md +0 -54
  278. package/.claude/agents/generated/judge.md +0 -51
  279. package/.claude/agents/generated/outreach-partnership-strategist.md +0 -90
  280. package/.claude/agents/generated/prosecutor.md +0 -51
  281. package/.claude/agents/generated/reporter.md +0 -45
  282. package/.claude/agents/generated/social-media-strategist.md +0 -91
  283. package/.claude/agents/generated/video-visual-strategist.md +0 -90
  284. package/.claude/agents/reengineer-squad/boss.md +0 -113
  285. package/.claude/agents/reengineer-squad/critic-architect.md +0 -132
  286. package/.claude/agents/reengineer-squad/git-manager.md +0 -145
  287. package/.claude/agents/reengineer-squad/idea-generator.md +0 -95
  288. package/.claude/agents/reengineer-squad/implementer.md +0 -112
  289. package/.claude/agents/reengineer-squad/integration-planner.md +0 -112
  290. package/.claude/agents/reengineer-squad/source-analyst.md +0 -103
  291. package/.claude/agents/reengineer-squad/target-analyst.md +0 -118
  292. package/.claude/agents/reengineer-squad/tester.md +0 -105
  293. package/.claude/agents/sparc/architecture.md +0 -453
  294. package/.claude/agents/sparc/pseudocode.md +0 -299
  295. package/.claude/agents/sparc/refinement.md +0 -504
  296. package/.claude/agents/sparc/specification.md +0 -258
  297. package/.claude/agents/templates/implementer-sparc-coder.md +0 -231
  298. package/.claude/commands/sparc/analyzer.md +0 -35
  299. package/.claude/commands/sparc/architect.md +0 -36
  300. package/.claude/commands/sparc/ask.md +0 -56
  301. package/.claude/commands/sparc/batch-executor.md +0 -37
  302. package/.claude/commands/sparc/code.md +0 -48
  303. package/.claude/commands/sparc/coder.md +0 -37
  304. package/.claude/commands/sparc/debug.md +0 -42
  305. package/.claude/commands/sparc/debugger.md +0 -37
  306. package/.claude/commands/sparc/designer.md +0 -36
  307. package/.claude/commands/sparc/devops.md +0 -68
  308. package/.claude/commands/sparc/docs-writer.md +0 -39
  309. package/.claude/commands/sparc/documenter.md +0 -37
  310. package/.claude/commands/sparc/innovator.md +0 -37
  311. package/.claude/commands/sparc/integration.md +0 -42
  312. package/.claude/commands/sparc/mcp.md +0 -76
  313. package/.claude/commands/sparc/memory-manager.md +0 -57
  314. package/.claude/commands/sparc/optimizer.md +0 -37
  315. package/.claude/commands/sparc/orchestrator.md +0 -70
  316. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +0 -42
  317. package/.claude/commands/sparc/refinement-optimization-mode.md +0 -42
  318. package/.claude/commands/sparc/researcher.md +0 -37
  319. package/.claude/commands/sparc/reviewer.md +0 -37
  320. package/.claude/commands/sparc/security-review.md +0 -39
  321. package/.claude/commands/sparc/sparc-modes.md +0 -120
  322. package/.claude/commands/sparc/sparc.md +0 -71
  323. package/.claude/commands/sparc/spec-pseudocode.md +0 -39
  324. package/.claude/commands/sparc/supabase-admin.md +0 -301
  325. package/.claude/commands/sparc/swarm-coordinator.md +0 -50
  326. package/.claude/commands/sparc/tdd.md +0 -37
  327. package/.claude/commands/sparc/tester.md +0 -37
  328. package/.claude/commands/sparc/tutorial.md +0 -38
  329. package/.claude/commands/sparc/workflow-manager.md +0 -37
  330. package/.claude/commands/sparc.md +0 -112
  331. package/.claude/skills/sparc-methodology/SKILL.md +0 -950
  332. package/dist/src/capabilities/enrichment.d.ts +0 -44
  333. package/dist/src/capabilities/enrichment.d.ts.map +0 -1
  334. package/dist/src/capabilities/enrichment.js +0 -141
  335. package/dist/src/capabilities/enrichment.js.map +0 -1
  336. package/dist/src/commands/analyze-boundaries.d.ts +0 -14
  337. package/dist/src/commands/analyze-boundaries.d.ts.map +0 -1
  338. package/dist/src/commands/analyze-boundaries.js +0 -295
  339. package/dist/src/commands/analyze-boundaries.js.map +0 -1
  340. package/dist/src/commands/analyze-graph.d.ts +0 -14
  341. package/dist/src/commands/analyze-graph.d.ts.map +0 -1
  342. package/dist/src/commands/analyze-graph.js +0 -304
  343. package/dist/src/commands/analyze-graph.js.map +0 -1
  344. package/dist/src/commands/claims.d.ts +0 -10
  345. package/dist/src/commands/claims.d.ts.map +0 -1
  346. package/dist/src/commands/claims.js +0 -650
  347. package/dist/src/commands/claims.js.map +0 -1
  348. package/dist/src/commands/daemon.d.ts +0 -8
  349. package/dist/src/commands/daemon.d.ts.map +0 -1
  350. package/dist/src/commands/daemon.js +0 -681
  351. package/dist/src/commands/daemon.js.map +0 -1
  352. package/dist/src/commands/enrich.d.ts +0 -10
  353. package/dist/src/commands/enrich.d.ts.map +0 -1
  354. package/dist/src/commands/enrich.js +0 -58
  355. package/dist/src/commands/enrich.js.map +0 -1
  356. package/dist/src/commands/issues.d.ts +0 -21
  357. package/dist/src/commands/issues.d.ts.map +0 -1
  358. package/dist/src/commands/issues.js +0 -575
  359. package/dist/src/commands/issues.js.map +0 -1
  360. package/dist/src/commands/workflow.d.ts +0 -8
  361. package/dist/src/commands/workflow.d.ts.map +0 -1
  362. package/dist/src/commands/workflow.js +0 -575
  363. package/dist/src/commands/workflow.js.map +0 -1
  364. package/dist/src/consensus/vote-signer.d.ts +0 -36
  365. package/dist/src/consensus/vote-signer.d.ts.map +0 -1
  366. package/dist/src/consensus/vote-signer.js +0 -88
  367. package/dist/src/consensus/vote-signer.js.map +0 -1
  368. package/dist/src/mcp-tools/workflow-tools.d.ts +0 -8
  369. package/dist/src/mcp-tools/workflow-tools.d.ts.map +0 -1
  370. package/dist/src/mcp-tools/workflow-tools.js +0 -717
  371. package/dist/src/mcp-tools/workflow-tools.js.map +0 -1
  372. package/dist/src/services/claim-service.d.ts +0 -198
  373. package/dist/src/services/claim-service.d.ts.map +0 -1
  374. package/dist/src/services/claim-service.js +0 -890
  375. package/dist/src/services/claim-service.js.map +0 -1
  376. package/dist/src/services/headless-worker-executor.d.ts +0 -311
  377. package/dist/src/services/headless-worker-executor.d.ts.map +0 -1
  378. package/dist/src/services/headless-worker-executor.js +0 -1183
  379. package/dist/src/services/headless-worker-executor.js.map +0 -1
  380. package/dist/src/services/worker-daemon.d.ts +0 -230
  381. package/dist/src/services/worker-daemon.d.ts.map +0 -1
  382. package/dist/src/services/worker-daemon.js +0 -1350
  383. package/dist/src/services/worker-daemon.js.map +0 -1
  384. package/dist/src/ui/.monomind/capture/active-run.json +0 -1
  385. package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/real-events-1782290897.convs.jsonl +0 -3
  386. package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/real-events-1782290897.jsonl +0 -11
  387. package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/rigid-qa-restart-1782288201.jsonl +0 -540
  388. package/dist/src/ui/.monomind/orgs/system-trial-qa-threads.jsonl +0 -3
  389. package/dist/src/ui/.monomind/orgs/test-event-fix/runs/rigid-qa-restart-1782288201.jsonl +0 -2
@@ -171,11 +171,12 @@ function pathToSections(filename) {
171
171
  if (f.includes('registry') || f.includes('registrations')) return ['agents'];
172
172
  if (f.includes('route') || f.includes('worker-dispatch')) return ['hooks'];
173
173
  if (f.includes('chunk') || f.includes('skills')) return ['knowledge'];
174
- if (f.includes('memory.db') || f.includes('memory.graph') || f.includes('hnsw.index') ||
175
- f.includes('monovector.db') || f.includes('ranked-context') ||
174
+ if (f.includes('auto-memory-store') || f.includes('episodes.jsonl') ||
176
175
  (f.includes('/memory/') && f.endsWith('.md'))) return ['memory', 'sessions'];
177
176
  if (f.includes('palace') || f.includes('drawers') || f.includes('identity')) return ['memory', 'sessions'];
178
- if (f.includes('ddd') || f.includes('learning') || f.includes('audit')) return ['metrics'];
177
+ if (f.includes('consolidation')) return ['metrics', 'memory'];
178
+ if (f.includes('ddd') || f.includes('audit') || f.includes('codebase-map') ||
179
+ f.includes('security-audit') || f.includes('performance')) return ['metrics'];
179
180
  if (f.endsWith('.jsonl') || f.includes('sessions')) return ['sessions'];
180
181
  return ['sessions', 'swarm', 'agents', 'tokens', 'hooks'];
181
182
  }
@@ -1403,7 +1404,8 @@ export async function startServer({ port = 4242, projectDir, openBrowser = true
1403
1404
  const adrs = [];
1404
1405
  for (const { path: adrDir, group } of adrDirs) {
1405
1406
  if (!fs.existsSync(adrDir)) continue;
1406
- const files = fs.readdirSync(adrDir).filter(f => f.endsWith('.md') && f !== 'README.md' && f !== 'v3-adrs.md' && f !== 'SECURITY-REVIEW-SUMMARY.md');
1407
+ // Skip AppleDouble junk ('._*') exFAT volumes litter these and they aren't real ADRs
1408
+ const files = fs.readdirSync(adrDir).filter(f => f.endsWith('.md') && !f.startsWith('._') && f !== 'README.md' && f !== 'v3-adrs.md' && f !== 'SECURITY-REVIEW-SUMMARY.md');
1407
1409
  for (const fname of files.sort()) {
1408
1410
  const resolvedGroup = /^ADR-G/i.test(fname) ? 'guidance' : 'implementation';
1409
1411
  try {
@@ -1621,10 +1623,26 @@ export async function startServer({ port = 4242, projectDir, openBrowser = true
1621
1623
  });
1622
1624
  }
1623
1625
 
1624
- // Check for AgentDB / HNSW / RVF backends
1625
- const dbPath = path.join(d, '.monomind', 'agentdb.db');
1626
- const hnswPath = path.join(d, '.monomind', 'hnsw.index');
1627
- const rvfPath = path.join(d, '.monomind', 'memory.rvf');
1626
+ // Real v2 memory sources: auto-memory pattern store + episodic log
1627
+ let patterns = 0, patternsUpdated = null;
1628
+ try {
1629
+ const store = JSON.parse(fs.readFileSync(path.join(d, '.monomind', 'data', 'auto-memory-store.json'), 'utf8'));
1630
+ if (Array.isArray(store)) {
1631
+ patterns = store.length;
1632
+ for (const e of store) {
1633
+ if (e && typeof e.ts === 'number' && (!patternsUpdated || e.ts > patternsUpdated)) patternsUpdated = e.ts;
1634
+ }
1635
+ }
1636
+ } catch {}
1637
+
1638
+ let episodes = 0, lastEpisode = null;
1639
+ try {
1640
+ const lines = fs.readFileSync(path.join(d, '.monomind', 'episodic', 'episodes.jsonl'), 'utf8').split('\n').filter(Boolean);
1641
+ episodes = lines.length;
1642
+ if (lines.length) {
1643
+ try { const last = JSON.parse(lines[lines.length - 1]); lastEpisode = last.ts || last.timestamp || null; } catch {}
1644
+ }
1645
+ } catch {}
1628
1646
 
1629
1647
  const stats = {
1630
1648
  total,
@@ -1633,9 +1651,15 @@ export async function startServer({ port = 4242, projectDir, openBrowser = true
1633
1651
  ns: Object.keys(byType).length,
1634
1652
  size,
1635
1653
  byType,
1636
- hnsw: fs.existsSync(hnswPath),
1637
- agentdb: fs.existsSync(dbPath),
1638
- rvf: fs.existsSync(rvfPath),
1654
+ patterns,
1655
+ patternsUpdated,
1656
+ episodes,
1657
+ lastEpisode,
1658
+ memoryFiles: total,
1659
+ // Legacy keys (v1 backends removed in v2) — kept false for frontend backward-safety
1660
+ hnsw: false,
1661
+ agentdb: false,
1662
+ rvf: false,
1639
1663
  lastWrite,
1640
1664
  memDir,
1641
1665
  };
@@ -3476,7 +3500,9 @@ new Sigma(g,document.getElementById('g'),{renderEdgeLabels:false,labelColor:{col
3476
3500
  if (req.method === 'GET' && url.startsWith('/api/token-usage')) {
3477
3501
  try {
3478
3502
  const qs = new URL(req.url, 'http://localhost').searchParams;
3479
- const period = ['today','week','30days','month'].includes(qs.get('period')) ? qs.get('period') : 'today';
3503
+ // Frontend sends ?range=..., older callers use ?period=... accept both
3504
+ const _periodRaw = qs.get('period') || qs.get('range');
3505
+ const period = ['today','week','30days','month'].includes(_periodRaw) ? _periodRaw : 'today';
3480
3506
  const dir = path.resolve(qs.get('dir') || projectDir || process.cwd());
3481
3507
  const trackerPath = path.join(dir, '.claude', 'helpers', 'token-tracker.cjs');
3482
3508
  const fallback = () => {
@@ -5625,6 +5651,33 @@ new Sigma(g,document.getElementById('g'),{renderEdgeLabels:false,labelColor:{col
5625
5651
  return;
5626
5652
  }
5627
5653
 
5654
+ // ------------------------------------------------- GET /api/playbooks
5655
+ // List playbook definitions from <dir>/.monomind/playbooks/*.json.
5656
+ // (Previously only POST was registered, so GET /api/playbooks?dir=... fell
5657
+ // through to the 404 handler.)
5658
+ if (req.method === 'GET' && url === '/api/playbooks') {
5659
+ try {
5660
+ const qp = new URL(req.url, 'http://localhost').searchParams;
5661
+ const dir = qp.get('dir') || projectDir || process.cwd();
5662
+ const playbookDir = path.join(path.resolve(dir), '.monomind', 'playbooks');
5663
+ const result = [];
5664
+ if (fs.existsSync(playbookDir)) {
5665
+ const files = fs.readdirSync(playbookDir).filter(f => f.endsWith('.json') && !f.startsWith('._'));
5666
+ for (const file of files) {
5667
+ try {
5668
+ const fpath = path.join(playbookDir, file);
5669
+ const def = JSON.parse(fs.readFileSync(fpath, 'utf8'));
5670
+ const stat = fs.statSync(fpath);
5671
+ result.push({ ...def, id: def.id || file.replace('.json', ''), file, modifiedAt: stat.mtimeMs });
5672
+ } catch (_) {}
5673
+ }
5674
+ }
5675
+ res.writeHead(200, { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*', 'Cache-Control': 'no-cache' });
5676
+ res.end(JSON.stringify(result));
5677
+ } catch (e) { res.writeHead(500, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ error: e.message })); }
5678
+ return;
5679
+ }
5680
+
5628
5681
  // ------------------------------------------------- POST /api/playbooks
5629
5682
  // Save a playbook definition to .monomind/playbooks/<id>.json
5630
5683
  if (req.method === 'POST' && url === '/api/playbooks') {
@@ -5685,6 +5738,28 @@ new Sigma(g,document.getElementById('g'),{renderEdgeLabels:false,labelColor:{col
5685
5738
  return;
5686
5739
  }
5687
5740
 
5741
+ // ------------------------------------------------- GET /api/org-coverage
5742
+ // Audit coverage report written by the audit loop to .monomind/audit/coverage.json
5743
+ if (req.method === 'GET' && url === '/api/org-coverage') {
5744
+ try {
5745
+ const qp = new URL(req.url, 'http://localhost').searchParams;
5746
+ const dir = path.resolve(qp.get('dir') || projectDir || process.cwd());
5747
+ const covPath = path.join(dir, '.monomind', 'audit', 'coverage.json');
5748
+ if (!fs.existsSync(covPath)) {
5749
+ res.writeHead(404, { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' });
5750
+ res.end('{}');
5751
+ return;
5752
+ }
5753
+ const coverage = JSON.parse(fs.readFileSync(covPath, 'utf8'));
5754
+ res.writeHead(200, { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*', 'Cache-Control': 'no-cache' });
5755
+ res.end(JSON.stringify(coverage));
5756
+ } catch (e) {
5757
+ res.writeHead(500, { 'Content-Type': 'application/json' });
5758
+ res.end(JSON.stringify({ error: e.message }));
5759
+ }
5760
+ return;
5761
+ }
5762
+
5688
5763
  // ------------------------------------------------- GET /api/workflow-runs
5689
5764
  if (req.method === 'GET' && url === '/api/workflow-runs') {
5690
5765
  // Reads from ~/.monomind/browse-runs.json written by the monobrowse dashboard server.
@@ -1 +1 @@
1
- {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/update/checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqBH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IACjD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE;QACV,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC,CAAC;IACjE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,QAAA,MAAM,cAAc,EAAE,YAiBrB,CAAC;AAsIF,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqCtE;AAED,wBAAsB,eAAe,CACnC,MAAM,GAAE,YAA6B,GACpC,OAAO,CAAC;IAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyE9E;AAED,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,YAA6B,GACpC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA4BnC;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/update/checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqBH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IACjD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE;QACV,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC,CAAC;IACjE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,QAAA,MAAM,cAAc,EAAE,YAiBrB,CAAC;AAqIF,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqCtE;AAED,wBAAsB,eAAe,CACnC,MAAM,GAAE,YAA6B,GACpC,OAAO,CAAC;IAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyE9E;AAED,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,YAA6B,GACpC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA4BnC;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -46,7 +46,6 @@ const MONOMIND_PACKAGES = [
46
46
  '@monoes/monograph',
47
47
  '@monoes/memory',
48
48
  '@monoes/monodesign',
49
- '@monomind/guidance',
50
49
  '@monomind/hooks',
51
50
  '@monomind/mcp',
52
51
  '@monomind/routing',
@@ -1 +1 @@
1
- {"version":3,"file":"checker.js","sourceRoot":"","sources":["../../../src/update/checker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checker.js","sourceRoot":"","sources":["../../../src/update/checker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Shared cosine similarity utility.
3
+ *
4
+ * Previously duplicated in 5 independent implementations:
5
+ * - memory/intelligence.ts (ReasoningBank.cosineSim)
6
+ * - mcp-tools/neural-tools.ts (cosineSimilarity)
7
+ * - mcp-tools/embeddings-tools.ts (cosineSimilarity)
8
+ * - mcp-tools/coherence/types.ts (cosineSimilarity)
9
+ * - mcp-tools/coherence/coherence-check.ts (cosineSimilarity)
10
+ *
11
+ * This is the single canonical implementation. Accepts number[] or
12
+ * Float32Array. Handles dimension mismatches gracefully (uses the shorter
13
+ * length) and returns 0 for zero-magnitude vectors.
14
+ */
15
+ /**
16
+ * Compute cosine similarity between two vectors.
17
+ *
18
+ * Returns a value in [-1, 1]. Returns 0 when either vector is empty or
19
+ * has zero magnitude.
20
+ */
21
+ export declare function cosineSimilarity(a: number[] | Float32Array, b: number[] | Float32Array): number;
22
+ //# sourceMappingURL=cosine-similarity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosine-similarity.d.ts","sourceRoot":"","sources":["../../../src/utils/cosine-similarity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,EAC1B,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,GACzB,MAAM,CAkBR"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Shared cosine similarity utility.
3
+ *
4
+ * Previously duplicated in 5 independent implementations:
5
+ * - memory/intelligence.ts (ReasoningBank.cosineSim)
6
+ * - mcp-tools/neural-tools.ts (cosineSimilarity)
7
+ * - mcp-tools/embeddings-tools.ts (cosineSimilarity)
8
+ * - mcp-tools/coherence/types.ts (cosineSimilarity)
9
+ * - mcp-tools/coherence/coherence-check.ts (cosineSimilarity)
10
+ *
11
+ * This is the single canonical implementation. Accepts number[] or
12
+ * Float32Array. Handles dimension mismatches gracefully (uses the shorter
13
+ * length) and returns 0 for zero-magnitude vectors.
14
+ */
15
+ /**
16
+ * Compute cosine similarity between two vectors.
17
+ *
18
+ * Returns a value in [-1, 1]. Returns 0 when either vector is empty or
19
+ * has zero magnitude.
20
+ */
21
+ export function cosineSimilarity(a, b) {
22
+ if (!a || !b || a.length === 0 || b.length === 0)
23
+ return 0;
24
+ const len = Math.min(a.length, b.length);
25
+ let dot = 0;
26
+ let normA = 0;
27
+ let normB = 0;
28
+ for (let i = 0; i < len; i++) {
29
+ const ai = a[i];
30
+ const bi = b[i];
31
+ dot += ai * bi;
32
+ normA += ai * ai;
33
+ normB += bi * bi;
34
+ }
35
+ const mag = Math.sqrt(normA) * Math.sqrt(normB);
36
+ return mag === 0 ? 0 : dot / mag;
37
+ }
38
+ //# sourceMappingURL=cosine-similarity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosine-similarity.js","sourceRoot":"","sources":["../../../src/utils/cosine-similarity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,CAA0B,EAC1B,CAA0B;IAE1B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAE3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC;QACf,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;AACnC,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Input validation and prompt-injection guards.
3
+ *
4
+ * Inlined from the former @monomind/security package. Provides a single
5
+ * typed entry point for input validation covering string, number, path,
6
+ * url, and orgName types, plus a heuristic prompt-injection detector
7
+ * for untrusted external content.
8
+ *
9
+ * @module @monomind/cli/utils/input-guards
10
+ */
11
+ export interface ValidationResult {
12
+ valid: boolean;
13
+ error?: string;
14
+ sanitized?: string;
15
+ }
16
+ export interface ValidateInputOpts {
17
+ type: 'string' | 'number' | 'path' | 'url' | 'orgName';
18
+ maxLength?: number;
19
+ required?: boolean;
20
+ }
21
+ /**
22
+ * Validate and sanitize an input value.
23
+ *
24
+ * @example
25
+ * const result = validateInput(req.body.name, { type: 'orgName' });
26
+ * if (!result.valid) throw new Error(result.error);
27
+ * const safeName = result.sanitized!;
28
+ */
29
+ export declare function validateInput(value: unknown, opts: ValidateInputOpts): ValidationResult;
30
+ export interface ExternalContentResult {
31
+ safe: boolean;
32
+ reason?: string;
33
+ }
34
+ /**
35
+ * Heuristically check whether `content` contains prompt-injection
36
+ * patterns. This is a structural / regex-based guard — it does not
37
+ * call any LLM.
38
+ *
39
+ * @param content - The untrusted string to inspect.
40
+ * @param source - Optional label describing where the content came
41
+ * from (used only in log-friendly diagnostics, not
42
+ * in the returned reason).
43
+ * @returns `{ safe: true }` when no injection signal is found, or
44
+ * `{ safe: false, reason }` describing the first match.
45
+ *
46
+ * @example
47
+ * const check = await validateExternalContent(userQuery, 'memory search');
48
+ * if (!check.safe) throw new Error(`Blocked: ${check.reason}`);
49
+ */
50
+ export declare function validateExternalContent(content: string, source?: string): Promise<ExternalContentResult>;
51
+ //# sourceMappingURL=input-guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-guards.d.ts","sourceRoot":"","sources":["../../../src/utils/input-guards.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAmHD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,iBAAiB,GACtB,gBAAgB,CAalB;AAMD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAyCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,qBAAqB,CAAC,CAuChC"}
@@ -0,0 +1,223 @@
1
+ /**
2
+ * Input validation and prompt-injection guards.
3
+ *
4
+ * Inlined from the former @monomind/security package. Provides a single
5
+ * typed entry point for input validation covering string, number, path,
6
+ * url, and orgName types, plus a heuristic prompt-injection detector
7
+ * for untrusted external content.
8
+ *
9
+ * @module @monomind/cli/utils/input-guards
10
+ */
11
+ import { resolve, isAbsolute } from 'node:path';
12
+ import { cwd } from 'node:process';
13
+ /**
14
+ * Strip C0 and C1 control characters (U+0000–U+001F, U+007F–U+009F)
15
+ * but preserve printable ASCII and extended Unicode.
16
+ */
17
+ function stripControlChars(s) {
18
+ // eslint-disable-next-line no-control-regex
19
+ return s.replace(/[\x00-\x1F\x7F-\x9F]/g, '');
20
+ }
21
+ function validateString(value, opts) {
22
+ if (typeof value !== 'string') {
23
+ if (opts.required !== false && value == null) {
24
+ return { valid: false, error: 'Value is required' };
25
+ }
26
+ return { valid: false, error: 'Value must be a string' };
27
+ }
28
+ if (opts.required !== false && value.length === 0) {
29
+ return { valid: false, error: 'Value must not be empty' };
30
+ }
31
+ const maxLen = opts.maxLength ?? 4096;
32
+ if (value.length > maxLen) {
33
+ return {
34
+ valid: false,
35
+ error: `Value exceeds maximum length of ${maxLen}`,
36
+ };
37
+ }
38
+ const sanitized = stripControlChars(value);
39
+ return { valid: true, sanitized };
40
+ }
41
+ function validateNumber(value, opts) {
42
+ const parsed = typeof value === 'number'
43
+ ? value
44
+ : typeof value === 'string' && value.trim() !== ''
45
+ ? Number(value)
46
+ : NaN;
47
+ if (!Number.isFinite(parsed)) {
48
+ if (opts.required === false && value == null) {
49
+ return { valid: true };
50
+ }
51
+ return { valid: false, error: 'Value must be a finite number' };
52
+ }
53
+ return { valid: true, sanitized: String(parsed) };
54
+ }
55
+ function validatePath(value, opts) {
56
+ if (typeof value !== 'string') {
57
+ return { valid: false, error: 'Path must be a string' };
58
+ }
59
+ if (value.includes('\0')) {
60
+ return { valid: false, error: 'Path must not contain null bytes' };
61
+ }
62
+ // Reject traversal segments
63
+ if (/(^|[\\/])\.\.($|[\\/])/.test(value)) {
64
+ return { valid: false, error: 'Path must not contain directory traversal (..)' };
65
+ }
66
+ // Reject absolute paths that escape cwd
67
+ if (isAbsolute(value)) {
68
+ const cwdPath = cwd();
69
+ const resolved = resolve(value);
70
+ if (!resolved.startsWith(cwdPath + '/') && resolved !== cwdPath) {
71
+ return { valid: false, error: 'Absolute path must not escape the current working directory' };
72
+ }
73
+ }
74
+ const maxLen = opts.maxLength ?? 4096;
75
+ if (value.length > maxLen) {
76
+ return { valid: false, error: `Path exceeds maximum length of ${maxLen}` };
77
+ }
78
+ return { valid: true, sanitized: value };
79
+ }
80
+ function validateUrl(value, opts) {
81
+ if (typeof value !== 'string') {
82
+ return { valid: false, error: 'URL must be a string' };
83
+ }
84
+ let parsed;
85
+ try {
86
+ parsed = new URL(value);
87
+ }
88
+ catch {
89
+ return { valid: false, error: 'Value is not a valid URL' };
90
+ }
91
+ if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
92
+ return { valid: false, error: 'URL must use http or https protocol' };
93
+ }
94
+ const maxLen = opts.maxLength ?? 4096;
95
+ if (value.length > maxLen) {
96
+ return { valid: false, error: `URL exceeds maximum length of ${maxLen}` };
97
+ }
98
+ return { valid: true, sanitized: parsed.toString() };
99
+ }
100
+ /** Org name: lowercase alphanumeric + hyphens, 1–64 chars, must start with alnum */
101
+ const ORG_NAME_RE = /^[a-z0-9][a-z0-9-]{0,63}$/;
102
+ function validateOrgName(value, _opts) {
103
+ if (typeof value !== 'string') {
104
+ return { valid: false, error: 'Org name must be a string' };
105
+ }
106
+ if (!ORG_NAME_RE.test(value)) {
107
+ return {
108
+ valid: false,
109
+ error: 'Org name must match ^[a-z0-9][a-z0-9-]{0,63}$ (lowercase, alphanumeric + hyphens, 1–64 chars)',
110
+ };
111
+ }
112
+ return { valid: true, sanitized: value };
113
+ }
114
+ /**
115
+ * Validate and sanitize an input value.
116
+ *
117
+ * @example
118
+ * const result = validateInput(req.body.name, { type: 'orgName' });
119
+ * if (!result.valid) throw new Error(result.error);
120
+ * const safeName = result.sanitized!;
121
+ */
122
+ export function validateInput(value, opts) {
123
+ switch (opts.type) {
124
+ case 'string':
125
+ return validateString(value, opts);
126
+ case 'number':
127
+ return validateNumber(value, opts);
128
+ case 'path':
129
+ return validatePath(value, opts);
130
+ case 'url':
131
+ return validateUrl(value, opts);
132
+ case 'orgName':
133
+ return validateOrgName(value, opts);
134
+ }
135
+ }
136
+ /**
137
+ * Case-insensitive patterns that indicate an attempt to override
138
+ * system-level instructions or inject prompt directives.
139
+ */
140
+ const INJECTION_PATTERNS = [
141
+ { re: /ignore\s+(all\s+)?previous\s+instructions/i, label: 'instruction override ("ignore previous instructions")' },
142
+ { re: /ignore\s+(all\s+)?prior\s+instructions/i, label: 'instruction override ("ignore prior instructions")' },
143
+ { re: /disregard\s+(all\s+)?(previous|prior|above)\s+instructions/i, label: 'instruction override ("disregard instructions")' },
144
+ { re: /forget\s+(all\s+)?(previous|prior|above)\s+(instructions|context)/i, label: 'instruction override ("forget instructions")' },
145
+ { re: /you\s+are\s+now\b/i, label: 'identity hijack ("you are now")' },
146
+ { re: /act\s+as\s+(if\s+you\s+are|a|an)\b/i, label: 'identity hijack ("act as")' },
147
+ { re: /pretend\s+(you\s+are|to\s+be)\b/i, label: 'identity hijack ("pretend to be")' },
148
+ { re: /^system\s*:/im, label: 'system prompt injection ("system:")' },
149
+ { re: /\[system\]/i, label: 'system prompt injection ("[system]")' },
150
+ { re: /<<\s*system\s*>>/i, label: 'system prompt injection ("<<system>>")' },
151
+ { re: /^IMPORTANT\s*:/im, label: 'directive injection ("IMPORTANT:")' },
152
+ { re: /^INSTRUCTION\s*:/im, label: 'directive injection ("INSTRUCTION:")' },
153
+ { re: /^OVERRIDE\s*:/im, label: 'directive injection ("OVERRIDE:")' },
154
+ { re: /\bdo\s+not\s+follow\s+(any\s+)?(previous|prior|earlier)\b/i, label: 'instruction override ("do not follow previous")' },
155
+ { re: /\bnew\s+instructions?\s*:/i, label: 'directive injection ("new instructions:")' },
156
+ ];
157
+ /**
158
+ * Suspicious encoding patterns that may attempt to smuggle directives
159
+ * through Base64, hex escapes, or Unicode homoglyphs.
160
+ */
161
+ const ENCODING_PATTERNS = [
162
+ // Large Base64 blobs (>80 chars of contiguous base64 alphabet)
163
+ { re: /[A-Za-z0-9+/=]{80,}/, label: 'suspicious Base64-encoded blob' },
164
+ // Excessive hex escapes (\x41\x42...)
165
+ { re: /(\\x[0-9a-fA-F]{2}){6,}/, label: 'suspicious hex-escape sequence' },
166
+ // Excessive Unicode escapes (AB...)
167
+ { re: /(\\u[0-9a-fA-F]{4}){6,}/, label: 'suspicious Unicode-escape sequence' },
168
+ ];
169
+ /** Threshold ratio of uppercase + directive-like words to total words. */
170
+ const DIRECTIVE_DENSITY_THRESHOLD = 0.4;
171
+ const DIRECTIVE_WORDS = /\b(MUST|SHALL|ALWAYS|NEVER|IMPORTANT|OVERRIDE|IMMEDIATELY|MANDATORY|REQUIRED|CRITICAL)\b/g;
172
+ /**
173
+ * Heuristically check whether `content` contains prompt-injection
174
+ * patterns. This is a structural / regex-based guard — it does not
175
+ * call any LLM.
176
+ *
177
+ * @param content - The untrusted string to inspect.
178
+ * @param source - Optional label describing where the content came
179
+ * from (used only in log-friendly diagnostics, not
180
+ * in the returned reason).
181
+ * @returns `{ safe: true }` when no injection signal is found, or
182
+ * `{ safe: false, reason }` describing the first match.
183
+ *
184
+ * @example
185
+ * const check = await validateExternalContent(userQuery, 'memory search');
186
+ * if (!check.safe) throw new Error(`Blocked: ${check.reason}`);
187
+ */
188
+ export async function validateExternalContent(content, source) {
189
+ if (typeof content !== 'string') {
190
+ return { safe: false, reason: 'Content must be a string' };
191
+ }
192
+ // Empty / very short content is trivially safe.
193
+ if (content.length === 0) {
194
+ return { safe: true };
195
+ }
196
+ // --- 1. Direct injection patterns ---
197
+ for (const { re, label } of INJECTION_PATTERNS) {
198
+ if (re.test(content)) {
199
+ return { safe: false, reason: `Prompt injection detected: ${label}` };
200
+ }
201
+ }
202
+ // --- 2. Suspicious encoding ---
203
+ for (const { re, label } of ENCODING_PATTERNS) {
204
+ if (re.test(content)) {
205
+ return { safe: false, reason: `Suspicious encoding: ${label}` };
206
+ }
207
+ }
208
+ // --- 3. Directive density ---
209
+ // Only check strings long enough to be meaningful (>20 words).
210
+ const words = content.split(/\s+/).filter(Boolean);
211
+ if (words.length > 20) {
212
+ const matches = content.match(DIRECTIVE_WORDS);
213
+ const density = (matches?.length ?? 0) / words.length;
214
+ if (density >= DIRECTIVE_DENSITY_THRESHOLD) {
215
+ return {
216
+ safe: false,
217
+ reason: `Excessive directive density (${(density * 100).toFixed(0)}% directive keywords)`,
218
+ };
219
+ }
220
+ }
221
+ return { safe: true };
222
+ }
223
+ //# sourceMappingURL=input-guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-guards.js","sourceRoot":"","sources":["../../../src/utils/input-guards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Shared atomic JSON file I/O utility.
3
+ *
4
+ * Previously duplicated across 10+ files with the same
5
+ * writeFileSync(tmp) + renameSync(tmp, path) pattern:
6
+ * - mcp-tools/neural-tools.ts
7
+ * - memory/intelligence.ts
8
+ * - autopilot-state.ts
9
+ * - commands/claims.ts
10
+ * - commands/swarm.ts
11
+ * - commands/neural-optimize.ts
12
+ * - commands/neural-registry.ts
13
+ * - commands/agent-lifecycle.ts
14
+ * - commands/memory-admin.ts
15
+ * - commands/memory-list.ts
16
+ * - commands/security-cve.ts
17
+ *
18
+ * This is the single canonical implementation. Uses atomic
19
+ * rename to prevent partial writes on crash.
20
+ */
21
+ /**
22
+ * Read and parse a JSON file. Returns `fallback` if file doesn't exist,
23
+ * exceeds maxBytes, or fails to parse.
24
+ */
25
+ export declare function readJsonFileSync<T>(filePath: string, fallback: T, maxBytes?: number): T;
26
+ /**
27
+ * Atomically write a JSON value to disk.
28
+ *
29
+ * Writes to a temporary file first (PID + timestamp suffix to avoid
30
+ * collisions), then renames into place. Ensures the directory exists.
31
+ */
32
+ export declare function writeJsonFileAtomic(filePath: string, data: unknown, pretty?: boolean): void;
33
+ //# sourceMappingURL=json-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-file.d.ts","sourceRoot":"","sources":["../../../src/utils/json-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,CAAC,EACX,QAAQ,SAAmB,GAC1B,CAAC,CAUH;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,MAAM,UAAO,GACZ,IAAI,CASN"}