@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.
Files changed (511) hide show
  1. package/.claude/agents/core/researcher.md +29 -24
  2. package/.claude/agents/github/code-review-swarm.md +1 -1
  3. package/.claude/agents/github/github-modes.md +1 -1
  4. package/.claude/agents/github/issue-tracker.md +1 -3
  5. package/.claude/agents/github/multi-repo-swarm.md +1 -1
  6. package/.claude/agents/github/pr-manager.md +1 -3
  7. package/.claude/agents/github/project-board-sync.md +1 -1
  8. package/.claude/agents/github/release-manager.md +1 -1
  9. package/.claude/agents/github/repo-architect.md +4 -12
  10. package/.claude/agents/github/swarm-issue.md +1 -1
  11. package/.claude/agents/github/swarm-pr.md +1 -1
  12. package/.claude/agents/github/sync-coordinator.md +1 -1
  13. package/.claude/agents/github/workflow-automation.md +1 -1
  14. package/.claude/agents/goal/goal-planner.md +1 -2
  15. package/.claude/agents/specialized/specialized-workflow-architect.md +11 -14
  16. package/.claude/agents/testing/production-validator.md +8 -7
  17. package/.claude/agents/testing/testing-evidence-collector.md +3 -1
  18. package/.claude/commands/github/issue-tracker.md +0 -2
  19. package/.claude/commands/github/pr-manager.md +0 -2
  20. package/.claude/commands/github/repo-architect.md +3 -10
  21. package/.claude/commands/mastermind/code-review.md +4 -4
  22. package/.claude/commands/mastermind/help.md +5 -5
  23. package/.claude/commands/mastermind/okf-export.md +14 -0
  24. package/.claude/commands/mastermind/okf-import.md +15 -0
  25. package/.claude/commands/workflows/README.md +0 -1
  26. package/.claude/commands/workflows/workflow-create.md +0 -1
  27. package/.claude/commands/workflows/workflow-execute.md +1 -3
  28. package/.claude/commands/workflows/workflow-export.md +0 -2
  29. package/.claude/helpers/handlers/agent-start-handler.cjs +28 -36
  30. package/.claude/helpers/handlers/capture-handler.cjs +110 -0
  31. package/.claude/helpers/handlers/edit-handler.cjs +15 -0
  32. package/.claude/helpers/handlers/gates-handler.cjs +2 -8
  33. package/.claude/helpers/handlers/route-handler.cjs +314 -245
  34. package/.claude/helpers/handlers/session-handler.cjs +182 -163
  35. package/.claude/helpers/handlers/session-restore-handler.cjs +95 -53
  36. package/.claude/helpers/handlers/task-handler.cjs +17 -160
  37. package/.claude/helpers/hook-handler.cjs +153 -16
  38. package/.claude/helpers/intelligence.cjs +255 -15
  39. package/.claude/helpers/learning-service.mjs +1 -0
  40. package/.claude/helpers/mastermind-activate.cjs +33 -51
  41. package/.claude/helpers/monolean-activate.cjs +13 -3
  42. package/.claude/helpers/monolean-propagate.cjs +7 -3
  43. package/.claude/helpers/router.cjs +122 -11
  44. package/.claude/helpers/skill-registry.json +0 -189
  45. package/.claude/skills/github-toolkit/SKILL.md +60 -0
  46. package/.claude/skills/hive-mind-advanced/SKILL.md +0 -15
  47. package/.claude/skills/hooks-automation/SKILL.md +0 -1
  48. package/.claude/skills/mastermind-skills/_protocol.md +1 -1
  49. package/.claude/skills/mastermind-skills/architect.md +5 -6
  50. package/.claude/skills/mastermind-skills/autodev.md +8 -5
  51. package/.claude/skills/mastermind-skills/build.md +1 -2
  52. package/.claude/skills/mastermind-skills/review.md +8 -5
  53. package/.claude/skills/mastermind-skills/techport.md +37 -3
  54. package/.claude/skills/memory-toolkit/SKILL.md +75 -0
  55. package/.claude/skills/monodesign/document.md +9 -6
  56. package/.claude/skills/monodesign/extract.md +1 -1
  57. package/.claude/skills/monodesign/reference/document.md +1 -1
  58. package/.claude/skills/monodesign/reference/live.md +1 -1
  59. package/.claude/skills/monolean/SKILL.md +1 -1
  60. package/.claude/skills/specialagent/SKILL.md +2 -4
  61. package/.claude/skills/swarm-advanced/SKILL.md +0 -1
  62. package/README.md +2 -5
  63. package/bin/mcp-server.js +11 -1
  64. package/dist/src/autopilot-state.d.ts.map +1 -1
  65. package/dist/src/autopilot-state.js +4 -5
  66. package/dist/src/autopilot-state.js.map +1 -1
  67. package/dist/src/browser/dashboard/server.d.ts.map +1 -1
  68. package/dist/src/browser/dashboard/server.js +69 -1
  69. package/dist/src/browser/dashboard/server.js.map +1 -1
  70. package/dist/src/browser/dashboard/ui.html +214 -1764
  71. package/dist/src/capabilities/index.d.ts +0 -2
  72. package/dist/src/capabilities/index.d.ts.map +1 -1
  73. package/dist/src/capabilities/index.js +0 -1
  74. package/dist/src/capabilities/index.js.map +1 -1
  75. package/dist/src/commands/agent-lifecycle.d.ts.map +1 -1
  76. package/dist/src/commands/agent-lifecycle.js +2 -6
  77. package/dist/src/commands/agent-lifecycle.js.map +1 -1
  78. package/dist/src/commands/agent-ops.d.ts +1 -2
  79. package/dist/src/commands/agent-ops.d.ts.map +1 -1
  80. package/dist/src/commands/agent-ops.js +1 -59
  81. package/dist/src/commands/agent-ops.js.map +1 -1
  82. package/dist/src/commands/agent.d.ts.map +1 -1
  83. package/dist/src/commands/agent.js +2 -3
  84. package/dist/src/commands/agent.js.map +1 -1
  85. package/dist/src/commands/analyze-diff.js +1 -1
  86. package/dist/src/commands/analyze-diff.js.map +1 -1
  87. package/dist/src/commands/analyze.d.ts +0 -4
  88. package/dist/src/commands/analyze.d.ts.map +1 -1
  89. package/dist/src/commands/analyze.js +1 -29
  90. package/dist/src/commands/analyze.js.map +1 -1
  91. package/dist/src/commands/browse-action.d.ts.map +1 -1
  92. package/dist/src/commands/browse-action.js +94 -2
  93. package/dist/src/commands/browse-action.js.map +1 -1
  94. package/dist/src/commands/completions.d.ts.map +1 -1
  95. package/dist/src/commands/completions.js +12 -76
  96. package/dist/src/commands/completions.js.map +1 -1
  97. package/dist/src/commands/config.d.ts.map +1 -1
  98. package/dist/src/commands/config.js +0 -6
  99. package/dist/src/commands/config.js.map +1 -1
  100. package/dist/src/commands/doctor-project-checks.d.ts +13 -3
  101. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  102. package/dist/src/commands/doctor-project-checks.js +131 -23
  103. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  104. package/dist/src/commands/doctor.d.ts.map +1 -1
  105. package/dist/src/commands/doctor.js +6 -5
  106. package/dist/src/commands/doctor.js.map +1 -1
  107. package/dist/src/commands/guidance.d.ts +5 -1
  108. package/dist/src/commands/guidance.d.ts.map +1 -1
  109. package/dist/src/commands/guidance.js +11 -556
  110. package/dist/src/commands/guidance.js.map +1 -1
  111. package/dist/src/commands/hive-mind-comms.d.ts.map +1 -1
  112. package/dist/src/commands/hive-mind-comms.js +11 -4
  113. package/dist/src/commands/hive-mind-comms.js.map +1 -1
  114. package/dist/src/commands/hive-mind-helpers.js +2 -2
  115. package/dist/src/commands/hive-mind-helpers.js.map +1 -1
  116. package/dist/src/commands/hive-mind-ops.d.ts +1 -3
  117. package/dist/src/commands/hive-mind-ops.d.ts.map +1 -1
  118. package/dist/src/commands/hive-mind-ops.js +2 -116
  119. package/dist/src/commands/hive-mind-ops.js.map +1 -1
  120. package/dist/src/commands/hive-mind.d.ts +4 -4
  121. package/dist/src/commands/hive-mind.d.ts.map +1 -1
  122. package/dist/src/commands/hive-mind.js +11 -11
  123. package/dist/src/commands/hive-mind.js.map +1 -1
  124. package/dist/src/commands/hooks-coverage-commands.d.ts.map +1 -1
  125. package/dist/src/commands/hooks-coverage-commands.js +8 -7
  126. package/dist/src/commands/hooks-coverage-commands.js.map +1 -1
  127. package/dist/src/commands/hooks-coverage-gaps.js +1 -1
  128. package/dist/src/commands/hooks-coverage-gaps.js.map +1 -1
  129. package/dist/src/commands/hooks-coverage-routing.js +2 -2
  130. package/dist/src/commands/hooks-coverage-routing.js.map +1 -1
  131. package/dist/src/commands/hooks-extended-commands.d.ts +0 -3
  132. package/dist/src/commands/hooks-extended-commands.d.ts.map +1 -1
  133. package/dist/src/commands/hooks-extended-commands.js +0 -307
  134. package/dist/src/commands/hooks-extended-commands.js.map +1 -1
  135. package/dist/src/commands/hooks-formatting.d.ts +1 -5
  136. package/dist/src/commands/hooks-formatting.d.ts.map +1 -1
  137. package/dist/src/commands/hooks-formatting.js +1 -18
  138. package/dist/src/commands/hooks-formatting.js.map +1 -1
  139. package/dist/src/commands/hooks-workers.d.ts +1 -1
  140. package/dist/src/commands/hooks-workers.d.ts.map +1 -1
  141. package/dist/src/commands/hooks-workers.js +82 -330
  142. package/dist/src/commands/hooks-workers.js.map +1 -1
  143. package/dist/src/commands/hooks.d.ts.map +1 -1
  144. package/dist/src/commands/hooks.js +1 -12
  145. package/dist/src/commands/hooks.js.map +1 -1
  146. package/dist/src/commands/index.d.ts +2 -55
  147. package/dist/src/commands/index.d.ts.map +1 -1
  148. package/dist/src/commands/index.js +23 -216
  149. package/dist/src/commands/index.js.map +1 -1
  150. package/dist/src/commands/init-wizard.d.ts.map +1 -1
  151. package/dist/src/commands/init-wizard.js +3 -5
  152. package/dist/src/commands/init-wizard.js.map +1 -1
  153. package/dist/src/commands/init.d.ts.map +1 -1
  154. package/dist/src/commands/init.js +4 -24
  155. package/dist/src/commands/init.js.map +1 -1
  156. package/dist/src/commands/mcp.d.ts.map +1 -1
  157. package/dist/src/commands/mcp.js +32 -4
  158. package/dist/src/commands/mcp.js.map +1 -1
  159. package/dist/src/commands/memory-admin.d.ts +1 -2
  160. package/dist/src/commands/memory-admin.d.ts.map +1 -1
  161. package/dist/src/commands/memory-admin.js +1 -118
  162. package/dist/src/commands/memory-admin.js.map +1 -1
  163. package/dist/src/commands/memory-transfer.d.ts +1 -2
  164. package/dist/src/commands/memory-transfer.d.ts.map +1 -1
  165. package/dist/src/commands/memory-transfer.js +5 -171
  166. package/dist/src/commands/memory-transfer.js.map +1 -1
  167. package/dist/src/commands/memory.d.ts.map +1 -1
  168. package/dist/src/commands/memory.js +3 -6
  169. package/dist/src/commands/memory.js.map +1 -1
  170. package/dist/src/commands/neural-core.d.ts +3 -1
  171. package/dist/src/commands/neural-core.d.ts.map +1 -1
  172. package/dist/src/commands/neural-core.js +154 -15
  173. package/dist/src/commands/neural-core.js.map +1 -1
  174. package/dist/src/commands/neural-optimize.d.ts.map +1 -1
  175. package/dist/src/commands/neural-optimize.js +13 -15
  176. package/dist/src/commands/neural-optimize.js.map +1 -1
  177. package/dist/src/commands/neural-registry.d.ts +1 -1
  178. package/dist/src/commands/neural-registry.js +14 -14
  179. package/dist/src/commands/neural-registry.js.map +1 -1
  180. package/dist/src/commands/neural.d.ts +1 -1
  181. package/dist/src/commands/neural.js +6 -6
  182. package/dist/src/commands/neural.js.map +1 -1
  183. package/dist/src/commands/performance.d.ts.map +1 -1
  184. package/dist/src/commands/performance.js +68 -58
  185. package/dist/src/commands/performance.js.map +1 -1
  186. package/dist/src/commands/providers.d.ts.map +1 -1
  187. package/dist/src/commands/providers.js +77 -117
  188. package/dist/src/commands/providers.js.map +1 -1
  189. package/dist/src/commands/search-universal.d.ts +7 -1
  190. package/dist/src/commands/search-universal.d.ts.map +1 -1
  191. package/dist/src/commands/search-universal.js +59 -5
  192. package/dist/src/commands/search-universal.js.map +1 -1
  193. package/dist/src/commands/security-cve.d.ts.map +1 -1
  194. package/dist/src/commands/security-cve.js +3 -5
  195. package/dist/src/commands/security-cve.js.map +1 -1
  196. package/dist/src/commands/security-misc.d.ts +0 -1
  197. package/dist/src/commands/security-misc.d.ts.map +1 -1
  198. package/dist/src/commands/security-misc.js +69 -45
  199. package/dist/src/commands/security-misc.js.map +1 -1
  200. package/dist/src/commands/security.d.ts.map +1 -1
  201. package/dist/src/commands/security.js +2 -4
  202. package/dist/src/commands/security.js.map +1 -1
  203. package/dist/src/commands/session.d.ts.map +1 -1
  204. package/dist/src/commands/session.js +137 -281
  205. package/dist/src/commands/session.js.map +1 -1
  206. package/dist/src/commands/start.d.ts.map +1 -1
  207. package/dist/src/commands/start.js +2 -59
  208. package/dist/src/commands/start.js.map +1 -1
  209. package/dist/src/commands/status.d.ts.map +1 -1
  210. package/dist/src/commands/status.js +18 -29
  211. package/dist/src/commands/status.js.map +1 -1
  212. package/dist/src/commands/swarm.d.ts.map +1 -1
  213. package/dist/src/commands/swarm.js +113 -66
  214. package/dist/src/commands/swarm.js.map +1 -1
  215. package/dist/src/commands/task.d.ts.map +1 -1
  216. package/dist/src/commands/task.js +2 -49
  217. package/dist/src/commands/task.js.map +1 -1
  218. package/dist/src/consensus/audit-writer.d.ts.map +1 -1
  219. package/dist/src/consensus/audit-writer.js +43 -1
  220. package/dist/src/consensus/audit-writer.js.map +1 -1
  221. package/dist/src/consensus/tally.d.ts +19 -0
  222. package/dist/src/consensus/tally.d.ts.map +1 -0
  223. package/dist/src/consensus/tally.js +34 -0
  224. package/dist/src/consensus/tally.js.map +1 -0
  225. package/dist/src/index.d.ts +3 -2
  226. package/dist/src/index.d.ts.map +1 -1
  227. package/dist/src/index.js +13 -9
  228. package/dist/src/index.js.map +1 -1
  229. package/dist/src/init/claudemd-generator.d.ts.map +1 -1
  230. package/dist/src/init/claudemd-generator.js +10 -14
  231. package/dist/src/init/claudemd-generator.js.map +1 -1
  232. package/dist/src/init/executor.d.ts.map +1 -1
  233. package/dist/src/init/executor.js +42 -100
  234. package/dist/src/init/executor.js.map +1 -1
  235. package/dist/src/init/helpers-generator.d.ts.map +1 -1
  236. package/dist/src/init/helpers-generator.js +2 -22
  237. package/dist/src/init/helpers-generator.js.map +1 -1
  238. package/dist/src/init/settings-generator.d.ts.map +1 -1
  239. package/dist/src/init/settings-generator.js +0 -13
  240. package/dist/src/init/settings-generator.js.map +1 -1
  241. package/dist/src/init/statusline-generator.d.ts.map +1 -1
  242. package/dist/src/init/statusline-generator.js +62 -0
  243. package/dist/src/init/statusline-generator.js.map +1 -1
  244. package/dist/src/init/types.d.ts +3 -9
  245. package/dist/src/init/types.d.ts.map +1 -1
  246. package/dist/src/init/types.js +0 -5
  247. package/dist/src/init/types.js.map +1 -1
  248. package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
  249. package/dist/src/knowledge/document-pipeline.js +18 -8
  250. package/dist/src/knowledge/document-pipeline.js.map +1 -1
  251. package/dist/src/mcp-client.d.ts.map +1 -1
  252. package/dist/src/mcp-client.js +0 -8
  253. package/dist/src/mcp-client.js.map +1 -1
  254. package/dist/src/mcp-server.d.ts.map +1 -1
  255. package/dist/src/mcp-server.js +14 -0
  256. package/dist/src/mcp-server.js.map +1 -1
  257. package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
  258. package/dist/src/mcp-tools/agent-tools.js +0 -17
  259. package/dist/src/mcp-tools/agent-tools.js.map +1 -1
  260. package/dist/src/mcp-tools/coherence/causal-infer.d.ts +5 -5
  261. package/dist/src/mcp-tools/coherence/causal-infer.d.ts.map +1 -1
  262. package/dist/src/mcp-tools/coherence/causal-infer.js +32 -46
  263. package/dist/src/mcp-tools/coherence/causal-infer.js.map +1 -1
  264. package/dist/src/mcp-tools/coherence/coherence-check.d.ts.map +1 -1
  265. package/dist/src/mcp-tools/coherence/coherence-check.js +1 -19
  266. package/dist/src/mcp-tools/coherence/coherence-check.js.map +1 -1
  267. package/dist/src/mcp-tools/coherence/consensus-verify.d.ts +2 -3
  268. package/dist/src/mcp-tools/coherence/consensus-verify.d.ts.map +1 -1
  269. package/dist/src/mcp-tools/coherence/consensus-verify.js +22 -20
  270. package/dist/src/mcp-tools/coherence/consensus-verify.js.map +1 -1
  271. package/dist/src/mcp-tools/coherence/memory-gate.d.ts +3 -2
  272. package/dist/src/mcp-tools/coherence/memory-gate.d.ts.map +1 -1
  273. package/dist/src/mcp-tools/coherence/memory-gate.js +32 -19
  274. package/dist/src/mcp-tools/coherence/memory-gate.js.map +1 -1
  275. package/dist/src/mcp-tools/coherence/quantum-topology.d.ts +4 -4
  276. package/dist/src/mcp-tools/coherence/quantum-topology.d.ts.map +1 -1
  277. package/dist/src/mcp-tools/coherence/quantum-topology.js +11 -17
  278. package/dist/src/mcp-tools/coherence/quantum-topology.js.map +1 -1
  279. package/dist/src/mcp-tools/coherence/spectral-analyze.d.ts +2 -3
  280. package/dist/src/mcp-tools/coherence/spectral-analyze.d.ts.map +1 -1
  281. package/dist/src/mcp-tools/coherence/spectral-analyze.js +51 -32
  282. package/dist/src/mcp-tools/coherence/spectral-analyze.js.map +1 -1
  283. package/dist/src/mcp-tools/coherence/types.d.ts +8 -11
  284. package/dist/src/mcp-tools/coherence/types.d.ts.map +1 -1
  285. package/dist/src/mcp-tools/coherence/types.js +3 -18
  286. package/dist/src/mcp-tools/coherence/types.js.map +1 -1
  287. package/dist/src/mcp-tools/embeddings-tools.d.ts.map +1 -1
  288. package/dist/src/mcp-tools/embeddings-tools.js +1 -7
  289. package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
  290. package/dist/src/mcp-tools/graphify-tools.js +2 -2
  291. package/dist/src/mcp-tools/graphify-tools.js.map +1 -1
  292. package/dist/src/mcp-tools/guidance-tools.d.ts.map +1 -1
  293. package/dist/src/mcp-tools/guidance-tools.js +9 -19
  294. package/dist/src/mcp-tools/guidance-tools.js.map +1 -1
  295. package/dist/src/mcp-tools/hive-mind-tools.d.ts +8 -1
  296. package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -1
  297. package/dist/src/mcp-tools/hive-mind-tools.js +198 -40
  298. package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
  299. package/dist/src/mcp-tools/hooks-advanced.d.ts +18 -0
  300. package/dist/src/mcp-tools/hooks-advanced.d.ts.map +1 -0
  301. package/dist/src/mcp-tools/hooks-advanced.js +25 -0
  302. package/dist/src/mcp-tools/hooks-advanced.js.map +1 -0
  303. package/dist/src/mcp-tools/hooks-intelligence.d.ts +4 -8
  304. package/dist/src/mcp-tools/hooks-intelligence.d.ts.map +1 -1
  305. package/dist/src/mcp-tools/hooks-intelligence.js +33 -482
  306. package/dist/src/mcp-tools/hooks-intelligence.js.map +1 -1
  307. package/dist/src/mcp-tools/hooks-routing.d.ts +1 -3
  308. package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
  309. package/dist/src/mcp-tools/hooks-routing.js +96 -202
  310. package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
  311. package/dist/src/mcp-tools/hooks-synthesis.d.ts +31 -0
  312. package/dist/src/mcp-tools/hooks-synthesis.d.ts.map +1 -0
  313. package/dist/src/mcp-tools/hooks-synthesis.js +196 -0
  314. package/dist/src/mcp-tools/hooks-synthesis.js.map +1 -0
  315. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  316. package/dist/src/mcp-tools/hooks-tools.js +10 -11
  317. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  318. package/dist/src/mcp-tools/index.d.ts +0 -3
  319. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  320. package/dist/src/mcp-tools/index.js +0 -4
  321. package/dist/src/mcp-tools/index.js.map +1 -1
  322. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  323. package/dist/src/mcp-tools/memory-tools.js +24 -9
  324. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  325. package/dist/src/mcp-tools/monograph-tools.d.ts +6 -0
  326. package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
  327. package/dist/src/mcp-tools/monograph-tools.js +370 -95
  328. package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
  329. package/dist/src/mcp-tools/neural-tools.d.ts +8 -9
  330. package/dist/src/mcp-tools/neural-tools.d.ts.map +1 -1
  331. package/dist/src/mcp-tools/neural-tools.js +249 -539
  332. package/dist/src/mcp-tools/neural-tools.js.map +1 -1
  333. package/dist/src/mcp-tools/performance-tools.d.ts.map +1 -1
  334. package/dist/src/mcp-tools/performance-tools.js +5 -17
  335. package/dist/src/mcp-tools/performance-tools.js.map +1 -1
  336. package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.js +2 -2
  337. package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.js.map +1 -1
  338. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts +4 -4
  339. package/dist/src/mcp-tools/quality-tools.d.ts +7 -2
  340. package/dist/src/mcp-tools/quality-tools.d.ts.map +1 -1
  341. package/dist/src/mcp-tools/quality-tools.js +7 -257
  342. package/dist/src/mcp-tools/quality-tools.js.map +1 -1
  343. package/dist/src/mcp-tools/security-tools.d.ts.map +1 -1
  344. package/dist/src/mcp-tools/security-tools.js +103 -0
  345. package/dist/src/mcp-tools/security-tools.js.map +1 -1
  346. package/dist/src/memory/intelligence.d.ts +9 -9
  347. package/dist/src/memory/intelligence.d.ts.map +1 -1
  348. package/dist/src/memory/intelligence.js +71 -59
  349. package/dist/src/memory/intelligence.js.map +1 -1
  350. package/dist/src/memory/memory-bridge.d.ts +1 -0
  351. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  352. package/dist/src/memory/memory-bridge.js +47 -5
  353. package/dist/src/memory/memory-bridge.js.map +1 -1
  354. package/dist/src/memory/memory-read.d.ts.map +1 -1
  355. package/dist/src/memory/memory-read.js +1 -19
  356. package/dist/src/memory/memory-read.js.map +1 -1
  357. package/dist/src/suggest.d.ts.map +1 -1
  358. package/dist/src/suggest.js +1 -12
  359. package/dist/src/suggest.js.map +1 -1
  360. package/dist/src/transfer/store/discovery.d.ts +3 -2
  361. package/dist/src/transfer/store/discovery.d.ts.map +1 -1
  362. package/dist/src/transfer/store/discovery.js +22 -70
  363. package/dist/src/transfer/store/discovery.js.map +1 -1
  364. package/dist/src/update/checker.d.ts.map +1 -1
  365. package/dist/src/update/checker.js +0 -1
  366. package/dist/src/update/checker.js.map +1 -1
  367. package/dist/src/utils/cosine-similarity.d.ts +22 -0
  368. package/dist/src/utils/cosine-similarity.d.ts.map +1 -0
  369. package/dist/src/utils/cosine-similarity.js +38 -0
  370. package/dist/src/utils/cosine-similarity.js.map +1 -0
  371. package/dist/src/utils/input-guards.d.ts +51 -0
  372. package/dist/src/utils/input-guards.d.ts.map +1 -0
  373. package/dist/src/utils/input-guards.js +223 -0
  374. package/dist/src/utils/input-guards.js.map +1 -0
  375. package/dist/src/utils/json-file.d.ts +33 -0
  376. package/dist/src/utils/json-file.d.ts.map +1 -0
  377. package/dist/src/utils/json-file.js +57 -0
  378. package/dist/src/utils/json-file.js.map +1 -0
  379. package/dist/tsconfig.tsbuildinfo +1 -1
  380. package/package.json +9 -6
  381. package/scripts/sync-claude-assets.sh +16 -20
  382. package/.claude/agents/generated/case-analyst.md +0 -50
  383. package/.claude/agents/generated/channel-intelligence-director.md +0 -87
  384. package/.claude/agents/generated/chief-growth-officer.md +0 -88
  385. package/.claude/agents/generated/churn-analyst.md +0 -53
  386. package/.claude/agents/generated/code-reviewer.md +0 -55
  387. package/.claude/agents/generated/code-validator.md +0 -57
  388. package/.claude/agents/generated/complexity-scanner.md +0 -56
  389. package/.claude/agents/generated/content-seo-strategist.md +0 -90
  390. package/.claude/agents/generated/copy-editor.md +0 -45
  391. package/.claude/agents/generated/court-reporter.md +0 -50
  392. package/.claude/agents/generated/defender.md +0 -51
  393. package/.claude/agents/generated/devbot-orchestrator.md +0 -58
  394. package/.claude/agents/generated/devbot-planner.md +0 -63
  395. package/.claude/agents/generated/developer-community-strategist.md +0 -91
  396. package/.claude/agents/generated/editor-in-chief.md +0 -45
  397. package/.claude/agents/generated/fact-checker.md +0 -45
  398. package/.claude/agents/generated/impact-assessor.md +0 -54
  399. package/.claude/agents/generated/judge.md +0 -51
  400. package/.claude/agents/generated/outreach-partnership-strategist.md +0 -90
  401. package/.claude/agents/generated/prosecutor.md +0 -51
  402. package/.claude/agents/generated/reporter.md +0 -45
  403. package/.claude/agents/generated/social-media-strategist.md +0 -91
  404. package/.claude/agents/generated/video-visual-strategist.md +0 -90
  405. package/.claude/agents/reengineer-squad/boss.md +0 -113
  406. package/.claude/agents/reengineer-squad/critic-architect.md +0 -132
  407. package/.claude/agents/reengineer-squad/git-manager.md +0 -145
  408. package/.claude/agents/reengineer-squad/idea-generator.md +0 -95
  409. package/.claude/agents/reengineer-squad/implementer.md +0 -112
  410. package/.claude/agents/reengineer-squad/integration-planner.md +0 -112
  411. package/.claude/agents/reengineer-squad/source-analyst.md +0 -103
  412. package/.claude/agents/reengineer-squad/target-analyst.md +0 -118
  413. package/.claude/agents/reengineer-squad/tester.md +0 -105
  414. package/.claude/agents/sparc/architecture.md +0 -453
  415. package/.claude/agents/sparc/pseudocode.md +0 -299
  416. package/.claude/agents/sparc/refinement.md +0 -504
  417. package/.claude/agents/sparc/specification.md +0 -258
  418. package/.claude/agents/templates/implementer-sparc-coder.md +0 -231
  419. package/.claude/commands/sparc/analyzer.md +0 -35
  420. package/.claude/commands/sparc/architect.md +0 -36
  421. package/.claude/commands/sparc/ask.md +0 -56
  422. package/.claude/commands/sparc/batch-executor.md +0 -37
  423. package/.claude/commands/sparc/code.md +0 -48
  424. package/.claude/commands/sparc/coder.md +0 -37
  425. package/.claude/commands/sparc/debug.md +0 -42
  426. package/.claude/commands/sparc/debugger.md +0 -37
  427. package/.claude/commands/sparc/designer.md +0 -36
  428. package/.claude/commands/sparc/devops.md +0 -68
  429. package/.claude/commands/sparc/docs-writer.md +0 -39
  430. package/.claude/commands/sparc/documenter.md +0 -37
  431. package/.claude/commands/sparc/innovator.md +0 -37
  432. package/.claude/commands/sparc/integration.md +0 -42
  433. package/.claude/commands/sparc/mcp.md +0 -76
  434. package/.claude/commands/sparc/memory-manager.md +0 -57
  435. package/.claude/commands/sparc/optimizer.md +0 -37
  436. package/.claude/commands/sparc/orchestrator.md +0 -70
  437. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +0 -42
  438. package/.claude/commands/sparc/refinement-optimization-mode.md +0 -42
  439. package/.claude/commands/sparc/researcher.md +0 -37
  440. package/.claude/commands/sparc/reviewer.md +0 -37
  441. package/.claude/commands/sparc/security-review.md +0 -39
  442. package/.claude/commands/sparc/sparc-modes.md +0 -120
  443. package/.claude/commands/sparc/sparc.md +0 -71
  444. package/.claude/commands/sparc/spec-pseudocode.md +0 -39
  445. package/.claude/commands/sparc/supabase-admin.md +0 -301
  446. package/.claude/commands/sparc/swarm-coordinator.md +0 -50
  447. package/.claude/commands/sparc/tdd.md +0 -37
  448. package/.claude/commands/sparc/tester.md +0 -37
  449. package/.claude/commands/sparc/tutorial.md +0 -38
  450. package/.claude/commands/sparc/workflow-manager.md +0 -37
  451. package/.claude/commands/sparc.md +0 -112
  452. package/.claude/helpers/auto-memory-hook.mjs +0 -503
  453. package/.claude/skills/sparc-methodology/SKILL.md +0 -950
  454. package/dist/src/capabilities/enrichment.d.ts +0 -44
  455. package/dist/src/capabilities/enrichment.d.ts.map +0 -1
  456. package/dist/src/capabilities/enrichment.js +0 -141
  457. package/dist/src/capabilities/enrichment.js.map +0 -1
  458. package/dist/src/commands/analyze-boundaries.d.ts +0 -14
  459. package/dist/src/commands/analyze-boundaries.d.ts.map +0 -1
  460. package/dist/src/commands/analyze-boundaries.js +0 -295
  461. package/dist/src/commands/analyze-boundaries.js.map +0 -1
  462. package/dist/src/commands/analyze-graph.d.ts +0 -14
  463. package/dist/src/commands/analyze-graph.d.ts.map +0 -1
  464. package/dist/src/commands/analyze-graph.js +0 -304
  465. package/dist/src/commands/analyze-graph.js.map +0 -1
  466. package/dist/src/commands/claims.d.ts +0 -10
  467. package/dist/src/commands/claims.d.ts.map +0 -1
  468. package/dist/src/commands/claims.js +0 -650
  469. package/dist/src/commands/claims.js.map +0 -1
  470. package/dist/src/commands/daemon.d.ts +0 -8
  471. package/dist/src/commands/daemon.d.ts.map +0 -1
  472. package/dist/src/commands/daemon.js +0 -681
  473. package/dist/src/commands/daemon.js.map +0 -1
  474. package/dist/src/commands/deployment.d.ts +0 -10
  475. package/dist/src/commands/deployment.d.ts.map +0 -1
  476. package/dist/src/commands/deployment.js +0 -706
  477. package/dist/src/commands/deployment.js.map +0 -1
  478. package/dist/src/commands/enrich.d.ts +0 -10
  479. package/dist/src/commands/enrich.d.ts.map +0 -1
  480. package/dist/src/commands/enrich.js +0 -58
  481. package/dist/src/commands/enrich.js.map +0 -1
  482. package/dist/src/commands/issues.d.ts +0 -21
  483. package/dist/src/commands/issues.d.ts.map +0 -1
  484. package/dist/src/commands/issues.js +0 -575
  485. package/dist/src/commands/issues.js.map +0 -1
  486. package/dist/src/commands/workflow.d.ts +0 -8
  487. package/dist/src/commands/workflow.d.ts.map +0 -1
  488. package/dist/src/commands/workflow.js +0 -677
  489. package/dist/src/commands/workflow.js.map +0 -1
  490. package/dist/src/mcp-tools/workflow-tools.d.ts +0 -8
  491. package/dist/src/mcp-tools/workflow-tools.d.ts.map +0 -1
  492. package/dist/src/mcp-tools/workflow-tools.js +0 -717
  493. package/dist/src/mcp-tools/workflow-tools.js.map +0 -1
  494. package/dist/src/services/claim-service.d.ts +0 -198
  495. package/dist/src/services/claim-service.d.ts.map +0 -1
  496. package/dist/src/services/claim-service.js +0 -890
  497. package/dist/src/services/claim-service.js.map +0 -1
  498. package/dist/src/services/headless-worker-executor.d.ts +0 -311
  499. package/dist/src/services/headless-worker-executor.d.ts.map +0 -1
  500. package/dist/src/services/headless-worker-executor.js +0 -1183
  501. package/dist/src/services/headless-worker-executor.js.map +0 -1
  502. package/dist/src/services/worker-daemon.d.ts +0 -248
  503. package/dist/src/services/worker-daemon.d.ts.map +0 -1
  504. package/dist/src/services/worker-daemon.js +0 -1417
  505. package/dist/src/services/worker-daemon.js.map +0 -1
  506. package/dist/src/ui/.monomind/capture/active-run.json +0 -1
  507. package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/real-events-1782290897.convs.jsonl +0 -3
  508. package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/real-events-1782290897.jsonl +0 -11
  509. package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/rigid-qa-restart-1782288201.jsonl +0 -540
  510. package/dist/src/ui/.monomind/orgs/system-trial-qa-threads.jsonl +0 -3
  511. package/dist/src/ui/.monomind/orgs/test-event-fix/runs/rigid-qa-restart-1782288201.jsonl +0 -2
@@ -1,650 +0,0 @@
1
- /**
2
- * CLI Claims Command
3
- * Claims-based authorization, permissions, and access control
4
- *
5
- * github.com/monoes/monomind
6
- */
7
- import { output } from '../output.js';
8
- import * as fs from 'fs';
9
- import * as path from 'path';
10
- import { homedir } from 'os';
11
- const CLAIMS_CONFIG_PATHS = [
12
- '.monomind/claims.json',
13
- 'monomind.claims.json',
14
- ];
15
- function getClaimsConfigPaths() {
16
- return [
17
- path.resolve(CLAIMS_CONFIG_PATHS[0]),
18
- path.resolve(CLAIMS_CONFIG_PATHS[1]),
19
- path.resolve(homedir(), '.config/monomind/claims.json'),
20
- ];
21
- }
22
- function safeParseJson(content) {
23
- const parsed = JSON.parse(content);
24
- if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
25
- throw new Error('Claims config must be a JSON object');
26
- }
27
- const safe = Object.create(null);
28
- for (const key of Object.keys(parsed)) {
29
- if (key === '__proto__' || key === 'constructor' || key === 'prototype')
30
- continue;
31
- safe[key] = parsed[key];
32
- }
33
- return safe;
34
- }
35
- function loadClaimsConfig() {
36
- const configPaths = getClaimsConfigPaths();
37
- for (const configPath of configPaths) {
38
- if (fs.existsSync(configPath) && fs.statSync(configPath).size <= 1024 * 1024) {
39
- const content = fs.readFileSync(configPath, 'utf-8');
40
- return { config: safeParseJson(content), path: configPath };
41
- }
42
- }
43
- // Return default config with the first path as the default write location
44
- const defaultConfig = {
45
- roles: {
46
- admin: ['*'],
47
- developer: ['swarm:*', 'agent:*', 'memory:*', 'task:*', 'session:*'],
48
- operator: ['swarm:status', 'agent:list', 'memory:read', 'task:list'],
49
- viewer: ['*:list', '*:status', '*:read'],
50
- },
51
- defaultClaims: ['swarm:create', 'swarm:status', 'agent:spawn', 'agent:list', 'memory:read', 'memory:write', 'task:create'],
52
- };
53
- return { config: defaultConfig, path: configPaths[0] };
54
- }
55
- function saveClaimsConfig(config, configPath) {
56
- const dir = path.dirname(configPath);
57
- if (!fs.existsSync(dir)) {
58
- fs.mkdirSync(dir, { recursive: true });
59
- }
60
- const tmpPath = configPath + '.tmp';
61
- fs.writeFileSync(tmpPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
62
- fs.renameSync(tmpPath, configPath);
63
- }
64
- // List subcommand
65
- const listCommand = {
66
- name: 'list',
67
- description: 'List claims and permissions',
68
- options: [
69
- { name: 'user', short: 'u', type: 'string', description: 'Filter by user ID' },
70
- { name: 'role', short: 'r', type: 'string', description: 'Filter by role' },
71
- { name: 'resource', type: 'string', description: 'Filter by resource' },
72
- ],
73
- examples: [
74
- { command: 'monomind claims list', description: 'List all claims' },
75
- { command: 'monomind claims list -u user123', description: 'List user claims' },
76
- ],
77
- action: async (_ctx) => {
78
- try {
79
- const { config, path: configPath } = loadClaimsConfig();
80
- output.writeln();
81
- output.writeln(output.bold('Claims Configuration'));
82
- output.writeln(output.dim('─'.repeat(50)));
83
- // Roles table
84
- const roles = config.roles || {};
85
- const roleEntries = Object.entries(roles);
86
- if (roleEntries.length > 0) {
87
- output.writeln();
88
- output.writeln(output.bold('Roles'));
89
- output.printTable({
90
- columns: [
91
- { key: 'role', header: 'Role' },
92
- { key: 'count', header: 'Claims' },
93
- { key: 'preview', header: 'Preview', width: 50 },
94
- ],
95
- data: roleEntries.map(([name, claims]) => ({
96
- role: name,
97
- count: claims.length,
98
- preview: claims.slice(0, 4).join(', ') + (claims.length > 4 ? ', ...' : ''),
99
- })),
100
- border: true,
101
- header: true,
102
- });
103
- }
104
- // Users table
105
- const users = config.users || {};
106
- const userEntries = Object.entries(users);
107
- if (userEntries.length > 0) {
108
- output.writeln();
109
- output.writeln(output.bold('Users'));
110
- output.printTable({
111
- columns: [
112
- { key: 'user', header: 'User' },
113
- { key: 'role', header: 'Role' },
114
- { key: 'extraClaims', header: 'Extra Claims' },
115
- ],
116
- data: userEntries.map(([name, info]) => ({
117
- user: name,
118
- role: info.role || output.dim('(none)'),
119
- extraClaims: info.claims ? info.claims.join(', ') : output.dim('(none)'),
120
- })),
121
- border: true,
122
- header: true,
123
- });
124
- }
125
- // Default claims
126
- const defaults = config.defaultClaims || [];
127
- if (defaults.length > 0) {
128
- output.writeln();
129
- output.writeln(output.bold('Default Claims'));
130
- output.printList(defaults);
131
- }
132
- output.writeln();
133
- output.writeln(output.dim(`Config: ${configPath}`));
134
- return { success: true };
135
- }
136
- catch (error) {
137
- output.printError(`Failed to list claims: ${error.message}`);
138
- return { success: false, exitCode: 1 };
139
- }
140
- },
141
- };
142
- // Check subcommand
143
- const checkCommand = {
144
- name: 'check',
145
- description: 'Check if a specific claim is granted',
146
- options: [
147
- { name: 'claim', short: 'c', type: 'string', description: 'Claim to check', required: true },
148
- { name: 'user', short: 'u', type: 'string', description: 'User ID to check' },
149
- { name: 'resource', short: 'r', type: 'string', description: 'Resource context' },
150
- ],
151
- examples: [
152
- { command: 'monomind claims check -c swarm:create', description: 'Check swarm creation permission' },
153
- { command: 'monomind claims check -c admin:delete -u user123', description: 'Check user permission' },
154
- ],
155
- action: async (ctx) => {
156
- const claim = (ctx.flags.claim || '').slice(0, 256);
157
- const user = (ctx.flags.user || 'current').slice(0, 128);
158
- const resource = (ctx.flags.resource || '').slice(0, 256);
159
- if (!claim) {
160
- output.printError('Claim is required');
161
- return { success: false, exitCode: 1 };
162
- }
163
- // Block prototype-polluting user or resource keys.
164
- const PROTO_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
165
- if (PROTO_KEYS.has(user)) {
166
- output.printError(`Forbidden user key: "${user}"`);
167
- return { success: false, exitCode: 1 };
168
- }
169
- output.writeln();
170
- output.writeln(output.bold('Claim Check'));
171
- output.writeln(output.dim('─'.repeat(40)));
172
- const spinner = output.createSpinner({ text: 'Evaluating claim...', spinner: 'dots' });
173
- spinner.start();
174
- const fs = await import('fs');
175
- const path = await import('path');
176
- // Real claims evaluation from config file
177
- let isGranted = false;
178
- let reason = 'Claim not found in policy';
179
- let policySource = 'default';
180
- try {
181
- // Check for claims config file
182
- const claimsConfigPaths = [
183
- path.resolve('.monomind/claims.json'),
184
- path.resolve('monomind.claims.json'),
185
- path.resolve(homedir(), '.config/monomind/claims.json'),
186
- ];
187
- let claimsConfig = {
188
- // Default policy - allows basic operations
189
- roles: {
190
- admin: ['*'],
191
- developer: ['swarm:*', 'agent:*', 'memory:*', 'task:*', 'session:*'],
192
- operator: ['swarm:status', 'agent:list', 'memory:read', 'task:list'],
193
- viewer: ['*:list', '*:status', '*:read'],
194
- },
195
- defaultClaims: ['swarm:create', 'swarm:status', 'agent:spawn', 'agent:list', 'memory:read', 'memory:write', 'task:create'],
196
- };
197
- for (const configPath of claimsConfigPaths) {
198
- if (fs.existsSync(configPath) && fs.statSync(configPath).size <= 1024 * 1024) {
199
- const content = fs.readFileSync(configPath, 'utf-8');
200
- claimsConfig = { ...claimsConfig, ...safeParseJson(content) };
201
- policySource = configPath;
202
- break;
203
- }
204
- }
205
- // Resolve user's claims
206
- const userConfig = claimsConfig.users?.[user];
207
- let userClaims = [...(claimsConfig.defaultClaims || [])];
208
- if (userConfig) {
209
- // Add user-specific claims
210
- if (userConfig.claims) {
211
- userClaims = [...userClaims, ...userConfig.claims];
212
- }
213
- // Add role-based claims
214
- if (userConfig.role && claimsConfig.roles?.[userConfig.role]) {
215
- userClaims = [...userClaims, ...claimsConfig.roles[userConfig.role]];
216
- }
217
- }
218
- // Check if claim is granted
219
- const checkClaim = (claimToCheck, grantedClaims) => {
220
- for (const granted of grantedClaims) {
221
- // Exact match
222
- if (granted === claimToCheck)
223
- return true;
224
- // Wildcard match (e.g., "swarm:*" matches "swarm:create")
225
- if (granted === '*')
226
- return true;
227
- if (granted.endsWith(':*')) {
228
- const prefix = granted.slice(0, -1);
229
- if (claimToCheck.startsWith(prefix))
230
- return true;
231
- }
232
- // Pattern match (e.g., "*:list" matches "swarm:list")
233
- if (granted.startsWith('*:')) {
234
- const suffix = granted.slice(1);
235
- if (claimToCheck.endsWith(suffix))
236
- return true;
237
- }
238
- }
239
- return false;
240
- };
241
- isGranted = checkClaim(claim, userClaims);
242
- if (isGranted) {
243
- reason = userConfig?.role
244
- ? `Granted via role: ${userConfig.role}`
245
- : 'Granted via default policy';
246
- }
247
- else {
248
- reason = 'Not in user claims or role permissions';
249
- }
250
- spinner.stop();
251
- }
252
- catch (error) {
253
- spinner.stop();
254
- output.printError(`Failed to evaluate claim: ${error instanceof Error ? error.message : String(error)}`);
255
- return { success: false, exitCode: 1 };
256
- }
257
- if (isGranted) {
258
- output.writeln(output.success('✓ Claim granted'));
259
- }
260
- else {
261
- output.writeln(output.error('✗ Claim denied'));
262
- }
263
- output.writeln();
264
- output.printBox([
265
- `Claim: ${claim}`,
266
- `User: ${user}`,
267
- `Resource: ${resource || 'global'}`,
268
- `Result: ${isGranted ? output.success('GRANTED') : output.error('DENIED')}`,
269
- ``,
270
- `Reason: ${reason}`,
271
- `Policy: ${policySource}`,
272
- ].join('\n'), 'Result');
273
- return { success: isGranted };
274
- },
275
- };
276
- // Grant subcommand
277
- const grantCommand = {
278
- name: 'grant',
279
- description: 'Grant a claim to user or role',
280
- options: [
281
- { name: 'claim', short: 'c', type: 'string', description: 'Claim to grant', required: true },
282
- { name: 'user', short: 'u', type: 'string', description: 'User ID' },
283
- { name: 'role', short: 'r', type: 'string', description: 'Role name' },
284
- { name: 'scope', short: 's', type: 'string', description: 'Scope: global, namespace, resource', default: 'global' },
285
- { name: 'expires', short: 'e', type: 'string', description: 'Expiration time (e.g., 24h, 7d)' },
286
- ],
287
- examples: [
288
- { command: 'monomind claims grant -c swarm:create -u user123', description: 'Grant to user' },
289
- { command: 'monomind claims grant -c agent:spawn -r developer', description: 'Grant to role' },
290
- ],
291
- action: async (ctx) => {
292
- const claim = (ctx.flags.claim || '').slice(0, 256);
293
- const user = (ctx.flags.user || '').slice(0, 128);
294
- const role = (ctx.flags.role || '').slice(0, 64);
295
- if (!claim) {
296
- output.printError('Claim is required');
297
- return { success: false, exitCode: 1 };
298
- }
299
- if (!user && !role) {
300
- output.printError('Either user or role is required');
301
- return { success: false, exitCode: 1 };
302
- }
303
- // Block prototype-polluting user or role keys.
304
- const PROTO_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
305
- if ((user && PROTO_KEYS.has(user)) || (role && PROTO_KEYS.has(role))) {
306
- output.printError('Forbidden user or role key');
307
- return { success: false, exitCode: 1 };
308
- }
309
- try {
310
- const { config, path: configPath } = loadClaimsConfig();
311
- if (user) {
312
- if (!config.users)
313
- config.users = {};
314
- if (!config.users[user])
315
- config.users[user] = {};
316
- if (!config.users[user].claims)
317
- config.users[user].claims = [];
318
- if (!config.users[user].claims.includes(claim)) {
319
- config.users[user].claims.push(claim);
320
- }
321
- }
322
- if (role) {
323
- if (!config.roles)
324
- config.roles = {};
325
- if (!config.roles[role])
326
- config.roles[role] = [];
327
- if (!config.roles[role].includes(claim)) {
328
- config.roles[role].push(claim);
329
- }
330
- }
331
- saveClaimsConfig(config, configPath);
332
- output.writeln();
333
- const target = user ? `user "${user}"` : `role "${role}"`;
334
- output.writeln(output.success(`Granted "${claim}" to ${target}`));
335
- output.writeln(output.dim(`Saved to: ${configPath}`));
336
- return { success: true };
337
- }
338
- catch (error) {
339
- output.printError(`Failed to grant claim: ${error.message}`);
340
- return { success: false, exitCode: 1 };
341
- }
342
- },
343
- };
344
- // Revoke subcommand
345
- const revokeCommand = {
346
- name: 'revoke',
347
- description: 'Revoke a claim from user or role',
348
- options: [
349
- { name: 'claim', short: 'c', type: 'string', description: 'Claim to revoke', required: true },
350
- { name: 'user', short: 'u', type: 'string', description: 'User ID' },
351
- { name: 'role', short: 'r', type: 'string', description: 'Role name' },
352
- ],
353
- examples: [
354
- { command: 'monomind claims revoke -c swarm:delete -u user123', description: 'Revoke from user' },
355
- { command: 'monomind claims revoke -c admin:* -r guest', description: 'Revoke from role' },
356
- ],
357
- action: async (ctx) => {
358
- const claim = (ctx.flags.claim || '').slice(0, 256);
359
- const user = (ctx.flags.user || '').slice(0, 128);
360
- const role = (ctx.flags.role || '').slice(0, 64);
361
- if (!claim) {
362
- output.printError('Claim is required');
363
- return { success: false, exitCode: 1 };
364
- }
365
- if (!user && !role) {
366
- output.printError('Either user or role is required');
367
- return { success: false, exitCode: 1 };
368
- }
369
- // Block prototype-polluting user or role keys.
370
- const PROTO_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
371
- if ((user && PROTO_KEYS.has(user)) || (role && PROTO_KEYS.has(role))) {
372
- output.printError('Forbidden user or role key');
373
- return { success: false, exitCode: 1 };
374
- }
375
- try {
376
- const { config, path: configPath } = loadClaimsConfig();
377
- let removed = false;
378
- if (user && config.users?.[user]?.claims) {
379
- const idx = config.users[user].claims.indexOf(claim);
380
- if (idx !== -1) {
381
- config.users[user].claims.splice(idx, 1);
382
- removed = true;
383
- }
384
- }
385
- if (role && config.roles?.[role]) {
386
- const idx = config.roles[role].indexOf(claim);
387
- if (idx !== -1) {
388
- config.roles[role].splice(idx, 1);
389
- removed = true;
390
- }
391
- }
392
- if (!removed) {
393
- const target = user ? `user "${user}"` : `role "${role}"`;
394
- output.writeln();
395
- output.printError(`Claim "${claim}" not found on ${target}`);
396
- return { success: false, exitCode: 1 };
397
- }
398
- saveClaimsConfig(config, configPath);
399
- output.writeln();
400
- const target = user ? `user "${user}"` : `role "${role}"`;
401
- output.writeln(output.success(`Revoked "${claim}" from ${target}`));
402
- output.writeln(output.dim(`Saved to: ${configPath}`));
403
- return { success: true };
404
- }
405
- catch (error) {
406
- output.printError(`Failed to revoke claim: ${error.message}`);
407
- return { success: false, exitCode: 1 };
408
- }
409
- },
410
- };
411
- // Roles subcommand
412
- const rolesCommand = {
413
- name: 'roles',
414
- description: 'Manage roles and their claims',
415
- options: [
416
- { name: 'action', short: 'a', type: 'string', description: 'Action: list, create, delete, show', default: 'list' },
417
- { name: 'name', short: 'n', type: 'string', description: 'Role name' },
418
- ],
419
- examples: [
420
- { command: 'monomind claims roles', description: 'List all roles' },
421
- { command: 'monomind claims roles -a show -n admin', description: 'Show role details' },
422
- ],
423
- action: async (ctx) => {
424
- const action = ctx.flags.action || 'list';
425
- const name = ctx.flags.name;
426
- try {
427
- const { config, path: configPath } = loadClaimsConfig();
428
- if (action === 'list') {
429
- const roles = config.roles || {};
430
- const entries = Object.entries(roles);
431
- if (entries.length === 0) {
432
- output.writeln();
433
- output.writeln(output.dim('No roles defined.'));
434
- return { success: true };
435
- }
436
- output.writeln();
437
- output.writeln(output.bold('Roles'));
438
- output.printTable({
439
- columns: [
440
- { key: 'role', header: 'Role' },
441
- { key: 'count', header: 'Claims' },
442
- { key: 'claims', header: 'Claims List', width: 60 },
443
- ],
444
- data: entries.map(([roleName, claims]) => ({
445
- role: roleName,
446
- count: claims.length,
447
- claims: claims.join(', '),
448
- })),
449
- border: true,
450
- header: true,
451
- });
452
- output.writeln(output.dim(`Config: ${configPath}`));
453
- return { success: true };
454
- }
455
- if (action === 'show') {
456
- if (!name) {
457
- output.printError('Role name is required (use -n <name>)');
458
- return { success: false, exitCode: 1 };
459
- }
460
- const claims = config.roles?.[name];
461
- if (!claims) {
462
- output.printError(`Role "${name}" not found`);
463
- return { success: false, exitCode: 1 };
464
- }
465
- output.writeln();
466
- output.writeln(output.bold(`Role: ${name}`));
467
- output.writeln(output.dim('─'.repeat(40)));
468
- output.writeln(`Claims (${claims.length}):`);
469
- output.printList(claims);
470
- return { success: true };
471
- }
472
- if (action === 'create') {
473
- if (!name) {
474
- output.printError('Role name is required (use -n <name>)');
475
- return { success: false, exitCode: 1 };
476
- }
477
- if (!config.roles)
478
- config.roles = {};
479
- if (config.roles[name]) {
480
- output.printError(`Role "${name}" already exists`);
481
- return { success: false, exitCode: 1 };
482
- }
483
- config.roles[name] = [];
484
- saveClaimsConfig(config, configPath);
485
- output.writeln();
486
- output.writeln(output.success(`Created role "${name}"`));
487
- output.writeln(output.dim('Use "claims grant -c <claim> -r ' + name + '" to add claims.'));
488
- return { success: true };
489
- }
490
- if (action === 'delete') {
491
- if (!name) {
492
- output.printError('Role name is required (use -n <name>)');
493
- return { success: false, exitCode: 1 };
494
- }
495
- if (!config.roles?.[name]) {
496
- output.printError(`Role "${name}" not found`);
497
- return { success: false, exitCode: 1 };
498
- }
499
- delete config.roles[name];
500
- saveClaimsConfig(config, configPath);
501
- output.writeln();
502
- output.writeln(output.success(`Deleted role "${name}"`));
503
- return { success: true };
504
- }
505
- output.printError(`Unknown action "${action}". Use: list, create, delete, show`);
506
- return { success: false, exitCode: 1 };
507
- }
508
- catch (error) {
509
- output.printError(`Failed to manage roles: ${error.message}`);
510
- return { success: false, exitCode: 1 };
511
- }
512
- },
513
- };
514
- // Policies subcommand
515
- const policiesCommand = {
516
- name: 'policies',
517
- description: 'Manage claim policies',
518
- options: [
519
- { name: 'action', short: 'a', type: 'string', description: 'Action: list, create, delete', default: 'list' },
520
- { name: 'name', short: 'n', type: 'string', description: 'Policy name' },
521
- ],
522
- examples: [
523
- { command: 'monomind claims policies', description: 'List policies' },
524
- { command: 'monomind claims policies -a create -n rate-limit', description: 'Create policy' },
525
- ],
526
- action: async (ctx) => {
527
- const action = ctx.flags.action || 'list';
528
- const name = ctx.flags.name;
529
- try {
530
- const { config, path: configPath } = loadClaimsConfig();
531
- if (action === 'list') {
532
- output.writeln();
533
- output.writeln(output.bold('Policies'));
534
- output.writeln(output.dim('─'.repeat(50)));
535
- // Default claims as a policy
536
- const defaults = config.defaultClaims || [];
537
- output.writeln();
538
- output.writeln(output.bold('Default Policy'));
539
- if (defaults.length > 0) {
540
- output.printList(defaults);
541
- }
542
- else {
543
- output.writeln(output.dim(' (no default claims)'));
544
- }
545
- // Role-based policies
546
- const roles = config.roles || {};
547
- const entries = Object.entries(roles);
548
- if (entries.length > 0) {
549
- output.writeln();
550
- output.writeln(output.bold('Role-Based Policies'));
551
- output.printTable({
552
- columns: [
553
- { key: 'policy', header: 'Policy (Role)' },
554
- { key: 'count', header: 'Claims' },
555
- { key: 'preview', header: 'Preview', width: 50 },
556
- ],
557
- data: entries.map(([roleName, claims]) => ({
558
- policy: roleName,
559
- count: claims.length,
560
- preview: claims.slice(0, 4).join(', ') + (claims.length > 4 ? ', ...' : ''),
561
- })),
562
- border: true,
563
- header: true,
564
- });
565
- }
566
- output.writeln();
567
- output.writeln(output.dim(`Config: ${configPath}`));
568
- return { success: true };
569
- }
570
- if (action === 'create') {
571
- if (!name) {
572
- output.printError('Policy name is required (use -n <name>)');
573
- return { success: false, exitCode: 1 };
574
- }
575
- if (!config.roles)
576
- config.roles = {};
577
- if (config.roles[name]) {
578
- output.printError(`Policy "${name}" already exists`);
579
- return { success: false, exitCode: 1 };
580
- }
581
- config.roles[name] = [];
582
- saveClaimsConfig(config, configPath);
583
- output.writeln();
584
- output.writeln(output.success(`Created policy "${name}"`));
585
- output.writeln(output.dim('Use "claims grant -c <claim> -r ' + name + '" to add claims.'));
586
- return { success: true };
587
- }
588
- if (action === 'delete') {
589
- if (!name) {
590
- output.printError('Policy name is required (use -n <name>)');
591
- return { success: false, exitCode: 1 };
592
- }
593
- if (!config.roles?.[name]) {
594
- output.printError(`Policy "${name}" not found`);
595
- return { success: false, exitCode: 1 };
596
- }
597
- delete config.roles[name];
598
- saveClaimsConfig(config, configPath);
599
- output.writeln();
600
- output.writeln(output.success(`Deleted policy "${name}"`));
601
- return { success: true };
602
- }
603
- output.printError(`Unknown action "${action}". Use: list, create, delete`);
604
- return { success: false, exitCode: 1 };
605
- }
606
- catch (error) {
607
- output.printError(`Failed to manage policies: ${error.message}`);
608
- return { success: false, exitCode: 1 };
609
- }
610
- },
611
- };
612
- // Main claims command
613
- export const claimsCommand = {
614
- name: 'claims',
615
- description: 'Claims-based authorization, permissions, and access control',
616
- subcommands: [listCommand, checkCommand, grantCommand, revokeCommand, rolesCommand, policiesCommand],
617
- examples: [
618
- { command: 'monomind claims list', description: 'List all claims' },
619
- { command: 'monomind claims check -c swarm:create', description: 'Check permission' },
620
- { command: 'monomind claims grant -c agent:spawn -r developer', description: 'Grant claim' },
621
- ],
622
- action: async () => {
623
- output.writeln();
624
- output.writeln(output.bold('MonoMind Claims System'));
625
- output.writeln(output.dim('Fine-grained authorization and access control'));
626
- output.writeln();
627
- output.writeln('Subcommands:');
628
- output.printList([
629
- 'list - List claims and permissions',
630
- 'check - Check if a claim is granted',
631
- 'grant - Grant a claim to user or role',
632
- 'revoke - Revoke a claim',
633
- 'roles - Manage roles and their claims',
634
- 'policies - Manage claim policies',
635
- ]);
636
- output.writeln();
637
- output.writeln('Claim Types:');
638
- output.printList([
639
- 'swarm:* - Swarm operations (create, delete, scale)',
640
- 'agent:* - Agent operations (spawn, terminate)',
641
- 'memory:* - Memory operations (read, write, delete)',
642
- 'admin:* - Administrative operations',
643
- ]);
644
- output.writeln();
645
- output.writeln(output.dim('github.com/monoes/monomind'));
646
- return { success: true };
647
- },
648
- };
649
- export default claimsCommand;
650
- //# sourceMappingURL=claims.js.map