monomind 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 (883) hide show
  1. package/README.md +13 -17
  2. package/package.json +16 -35
  3. package/packages/@monomind/cli/.claude/agents/github/issue-tracker.md +0 -2
  4. package/packages/@monomind/cli/.claude/agents/github/pr-manager.md +0 -2
  5. package/packages/@monomind/cli/.claude/agents/github/repo-architect.md +3 -11
  6. package/packages/@monomind/cli/.claude/agents/goal/goal-planner.md +0 -1
  7. package/packages/@monomind/cli/.claude/commands/github/issue-tracker.md +0 -2
  8. package/packages/@monomind/cli/.claude/commands/github/pr-manager.md +0 -2
  9. package/packages/@monomind/cli/.claude/commands/github/repo-architect.md +3 -10
  10. package/packages/@monomind/cli/.claude/commands/mastermind/help.md +3 -3
  11. package/packages/@monomind/cli/.claude/commands/workflows/README.md +0 -1
  12. package/packages/@monomind/cli/.claude/commands/workflows/workflow-create.md +0 -1
  13. package/packages/@monomind/cli/.claude/commands/workflows/workflow-execute.md +1 -3
  14. package/packages/@monomind/cli/.claude/commands/workflows/workflow-export.md +0 -2
  15. package/packages/@monomind/cli/.claude/helpers/handlers/agent-start-handler.cjs +18 -1
  16. package/packages/@monomind/cli/.claude/helpers/handlers/edit-handler.cjs +15 -0
  17. package/packages/@monomind/cli/.claude/helpers/handlers/gates-handler.cjs +2 -8
  18. package/packages/@monomind/cli/.claude/helpers/handlers/route-handler.cjs +149 -7
  19. package/packages/@monomind/cli/.claude/helpers/handlers/session-handler.cjs +47 -25
  20. package/packages/@monomind/cli/.claude/helpers/handlers/session-restore-handler.cjs +80 -43
  21. package/packages/@monomind/cli/.claude/helpers/handlers/task-handler.cjs +8 -4
  22. package/packages/@monomind/cli/.claude/helpers/hook-handler.cjs +69 -16
  23. package/packages/@monomind/cli/.claude/helpers/intelligence.cjs +100 -9
  24. package/packages/@monomind/cli/.claude/helpers/router.cjs +78 -5
  25. package/packages/@monomind/cli/.claude/helpers/skill-registry.json +0 -189
  26. package/packages/@monomind/cli/.claude/helpers/token-tracker.cjs +10 -0
  27. package/packages/@monomind/cli/.claude/skills/github-toolkit/SKILL.md +60 -0
  28. package/packages/@monomind/cli/.claude/skills/hive-mind-advanced/SKILL.md +0 -15
  29. package/packages/@monomind/cli/.claude/skills/hooks-automation/SKILL.md +0 -1
  30. package/packages/@monomind/cli/.claude/skills/mastermind-skills/_protocol.md +1 -1
  31. package/packages/@monomind/cli/.claude/skills/mastermind-skills/build.md +1 -2
  32. package/packages/@monomind/cli/.claude/skills/memory-toolkit/SKILL.md +75 -0
  33. package/packages/@monomind/cli/.claude/skills/specialagent/SKILL.md +2 -4
  34. package/packages/@monomind/cli/.claude/skills/swarm-advanced/SKILL.md +0 -1
  35. package/packages/@monomind/cli/README.md +13 -17
  36. package/packages/@monomind/cli/dist/src/autopilot-state.js +4 -5
  37. package/packages/@monomind/cli/dist/src/browser/dashboard/server.js +129 -2
  38. package/packages/@monomind/cli/dist/src/browser/dashboard/ui.html +214 -1764
  39. package/packages/@monomind/cli/dist/src/capabilities/index.d.ts +0 -2
  40. package/packages/@monomind/cli/dist/src/capabilities/index.js +0 -1
  41. package/packages/@monomind/cli/dist/src/commands/agent-lifecycle.js +2 -6
  42. package/packages/@monomind/cli/dist/src/commands/analyze.d.ts +0 -4
  43. package/packages/@monomind/cli/dist/src/commands/analyze.js +1 -29
  44. package/packages/@monomind/cli/dist/src/commands/browse-workflow.js +2 -2
  45. package/packages/@monomind/cli/dist/src/commands/completions.js +3 -22
  46. package/packages/@monomind/cli/dist/src/commands/config.js +0 -6
  47. package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.d.ts +12 -2
  48. package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.js +130 -22
  49. package/packages/@monomind/cli/dist/src/commands/doctor.js +6 -5
  50. package/packages/@monomind/cli/dist/src/commands/guidance.d.ts +5 -1
  51. package/packages/@monomind/cli/dist/src/commands/guidance.js +11 -556
  52. package/packages/@monomind/cli/dist/src/commands/hive-mind-comms.js +11 -4
  53. package/packages/@monomind/cli/dist/src/commands/hive-mind.d.ts +4 -4
  54. package/packages/@monomind/cli/dist/src/commands/hive-mind.js +9 -6
  55. package/packages/@monomind/cli/dist/src/commands/hooks-formatting.d.ts +1 -5
  56. package/packages/@monomind/cli/dist/src/commands/hooks-formatting.js +1 -18
  57. package/packages/@monomind/cli/dist/src/commands/hooks-workers.d.ts +1 -1
  58. package/packages/@monomind/cli/dist/src/commands/hooks-workers.js +82 -330
  59. package/packages/@monomind/cli/dist/src/commands/index.d.ts +0 -5
  60. package/packages/@monomind/cli/dist/src/commands/index.js +0 -45
  61. package/packages/@monomind/cli/dist/src/commands/init-wizard.js +1 -1
  62. package/packages/@monomind/cli/dist/src/commands/init.js +4 -24
  63. package/packages/@monomind/cli/dist/src/commands/neural-core.js +11 -11
  64. package/packages/@monomind/cli/dist/src/commands/neural-optimize.js +9 -11
  65. package/packages/@monomind/cli/dist/src/commands/neural-registry.js +10 -10
  66. package/packages/@monomind/cli/dist/src/commands/providers.js +90 -1
  67. package/packages/@monomind/cli/dist/src/commands/search-universal.d.ts +7 -1
  68. package/packages/@monomind/cli/dist/src/commands/search-universal.js +59 -5
  69. package/packages/@monomind/cli/dist/src/commands/security-cve.js +3 -5
  70. package/packages/@monomind/cli/dist/src/commands/session.js +143 -3
  71. package/packages/@monomind/cli/dist/src/commands/start.js +0 -18
  72. package/packages/@monomind/cli/dist/src/commands/swarm.js +112 -65
  73. package/packages/@monomind/cli/dist/src/consensus/audit-writer.js +43 -1
  74. package/packages/@monomind/cli/dist/src/consensus/tally.d.ts +19 -0
  75. package/packages/@monomind/cli/dist/src/consensus/tally.js +34 -0
  76. package/packages/@monomind/cli/dist/src/index.d.ts +3 -2
  77. package/packages/@monomind/cli/dist/src/index.js +9 -12
  78. package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +10 -14
  79. package/packages/@monomind/cli/dist/src/init/executor.js +39 -86
  80. package/packages/@monomind/cli/dist/src/init/settings-generator.js +0 -12
  81. package/packages/@monomind/cli/dist/src/init/statusline-generator.js +62 -0
  82. package/packages/@monomind/cli/dist/src/init/types.d.ts +2 -6
  83. package/packages/@monomind/cli/dist/src/init/types.js +0 -3
  84. package/packages/@monomind/cli/dist/src/knowledge/document-pipeline.js +18 -8
  85. package/packages/@monomind/cli/dist/src/mcp-client.js +0 -2
  86. package/packages/@monomind/cli/dist/src/mcp-server.js +12 -14
  87. package/packages/@monomind/cli/dist/src/mcp-tools/coherence/coherence-check.js +1 -19
  88. package/packages/@monomind/cli/dist/src/mcp-tools/coherence/types.d.ts +21 -20
  89. package/packages/@monomind/cli/dist/src/mcp-tools/coherence/types.js +3 -18
  90. package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.js +1 -7
  91. package/packages/@monomind/cli/dist/src/mcp-tools/graphify-tools.js +2 -2
  92. package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.js +7 -17
  93. package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.d.ts +8 -1
  94. package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +174 -38
  95. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-advanced.d.ts +18 -0
  96. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-advanced.js +25 -0
  97. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-intelligence.d.ts +4 -8
  98. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-intelligence.js +33 -482
  99. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-routing.d.ts +1 -0
  100. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-routing.js +51 -43
  101. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-synthesis.d.ts +31 -0
  102. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-synthesis.js +196 -0
  103. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +10 -8
  104. package/packages/@monomind/cli/dist/src/mcp-tools/index.d.ts +0 -1
  105. package/packages/@monomind/cli/dist/src/mcp-tools/index.js +0 -1
  106. package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +20 -29
  107. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.d.ts +6 -0
  108. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +78 -220
  109. package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.d.ts +9 -4
  110. package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.js +242 -506
  111. package/packages/@monomind/cli/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts +12 -12
  112. package/packages/@monomind/cli/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts +4 -4
  113. package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.js +103 -0
  114. package/packages/@monomind/cli/dist/src/memory/intelligence.d.ts +2 -1
  115. package/packages/@monomind/cli/dist/src/memory/intelligence.js +56 -43
  116. package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +14 -9
  117. package/packages/@monomind/cli/dist/src/memory/memory-read.js +1 -19
  118. package/packages/@monomind/cli/dist/src/orgrt/types.d.ts +847 -0
  119. package/packages/@monomind/cli/dist/src/orgrt/types.js +51 -0
  120. package/packages/@monomind/cli/dist/src/parser.js +31 -5
  121. package/packages/@monomind/cli/dist/src/suggest.js +1 -7
  122. package/packages/@monomind/cli/dist/src/transfer/store/discovery.d.ts +3 -2
  123. package/packages/@monomind/cli/dist/src/transfer/store/discovery.js +22 -70
  124. package/packages/@monomind/cli/dist/src/ui/collector.mjs +69 -44
  125. package/packages/@monomind/cli/dist/src/ui/dashboard.html +112 -25
  126. package/packages/@monomind/cli/dist/src/ui/orgs.html +54 -0
  127. package/packages/@monomind/cli/dist/src/ui/server.mjs +87 -12
  128. package/packages/@monomind/cli/dist/src/update/checker.js +0 -1
  129. package/packages/@monomind/cli/dist/src/utils/cosine-similarity.d.ts +22 -0
  130. package/packages/@monomind/cli/dist/src/utils/cosine-similarity.js +38 -0
  131. package/packages/@monomind/cli/dist/src/utils/input-guards.d.ts +51 -0
  132. package/packages/@monomind/cli/dist/src/utils/input-guards.js +223 -0
  133. package/packages/@monomind/cli/dist/src/utils/json-file.d.ts +33 -0
  134. package/packages/@monomind/cli/dist/src/utils/json-file.js +57 -0
  135. package/packages/@monomind/cli/package.json +11 -7
  136. package/packages/@monomind/cli/scripts/sync-claude-assets.sh +16 -20
  137. package/scripts/generate-agent-avatars.mjs +0 -8
  138. package/.claude/agents/architecture/system-design/arch-system-design.md +0 -54
  139. package/.claude/agents/consensus/crdt-synchronizer.md +0 -977
  140. package/.claude/agents/consensus/quorum-manager.md +0 -803
  141. package/.claude/agents/consensus/security-manager.md +0 -602
  142. package/.claude/agents/core/coder.md +0 -262
  143. package/.claude/agents/core/coordinator.md +0 -71
  144. package/.claude/agents/core/planner.md +0 -170
  145. package/.claude/agents/core/researcher.md +0 -197
  146. package/.claude/agents/core/reviewer.md +0 -327
  147. package/.claude/agents/core/tester.md +0 -318
  148. package/.claude/agents/design/design-monodesign.md +0 -121
  149. package/.claude/agents/engineering/engineering-ai-data-remediation-engineer.md +0 -212
  150. package/.claude/agents/engineering/engineering-ai-engineer.md +0 -165
  151. package/.claude/agents/engineering/engineering-autonomous-optimization-architect.md +0 -108
  152. package/.claude/agents/engineering/engineering-backend-architect.md +0 -254
  153. package/.claude/agents/engineering/engineering-code-reviewer.md +0 -95
  154. package/.claude/agents/engineering/engineering-data-engineer.md +0 -307
  155. package/.claude/agents/engineering/engineering-database-optimizer.md +0 -200
  156. package/.claude/agents/engineering/engineering-devops-automator.md +0 -430
  157. package/.claude/agents/engineering/engineering-embedded-firmware-engineer.md +0 -174
  158. package/.claude/agents/engineering/engineering-feishu-integration-developer.md +0 -607
  159. package/.claude/agents/engineering/engineering-frontend-developer.md +0 -249
  160. package/.claude/agents/engineering/engineering-git-workflow-master.md +0 -108
  161. package/.claude/agents/engineering/engineering-incident-response-commander.md +0 -482
  162. package/.claude/agents/engineering/engineering-mobile-app-builder.md +0 -499
  163. package/.claude/agents/engineering/engineering-rapid-prototyper.md +0 -463
  164. package/.claude/agents/engineering/engineering-security-engineer.md +0 -303
  165. package/.claude/agents/engineering/engineering-senior-developer.md +0 -195
  166. package/.claude/agents/engineering/engineering-software-architect.md +0 -100
  167. package/.claude/agents/engineering/engineering-solidity-smart-contract-engineer.md +0 -528
  168. package/.claude/agents/engineering/engineering-sre.md +0 -114
  169. package/.claude/agents/engineering/engineering-technical-writer.md +0 -412
  170. package/.claude/agents/engineering/engineering-threat-detection-engineer.md +0 -540
  171. package/.claude/agents/engineering/engineering-wechat-mini-program-developer.md +0 -351
  172. package/.claude/agents/generated/case-analyst.md +0 -50
  173. package/.claude/agents/generated/channel-intelligence-director.md +0 -87
  174. package/.claude/agents/generated/chief-growth-officer.md +0 -88
  175. package/.claude/agents/generated/churn-analyst.md +0 -53
  176. package/.claude/agents/generated/code-reviewer.md +0 -55
  177. package/.claude/agents/generated/code-validator.md +0 -57
  178. package/.claude/agents/generated/complexity-scanner.md +0 -56
  179. package/.claude/agents/generated/content-seo-strategist.md +0 -90
  180. package/.claude/agents/generated/copy-editor.md +0 -45
  181. package/.claude/agents/generated/court-reporter.md +0 -50
  182. package/.claude/agents/generated/defender.md +0 -51
  183. package/.claude/agents/generated/devbot-orchestrator.md +0 -58
  184. package/.claude/agents/generated/devbot-planner.md +0 -63
  185. package/.claude/agents/generated/developer-community-strategist.md +0 -91
  186. package/.claude/agents/generated/editor-in-chief.md +0 -45
  187. package/.claude/agents/generated/fact-checker.md +0 -45
  188. package/.claude/agents/generated/impact-assessor.md +0 -54
  189. package/.claude/agents/generated/judge.md +0 -51
  190. package/.claude/agents/generated/outreach-partnership-strategist.md +0 -90
  191. package/.claude/agents/generated/prosecutor.md +0 -51
  192. package/.claude/agents/generated/reporter.md +0 -45
  193. package/.claude/agents/generated/social-media-strategist.md +0 -91
  194. package/.claude/agents/generated/video-visual-strategist.md +0 -90
  195. package/.claude/agents/github/code-review-swarm.md +0 -557
  196. package/.claude/agents/github/github-modes.md +0 -154
  197. package/.claude/agents/github/issue-tracker.md +0 -299
  198. package/.claude/agents/github/multi-repo-swarm.md +0 -525
  199. package/.claude/agents/github/pr-manager.md +0 -163
  200. package/.claude/agents/github/project-board-sync.md +0 -478
  201. package/.claude/agents/github/release-manager.md +0 -296
  202. package/.claude/agents/github/repo-architect.md +0 -359
  203. package/.claude/agents/github/swarm-issue.md +0 -548
  204. package/.claude/agents/github/swarm-pr.md +0 -427
  205. package/.claude/agents/github/sync-coordinator.md +0 -355
  206. package/.claude/agents/github/workflow-automation.md +0 -640
  207. package/.claude/agents/goal/goal-planner.md +0 -168
  208. package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +0 -129
  209. package/.claude/agents/hive-mind/queen-coordinator.md +0 -202
  210. package/.claude/agents/hive-mind/scout-explorer.md +0 -241
  211. package/.claude/agents/hive-mind/swarm-memory-manager.md +0 -192
  212. package/.claude/agents/hive-mind/worker-specialist.md +0 -216
  213. package/.claude/agents/marketing/marketing-competitive-content.md +0 -155
  214. package/.claude/agents/marketing/marketing-cro-specialist.md +0 -147
  215. package/.claude/agents/marketing/marketing-email-specialist.md +0 -90
  216. package/.claude/agents/marketing/marketing-launch-strategist.md +0 -129
  217. package/.claude/agents/marketing/marketing-pricing-strategist.md +0 -127
  218. package/.claude/agents/optimization/benchmark-suite.md +0 -665
  219. package/.claude/agents/optimization/load-balancer.md +0 -431
  220. package/.claude/agents/optimization/performance-monitor.md +0 -672
  221. package/.claude/agents/optimization/resource-allocator.md +0 -674
  222. package/.claude/agents/optimization/topology-optimizer.md +0 -808
  223. package/.claude/agents/reengineer-squad/boss.md +0 -113
  224. package/.claude/agents/reengineer-squad/critic-architect.md +0 -132
  225. package/.claude/agents/reengineer-squad/git-manager.md +0 -145
  226. package/.claude/agents/reengineer-squad/idea-generator.md +0 -95
  227. package/.claude/agents/reengineer-squad/implementer.md +0 -112
  228. package/.claude/agents/reengineer-squad/integration-planner.md +0 -112
  229. package/.claude/agents/reengineer-squad/source-analyst.md +0 -103
  230. package/.claude/agents/reengineer-squad/target-analyst.md +0 -118
  231. package/.claude/agents/reengineer-squad/tester.md +0 -105
  232. package/.claude/agents/schemas/architecture-output.json +0 -43
  233. package/.claude/agents/schemas/code-review-output.json +0 -28
  234. package/.claude/agents/schemas/generic-task-input.json +0 -12
  235. package/.claude/agents/schemas/implementation-output.json +0 -18
  236. package/.claude/agents/schemas/research-output.json +0 -31
  237. package/.claude/agents/schemas/security-audit-output.json +0 -29
  238. package/.claude/agents/schemas/test-report-output.json +0 -29
  239. package/.claude/agents/sparc/architecture.md +0 -453
  240. package/.claude/agents/sparc/pseudocode.md +0 -299
  241. package/.claude/agents/sparc/refinement.md +0 -504
  242. package/.claude/agents/sparc/specification.md +0 -258
  243. package/.claude/agents/specialists/integration-architect.md +0 -94
  244. package/.claude/agents/specialized/agentic-identity-trust.md +0 -388
  245. package/.claude/agents/specialized/agents-orchestrator.md +0 -368
  246. package/.claude/agents/specialized/automation-governance-architect.md +0 -217
  247. package/.claude/agents/specialized/blockchain-security-auditor.md +0 -497
  248. package/.claude/agents/specialized/compliance-auditor.md +0 -159
  249. package/.claude/agents/specialized/identity-graph-operator.md +0 -261
  250. package/.claude/agents/specialized/lsp-index-engineer.md +0 -315
  251. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +0 -89
  252. package/.claude/agents/specialized/specialized-cultural-intelligence-strategist.md +0 -89
  253. package/.claude/agents/specialized/specialized-developer-advocate.md +0 -318
  254. package/.claude/agents/specialized/specialized-document-generator.md +0 -56
  255. package/.claude/agents/specialized/specialized-mcp-builder.md +0 -64
  256. package/.claude/agents/specialized/specialized-model-qa.md +0 -489
  257. package/.claude/agents/specialized/specialized-workflow-architect.md +0 -595
  258. package/.claude/agents/specialized/zk-steward.md +0 -212
  259. package/.claude/agents/swarm/mesh-coordinator.md +0 -363
  260. package/.claude/agents/templates/automation-smart-agent.md +0 -185
  261. package/.claude/agents/templates/coordinator-swarm-init.md +0 -83
  262. package/.claude/agents/templates/implementer-sparc-coder.md +0 -231
  263. package/.claude/agents/testing/production-validator.md +0 -375
  264. package/.claude/agents/testing/tdd-london-swarm.md +0 -241
  265. package/.claude/agents/testing/testing-accessibility-auditor.md +0 -322
  266. package/.claude/agents/testing/testing-api-tester.md +0 -307
  267. package/.claude/agents/testing/testing-evidence-collector.md +0 -213
  268. package/.claude/agents/testing/testing-performance-benchmarker.md +0 -269
  269. package/.claude/agents/testing/testing-test-results-analyzer.md +0 -306
  270. package/.claude/agents/testing/testing-tool-evaluator.md +0 -395
  271. package/.claude/agents/testing/testing-workflow-optimizer.md +0 -451
  272. package/.claude/commands/agents/README.md +0 -14
  273. package/.claude/commands/agents/agent-capabilities.md +0 -25
  274. package/.claude/commands/agents/agent-coordination.md +0 -32
  275. package/.claude/commands/agents/agent-spawning.md +0 -32
  276. package/.claude/commands/agents/agent-types.md +0 -30
  277. package/.claude/commands/analysis/README.md +0 -18
  278. package/.claude/commands/analysis/bottleneck-detect.md +0 -69
  279. package/.claude/commands/analysis/performance-bottlenecks.md +0 -59
  280. package/.claude/commands/analysis/performance-report.md +0 -52
  281. package/.claude/commands/analysis/token-usage.md +0 -47
  282. package/.claude/commands/automation/README.md +0 -19
  283. package/.claude/commands/automation/auto-agent.md +0 -86
  284. package/.claude/commands/automation/self-healing.md +0 -108
  285. package/.claude/commands/automation/session-memory.md +0 -89
  286. package/.claude/commands/automation/smart-agents.md +0 -81
  287. package/.claude/commands/automation/smart-spawn.md +0 -66
  288. package/.claude/commands/automation/workflow-select.md +0 -60
  289. package/.claude/commands/coordination/README.md +0 -13
  290. package/.claude/commands/coordination/agent-spawn.md +0 -69
  291. package/.claude/commands/coordination/swarm-init.md +0 -82
  292. package/.claude/commands/coordination/task-orchestrate.md +0 -79
  293. package/.claude/commands/github/README.md +0 -24
  294. package/.claude/commands/github/github-modes.md +0 -151
  295. package/.claude/commands/github/issue-tracker.md +0 -293
  296. package/.claude/commands/github/pr-manager.md +0 -173
  297. package/.claude/commands/github/release-manager.md +0 -343
  298. package/.claude/commands/github/repo-architect.md +0 -379
  299. package/.claude/commands/github/sync-coordinator.md +0 -297
  300. package/.claude/commands/hive-mind/README.md +0 -42
  301. package/.claude/commands/hive-mind/hive-mind-consensus.md +0 -72
  302. package/.claude/commands/hive-mind/hive-mind-init.md +0 -68
  303. package/.claude/commands/hive-mind/hive-mind-memory.md +0 -73
  304. package/.claude/commands/hive-mind/hive-mind-spawn.md +0 -82
  305. package/.claude/commands/hive-mind/hive-mind-status.md +0 -56
  306. package/.claude/commands/hive-mind/hive-mind-stop.md +0 -55
  307. package/.claude/commands/hive-mind/hive-mind.md +0 -87
  308. package/.claude/commands/hooks/README.md +0 -66
  309. package/.claude/commands/hooks/overview.md +0 -112
  310. package/.claude/commands/hooks/post-edit.md +0 -78
  311. package/.claude/commands/hooks/post-task.md +0 -62
  312. package/.claude/commands/hooks/pre-edit.md +0 -81
  313. package/.claude/commands/hooks/pre-task.md +0 -73
  314. package/.claude/commands/hooks/session-end.md +0 -82
  315. package/.claude/commands/hooks/setup.md +0 -132
  316. package/.claude/commands/mastermind/_repeat.md +0 -492
  317. package/.claude/commands/mastermind/_taskfile.md +0 -232
  318. package/.claude/commands/mastermind/adr.md +0 -9
  319. package/.claude/commands/mastermind/approve.md +0 -91
  320. package/.claude/commands/mastermind/architect.md +0 -52
  321. package/.claude/commands/mastermind/autodev.md +0 -28
  322. package/.claude/commands/mastermind/brain.md +0 -99
  323. package/.claude/commands/mastermind/budget.md +0 -5
  324. package/.claude/commands/mastermind/build.md +0 -23
  325. package/.claude/commands/mastermind/code-review.md +0 -314
  326. package/.claude/commands/mastermind/content.md +0 -23
  327. package/.claude/commands/mastermind/createorg.md +0 -136
  328. package/.claude/commands/mastermind/createtask.md +0 -372
  329. package/.claude/commands/mastermind/debug.md +0 -19
  330. package/.claude/commands/mastermind/design.md +0 -17
  331. package/.claude/commands/mastermind/do.md +0 -525
  332. package/.claude/commands/mastermind/execute.md +0 -17
  333. package/.claude/commands/mastermind/finance.md +0 -23
  334. package/.claude/commands/mastermind/finish.md +0 -17
  335. package/.claude/commands/mastermind/graph-status.md +0 -5
  336. package/.claude/commands/mastermind/help.md +0 -115
  337. package/.claude/commands/mastermind/idea.md +0 -23
  338. package/.claude/commands/mastermind/ideate.md +0 -258
  339. package/.claude/commands/mastermind/improve.md +0 -342
  340. package/.claude/commands/mastermind/loops.md +0 -5
  341. package/.claude/commands/mastermind/marketing.md +0 -23
  342. package/.claude/commands/mastermind/master.md +0 -1124
  343. package/.claude/commands/mastermind/memory.md +0 -227
  344. package/.claude/commands/mastermind/okf-export.md +0 -14
  345. package/.claude/commands/mastermind/okf-import.md +0 -15
  346. package/.claude/commands/mastermind/ops.md +0 -23
  347. package/.claude/commands/mastermind/orgs.md +0 -18
  348. package/.claude/commands/mastermind/orgstatus.md +0 -56
  349. package/.claude/commands/mastermind/plan.md +0 -23
  350. package/.claude/commands/mastermind/receive-review.md +0 -17
  351. package/.claude/commands/mastermind/references/antigravity-tools.md +0 -60
  352. package/.claude/commands/mastermind/references/claude-code-tools.md +0 -50
  353. package/.claude/commands/mastermind/references/codex-tools.md +0 -64
  354. package/.claude/commands/mastermind/references/copilot-tools.md +0 -49
  355. package/.claude/commands/mastermind/references/gemini-tools.md +0 -63
  356. package/.claude/commands/mastermind/references/pi-tools.md +0 -28
  357. package/.claude/commands/mastermind/release.md +0 -23
  358. package/.claude/commands/mastermind/repeat.md +0 -254
  359. package/.claude/commands/mastermind/research.md +0 -23
  360. package/.claude/commands/mastermind/review.md +0 -34
  361. package/.claude/commands/mastermind/runorg.md +0 -153
  362. package/.claude/commands/mastermind/sales.md +0 -23
  363. package/.claude/commands/mastermind/skill-builder.md +0 -17
  364. package/.claude/commands/mastermind/specialagents.md +0 -122
  365. package/.claude/commands/mastermind/stoporg.md +0 -75
  366. package/.claude/commands/mastermind/swarm.md +0 -158
  367. package/.claude/commands/mastermind/taskdev.md +0 -23
  368. package/.claude/commands/mastermind/tdd.md +0 -19
  369. package/.claude/commands/mastermind/techport.md +0 -27
  370. package/.claude/commands/mastermind/understand.md +0 -136
  371. package/.claude/commands/mastermind/verify.md +0 -19
  372. package/.claude/commands/mastermind/worktree.md +0 -17
  373. package/.claude/commands/mastermind.md +0 -121
  374. package/.claude/commands/memory/README.md +0 -79
  375. package/.claude/commands/memory/memory-search.md +0 -77
  376. package/.claude/commands/monitoring/README.md +0 -69
  377. package/.claude/commands/monitoring/agent-metrics.md +0 -65
  378. package/.claude/commands/monitoring/agents.md +0 -71
  379. package/.claude/commands/monitoring/status.md +0 -108
  380. package/.claude/commands/monobrowse.md +0 -21
  381. package/.claude/commands/monoes/README.md +0 -30
  382. package/.claude/commands/monoes/install.md +0 -163
  383. package/.claude/commands/monoes/monoagent.md +0 -148
  384. package/.claude/commands/monoes/monoclip.md +0 -64
  385. package/.claude/commands/monoes/monotask.md +0 -137
  386. package/.claude/commands/monograph/README.md +0 -102
  387. package/.claude/commands/monograph/monograph-build.md +0 -79
  388. package/.claude/commands/monograph/monograph-search.md +0 -96
  389. package/.claude/commands/monograph/monograph-stats.md +0 -53
  390. package/.claude/commands/monograph/monograph-watch.md +0 -63
  391. package/.claude/commands/monograph/monograph-wiki.md +0 -91
  392. package/.claude/commands/optimization/auto-topology.md +0 -85
  393. package/.claude/commands/optimization/performance-optimize.md +0 -79
  394. package/.claude/commands/pair/README.md +0 -79
  395. package/.claude/commands/pair/examples.md +0 -156
  396. package/.claude/commands/pair/modes.md +0 -122
  397. package/.claude/commands/pair/session.md +0 -124
  398. package/.claude/commands/sparc/analyzer.md +0 -35
  399. package/.claude/commands/sparc/architect.md +0 -36
  400. package/.claude/commands/sparc/ask.md +0 -56
  401. package/.claude/commands/sparc/batch-executor.md +0 -37
  402. package/.claude/commands/sparc/code.md +0 -48
  403. package/.claude/commands/sparc/coder.md +0 -37
  404. package/.claude/commands/sparc/debug.md +0 -42
  405. package/.claude/commands/sparc/debugger.md +0 -37
  406. package/.claude/commands/sparc/designer.md +0 -36
  407. package/.claude/commands/sparc/devops.md +0 -68
  408. package/.claude/commands/sparc/docs-writer.md +0 -39
  409. package/.claude/commands/sparc/documenter.md +0 -37
  410. package/.claude/commands/sparc/innovator.md +0 -37
  411. package/.claude/commands/sparc/integration.md +0 -42
  412. package/.claude/commands/sparc/mcp.md +0 -76
  413. package/.claude/commands/sparc/memory-manager.md +0 -57
  414. package/.claude/commands/sparc/optimizer.md +0 -37
  415. package/.claude/commands/sparc/orchestrator.md +0 -70
  416. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +0 -42
  417. package/.claude/commands/sparc/refinement-optimization-mode.md +0 -42
  418. package/.claude/commands/sparc/researcher.md +0 -37
  419. package/.claude/commands/sparc/reviewer.md +0 -37
  420. package/.claude/commands/sparc/security-review.md +0 -39
  421. package/.claude/commands/sparc/sparc-modes.md +0 -120
  422. package/.claude/commands/sparc/sparc.md +0 -71
  423. package/.claude/commands/sparc/spec-pseudocode.md +0 -39
  424. package/.claude/commands/sparc/supabase-admin.md +0 -301
  425. package/.claude/commands/sparc/swarm-coordinator.md +0 -50
  426. package/.claude/commands/sparc/tdd.md +0 -37
  427. package/.claude/commands/sparc/tester.md +0 -37
  428. package/.claude/commands/sparc/tutorial.md +0 -38
  429. package/.claude/commands/sparc/workflow-manager.md +0 -37
  430. package/.claude/commands/sparc.md +0 -112
  431. package/.claude/commands/stream-chain/pipeline.md +0 -116
  432. package/.claude/commands/stream-chain/run.md +0 -156
  433. package/.claude/commands/swarm/README.md +0 -40
  434. package/.claude/commands/swarm/analysis.md +0 -73
  435. package/.claude/commands/swarm/development.md +0 -72
  436. package/.claude/commands/swarm/examples.md +0 -103
  437. package/.claude/commands/swarm/maintenance.md +0 -75
  438. package/.claude/commands/swarm/optimization.md +0 -84
  439. package/.claude/commands/swarm/research.md +0 -76
  440. package/.claude/commands/swarm/swarm.md +0 -79
  441. package/.claude/commands/swarm/testing.md +0 -80
  442. package/.claude/commands/tokens.md +0 -18
  443. package/.claude/commands/truth/start.md +0 -121
  444. package/.claude/commands/ts.md +0 -14
  445. package/.claude/commands/workflows/README.md +0 -65
  446. package/.claude/commands/workflows/development.md +0 -86
  447. package/.claude/commands/workflows/research.md +0 -89
  448. package/.claude/commands/workflows/workflow-create.md +0 -84
  449. package/.claude/commands/workflows/workflow-execute.md +0 -103
  450. package/.claude/commands/workflows/workflow-export.md +0 -90
  451. package/.claude/helpers/control-start.cjs +0 -184
  452. package/.claude/helpers/event-logger.cjs +0 -155
  453. package/.claude/helpers/extras-registry.json +0 -5141
  454. package/.claude/helpers/graphify-freshen.cjs +0 -140
  455. package/.claude/helpers/handlers/adr-draft-handler.cjs +0 -78
  456. package/.claude/helpers/handlers/agent-start-handler.cjs +0 -83
  457. package/.claude/helpers/handlers/budget-status-handler.cjs +0 -14
  458. package/.claude/helpers/handlers/capture-handler.cjs +0 -583
  459. package/.claude/helpers/handlers/compact-handler.cjs +0 -35
  460. package/.claude/helpers/handlers/edit-handler.cjs +0 -145
  461. package/.claude/helpers/handlers/gates-handler.cjs +0 -138
  462. package/.claude/helpers/handlers/graph-status-handler.cjs +0 -45
  463. package/.claude/helpers/handlers/loops-status-handler.cjs +0 -48
  464. package/.claude/helpers/handlers/route-handler.cjs +0 -381
  465. package/.claude/helpers/handlers/session-handler.cjs +0 -234
  466. package/.claude/helpers/handlers/session-restore-handler.cjs +0 -375
  467. package/.claude/helpers/handlers/stats-handler.cjs +0 -14
  468. package/.claude/helpers/handlers/task-handler.cjs +0 -206
  469. package/.claude/helpers/hook-handler.cjs +0 -765
  470. package/.claude/helpers/intelligence.cjs +0 -338
  471. package/.claude/helpers/learning-service.mjs +0 -61
  472. package/.claude/helpers/loop-tracker.cjs +0 -119
  473. package/.claude/helpers/mastermind-activate.cjs +0 -35
  474. package/.claude/helpers/memory-palace.cjs +0 -461
  475. package/.claude/helpers/memory.cjs +0 -193
  476. package/.claude/helpers/metrics-db.mjs +0 -87
  477. package/.claude/helpers/monolean-activate.cjs +0 -30
  478. package/.claude/helpers/monolean-config.cjs +0 -76
  479. package/.claude/helpers/monolean-instructions.cjs +0 -109
  480. package/.claude/helpers/monolean-propagate.cjs +0 -13
  481. package/.claude/helpers/monolean-tracker.cjs +0 -18
  482. package/.claude/helpers/router.cjs +0 -364
  483. package/.claude/helpers/session.cjs +0 -140
  484. package/.claude/helpers/skill-registry.json +0 -1043
  485. package/.claude/helpers/statusline.cjs +0 -1344
  486. package/.claude/helpers/toggle-statusline.cjs +0 -73
  487. package/.claude/helpers/token-tracker.cjs +0 -934
  488. package/.claude/helpers/utils/micro-agents.cjs +0 -354
  489. package/.claude/helpers/utils/monograph.cjs +0 -480
  490. package/.claude/helpers/utils/telemetry.cjs +0 -146
  491. package/.claude/mcp.json +0 -3
  492. package/.claude/scheduled_tasks.lock +0 -1
  493. package/.claude/settings.json +0 -475
  494. package/.claude/skills/.monomind/data/ranked-context.json +0 -5
  495. package/.claude/skills/.monomind/sessions/current.json +0 -13
  496. package/.claude/skills/.monomind/sessions/session-1777829336455.json +0 -15
  497. package/.claude/skills/.monomind/sessions/session-1777831614725.json +0 -15
  498. package/.claude/skills/.monomind/sessions/session-1777832095857.json +0 -15
  499. package/.claude/skills/.monomind/sessions/session-1777839814183.json +0 -15
  500. package/.claude/skills/.monomind/sessions/session-1777841847131.json +0 -15
  501. package/.claude/skills/.monomind/sessions/session-1777843309463.json +0 -15
  502. package/.claude/skills/.monomind/sessions/session-1777880867159.json +0 -15
  503. package/.claude/skills/.monomind/sessions/session-1777881884593.json +0 -15
  504. package/.claude/skills/.monomind/sessions/session-1777884090471.json +0 -15
  505. package/.claude/skills/.monomind/sessions/session-1777884808221.json +0 -15
  506. package/.claude/skills/.monomind/sessions/session-1777885672155.json +0 -15
  507. package/.claude/skills/.monomind/sessions/session-1777886852818.json +0 -15
  508. package/.claude/skills/.monomind/sessions/session-1777896532690.json +0 -15
  509. package/.claude/skills/agent-browser-testing/SKILL.md +0 -964
  510. package/.claude/skills/agentic-jujutsu/SKILL.md +0 -645
  511. package/.claude/skills/github-issue-triage/SKILL.md +0 -354
  512. package/.claude/skills/github-repo-recap/SKILL.md +0 -207
  513. package/.claude/skills/hive-mind-advanced/SKILL.md +0 -709
  514. package/.claude/skills/hooks-automation/SKILL.md +0 -1193
  515. package/.claude/skills/mastermind-skills/_agent-select.md +0 -132
  516. package/.claude/skills/mastermind-skills/_delegation.md +0 -83
  517. package/.claude/skills/mastermind-skills/_intake.md +0 -83
  518. package/.claude/skills/mastermind-skills/_protocol.md +0 -404
  519. package/.claude/skills/mastermind-skills/_repeat.md +0 -171
  520. package/.claude/skills/mastermind-skills/access.md +0 -236
  521. package/.claude/skills/mastermind-skills/activity.md +0 -191
  522. package/.claude/skills/mastermind-skills/adapter-manager.md +0 -259
  523. package/.claude/skills/mastermind-skills/adapters.md +0 -204
  524. package/.claude/skills/mastermind-skills/agent-detail.md +0 -242
  525. package/.claude/skills/mastermind-skills/agents.md +0 -178
  526. package/.claude/skills/mastermind-skills/approval-detail.md +0 -259
  527. package/.claude/skills/mastermind-skills/approve.md +0 -188
  528. package/.claude/skills/mastermind-skills/architect.md +0 -862
  529. package/.claude/skills/mastermind-skills/autodev.md +0 -360
  530. package/.claude/skills/mastermind-skills/backup.md +0 -197
  531. package/.claude/skills/mastermind-skills/bootstrap.md +0 -190
  532. package/.claude/skills/mastermind-skills/budgets.md +0 -237
  533. package/.claude/skills/mastermind-skills/build.md +0 -170
  534. package/.claude/skills/mastermind-skills/code-quality-reviewer-prompt.md +0 -60
  535. package/.claude/skills/mastermind-skills/companies.md +0 -256
  536. package/.claude/skills/mastermind-skills/content.md +0 -197
  537. package/.claude/skills/mastermind-skills/costs.md +0 -151
  538. package/.claude/skills/mastermind-skills/createorg.md +0 -862
  539. package/.claude/skills/mastermind-skills/debug.md +0 -232
  540. package/.claude/skills/mastermind-skills/design.md +0 -189
  541. package/.claude/skills/mastermind-skills/diagnose.md +0 -249
  542. package/.claude/skills/mastermind-skills/env.md +0 -198
  543. package/.claude/skills/mastermind-skills/environments.md +0 -250
  544. package/.claude/skills/mastermind-skills/execute.md +0 -104
  545. package/.claude/skills/mastermind-skills/export.md +0 -333
  546. package/.claude/skills/mastermind-skills/finance.md +0 -166
  547. package/.claude/skills/mastermind-skills/finish.md +0 -251
  548. package/.claude/skills/mastermind-skills/goal-detail.md +0 -255
  549. package/.claude/skills/mastermind-skills/goals.md +0 -149
  550. package/.claude/skills/mastermind-skills/heartbeat.md +0 -164
  551. package/.claude/skills/mastermind-skills/idea.md +0 -1142
  552. package/.claude/skills/mastermind-skills/implementer-prompt.md +0 -109
  553. package/.claude/skills/mastermind-skills/import.md +0 -281
  554. package/.claude/skills/mastermind-skills/inbox.md +0 -214
  555. package/.claude/skills/mastermind-skills/instance-settings.md +0 -315
  556. package/.claude/skills/mastermind-skills/instance.md +0 -233
  557. package/.claude/skills/mastermind-skills/invite-landing.md +0 -227
  558. package/.claude/skills/mastermind-skills/invites.md +0 -254
  559. package/.claude/skills/mastermind-skills/issue-detail.md +0 -291
  560. package/.claude/skills/mastermind-skills/issues.md +0 -235
  561. package/.claude/skills/mastermind-skills/join-queue.md +0 -170
  562. package/.claude/skills/mastermind-skills/liveness.md +0 -392
  563. package/.claude/skills/mastermind-skills/marketing.md +0 -228
  564. package/.claude/skills/mastermind-skills/memory.md +0 -321
  565. package/.claude/skills/mastermind-skills/monitor.md +0 -1284
  566. package/.claude/skills/mastermind-skills/monotask.md +0 -350
  567. package/.claude/skills/mastermind-skills/my-issues.md +0 -146
  568. package/.claude/skills/mastermind-skills/new-agent.md +0 -241
  569. package/.claude/skills/mastermind-skills/ops.md +0 -168
  570. package/.claude/skills/mastermind-skills/org-chart.md +0 -209
  571. package/.claude/skills/mastermind-skills/org-settings.md +0 -254
  572. package/.claude/skills/mastermind-skills/orgs.md +0 -98
  573. package/.claude/skills/mastermind-skills/orgstatus.md +0 -194
  574. package/.claude/skills/mastermind-skills/plan-to-tasks.md +0 -136
  575. package/.claude/skills/mastermind-skills/plan.md +0 -198
  576. package/.claude/skills/mastermind-skills/plugin-manager.md +0 -241
  577. package/.claude/skills/mastermind-skills/plugin-settings.md +0 -273
  578. package/.claude/skills/mastermind-skills/plugins.md +0 -190
  579. package/.claude/skills/mastermind-skills/profile.md +0 -187
  580. package/.claude/skills/mastermind-skills/project-detail.md +0 -249
  581. package/.claude/skills/mastermind-skills/project-workspace.md +0 -244
  582. package/.claude/skills/mastermind-skills/projects.md +0 -164
  583. package/.claude/skills/mastermind-skills/receive-review.md +0 -213
  584. package/.claude/skills/mastermind-skills/references/copywriting-frameworks.md +0 -181
  585. package/.claude/skills/mastermind-skills/references/persuasion-psychology.md +0 -158
  586. package/.claude/skills/mastermind-skills/release.md +0 -168
  587. package/.claude/skills/mastermind-skills/research.md +0 -168
  588. package/.claude/skills/mastermind-skills/review.md +0 -233
  589. package/.claude/skills/mastermind-skills/routine-detail.md +0 -253
  590. package/.claude/skills/mastermind-skills/routines.md +0 -203
  591. package/.claude/skills/mastermind-skills/runorg.md +0 -714
  592. package/.claude/skills/mastermind-skills/sales.md +0 -170
  593. package/.claude/skills/mastermind-skills/search.md +0 -186
  594. package/.claude/skills/mastermind-skills/secrets.md +0 -199
  595. package/.claude/skills/mastermind-skills/skill-builder.md +0 -274
  596. package/.claude/skills/mastermind-skills/skills.md +0 -156
  597. package/.claude/skills/mastermind-skills/spec-reviewer-prompt.md +0 -63
  598. package/.claude/skills/mastermind-skills/stoporg.md +0 -138
  599. package/.claude/skills/mastermind-skills/taskdev.md +0 -307
  600. package/.claude/skills/mastermind-skills/tasks.md +0 -149
  601. package/.claude/skills/mastermind-skills/tdd.md +0 -394
  602. package/.claude/skills/mastermind-skills/techport.md +0 -777
  603. package/.claude/skills/mastermind-skills/threads.md +0 -259
  604. package/.claude/skills/mastermind-skills/tree-control.md +0 -250
  605. package/.claude/skills/mastermind-skills/verify.md +0 -196
  606. package/.claude/skills/mastermind-skills/wiki.md +0 -314
  607. package/.claude/skills/mastermind-skills/workspace-detail.md +0 -317
  608. package/.claude/skills/mastermind-skills/workspaces.md +0 -261
  609. package/.claude/skills/mastermind-skills/worktree.md +0 -215
  610. package/.claude/skills/monodesign/SKILL.md +0 -333
  611. package/.claude/skills/monodesign/adapt.md +0 -53
  612. package/.claude/skills/monodesign/agents/monodesign-asset-producer.md +0 -100
  613. package/.claude/skills/monodesign/animate.md +0 -65
  614. package/.claude/skills/monodesign/audit.md +0 -89
  615. package/.claude/skills/monodesign/bolder.md +0 -50
  616. package/.claude/skills/monodesign/clarify.md +0 -64
  617. package/.claude/skills/monodesign/colorize.md +0 -68
  618. package/.claude/skills/monodesign/craft.md +0 -51
  619. package/.claude/skills/monodesign/critique.md +0 -66
  620. package/.claude/skills/monodesign/delight.md +0 -47
  621. package/.claude/skills/monodesign/distill.md +0 -56
  622. package/.claude/skills/monodesign/document.md +0 -83
  623. package/.claude/skills/monodesign/extract.md +0 -74
  624. package/.claude/skills/monodesign/harden.md +0 -65
  625. package/.claude/skills/monodesign/live.md +0 -59
  626. package/.claude/skills/monodesign/onboard.md +0 -50
  627. package/.claude/skills/monodesign/optimize.md +0 -64
  628. package/.claude/skills/monodesign/overdrive.md +0 -56
  629. package/.claude/skills/monodesign/polish.md +0 -68
  630. package/.claude/skills/monodesign/quieter.md +0 -57
  631. package/.claude/skills/monodesign/reference/adapt.md +0 -190
  632. package/.claude/skills/monodesign/reference/animate.md +0 -175
  633. package/.claude/skills/monodesign/reference/antipatterns-catalog.md +0 -359
  634. package/.claude/skills/monodesign/reference/audit.md +0 -133
  635. package/.claude/skills/monodesign/reference/bolder.md +0 -113
  636. package/.claude/skills/monodesign/reference/brand-workflow.md +0 -180
  637. package/.claude/skills/monodesign/reference/brand.md +0 -114
  638. package/.claude/skills/monodesign/reference/clarify.md +0 -174
  639. package/.claude/skills/monodesign/reference/codex.md +0 -107
  640. package/.claude/skills/monodesign/reference/cognitive-load.md +0 -106
  641. package/.claude/skills/monodesign/reference/color-and-contrast.md +0 -105
  642. package/.claude/skills/monodesign/reference/colorize.md +0 -154
  643. package/.claude/skills/monodesign/reference/component-specs.md +0 -260
  644. package/.claude/skills/monodesign/reference/component-states.md +0 -274
  645. package/.claude/skills/monodesign/reference/component-system.md +0 -358
  646. package/.claude/skills/monodesign/reference/copy-formulas.md +0 -160
  647. package/.claude/skills/monodesign/reference/craft.md +0 -196
  648. package/.claude/skills/monodesign/reference/critique.md +0 -213
  649. package/.claude/skills/monodesign/reference/delight.md +0 -302
  650. package/.claude/skills/monodesign/reference/design-principles.md +0 -246
  651. package/.claude/skills/monodesign/reference/distill.md +0 -111
  652. package/.claude/skills/monodesign/reference/document.md +0 -427
  653. package/.claude/skills/monodesign/reference/extract.md +0 -69
  654. package/.claude/skills/monodesign/reference/harden.md +0 -347
  655. package/.claude/skills/monodesign/reference/heuristics-scoring.md +0 -234
  656. package/.claude/skills/monodesign/reference/hooks.md +0 -99
  657. package/.claude/skills/monodesign/reference/image-prompts.md +0 -130
  658. package/.claude/skills/monodesign/reference/interaction-design.md +0 -195
  659. package/.claude/skills/monodesign/reference/layout.md +0 -141
  660. package/.claude/skills/monodesign/reference/live.md +0 -622
  661. package/.claude/skills/monodesign/reference/motion-design.md +0 -109
  662. package/.claude/skills/monodesign/reference/onboard.md +0 -234
  663. package/.claude/skills/monodesign/reference/optimize.md +0 -258
  664. package/.claude/skills/monodesign/reference/overdrive.md +0 -130
  665. package/.claude/skills/monodesign/reference/personas.md +0 -179
  666. package/.claude/skills/monodesign/reference/polish.md +0 -233
  667. package/.claude/skills/monodesign/reference/pre-delivery-checklist.md +0 -108
  668. package/.claude/skills/monodesign/reference/product.md +0 -62
  669. package/.claude/skills/monodesign/reference/quieter.md +0 -99
  670. package/.claude/skills/monodesign/reference/responsive-design.md +0 -114
  671. package/.claude/skills/monodesign/reference/shape.md +0 -151
  672. package/.claude/skills/monodesign/reference/spatial-design.md +0 -100
  673. package/.claude/skills/monodesign/reference/teach.md +0 -156
  674. package/.claude/skills/monodesign/reference/token-architecture.md +0 -222
  675. package/.claude/skills/monodesign/reference/typeset.md +0 -124
  676. package/.claude/skills/monodesign/reference/typography.md +0 -159
  677. package/.claude/skills/monodesign/reference/ux-research.md +0 -143
  678. package/.claude/skills/monodesign/reference/ux-rules.md +0 -211
  679. package/.claude/skills/monodesign/reference/ux-writing.md +0 -107
  680. package/.claude/skills/monodesign/shape.md +0 -71
  681. package/.claude/skills/monodesign/teach.md +0 -69
  682. package/.claude/skills/monodesign/typeset.md +0 -59
  683. package/.claude/skills/monolean/SKILL.md +0 -118
  684. package/.claude/skills/monolean-audit/SKILL.md +0 -41
  685. package/.claude/skills/monolean-debt/SKILL.md +0 -46
  686. package/.claude/skills/monolean-help/SKILL.md +0 -60
  687. package/.claude/skills/monolean-review/SKILL.md +0 -57
  688. package/.claude/skills/monomind/.monomind/registry.json +0 -6
  689. package/.claude/skills/monomind/browse-agentcore.md +0 -115
  690. package/.claude/skills/monomind/browse-electron.md +0 -188
  691. package/.claude/skills/monomind/browse-qa.md +0 -228
  692. package/.claude/skills/monomind/browse-references/authentication.md +0 -161
  693. package/.claude/skills/monomind/browse-references/trust-boundaries.md +0 -40
  694. package/.claude/skills/monomind/browse-references/video-recording.md +0 -83
  695. package/.claude/skills/monomind/browse-slack.md +0 -188
  696. package/.claude/skills/monomind/browse-vercel.md +0 -239
  697. package/.claude/skills/monomind/browse.md +0 -724
  698. package/.claude/skills/monomotion/SKILL.md +0 -145
  699. package/.claude/skills/monomotion/rules/api-control.md +0 -139
  700. package/.claude/skills/monomotion/rules/effects.md +0 -109
  701. package/.claude/skills/monomotion/rules/integration.md +0 -140
  702. package/.claude/skills/monomotion/rules/scroll.md +0 -131
  703. package/.claude/skills/monomotion/rules/sequencing.md +0 -105
  704. package/.claude/skills/monomotion/rules/svg.md +0 -101
  705. package/.claude/skills/monomotion/rules/text.md +0 -119
  706. package/.claude/skills/pair-programming/SKILL.md +0 -1202
  707. package/.claude/skills/performance-analysis/SKILL.md +0 -560
  708. package/.claude/skills/skill-builder/SKILL.md +0 -910
  709. package/.claude/skills/sparc-methodology/SKILL.md +0 -950
  710. package/.claude/skills/specialagent/SKILL.md +0 -208
  711. package/.claude/skills/stop-slop/SKILL.md +0 -67
  712. package/.claude/skills/stop-slop/references/examples.md +0 -61
  713. package/.claude/skills/stop-slop/references/phrases.md +0 -130
  714. package/.claude/skills/stop-slop/references/structures.md +0 -136
  715. package/.claude/skills/swarm-advanced/SKILL.md +0 -937
  716. package/.claude/skills/swarm-orchestration/SKILL.md +0 -179
  717. package/.claude/skills/verification-quality/SKILL.md +0 -674
  718. package/.claude/workflows/feature-dev.yaml +0 -18
  719. package/.claude/workflows/security-audit.yaml +0 -10
  720. package/packages/@monomind/cli/.claude/agents/generated/case-analyst.md +0 -50
  721. package/packages/@monomind/cli/.claude/agents/generated/channel-intelligence-director.md +0 -87
  722. package/packages/@monomind/cli/.claude/agents/generated/chief-growth-officer.md +0 -88
  723. package/packages/@monomind/cli/.claude/agents/generated/churn-analyst.md +0 -53
  724. package/packages/@monomind/cli/.claude/agents/generated/code-reviewer.md +0 -55
  725. package/packages/@monomind/cli/.claude/agents/generated/code-validator.md +0 -57
  726. package/packages/@monomind/cli/.claude/agents/generated/complexity-scanner.md +0 -56
  727. package/packages/@monomind/cli/.claude/agents/generated/content-seo-strategist.md +0 -90
  728. package/packages/@monomind/cli/.claude/agents/generated/copy-editor.md +0 -45
  729. package/packages/@monomind/cli/.claude/agents/generated/court-reporter.md +0 -50
  730. package/packages/@monomind/cli/.claude/agents/generated/defender.md +0 -51
  731. package/packages/@monomind/cli/.claude/agents/generated/devbot-orchestrator.md +0 -58
  732. package/packages/@monomind/cli/.claude/agents/generated/devbot-planner.md +0 -63
  733. package/packages/@monomind/cli/.claude/agents/generated/developer-community-strategist.md +0 -91
  734. package/packages/@monomind/cli/.claude/agents/generated/editor-in-chief.md +0 -45
  735. package/packages/@monomind/cli/.claude/agents/generated/fact-checker.md +0 -45
  736. package/packages/@monomind/cli/.claude/agents/generated/impact-assessor.md +0 -54
  737. package/packages/@monomind/cli/.claude/agents/generated/judge.md +0 -51
  738. package/packages/@monomind/cli/.claude/agents/generated/outreach-partnership-strategist.md +0 -90
  739. package/packages/@monomind/cli/.claude/agents/generated/prosecutor.md +0 -51
  740. package/packages/@monomind/cli/.claude/agents/generated/reporter.md +0 -45
  741. package/packages/@monomind/cli/.claude/agents/generated/social-media-strategist.md +0 -91
  742. package/packages/@monomind/cli/.claude/agents/generated/video-visual-strategist.md +0 -90
  743. package/packages/@monomind/cli/.claude/agents/reengineer-squad/boss.md +0 -113
  744. package/packages/@monomind/cli/.claude/agents/reengineer-squad/critic-architect.md +0 -132
  745. package/packages/@monomind/cli/.claude/agents/reengineer-squad/git-manager.md +0 -145
  746. package/packages/@monomind/cli/.claude/agents/reengineer-squad/idea-generator.md +0 -95
  747. package/packages/@monomind/cli/.claude/agents/reengineer-squad/implementer.md +0 -112
  748. package/packages/@monomind/cli/.claude/agents/reengineer-squad/integration-planner.md +0 -112
  749. package/packages/@monomind/cli/.claude/agents/reengineer-squad/source-analyst.md +0 -103
  750. package/packages/@monomind/cli/.claude/agents/reengineer-squad/target-analyst.md +0 -118
  751. package/packages/@monomind/cli/.claude/agents/reengineer-squad/tester.md +0 -105
  752. package/packages/@monomind/cli/.claude/agents/sparc/architecture.md +0 -453
  753. package/packages/@monomind/cli/.claude/agents/sparc/pseudocode.md +0 -299
  754. package/packages/@monomind/cli/.claude/agents/sparc/refinement.md +0 -504
  755. package/packages/@monomind/cli/.claude/agents/sparc/specification.md +0 -258
  756. package/packages/@monomind/cli/.claude/agents/templates/implementer-sparc-coder.md +0 -231
  757. package/packages/@monomind/cli/.claude/commands/sparc/analyzer.md +0 -35
  758. package/packages/@monomind/cli/.claude/commands/sparc/architect.md +0 -36
  759. package/packages/@monomind/cli/.claude/commands/sparc/ask.md +0 -56
  760. package/packages/@monomind/cli/.claude/commands/sparc/batch-executor.md +0 -37
  761. package/packages/@monomind/cli/.claude/commands/sparc/code.md +0 -48
  762. package/packages/@monomind/cli/.claude/commands/sparc/coder.md +0 -37
  763. package/packages/@monomind/cli/.claude/commands/sparc/debug.md +0 -42
  764. package/packages/@monomind/cli/.claude/commands/sparc/debugger.md +0 -37
  765. package/packages/@monomind/cli/.claude/commands/sparc/designer.md +0 -36
  766. package/packages/@monomind/cli/.claude/commands/sparc/devops.md +0 -68
  767. package/packages/@monomind/cli/.claude/commands/sparc/docs-writer.md +0 -39
  768. package/packages/@monomind/cli/.claude/commands/sparc/documenter.md +0 -37
  769. package/packages/@monomind/cli/.claude/commands/sparc/innovator.md +0 -37
  770. package/packages/@monomind/cli/.claude/commands/sparc/integration.md +0 -42
  771. package/packages/@monomind/cli/.claude/commands/sparc/mcp.md +0 -76
  772. package/packages/@monomind/cli/.claude/commands/sparc/memory-manager.md +0 -57
  773. package/packages/@monomind/cli/.claude/commands/sparc/optimizer.md +0 -37
  774. package/packages/@monomind/cli/.claude/commands/sparc/orchestrator.md +0 -70
  775. package/packages/@monomind/cli/.claude/commands/sparc/post-deployment-monitoring-mode.md +0 -42
  776. package/packages/@monomind/cli/.claude/commands/sparc/refinement-optimization-mode.md +0 -42
  777. package/packages/@monomind/cli/.claude/commands/sparc/researcher.md +0 -37
  778. package/packages/@monomind/cli/.claude/commands/sparc/reviewer.md +0 -37
  779. package/packages/@monomind/cli/.claude/commands/sparc/security-review.md +0 -39
  780. package/packages/@monomind/cli/.claude/commands/sparc/sparc-modes.md +0 -120
  781. package/packages/@monomind/cli/.claude/commands/sparc/sparc.md +0 -71
  782. package/packages/@monomind/cli/.claude/commands/sparc/spec-pseudocode.md +0 -39
  783. package/packages/@monomind/cli/.claude/commands/sparc/supabase-admin.md +0 -301
  784. package/packages/@monomind/cli/.claude/commands/sparc/swarm-coordinator.md +0 -50
  785. package/packages/@monomind/cli/.claude/commands/sparc/tdd.md +0 -37
  786. package/packages/@monomind/cli/.claude/commands/sparc/tester.md +0 -37
  787. package/packages/@monomind/cli/.claude/commands/sparc/tutorial.md +0 -38
  788. package/packages/@monomind/cli/.claude/commands/sparc/workflow-manager.md +0 -37
  789. package/packages/@monomind/cli/.claude/commands/sparc.md +0 -112
  790. package/packages/@monomind/cli/.claude/skills/sparc-methodology/SKILL.md +0 -950
  791. package/packages/@monomind/cli/dist/src/capabilities/enrichment.d.ts +0 -44
  792. package/packages/@monomind/cli/dist/src/capabilities/enrichment.js +0 -141
  793. package/packages/@monomind/cli/dist/src/commands/analyze-boundaries.d.ts +0 -14
  794. package/packages/@monomind/cli/dist/src/commands/analyze-boundaries.js +0 -295
  795. package/packages/@monomind/cli/dist/src/commands/analyze-graph.d.ts +0 -14
  796. package/packages/@monomind/cli/dist/src/commands/analyze-graph.js +0 -304
  797. package/packages/@monomind/cli/dist/src/commands/claims.d.ts +0 -10
  798. package/packages/@monomind/cli/dist/src/commands/claims.js +0 -650
  799. package/packages/@monomind/cli/dist/src/commands/daemon.d.ts +0 -8
  800. package/packages/@monomind/cli/dist/src/commands/daemon.js +0 -681
  801. package/packages/@monomind/cli/dist/src/commands/enrich.d.ts +0 -10
  802. package/packages/@monomind/cli/dist/src/commands/enrich.js +0 -58
  803. package/packages/@monomind/cli/dist/src/commands/issues.d.ts +0 -21
  804. package/packages/@monomind/cli/dist/src/commands/issues.js +0 -575
  805. package/packages/@monomind/cli/dist/src/commands/workflow.d.ts +0 -8
  806. package/packages/@monomind/cli/dist/src/commands/workflow.js +0 -575
  807. package/packages/@monomind/cli/dist/src/consensus/vote-signer.d.ts +0 -36
  808. package/packages/@monomind/cli/dist/src/consensus/vote-signer.js +0 -88
  809. package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.d.ts +0 -8
  810. package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.js +0 -717
  811. package/packages/@monomind/cli/dist/src/services/claim-service.d.ts +0 -198
  812. package/packages/@monomind/cli/dist/src/services/claim-service.js +0 -890
  813. package/packages/@monomind/cli/dist/src/services/headless-worker-executor.d.ts +0 -311
  814. package/packages/@monomind/cli/dist/src/services/headless-worker-executor.js +0 -1183
  815. package/packages/@monomind/cli/dist/src/services/worker-daemon.d.ts +0 -230
  816. package/packages/@monomind/cli/dist/src/services/worker-daemon.js +0 -1350
  817. package/packages/@monomind/cli/dist/src/ui/.monomind/capture/active-run.json +0 -1
  818. package/packages/@monomind/guidance/README.md +0 -87
  819. package/packages/@monomind/guidance/dist/adversarial.d.ts +0 -284
  820. package/packages/@monomind/guidance/dist/adversarial.js +0 -572
  821. package/packages/@monomind/guidance/dist/analyzer.d.ts +0 -530
  822. package/packages/@monomind/guidance/dist/analyzer.js +0 -2518
  823. package/packages/@monomind/guidance/dist/artifacts.d.ts +0 -283
  824. package/packages/@monomind/guidance/dist/artifacts.js +0 -356
  825. package/packages/@monomind/guidance/dist/authority.d.ts +0 -290
  826. package/packages/@monomind/guidance/dist/authority.js +0 -558
  827. package/packages/@monomind/guidance/dist/capabilities.d.ts +0 -209
  828. package/packages/@monomind/guidance/dist/capabilities.js +0 -485
  829. package/packages/@monomind/guidance/dist/coherence.d.ts +0 -233
  830. package/packages/@monomind/guidance/dist/coherence.js +0 -378
  831. package/packages/@monomind/guidance/dist/compiler.d.ts +0 -87
  832. package/packages/@monomind/guidance/dist/compiler.js +0 -425
  833. package/packages/@monomind/guidance/dist/conformance-kit.d.ts +0 -225
  834. package/packages/@monomind/guidance/dist/conformance-kit.js +0 -629
  835. package/packages/@monomind/guidance/dist/continue-gate.d.ts +0 -214
  836. package/packages/@monomind/guidance/dist/continue-gate.js +0 -353
  837. package/packages/@monomind/guidance/dist/crypto-utils.d.ts +0 -17
  838. package/packages/@monomind/guidance/dist/crypto-utils.js +0 -24
  839. package/packages/@monomind/guidance/dist/evolution.d.ts +0 -282
  840. package/packages/@monomind/guidance/dist/evolution.js +0 -500
  841. package/packages/@monomind/guidance/dist/gates.d.ts +0 -79
  842. package/packages/@monomind/guidance/dist/gates.js +0 -302
  843. package/packages/@monomind/guidance/dist/gateway.d.ts +0 -206
  844. package/packages/@monomind/guidance/dist/gateway.js +0 -452
  845. package/packages/@monomind/guidance/dist/generators.d.ts +0 -153
  846. package/packages/@monomind/guidance/dist/generators.js +0 -682
  847. package/packages/@monomind/guidance/dist/headless.d.ts +0 -177
  848. package/packages/@monomind/guidance/dist/headless.js +0 -342
  849. package/packages/@monomind/guidance/dist/hooks.d.ts +0 -109
  850. package/packages/@monomind/guidance/dist/hooks.js +0 -347
  851. package/packages/@monomind/guidance/dist/index.d.ts +0 -203
  852. package/packages/@monomind/guidance/dist/index.js +0 -320
  853. package/packages/@monomind/guidance/dist/ledger.d.ts +0 -162
  854. package/packages/@monomind/guidance/dist/ledger.js +0 -375
  855. package/packages/@monomind/guidance/dist/manifest-validator.d.ts +0 -289
  856. package/packages/@monomind/guidance/dist/manifest-validator.js +0 -838
  857. package/packages/@monomind/guidance/dist/memory-gate.d.ts +0 -222
  858. package/packages/@monomind/guidance/dist/memory-gate.js +0 -382
  859. package/packages/@monomind/guidance/dist/meta-governance.d.ts +0 -265
  860. package/packages/@monomind/guidance/dist/meta-governance.js +0 -348
  861. package/packages/@monomind/guidance/dist/optimizer.d.ts +0 -104
  862. package/packages/@monomind/guidance/dist/optimizer.js +0 -329
  863. package/packages/@monomind/guidance/dist/persistence.d.ts +0 -189
  864. package/packages/@monomind/guidance/dist/persistence.js +0 -464
  865. package/packages/@monomind/guidance/dist/proof.d.ts +0 -185
  866. package/packages/@monomind/guidance/dist/proof.js +0 -238
  867. package/packages/@monomind/guidance/dist/retriever.d.ts +0 -116
  868. package/packages/@monomind/guidance/dist/retriever.js +0 -394
  869. package/packages/@monomind/guidance/dist/ruvbot-integration.d.ts +0 -370
  870. package/packages/@monomind/guidance/dist/ruvbot-integration.js +0 -738
  871. package/packages/@monomind/guidance/dist/temporal.d.ts +0 -428
  872. package/packages/@monomind/guidance/dist/temporal.js +0 -660
  873. package/packages/@monomind/guidance/dist/trust.d.ts +0 -283
  874. package/packages/@monomind/guidance/dist/trust.js +0 -474
  875. package/packages/@monomind/guidance/dist/truth-anchors.d.ts +0 -276
  876. package/packages/@monomind/guidance/dist/truth-anchors.js +0 -488
  877. package/packages/@monomind/guidance/dist/types.d.ts +0 -378
  878. package/packages/@monomind/guidance/dist/types.js +0 -10
  879. package/packages/@monomind/guidance/dist/uncertainty.d.ts +0 -372
  880. package/packages/@monomind/guidance/dist/uncertainty.js +0 -619
  881. package/packages/@monomind/guidance/dist/wasm-kernel.d.ts +0 -48
  882. package/packages/@monomind/guidance/dist/wasm-kernel.js +0 -158
  883. package/packages/@monomind/guidance/package.json +0 -119
@@ -1,890 +0,0 @@
1
- /**
2
- * V1 Collaborative Issue Claims Service
3
- *
4
- * Implements ADR-016: Collaborative Issue Claims for Human-Agent Workflows
5
- *
6
- * Features:
7
- * - Issue claiming/releasing for humans and agents
8
- * - Handoff mechanisms between humans and agents
9
- * - Work stealing for idle agents
10
- * - Load balancing across swarm
11
- * - GitHub integration
12
- *
13
- * @see /packages/implementation/adrs/ADR-016-collaborative-issue-claims.md
14
- */
15
- import { EventEmitter } from 'node:events';
16
- import * as fs from 'node:fs';
17
- import * as path from 'node:path';
18
- import { execFileSync } from 'node:child_process';
19
- // ============================================================================
20
- // Default Configuration
21
- // ============================================================================
22
- const DEFAULT_CONFIG = {
23
- staleThresholdMinutes: 30,
24
- blockedThresholdMinutes: 60,
25
- overloadThreshold: 5,
26
- gracePeriodMinutes: 10,
27
- minProgressToProtect: 75,
28
- contestWindowMinutes: 5,
29
- requireSameType: false,
30
- allowCrossTypeSteal: [
31
- ['coder', 'debugger'],
32
- ['tester', 'reviewer'],
33
- ],
34
- };
35
- // ============================================================================
36
- // Claim Service Implementation
37
- // ============================================================================
38
- export class ClaimService extends EventEmitter {
39
- claims = new Map();
40
- stealableInfo = new Map();
41
- storagePath;
42
- config;
43
- eventLog = [];
44
- constructor(projectRoot, config) {
45
- super();
46
- this.storagePath = path.join(projectRoot, '.monomind', 'claims');
47
- this.config = { ...DEFAULT_CONFIG, ...config };
48
- }
49
- // ==========================================================================
50
- // Initialization
51
- // ==========================================================================
52
- async initialize() {
53
- // Ensure storage directory exists
54
- if (!fs.existsSync(this.storagePath)) {
55
- fs.mkdirSync(this.storagePath, { recursive: true });
56
- }
57
- // Load existing claims
58
- await this.loadClaims();
59
- }
60
- // Hard cap on claims.json: a file larger than this is malformed or
61
- // adversarially crafted (normal claim files are tiny).
62
- static MAX_CLAIMS_FILE_BYTES = 10 * 1024 * 1024; // 10 MB
63
- async loadClaims() {
64
- const claimsFile = path.join(this.storagePath, 'claims.json');
65
- if (fs.existsSync(claimsFile)) {
66
- try {
67
- const fileSize = fs.statSync(claimsFile).size;
68
- if (fileSize > ClaimService.MAX_CLAIMS_FILE_BYTES) {
69
- // Oversized file — skip loading rather than OOM-ing the daemon
70
- return;
71
- }
72
- const data = JSON.parse(fs.readFileSync(claimsFile, 'utf-8'));
73
- for (const claim of data.claims || []) {
74
- claim.claimedAt = new Date(claim.claimedAt);
75
- claim.statusChangedAt = new Date(claim.statusChangedAt);
76
- if (claim.expiresAt)
77
- claim.expiresAt = new Date(claim.expiresAt);
78
- this.claims.set(claim.issueId, claim);
79
- }
80
- }
81
- catch {
82
- // Start fresh if file is corrupted
83
- }
84
- }
85
- }
86
- // Single-flight save lock: serializes concurrent saveClaims() calls so that
87
- // two writers cannot collide on the .tmp file or interleave their renames.
88
- // Combined with the unique tmp suffix below, this defends against in-process
89
- // corruption of claims.json. Cross-process safety still requires fcntl/flock
90
- // around the read-modify-write at higher level.
91
- _saveQueue = Promise.resolve();
92
- async saveClaims() {
93
- // CRITICAL: do NOT let a single rejection (ENOSPC / EROFS / EACCES)
94
- // poison the entire chain. Previously every subsequent saveClaims would
95
- // inherit the rejection and silently skip _doSaveClaims, causing the
96
- // in-memory Map to drift from disk indefinitely — a permanent
97
- // authorization-state desync. Catch the chain link so the next link runs;
98
- // re-expose the real rejection to the caller via a separate promise.
99
- const next = this._saveQueue
100
- .catch(() => undefined)
101
- .then(() => this._doSaveClaims());
102
- this._saveQueue = next.catch(() => undefined);
103
- return next;
104
- }
105
- async _doSaveClaims() {
106
- const claimsFile = path.join(this.storagePath, 'claims.json');
107
- const data = {
108
- claims: Array.from(this.claims.values()),
109
- savedAt: new Date().toISOString(),
110
- };
111
- // Unique tmp filename so a previous in-flight write cannot be clobbered
112
- // by a concurrent fs.writeFileSync truncating the same .tmp path.
113
- const { randomBytes } = await import('node:crypto');
114
- const tmp = `${claimsFile}.${process.pid}.${Date.now()}.${randomBytes(4).toString('hex')}.tmp`;
115
- fs.writeFileSync(tmp, JSON.stringify(data, null, 2));
116
- fs.renameSync(tmp, claimsFile);
117
- }
118
- // ==========================================================================
119
- // Core Claiming
120
- // ==========================================================================
121
- async claim(issueId, claimant) {
122
- // Check if already claimed
123
- const existing = this.claims.get(issueId);
124
- if (existing && existing.status !== 'stealable') {
125
- return {
126
- success: false,
127
- error: `Issue ${issueId} is already claimed by ${this.formatClaimant(existing.claimant)}`,
128
- };
129
- }
130
- const now = new Date();
131
- const claim = {
132
- issueId,
133
- claimant,
134
- claimedAt: now,
135
- status: 'active',
136
- statusChangedAt: now,
137
- progress: 0,
138
- };
139
- this.claims.set(issueId, claim);
140
- await this.saveClaims();
141
- this.emitEvent({
142
- type: 'issue:claimed',
143
- timestamp: now,
144
- issueId,
145
- claimant,
146
- previousClaimant: existing?.claimant,
147
- });
148
- return { success: true, claim };
149
- }
150
- async release(issueId, claimant) {
151
- const claim = this.claims.get(issueId);
152
- if (!claim) {
153
- throw new Error(`Issue ${issueId} is not claimed`);
154
- }
155
- if (!this.isSameClaimant(claim.claimant, claimant)) {
156
- throw new Error(`Issue ${issueId} is not claimed by ${this.formatClaimant(claimant)}`);
157
- }
158
- this.claims.delete(issueId);
159
- this.stealableInfo.delete(issueId);
160
- await this.saveClaims();
161
- this.emitEvent({
162
- type: 'issue:released',
163
- timestamp: new Date(),
164
- issueId,
165
- claimant,
166
- });
167
- }
168
- // ==========================================================================
169
- // Handoffs
170
- // ==========================================================================
171
- async requestHandoff(issueId, from, to, reason) {
172
- const claim = this.claims.get(issueId);
173
- if (!claim) {
174
- throw new Error(`Issue ${issueId} is not claimed`);
175
- }
176
- if (!this.isSameClaimant(claim.claimant, from)) {
177
- throw new Error(`Issue ${issueId} is not claimed by ${this.formatClaimant(from)}`);
178
- }
179
- claim.status = 'handoff-pending';
180
- claim.statusChangedAt = new Date();
181
- claim.handoffTo = to;
182
- claim.handoffReason = reason;
183
- await this.saveClaims();
184
- this.emitEvent({
185
- type: 'issue:handoff:requested',
186
- timestamp: new Date(),
187
- issueId,
188
- claimant: from,
189
- data: { to, reason },
190
- });
191
- }
192
- async acceptHandoff(issueId, claimant) {
193
- const claim = this.claims.get(issueId);
194
- if (!claim || claim.status !== 'handoff-pending') {
195
- throw new Error(`No pending handoff for issue ${issueId}`);
196
- }
197
- if (!claim.handoffTo || !this.isSameClaimant(claim.handoffTo, claimant)) {
198
- throw new Error(`Handoff not addressed to ${this.formatClaimant(claimant)}`);
199
- }
200
- const previousClaimant = claim.claimant;
201
- claim.claimant = claimant;
202
- claim.status = 'active';
203
- claim.statusChangedAt = new Date();
204
- delete claim.handoffTo;
205
- delete claim.handoffReason;
206
- await this.saveClaims();
207
- this.emitEvent({
208
- type: 'issue:handoff:accepted',
209
- timestamp: new Date(),
210
- issueId,
211
- claimant,
212
- previousClaimant,
213
- });
214
- }
215
- async rejectHandoff(issueId, claimant, reason) {
216
- const claim = this.claims.get(issueId);
217
- if (!claim || claim.status !== 'handoff-pending') {
218
- throw new Error(`No pending handoff for issue ${issueId}`);
219
- }
220
- if (!claim.handoffTo || !this.isSameClaimant(claim.handoffTo, claimant)) {
221
- throw new Error(`Handoff not addressed to ${this.formatClaimant(claimant)}`);
222
- }
223
- claim.status = 'active';
224
- claim.statusChangedAt = new Date();
225
- delete claim.handoffTo;
226
- delete claim.handoffReason;
227
- await this.saveClaims();
228
- this.emitEvent({
229
- type: 'issue:handoff:rejected',
230
- timestamp: new Date(),
231
- issueId,
232
- claimant,
233
- data: { reason },
234
- });
235
- }
236
- // ==========================================================================
237
- // Status Updates
238
- // ==========================================================================
239
- async updateStatus(issueId, status, note) {
240
- const claim = this.claims.get(issueId);
241
- if (!claim) {
242
- throw new Error(`Issue ${issueId} is not claimed`);
243
- }
244
- const previousStatus = claim.status;
245
- claim.status = status;
246
- claim.statusChangedAt = new Date();
247
- if (status === 'blocked' && note) {
248
- claim.blockReason = note;
249
- }
250
- if (status === 'completed') {
251
- claim.progress = 100;
252
- // Evict completed claims after saving to prevent unbounded Map growth
253
- await this.saveClaims();
254
- this.claims.delete(issueId);
255
- return;
256
- }
257
- await this.saveClaims();
258
- this.emitEvent({
259
- type: 'issue:status:changed',
260
- timestamp: new Date(),
261
- issueId,
262
- data: { previousStatus, newStatus: status, note },
263
- });
264
- }
265
- async updateProgress(issueId, progress) {
266
- const claim = this.claims.get(issueId);
267
- if (!claim) {
268
- throw new Error(`Issue ${issueId} is not claimed`);
269
- }
270
- claim.progress = Math.min(100, Math.max(0, progress));
271
- await this.saveClaims();
272
- }
273
- async requestReview(issueId, reviewers) {
274
- const claim = this.claims.get(issueId);
275
- if (!claim) {
276
- throw new Error(`Issue ${issueId} is not claimed`);
277
- }
278
- claim.status = 'review-requested';
279
- claim.statusChangedAt = new Date();
280
- await this.saveClaims();
281
- this.emitEvent({
282
- type: 'issue:review:requested',
283
- timestamp: new Date(),
284
- issueId,
285
- claimant: claim.claimant,
286
- data: { reviewers },
287
- });
288
- }
289
- // ==========================================================================
290
- // Work Stealing
291
- // ==========================================================================
292
- async markStealable(issueId, info, claimant) {
293
- const claim = this.claims.get(issueId);
294
- if (!claim) {
295
- throw new Error(`Issue ${issueId} is not claimed`);
296
- }
297
- if (claimant !== undefined && !this.isSameClaimant(claim.claimant, claimant)) {
298
- throw new Error(`Issue ${issueId} is not owned by ${this.formatClaimant(claimant)}`);
299
- }
300
- claim.status = 'stealable';
301
- claim.statusChangedAt = new Date();
302
- claim.context = info.context;
303
- claim.progress = info.progress;
304
- this.stealableInfo.set(issueId, info);
305
- await this.saveClaims();
306
- this.emitEvent({
307
- type: 'issue:stealable',
308
- timestamp: new Date(),
309
- issueId,
310
- claimant: claim.claimant,
311
- data: { info },
312
- });
313
- }
314
- async steal(issueId, stealer) {
315
- const claim = this.claims.get(issueId);
316
- if (!claim) {
317
- return { success: false, error: `Issue ${issueId} is not claimed` };
318
- }
319
- if (claim.status !== 'stealable') {
320
- return { success: false, error: `Issue ${issueId} is not stealable` };
321
- }
322
- const info = this.stealableInfo.get(issueId);
323
- const previousOwner = claim.claimant;
324
- // Check if steal is allowed
325
- if (this.config.requireSameType &&
326
- stealer.type === 'agent' &&
327
- previousOwner.type === 'agent') {
328
- if (stealer.agentType !== previousOwner.agentType) {
329
- const allowed = this.config.allowCrossTypeSteal.some((pair) => pair.includes(stealer.agentType) &&
330
- pair.includes(previousOwner.agentType));
331
- if (!allowed) {
332
- return { success: false, error: `Cross-type steal not allowed` };
333
- }
334
- }
335
- }
336
- // Execute steal
337
- claim.claimant = stealer;
338
- claim.status = 'active';
339
- claim.statusChangedAt = new Date();
340
- claim.claimedAt = new Date();
341
- this.stealableInfo.delete(issueId);
342
- await this.saveClaims();
343
- this.emitEvent({
344
- type: 'issue:stolen',
345
- timestamp: new Date(),
346
- issueId,
347
- claimant: stealer,
348
- previousClaimant: previousOwner,
349
- data: { context: info },
350
- });
351
- return { success: true, claim, previousOwner, context: info };
352
- }
353
- async getStealable(agentType) {
354
- const stealable = [];
355
- for (const claim of this.claims.values()) {
356
- if (claim.status !== 'stealable')
357
- continue;
358
- const info = this.stealableInfo.get(claim.issueId);
359
- if (agentType && info?.preferredTypes?.length) {
360
- if (!info.preferredTypes.includes(agentType))
361
- continue;
362
- }
363
- stealable.push(claim);
364
- }
365
- return stealable;
366
- }
367
- async contestSteal(issueId, originalClaimant, reason) {
368
- const claim = this.claims.get(issueId);
369
- if (!claim) {
370
- throw new Error(`Issue ${issueId} is not claimed`);
371
- }
372
- this.emitEvent({
373
- type: 'issue:steal:contested',
374
- timestamp: new Date(),
375
- issueId,
376
- claimant: originalClaimant,
377
- data: { reason, currentOwner: claim.claimant },
378
- });
379
- // Contest resolution would typically be handled by a coordinator or human
380
- }
381
- // ==========================================================================
382
- // Load Balancing
383
- // ==========================================================================
384
- async getAgentLoad(agentId) {
385
- const claims = [];
386
- let blockedCount = 0;
387
- for (const claim of this.claims.values()) {
388
- if (claim.claimant.type === 'agent' && claim.claimant.agentId === agentId) {
389
- claims.push(claim);
390
- if (claim.status === 'blocked')
391
- blockedCount++;
392
- }
393
- }
394
- const first = claims[0]?.claimant;
395
- const agentType = first?.type === 'agent' ? first.agentType : 'unknown';
396
- return {
397
- agentId,
398
- agentType,
399
- claimCount: claims.length,
400
- maxClaims: this.config.overloadThreshold,
401
- utilization: claims.length / this.config.overloadThreshold,
402
- claims,
403
- avgCompletionTime: 0, // Would need historical data
404
- currentBlockedCount: blockedCount,
405
- };
406
- }
407
- async rebalance(_swarmId) {
408
- const result = { moved: [], suggested: [] };
409
- // Get all agent loads
410
- const agentLoads = new Map();
411
- const agentTypes = new Set();
412
- for (const claim of this.claims.values()) {
413
- if (claim.claimant.type !== 'agent')
414
- continue;
415
- const agentId = claim.claimant.agentId;
416
- if (!agentLoads.has(agentId)) {
417
- const load = await this.getAgentLoad(agentId);
418
- agentLoads.set(agentId, load);
419
- agentTypes.add(load.agentType);
420
- }
421
- }
422
- // For each agent type, calculate average load
423
- for (const agentType of agentTypes) {
424
- const typeLoads = Array.from(agentLoads.values()).filter((l) => l.agentType === agentType);
425
- const avgLoad = typeLoads.reduce((sum, l) => sum + l.utilization, 0) / typeLoads.length;
426
- const overloaded = typeLoads.filter((l) => l.utilization > avgLoad * 1.5);
427
- const underloaded = typeLoads.filter((l) => l.utilization < avgLoad * 0.5);
428
- // Generate suggestions
429
- for (const over of overloaded) {
430
- const lowProgressClaims = over.claims
431
- .filter((c) => c.progress < 25)
432
- .sort((a, b) => a.progress - b.progress);
433
- for (const claim of lowProgressClaims) {
434
- const target = underloaded.find((u) => u.claimCount < u.maxClaims);
435
- if (target) {
436
- result.suggested.push({
437
- issueId: claim.issueId,
438
- currentOwner: claim.claimant,
439
- suggestedOwner: {
440
- type: 'agent',
441
- agentId: target.agentId,
442
- agentType: target.agentType,
443
- },
444
- reason: 'Load balancing: redistributing work across swarm',
445
- });
446
- }
447
- }
448
- }
449
- }
450
- return result;
451
- }
452
- // ==========================================================================
453
- // Queries
454
- // ==========================================================================
455
- async getClaimedBy(claimant) {
456
- return Array.from(this.claims.values()).filter((c) => this.isSameClaimant(c.claimant, claimant));
457
- }
458
- async getAvailableIssues(_filters) {
459
- // This would integrate with GitHub API
460
- // For now, return issues that are not claimed
461
- return [];
462
- }
463
- async getIssueStatus(issueId) {
464
- return this.claims.get(issueId) || null;
465
- }
466
- async getAllClaims() {
467
- return Array.from(this.claims.values());
468
- }
469
- async getByStatus(status) {
470
- return Array.from(this.claims.values()).filter((c) => c.status === status);
471
- }
472
- // ==========================================================================
473
- // Auto-Management
474
- // ==========================================================================
475
- async expireStale(maxAgeMinutes) {
476
- const threshold = maxAgeMinutes ?? this.config.staleThresholdMinutes;
477
- const now = Date.now();
478
- const expired = [];
479
- for (const claim of this.claims.values()) {
480
- if (claim.status === 'stealable' || claim.status === 'completed')
481
- continue;
482
- const age = (now - claim.statusChangedAt.getTime()) / 60000;
483
- if (age > threshold) {
484
- // Mark as stealable
485
- await this.markStealable(claim.issueId, {
486
- reason: 'stale',
487
- stealableAt: new Date(),
488
- progress: claim.progress,
489
- context: `Stale: No activity for ${Math.round(age)} minutes`,
490
- });
491
- expired.push(claim);
492
- }
493
- }
494
- return expired;
495
- }
496
- // ==========================================================================
497
- // Helpers
498
- // ==========================================================================
499
- formatClaimant(claimant) {
500
- return claimant.type === 'human'
501
- ? `human:${claimant.name}`
502
- : `agent:${claimant.agentType}:${claimant.agentId}`;
503
- }
504
- isSameClaimant(a, b) {
505
- if (a.type !== b.type)
506
- return false;
507
- if (a.type === 'human' && b.type === 'human') {
508
- return a.userId === b.userId;
509
- }
510
- if (a.type === 'agent' && b.type === 'agent') {
511
- return a.agentId === b.agentId;
512
- }
513
- return false;
514
- }
515
- emitEvent(event) {
516
- this.eventLog.push(event);
517
- if (this.eventLog.length > 1000) {
518
- this.eventLog = this.eventLog.slice(-500);
519
- }
520
- this.emit(event.type, event);
521
- }
522
- getEventLog(limit = 100) {
523
- return this.eventLog.slice(-limit);
524
- }
525
- }
526
- // ============================================================================
527
- // GitHub Sync Implementation
528
- // ============================================================================
529
- const DEFAULT_GITHUB_CONFIG = {
530
- enabled: false,
531
- syncLabels: true,
532
- claimLabel: 'claimed',
533
- autoAssign: true,
534
- commentOnClaim: true,
535
- commentOnRelease: true,
536
- };
537
- // ============================================================================
538
- // Input Validation (Security)
539
- // ============================================================================
540
- /**
541
- * Validate GitHub repository format (owner/repo)
542
- * Prevents command injection via malicious repo names
543
- */
544
- function isValidRepo(repo) {
545
- // owner/repo format: alphanumeric, hyphens, underscores, dots
546
- return /^[\w.-]+\/[\w.-]+$/.test(repo) && repo.length <= 100;
547
- }
548
- /**
549
- * Validate issue number (positive integer)
550
- */
551
- function isValidIssueNumber(num) {
552
- return Number.isInteger(num) && num > 0 && num < 1000000000;
553
- }
554
- /**
555
- * Validate claimant name (GitHub username format)
556
- * Prevents command injection via malicious usernames
557
- */
558
- function isValidClaimantName(name) {
559
- // GitHub usernames: alphanumeric, hyphens, max 39 chars
560
- return /^[\w-]+$/.test(name) && name.length >= 1 && name.length <= 39;
561
- }
562
- /**
563
- * Validate label name
564
- * Prevents command injection via malicious label names
565
- */
566
- function isValidLabel(label) {
567
- // Labels: alphanumeric, hyphens, underscores, spaces, max 50 chars
568
- return /^[\w\s-]+$/.test(label) && label.length >= 1 && label.length <= 50;
569
- }
570
- /**
571
- * Sanitize error messages to prevent information disclosure
572
- */
573
- function sanitizeError(error) {
574
- const msg = error.message || 'Unknown error';
575
- // Remove paths and sensitive details
576
- return msg.replace(/\/[\w./-]+/g, '[path]').substring(0, 200);
577
- }
578
- export class GitHubSync {
579
- config;
580
- claimService;
581
- constructor(claimService, config) {
582
- this.claimService = claimService;
583
- this.config = { ...DEFAULT_GITHUB_CONFIG, ...config };
584
- }
585
- /**
586
- * Check if GitHub CLI is available
587
- */
588
- isGhAvailable() {
589
- try {
590
- execFileSync('gh', ['--version'], { stdio: 'ignore' });
591
- return true;
592
- }
593
- catch {
594
- return false;
595
- }
596
- }
597
- /**
598
- * Get the current repository from git remote
599
- */
600
- getRepo() {
601
- if (this.config.repo) {
602
- return isValidRepo(this.config.repo) ? this.config.repo : null;
603
- }
604
- try {
605
- const remote = execFileSync('git', ['remote', 'get-url', 'origin'], {
606
- encoding: 'utf-8',
607
- }).trim();
608
- const match = remote.match(/github\.com[/:]([\w.-]+\/[\w.-]+)/);
609
- const repo = match ? match[1].replace('.git', '') : null;
610
- return repo && isValidRepo(repo) ? repo : null;
611
- }
612
- catch {
613
- return null;
614
- }
615
- }
616
- /**
617
- * Sync issues from GitHub
618
- */
619
- async syncIssues(state = 'open') {
620
- const errors = [];
621
- const issues = [];
622
- if (!this.isGhAvailable()) {
623
- return { success: false, synced: 0, errors: ['GitHub CLI (gh) not installed'] };
624
- }
625
- const repo = this.getRepo();
626
- if (!repo) {
627
- return {
628
- success: false,
629
- synced: 0,
630
- errors: ['Could not determine GitHub repository'],
631
- };
632
- }
633
- // Validate state parameter (whitelist)
634
- const validStates = ['open', 'closed', 'all'];
635
- if (!validStates.includes(state)) {
636
- return { success: false, synced: 0, errors: ['Invalid state parameter'] };
637
- }
638
- try {
639
- const issuesJson = execFileSync('gh', [
640
- 'issue',
641
- 'list',
642
- '--repo',
643
- repo,
644
- '--state',
645
- state,
646
- '--json',
647
- 'number,title,body,state,labels,assignees,url,createdAt,updatedAt',
648
- '--limit',
649
- '100',
650
- ], { encoding: 'utf-8' });
651
- const rawIssues = JSON.parse(issuesJson);
652
- for (const raw of rawIssues) {
653
- issues.push({
654
- number: raw.number,
655
- title: raw.title,
656
- body: raw.body || '',
657
- state: raw.state === 'OPEN' ? 'open' : 'closed',
658
- labels: raw.labels?.map((l) => l.name) || [],
659
- assignees: raw.assignees?.map((a) => a.login) || [],
660
- url: raw.url,
661
- createdAt: new Date(raw.createdAt),
662
- updatedAt: new Date(raw.updatedAt),
663
- });
664
- }
665
- return { success: true, synced: issues.length, errors, issues };
666
- }
667
- catch (error) {
668
- errors.push(`Failed to fetch issues: ${sanitizeError(error)}`);
669
- return { success: false, synced: 0, errors };
670
- }
671
- }
672
- /**
673
- * Sync a local claim to GitHub (add label/assignee/comment)
674
- */
675
- async claimOnGitHub(issueNumber, claimant) {
676
- const errors = [];
677
- if (!this.config.enabled) {
678
- return { success: true, synced: 0, errors: ['GitHub sync not enabled'] };
679
- }
680
- if (!this.isGhAvailable()) {
681
- return { success: false, synced: 0, errors: ['GitHub CLI (gh) not installed'] };
682
- }
683
- // Validate issue number
684
- if (!isValidIssueNumber(issueNumber)) {
685
- return { success: false, synced: 0, errors: ['Invalid issue number'] };
686
- }
687
- const repo = this.getRepo();
688
- if (!repo) {
689
- return { success: false, synced: 0, errors: ['Could not determine repository'] };
690
- }
691
- // Validate claim label
692
- if (!isValidLabel(this.config.claimLabel)) {
693
- return {
694
- success: false,
695
- synced: 0,
696
- errors: ['Invalid claim label configuration'],
697
- };
698
- }
699
- try {
700
- // Add claim label
701
- if (this.config.syncLabels) {
702
- try {
703
- execFileSync('gh', [
704
- 'issue',
705
- 'edit',
706
- String(issueNumber),
707
- '--repo',
708
- repo,
709
- '--add-label',
710
- this.config.claimLabel,
711
- ], { stdio: 'ignore' });
712
- }
713
- catch {
714
- errors.push('Failed to add claim label (label may not exist)');
715
- }
716
- }
717
- // Auto-assign if human claimant
718
- if (this.config.autoAssign && claimant.type === 'human') {
719
- if (!isValidClaimantName(claimant.name)) {
720
- errors.push('Invalid claimant name format');
721
- }
722
- else {
723
- try {
724
- execFileSync('gh', [
725
- 'issue',
726
- 'edit',
727
- String(issueNumber),
728
- '--repo',
729
- repo,
730
- '--add-assignee',
731
- claimant.name,
732
- ], { stdio: 'ignore' });
733
- }
734
- catch {
735
- errors.push('Failed to assign issue');
736
- }
737
- }
738
- }
739
- // Add comment
740
- if (this.config.commentOnClaim) {
741
- const claimantStr = claimant.type === 'human'
742
- ? `@${claimant.name.replace(/[^a-zA-Z0-9_-]/g, '')}`
743
- : `Agent: ${(claimant.agentType || 'unknown').replace(/[^a-zA-Z0-9_-]/g, '')}`;
744
- const comment = `🤖 **Issue claimed** by ${claimantStr}\n\n_Coordinated by Monomind_`;
745
- try {
746
- execFileSync('gh', ['issue', 'comment', String(issueNumber), '--repo', repo, '--body', comment], { stdio: 'ignore' });
747
- }
748
- catch {
749
- errors.push('Failed to add comment');
750
- }
751
- }
752
- return { success: errors.length === 0, synced: 1, errors };
753
- }
754
- catch (error) {
755
- errors.push(`GitHub sync failed: ${sanitizeError(error)}`);
756
- return { success: false, synced: 0, errors };
757
- }
758
- }
759
- /**
760
- * Release claim on GitHub (remove label/assignee/comment)
761
- */
762
- async releaseOnGitHub(issueNumber, claimant) {
763
- const errors = [];
764
- if (!this.config.enabled) {
765
- return { success: true, synced: 0, errors: ['GitHub sync not enabled'] };
766
- }
767
- if (!this.isGhAvailable()) {
768
- return { success: false, synced: 0, errors: ['GitHub CLI (gh) not installed'] };
769
- }
770
- // Validate issue number
771
- if (!isValidIssueNumber(issueNumber)) {
772
- return { success: false, synced: 0, errors: ['Invalid issue number'] };
773
- }
774
- const repo = this.getRepo();
775
- if (!repo) {
776
- return { success: false, synced: 0, errors: ['Could not determine repository'] };
777
- }
778
- // Validate claim label
779
- if (!isValidLabel(this.config.claimLabel)) {
780
- return {
781
- success: false,
782
- synced: 0,
783
- errors: ['Invalid claim label configuration'],
784
- };
785
- }
786
- try {
787
- // Remove claim label
788
- if (this.config.syncLabels) {
789
- try {
790
- execFileSync('gh', [
791
- 'issue',
792
- 'edit',
793
- String(issueNumber),
794
- '--repo',
795
- repo,
796
- '--remove-label',
797
- this.config.claimLabel,
798
- ], { stdio: 'ignore' });
799
- }
800
- catch {
801
- // Label might not exist
802
- }
803
- }
804
- // Remove assignee if human claimant
805
- if (this.config.autoAssign && claimant.type === 'human') {
806
- if (isValidClaimantName(claimant.name)) {
807
- try {
808
- execFileSync('gh', [
809
- 'issue',
810
- 'edit',
811
- String(issueNumber),
812
- '--repo',
813
- repo,
814
- '--remove-assignee',
815
- claimant.name,
816
- ], { stdio: 'ignore' });
817
- }
818
- catch {
819
- errors.push('Failed to remove assignee');
820
- }
821
- }
822
- }
823
- // Add release comment
824
- if (this.config.commentOnRelease) {
825
- const claimantStr = claimant.type === 'human'
826
- ? `@${claimant.name.replace(/[^a-zA-Z0-9_-]/g, '')}`
827
- : `Agent: ${(claimant.agentType || 'unknown').replace(/[^a-zA-Z0-9_-]/g, '')}`;
828
- const comment = `🔓 **Issue released** by ${claimantStr}\n\n_This issue is now available for others to claim._`;
829
- try {
830
- execFileSync('gh', ['issue', 'comment', String(issueNumber), '--repo', repo, '--body', comment], { stdio: 'ignore' });
831
- }
832
- catch {
833
- errors.push('Failed to add release comment');
834
- }
835
- }
836
- return { success: errors.length === 0, synced: 1, errors };
837
- }
838
- catch (error) {
839
- errors.push(`GitHub release sync failed: ${sanitizeError(error)}`);
840
- return { success: false, synced: 0, errors };
841
- }
842
- }
843
- /**
844
- * Bulk sync all local claims to GitHub
845
- */
846
- async syncAllClaimsToGitHub() {
847
- const errors = [];
848
- let synced = 0;
849
- const claims = await this.claimService.getAllClaims();
850
- for (const claim of claims) {
851
- // Extract issue number from issueId (assumes format like "123" or "issue-123")
852
- const issueMatch = claim.issueId.match(/(\d+)/);
853
- if (issueMatch) {
854
- const result = await this.claimOnGitHub(parseInt(issueMatch[1], 10), claim.claimant);
855
- if (result.success)
856
- synced++;
857
- else
858
- errors.push(...result.errors);
859
- }
860
- }
861
- return { success: errors.length === 0, synced, errors };
862
- }
863
- /**
864
- * Get GitHub issues that are claimed locally
865
- */
866
- async getClaimedGitHubIssues() {
867
- const syncResult = await this.syncIssues('open');
868
- if (!syncResult.success || !syncResult.issues)
869
- return [];
870
- const localClaims = await this.claimService.getAllClaims();
871
- const claimedIds = new Set(localClaims
872
- .map((c) => {
873
- const match = c.issueId.match(/(\d+)/);
874
- return match ? parseInt(match[1], 10) : null;
875
- })
876
- .filter((n) => n !== null));
877
- return syncResult.issues.filter((issue) => claimedIds.has(issue.number));
878
- }
879
- }
880
- // ============================================================================
881
- // Factory
882
- // ============================================================================
883
- export function createClaimService(projectRoot, config) {
884
- return new ClaimService(projectRoot, config);
885
- }
886
- export function createGitHubSync(claimService, config) {
887
- return new GitHubSync(claimService, config);
888
- }
889
- export default ClaimService;
890
- //# sourceMappingURL=claim-service.js.map