@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
@@ -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