@accelerationguy/accel 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/CLAUDE.md +19 -0
  2. package/LICENSE +33 -0
  3. package/README.md +275 -0
  4. package/bin/install.js +661 -0
  5. package/docs/getting-started.md +164 -0
  6. package/docs/module-guide.md +139 -0
  7. package/modules/drive/LICENSE +21 -0
  8. package/modules/drive/PAUL-VS-GSD.md +171 -0
  9. package/modules/drive/README.md +555 -0
  10. package/modules/drive/assets/terminal.svg +67 -0
  11. package/modules/drive/bin/install.js +210 -0
  12. package/modules/drive/integration.js +76 -0
  13. package/modules/drive/package.json +38 -0
  14. package/modules/drive/src/commands/add-phase.md +36 -0
  15. package/modules/drive/src/commands/apply.md +83 -0
  16. package/modules/drive/src/commands/assumptions.md +37 -0
  17. package/modules/drive/src/commands/audit.md +57 -0
  18. package/modules/drive/src/commands/complete-milestone.md +36 -0
  19. package/modules/drive/src/commands/config.md +175 -0
  20. package/modules/drive/src/commands/consider-issues.md +41 -0
  21. package/modules/drive/src/commands/discover.md +48 -0
  22. package/modules/drive/src/commands/discuss-milestone.md +33 -0
  23. package/modules/drive/src/commands/discuss.md +34 -0
  24. package/modules/drive/src/commands/flows.md +73 -0
  25. package/modules/drive/src/commands/handoff.md +201 -0
  26. package/modules/drive/src/commands/help.md +525 -0
  27. package/modules/drive/src/commands/init.md +54 -0
  28. package/modules/drive/src/commands/map-codebase.md +34 -0
  29. package/modules/drive/src/commands/milestone.md +34 -0
  30. package/modules/drive/src/commands/pause.md +44 -0
  31. package/modules/drive/src/commands/plan-fix.md +216 -0
  32. package/modules/drive/src/commands/plan.md +36 -0
  33. package/modules/drive/src/commands/progress.md +138 -0
  34. package/modules/drive/src/commands/register.md +29 -0
  35. package/modules/drive/src/commands/remove-phase.md +37 -0
  36. package/modules/drive/src/commands/research-phase.md +209 -0
  37. package/modules/drive/src/commands/research.md +47 -0
  38. package/modules/drive/src/commands/resume.md +49 -0
  39. package/modules/drive/src/commands/status.md +78 -0
  40. package/modules/drive/src/commands/unify.md +87 -0
  41. package/modules/drive/src/commands/verify.md +60 -0
  42. package/modules/drive/src/references/checkpoints.md +234 -0
  43. package/modules/drive/src/references/context-management.md +219 -0
  44. package/modules/drive/src/references/git-strategy.md +206 -0
  45. package/modules/drive/src/references/loop-phases.md +254 -0
  46. package/modules/drive/src/references/plan-format.md +263 -0
  47. package/modules/drive/src/references/quality-principles.md +152 -0
  48. package/modules/drive/src/references/research-quality-control.md +247 -0
  49. package/modules/drive/src/references/sonarqube-integration.md +244 -0
  50. package/modules/drive/src/references/specialized-workflow-integration.md +186 -0
  51. package/modules/drive/src/references/subagent-criteria.md +179 -0
  52. package/modules/drive/src/references/tdd.md +219 -0
  53. package/modules/drive/src/references/work-units.md +161 -0
  54. package/modules/drive/src/rules/commands.md +108 -0
  55. package/modules/drive/src/rules/references.md +107 -0
  56. package/modules/drive/src/rules/style.md +123 -0
  57. package/modules/drive/src/rules/templates.md +51 -0
  58. package/modules/drive/src/rules/workflows.md +133 -0
  59. package/modules/drive/src/templates/CONTEXT.md +88 -0
  60. package/modules/drive/src/templates/DEBUG.md +164 -0
  61. package/modules/drive/src/templates/DISCOVERY.md +148 -0
  62. package/modules/drive/src/templates/HANDOFF.md +77 -0
  63. package/modules/drive/src/templates/ISSUES.md +93 -0
  64. package/modules/drive/src/templates/MILESTONES.md +167 -0
  65. package/modules/drive/src/templates/PLAN.md +328 -0
  66. package/modules/drive/src/templates/PROJECT.md +219 -0
  67. package/modules/drive/src/templates/RESEARCH.md +130 -0
  68. package/modules/drive/src/templates/ROADMAP.md +328 -0
  69. package/modules/drive/src/templates/SPECIAL-FLOWS.md +70 -0
  70. package/modules/drive/src/templates/STATE.md +210 -0
  71. package/modules/drive/src/templates/SUMMARY.md +221 -0
  72. package/modules/drive/src/templates/UAT-ISSUES.md +139 -0
  73. package/modules/drive/src/templates/codebase/architecture.md +259 -0
  74. package/modules/drive/src/templates/codebase/concerns.md +329 -0
  75. package/modules/drive/src/templates/codebase/conventions.md +311 -0
  76. package/modules/drive/src/templates/codebase/integrations.md +284 -0
  77. package/modules/drive/src/templates/codebase/stack.md +190 -0
  78. package/modules/drive/src/templates/codebase/structure.md +287 -0
  79. package/modules/drive/src/templates/codebase/testing.md +484 -0
  80. package/modules/drive/src/templates/config.md +181 -0
  81. package/modules/drive/src/templates/milestone-archive.md +236 -0
  82. package/modules/drive/src/templates/milestone-context.md +190 -0
  83. package/modules/drive/src/templates/paul-json.md +147 -0
  84. package/modules/drive/src/vector-config/PAUL +26 -0
  85. package/modules/drive/src/vector-config/PAUL.manifest +11 -0
  86. package/modules/drive/src/workflows/apply-phase.md +393 -0
  87. package/modules/drive/src/workflows/audit-plan.md +344 -0
  88. package/modules/drive/src/workflows/complete-milestone.md +479 -0
  89. package/modules/drive/src/workflows/configure-special-flows.md +283 -0
  90. package/modules/drive/src/workflows/consider-issues.md +172 -0
  91. package/modules/drive/src/workflows/create-milestone.md +268 -0
  92. package/modules/drive/src/workflows/debug.md +292 -0
  93. package/modules/drive/src/workflows/discovery.md +187 -0
  94. package/modules/drive/src/workflows/discuss-milestone.md +245 -0
  95. package/modules/drive/src/workflows/discuss-phase.md +231 -0
  96. package/modules/drive/src/workflows/init-project.md +698 -0
  97. package/modules/drive/src/workflows/map-codebase.md +459 -0
  98. package/modules/drive/src/workflows/pause-work.md +259 -0
  99. package/modules/drive/src/workflows/phase-assumptions.md +181 -0
  100. package/modules/drive/src/workflows/plan-phase.md +385 -0
  101. package/modules/drive/src/workflows/quality-gate.md +263 -0
  102. package/modules/drive/src/workflows/register-manifest.md +107 -0
  103. package/modules/drive/src/workflows/research.md +241 -0
  104. package/modules/drive/src/workflows/resume-project.md +200 -0
  105. package/modules/drive/src/workflows/roadmap-management.md +334 -0
  106. package/modules/drive/src/workflows/transition-phase.md +368 -0
  107. package/modules/drive/src/workflows/unify-phase.md +290 -0
  108. package/modules/drive/src/workflows/verify-work.md +241 -0
  109. package/modules/forge/README.md +281 -0
  110. package/modules/forge/bin/install.js +200 -0
  111. package/modules/forge/package.json +32 -0
  112. package/modules/forge/skillsmith/rules/checklists-rules.md +42 -0
  113. package/modules/forge/skillsmith/rules/context-rules.md +43 -0
  114. package/modules/forge/skillsmith/rules/entry-point-rules.md +44 -0
  115. package/modules/forge/skillsmith/rules/frameworks-rules.md +43 -0
  116. package/modules/forge/skillsmith/rules/tasks-rules.md +52 -0
  117. package/modules/forge/skillsmith/rules/templates-rules.md +43 -0
  118. package/modules/forge/skillsmith/skillsmith.md +82 -0
  119. package/modules/forge/skillsmith/tasks/audit.md +277 -0
  120. package/modules/forge/skillsmith/tasks/discover.md +145 -0
  121. package/modules/forge/skillsmith/tasks/distill.md +276 -0
  122. package/modules/forge/skillsmith/tasks/scaffold.md +349 -0
  123. package/modules/forge/specs/checklists.md +193 -0
  124. package/modules/forge/specs/context.md +223 -0
  125. package/modules/forge/specs/entry-point.md +320 -0
  126. package/modules/forge/specs/frameworks.md +228 -0
  127. package/modules/forge/specs/rules.md +245 -0
  128. package/modules/forge/specs/tasks.md +344 -0
  129. package/modules/forge/specs/templates.md +335 -0
  130. package/modules/forge/terminal.svg +70 -0
  131. package/modules/ignition/README.md +245 -0
  132. package/modules/ignition/bin/install.js +184 -0
  133. package/modules/ignition/checklists/planning-quality.md +55 -0
  134. package/modules/ignition/data/application/config.md +21 -0
  135. package/modules/ignition/data/application/guide.md +51 -0
  136. package/modules/ignition/data/application/skill-loadout.md +11 -0
  137. package/modules/ignition/data/campaign/config.md +18 -0
  138. package/modules/ignition/data/campaign/guide.md +36 -0
  139. package/modules/ignition/data/campaign/skill-loadout.md +10 -0
  140. package/modules/ignition/data/client/config.md +18 -0
  141. package/modules/ignition/data/client/guide.md +36 -0
  142. package/modules/ignition/data/client/skill-loadout.md +11 -0
  143. package/modules/ignition/data/utility/config.md +18 -0
  144. package/modules/ignition/data/utility/guide.md +31 -0
  145. package/modules/ignition/data/utility/skill-loadout.md +8 -0
  146. package/modules/ignition/data/workflow/config.md +19 -0
  147. package/modules/ignition/data/workflow/guide.md +41 -0
  148. package/modules/ignition/data/workflow/skill-loadout.md +10 -0
  149. package/modules/ignition/integration.js +54 -0
  150. package/modules/ignition/package.json +35 -0
  151. package/modules/ignition/seed.md +81 -0
  152. package/modules/ignition/tasks/add-type.md +164 -0
  153. package/modules/ignition/tasks/graduate.md +182 -0
  154. package/modules/ignition/tasks/ideate.md +221 -0
  155. package/modules/ignition/tasks/launch.md +137 -0
  156. package/modules/ignition/tasks/status.md +71 -0
  157. package/modules/ignition/templates/planning-application.md +193 -0
  158. package/modules/ignition/templates/planning-campaign.md +138 -0
  159. package/modules/ignition/templates/planning-client.md +149 -0
  160. package/modules/ignition/templates/planning-utility.md +112 -0
  161. package/modules/ignition/templates/planning-workflow.md +125 -0
  162. package/modules/ignition/terminal.svg +74 -0
  163. package/modules/mission-control/CONTEXT-CONTINUITY-SPEC.md +293 -0
  164. package/modules/mission-control/CONTEXT-ENGINEERING-GUIDE.md +282 -0
  165. package/modules/mission-control/README.md +91 -0
  166. package/modules/mission-control/assets/terminal.svg +80 -0
  167. package/modules/mission-control/examples/entities.example.json +133 -0
  168. package/modules/mission-control/examples/projects.example.json +318 -0
  169. package/modules/mission-control/examples/state.example.json +183 -0
  170. package/modules/mission-control/examples/vector.example.json +245 -0
  171. package/modules/mission-control/mission-control/checklists/install-verification.md +46 -0
  172. package/modules/mission-control/mission-control/frameworks/framework-registry.md +83 -0
  173. package/modules/mission-control/mission-control/mission-control.md +83 -0
  174. package/modules/mission-control/mission-control/tasks/insights.md +73 -0
  175. package/modules/mission-control/mission-control/tasks/install.md +194 -0
  176. package/modules/mission-control/mission-control/tasks/status.md +125 -0
  177. package/modules/mission-control/schemas/entities.schema.json +89 -0
  178. package/modules/mission-control/schemas/projects.schema.json +221 -0
  179. package/modules/mission-control/schemas/state.schema.json +108 -0
  180. package/modules/mission-control/schemas/vector.schema.json +200 -0
  181. package/modules/momentum/README.md +678 -0
  182. package/modules/momentum/bin/install.js +563 -0
  183. package/modules/momentum/integration.js +131 -0
  184. package/modules/momentum/package.json +42 -0
  185. package/modules/momentum/schemas/entities.schema.json +89 -0
  186. package/modules/momentum/schemas/projects.schema.json +221 -0
  187. package/modules/momentum/schemas/state.schema.json +108 -0
  188. package/modules/momentum/src/commands/audit-claude-md.md +31 -0
  189. package/modules/momentum/src/commands/audit.md +33 -0
  190. package/modules/momentum/src/commands/groom.md +35 -0
  191. package/modules/momentum/src/commands/history.md +27 -0
  192. package/modules/momentum/src/commands/pulse.md +33 -0
  193. package/modules/momentum/src/commands/scaffold.md +33 -0
  194. package/modules/momentum/src/commands/status.md +28 -0
  195. package/modules/momentum/src/commands/surface-convert.md +35 -0
  196. package/modules/momentum/src/commands/surface-create.md +34 -0
  197. package/modules/momentum/src/commands/surface-list.md +27 -0
  198. package/modules/momentum/src/commands/vector-hygiene.md +33 -0
  199. package/modules/momentum/src/framework/context/momentum-principles.md +71 -0
  200. package/modules/momentum/src/framework/frameworks/audit-strategies.md +53 -0
  201. package/modules/momentum/src/framework/frameworks/satellite-registration.md +44 -0
  202. package/modules/momentum/src/framework/tasks/audit-claude-md.md +68 -0
  203. package/modules/momentum/src/framework/tasks/audit.md +64 -0
  204. package/modules/momentum/src/framework/tasks/groom.md +164 -0
  205. package/modules/momentum/src/framework/tasks/history.md +34 -0
  206. package/modules/momentum/src/framework/tasks/pulse.md +83 -0
  207. package/modules/momentum/src/framework/tasks/scaffold.md +202 -0
  208. package/modules/momentum/src/framework/tasks/status.md +35 -0
  209. package/modules/momentum/src/framework/tasks/surface-convert.md +143 -0
  210. package/modules/momentum/src/framework/tasks/surface-create.md +184 -0
  211. package/modules/momentum/src/framework/tasks/surface-list.md +42 -0
  212. package/modules/momentum/src/framework/tasks/vector-hygiene.md +160 -0
  213. package/modules/momentum/src/framework/templates/workspace-json.md +96 -0
  214. package/modules/momentum/src/hooks/_template.py +129 -0
  215. package/modules/momentum/src/hooks/active-hook.py +178 -0
  216. package/modules/momentum/src/hooks/backlog-hook.py +115 -0
  217. package/modules/momentum/src/hooks/mission-control-insights.py +169 -0
  218. package/modules/momentum/src/hooks/momentum-pulse-check.py +351 -0
  219. package/modules/momentum/src/hooks/operator.py +53 -0
  220. package/modules/momentum/src/hooks/psmm-injector.py +67 -0
  221. package/modules/momentum/src/hooks/satellite-detection.py +248 -0
  222. package/modules/momentum/src/packages/momentum-mcp/index.js +119 -0
  223. package/modules/momentum/src/packages/momentum-mcp/package.json +10 -0
  224. package/modules/momentum/src/packages/momentum-mcp/tools/entities.js +226 -0
  225. package/modules/momentum/src/packages/momentum-mcp/tools/operator.js +106 -0
  226. package/modules/momentum/src/packages/momentum-mcp/tools/projects.js +322 -0
  227. package/modules/momentum/src/packages/momentum-mcp/tools/psmm.js +206 -0
  228. package/modules/momentum/src/packages/momentum-mcp/tools/state.js +199 -0
  229. package/modules/momentum/src/packages/momentum-mcp/tools/surfaces.js +404 -0
  230. package/modules/momentum/src/skill/momentum.md +111 -0
  231. package/modules/momentum/src/tasks/groom.md +164 -0
  232. package/modules/momentum/src/templates/operator.json +66 -0
  233. package/modules/momentum/src/templates/workspace.json +111 -0
  234. package/modules/momentum/terminal.svg +77 -0
  235. package/modules/radar/README.md +1552 -0
  236. package/modules/radar/commands/audit.md +233 -0
  237. package/modules/radar/commands/guardrails.md +194 -0
  238. package/modules/radar/commands/init.md +207 -0
  239. package/modules/radar/commands/playbook.md +176 -0
  240. package/modules/radar/commands/remediate.md +156 -0
  241. package/modules/radar/commands/report.md +172 -0
  242. package/modules/radar/commands/resume.md +176 -0
  243. package/modules/radar/commands/status.md +148 -0
  244. package/modules/radar/commands/transform.md +205 -0
  245. package/modules/radar/commands/validate.md +177 -0
  246. package/modules/radar/docs/ARCHITECTURE.md +336 -0
  247. package/modules/radar/docs/GETTING-STARTED.md +287 -0
  248. package/modules/radar/docs/standards/agents.md +197 -0
  249. package/modules/radar/docs/standards/commands.md +250 -0
  250. package/modules/radar/docs/standards/domains.md +191 -0
  251. package/modules/radar/docs/standards/personas.md +211 -0
  252. package/modules/radar/docs/standards/rules.md +218 -0
  253. package/modules/radar/docs/standards/runtime.md +445 -0
  254. package/modules/radar/docs/standards/schemas.md +269 -0
  255. package/modules/radar/docs/standards/tools.md +273 -0
  256. package/modules/radar/docs/standards/workflows.md +254 -0
  257. package/modules/radar/docs/terminal.svg +72 -0
  258. package/modules/radar/docs/validation/convention-compliance-report.md +183 -0
  259. package/modules/radar/docs/validation/cross-reference-report.md +195 -0
  260. package/modules/radar/docs/validation/validation-summary.md +118 -0
  261. package/modules/radar/docs/validation/version-manifest.yaml +363 -0
  262. package/modules/radar/install.sh +711 -0
  263. package/modules/radar/integration.js +53 -0
  264. package/modules/radar/src/core/agents/architect.md +25 -0
  265. package/modules/radar/src/core/agents/compliance-officer.md +25 -0
  266. package/modules/radar/src/core/agents/data-engineer.md +25 -0
  267. package/modules/radar/src/core/agents/devils-advocate.md +22 -0
  268. package/modules/radar/src/core/agents/performance-engineer.md +25 -0
  269. package/modules/radar/src/core/agents/principal-engineer.md +23 -0
  270. package/modules/radar/src/core/agents/reality-gap-analyst.md +22 -0
  271. package/modules/radar/src/core/agents/security-engineer.md +25 -0
  272. package/modules/radar/src/core/agents/senior-app-engineer.md +25 -0
  273. package/modules/radar/src/core/agents/sre.md +25 -0
  274. package/modules/radar/src/core/agents/staff-engineer.md +23 -0
  275. package/modules/radar/src/core/agents/test-engineer.md +25 -0
  276. package/modules/radar/src/core/personas/architect.md +111 -0
  277. package/modules/radar/src/core/personas/compliance-officer.md +104 -0
  278. package/modules/radar/src/core/personas/data-engineer.md +113 -0
  279. package/modules/radar/src/core/personas/devils-advocate.md +105 -0
  280. package/modules/radar/src/core/personas/performance-engineer.md +119 -0
  281. package/modules/radar/src/core/personas/principal-engineer.md +119 -0
  282. package/modules/radar/src/core/personas/reality-gap-analyst.md +111 -0
  283. package/modules/radar/src/core/personas/security-engineer.md +108 -0
  284. package/modules/radar/src/core/personas/senior-app-engineer.md +111 -0
  285. package/modules/radar/src/core/personas/sre.md +117 -0
  286. package/modules/radar/src/core/personas/staff-engineer.md +109 -0
  287. package/modules/radar/src/core/personas/test-engineer.md +109 -0
  288. package/modules/radar/src/core/workflows/disagreement-resolution.md +183 -0
  289. package/modules/radar/src/core/workflows/phase-0-context.md +148 -0
  290. package/modules/radar/src/core/workflows/phase-1-reconnaissance.md +169 -0
  291. package/modules/radar/src/core/workflows/phase-2-domain-audits.md +190 -0
  292. package/modules/radar/src/core/workflows/phase-3-cross-domain.md +177 -0
  293. package/modules/radar/src/core/workflows/phase-4-adversarial-review.md +165 -0
  294. package/modules/radar/src/core/workflows/phase-5-report.md +189 -0
  295. package/modules/radar/src/core/workflows/phase-checkpoint.md +222 -0
  296. package/modules/radar/src/core/workflows/session-handoff.md +152 -0
  297. package/modules/radar/src/domains/00-context.md +201 -0
  298. package/modules/radar/src/domains/01-architecture.md +248 -0
  299. package/modules/radar/src/domains/02-data.md +224 -0
  300. package/modules/radar/src/domains/03-correctness.md +230 -0
  301. package/modules/radar/src/domains/04-security.md +274 -0
  302. package/modules/radar/src/domains/05-compliance.md +228 -0
  303. package/modules/radar/src/domains/06-testing.md +228 -0
  304. package/modules/radar/src/domains/07-reliability.md +246 -0
  305. package/modules/radar/src/domains/08-performance.md +247 -0
  306. package/modules/radar/src/domains/09-maintainability.md +271 -0
  307. package/modules/radar/src/domains/10-operability.md +250 -0
  308. package/modules/radar/src/domains/11-change-risk.md +246 -0
  309. package/modules/radar/src/domains/12-team-risk.md +221 -0
  310. package/modules/radar/src/domains/13-risk-synthesis.md +202 -0
  311. package/modules/radar/src/rules/agent-boundaries.md +78 -0
  312. package/modules/radar/src/rules/disagreement-protocol.md +76 -0
  313. package/modules/radar/src/rules/epistemic-hygiene.md +78 -0
  314. package/modules/radar/src/schemas/confidence.md +185 -0
  315. package/modules/radar/src/schemas/disagreement.md +238 -0
  316. package/modules/radar/src/schemas/finding.md +287 -0
  317. package/modules/radar/src/schemas/report-section.md +150 -0
  318. package/modules/radar/src/schemas/signal.md +108 -0
  319. package/modules/radar/src/tools/checkov.md +463 -0
  320. package/modules/radar/src/tools/git-history.md +581 -0
  321. package/modules/radar/src/tools/gitleaks.md +447 -0
  322. package/modules/radar/src/tools/grype.md +611 -0
  323. package/modules/radar/src/tools/semgrep.md +378 -0
  324. package/modules/radar/src/tools/sonarqube.md +550 -0
  325. package/modules/radar/src/tools/syft.md +539 -0
  326. package/modules/radar/src/tools/trivy.md +439 -0
  327. package/modules/radar/src/transform/agents/change-risk-modeler.md +24 -0
  328. package/modules/radar/src/transform/agents/execution-validator.md +24 -0
  329. package/modules/radar/src/transform/agents/guardrail-generator.md +24 -0
  330. package/modules/radar/src/transform/agents/pedagogy-agent.md +24 -0
  331. package/modules/radar/src/transform/agents/remediation-architect.md +24 -0
  332. package/modules/radar/src/transform/personas/change-risk-modeler.md +95 -0
  333. package/modules/radar/src/transform/personas/execution-validator.md +95 -0
  334. package/modules/radar/src/transform/personas/guardrail-generator.md +103 -0
  335. package/modules/radar/src/transform/personas/pedagogy-agent.md +105 -0
  336. package/modules/radar/src/transform/personas/remediation-architect.md +95 -0
  337. package/modules/radar/src/transform/rules/change-risk-rules.md +87 -0
  338. package/modules/radar/src/transform/rules/safety-governance.md +87 -0
  339. package/modules/radar/src/transform/schemas/change-risk.md +139 -0
  340. package/modules/radar/src/transform/schemas/intervention-level.md +207 -0
  341. package/modules/radar/src/transform/schemas/playbook.md +205 -0
  342. package/modules/radar/src/transform/schemas/verification-plan.md +134 -0
  343. package/modules/radar/src/transform/workflows/phase-6-remediation.md +148 -0
  344. package/modules/radar/src/transform/workflows/phase-7-risk-validation.md +161 -0
  345. package/modules/radar/src/transform/workflows/phase-8-execution-planning.md +159 -0
  346. package/modules/radar/src/transform/workflows/transform-safety.md +158 -0
  347. package/modules/vector/.vector-template/sessions/.gitkeep +0 -0
  348. package/modules/vector/.vector-template/vector.json +72 -0
  349. package/modules/vector/AUDIT-CLAUDEMD.md +154 -0
  350. package/modules/vector/INSTALL.md +185 -0
  351. package/modules/vector/LICENSE +21 -0
  352. package/modules/vector/README.md +409 -0
  353. package/modules/vector/VECTOR-BLOCK.md +57 -0
  354. package/modules/vector/assets/terminal.svg +68 -0
  355. package/modules/vector/bin/install.js +455 -0
  356. package/modules/vector/bin/migrate-v1-to-v2.sh +492 -0
  357. package/modules/vector/commands/help.md +46 -0
  358. package/modules/vector/hooks/vector-hook.py +775 -0
  359. package/modules/vector/mcp/index.js +118 -0
  360. package/modules/vector/mcp/package.json +10 -0
  361. package/modules/vector/mcp/tools/decisions.js +269 -0
  362. package/modules/vector/mcp/tools/domains.js +361 -0
  363. package/modules/vector/mcp/tools/staging.js +252 -0
  364. package/modules/vector/mcp/tools/vector-json.js +647 -0
  365. package/modules/vector/package.json +38 -0
  366. package/modules/vector/schemas/vector.schema.json +237 -0
  367. package/package.json +39 -0
  368. package/shared/branding/branding.js +70 -0
  369. package/shared/config/defaults.json +59 -0
  370. package/shared/events/README.md +175 -0
  371. package/shared/events/event-bus.js +134 -0
  372. package/shared/events/event_bus.py +255 -0
  373. package/shared/events/integrations.js +161 -0
  374. package/shared/events/schemas/audit-complete.schema.json +21 -0
  375. package/shared/events/schemas/phase-progress.schema.json +23 -0
  376. package/shared/events/schemas/plan-created.schema.json +21 -0
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Mission Control State — Read/update tools for state.json
3
+ * Workspace health, drift tracking, groom scheduling
4
+ */
5
+
6
+ import { readFileSync, writeFileSync, existsSync } from 'fs';
7
+ import { join } from 'path';
8
+
9
+ function debugLog(...args) {
10
+ console.error('[Momentum:state]', new Date().toISOString(), ...args);
11
+ }
12
+
13
+ // ============================================================
14
+ // HELPERS
15
+ // ============================================================
16
+
17
+ function getStatePath(workspacePath) {
18
+ return join(workspacePath, '.accel/momentum', 'data', 'state.json');
19
+ }
20
+
21
+ function readState(workspacePath) {
22
+ const filepath = getStatePath(workspacePath);
23
+ if (!existsSync(filepath)) {
24
+ return { version: 1, workspace: '', last_modified: null, groom: {}, drift: { score: 0, indicators: {} }, areas: {}, satellites: {} };
25
+ }
26
+ try {
27
+ return JSON.parse(readFileSync(filepath, 'utf-8'));
28
+ } catch (error) {
29
+ debugLog('Error reading state.json:', error.message);
30
+ return { version: 1, workspace: '', last_modified: null, groom: {}, drift: { score: 0, indicators: {} }, areas: {}, satellites: {} };
31
+ }
32
+ }
33
+
34
+ function writeState(workspacePath, data) {
35
+ const filepath = getStatePath(workspacePath);
36
+ data.last_modified = new Date().toISOString();
37
+ writeFileSync(filepath, JSON.stringify(data, null, 2), 'utf-8');
38
+ }
39
+
40
+ function addDays(dateStr, days) {
41
+ const d = new Date(dateStr);
42
+ d.setDate(d.getDate() + days);
43
+ return d.toISOString().split('T')[0];
44
+ }
45
+
46
+ function todayStr() {
47
+ return new Date().toISOString().split('T')[0];
48
+ }
49
+
50
+ // ============================================================
51
+ // TOOL DEFINITIONS
52
+ // ============================================================
53
+
54
+ export const TOOLS = [
55
+ {
56
+ name: "momentum_get_state",
57
+ description: "Read full workspace state (groom, drift, areas, satellites, vector_hygiene). Returns entire state.json.",
58
+ inputSchema: {
59
+ type: "object",
60
+ properties: {},
61
+ required: []
62
+ }
63
+ },
64
+ {
65
+ name: "momentum_update_drift",
66
+ description: "Update drift indicators and recalculate composite score. Pass indicator key-value pairs to merge.",
67
+ inputSchema: {
68
+ type: "object",
69
+ properties: {
70
+ indicators: {
71
+ type: "object",
72
+ description: "Drift indicator updates (e.g., { active_age_days: 2, backlog_past_review: 3 })"
73
+ }
74
+ },
75
+ required: ["indicators"]
76
+ }
77
+ },
78
+ {
79
+ name: "momentum_record_groom",
80
+ description: "Record a groom event. Sets last_groom to today and advances next_groom_due based on cadence.",
81
+ inputSchema: {
82
+ type: "object",
83
+ properties: {},
84
+ required: []
85
+ }
86
+ },
87
+ {
88
+ name: "momentum_update_area",
89
+ description: "Update a specific workspace area's fields (status, last_touched, groom_due, etc.).",
90
+ inputSchema: {
91
+ type: "object",
92
+ properties: {
93
+ area: { type: "string", description: "Area slug (key in state.json areas object)" },
94
+ data: { type: "object", description: "Fields to merge into the area object" }
95
+ },
96
+ required: ["area", "data"]
97
+ }
98
+ }
99
+ ];
100
+
101
+ // ============================================================
102
+ // TOOL HANDLERS
103
+ // ============================================================
104
+
105
+ function handleGetState(workspacePath) {
106
+ debugLog('Reading state');
107
+ return readState(workspacePath);
108
+ }
109
+
110
+ function handleUpdateDrift(args, workspacePath) {
111
+ const { indicators } = args;
112
+ if (!indicators) throw new Error('Missing required parameter: indicators');
113
+
114
+ debugLog('Updating drift indicators');
115
+ const data = readState(workspacePath);
116
+
117
+ if (!data.drift) data.drift = { score: 0, indicators: {} };
118
+ if (!data.drift.indicators) data.drift.indicators = {};
119
+
120
+ // Merge indicators
121
+ data.drift.indicators = { ...data.drift.indicators, ...indicators };
122
+
123
+ // Recalculate score as sum of all indicator values
124
+ data.drift.score = Object.values(data.drift.indicators)
125
+ .reduce((sum, val) => sum + (typeof val === 'number' ? val : 0), 0);
126
+
127
+ writeState(workspacePath, data);
128
+
129
+ return {
130
+ score: data.drift.score,
131
+ indicators: data.drift.indicators
132
+ };
133
+ }
134
+
135
+ function handleRecordGroom(workspacePath) {
136
+ debugLog('Recording groom event');
137
+ const data = readState(workspacePath);
138
+
139
+ if (!data.groom) data.groom = { cadence: 'weekly', day: 'friday' };
140
+
141
+ const today = todayStr();
142
+ data.groom.last_groom = today;
143
+
144
+ // Calculate next due based on cadence
145
+ const cadenceDays = {
146
+ daily: 1,
147
+ weekly: 7,
148
+ 'bi-weekly': 14,
149
+ monthly: 30
150
+ };
151
+ const days = cadenceDays[data.groom.cadence] || 7;
152
+ data.groom.next_groom_due = addDays(today, days);
153
+
154
+ writeState(workspacePath, data);
155
+
156
+ return {
157
+ last_groom: data.groom.last_groom,
158
+ next_groom_due: data.groom.next_groom_due,
159
+ cadence: data.groom.cadence
160
+ };
161
+ }
162
+
163
+ function handleUpdateArea(args, workspacePath) {
164
+ const { area, data: updateData } = args;
165
+ if (!area) throw new Error('Missing required parameter: area');
166
+ if (!updateData) throw new Error('Missing required parameter: data');
167
+
168
+ debugLog('Updating area:', area);
169
+ const data = readState(workspacePath);
170
+
171
+ if (!data.areas) data.areas = {};
172
+ if (!data.areas[area]) {
173
+ throw new Error(`Area "${area}" not found. Available: ${Object.keys(data.areas).join(', ') || 'none'}`);
174
+ }
175
+
176
+ data.areas[area] = { ...data.areas[area], ...updateData };
177
+ writeState(workspacePath, data);
178
+
179
+ return data.areas[area];
180
+ }
181
+
182
+ // ============================================================
183
+ // HANDLER DISPATCH
184
+ // ============================================================
185
+
186
+ export function handleTool(name, args, workspacePath) {
187
+ switch (name) {
188
+ case 'momentum_get_state':
189
+ return handleGetState(workspacePath);
190
+ case 'momentum_update_drift':
191
+ return handleUpdateDrift(args, workspacePath);
192
+ case 'momentum_record_groom':
193
+ return handleRecordGroom(workspacePath);
194
+ case 'momentum_update_area':
195
+ return handleUpdateArea(args, workspacePath);
196
+ default:
197
+ return null;
198
+ }
199
+ }
@@ -0,0 +1,404 @@
1
+ /**
2
+ * Momentum Surfaces — Generic CRUD tools for registered data surfaces
3
+ * Operates on any surface registered in workspace.json
4
+ */
5
+
6
+ import { readFileSync, writeFileSync, existsSync } from 'fs';
7
+ import { join } from 'path';
8
+
9
+ function debugLog(...args) {
10
+ console.error('[Momentum:surfaces]', new Date().toISOString(), ...args);
11
+ }
12
+
13
+ // ============================================================
14
+ // HELPERS
15
+ // ============================================================
16
+
17
+ function getWorkspaceJson(workspacePath) {
18
+ const filepath = join(workspacePath, '.accel/momentum', 'workspace.json');
19
+ if (!existsSync(filepath)) {
20
+ throw new Error('workspace.json not found at ' + filepath);
21
+ }
22
+ try {
23
+ return JSON.parse(readFileSync(filepath, 'utf-8'));
24
+ } catch (error) {
25
+ throw new Error('Failed to parse workspace.json: ' + error.message);
26
+ }
27
+ }
28
+
29
+ function getSurfaceConfig(workspacePath, surface) {
30
+ const ws = getWorkspaceJson(workspacePath);
31
+ const surfaces = ws.surfaces || {};
32
+ const config = surfaces[surface];
33
+ if (!config) {
34
+ throw new Error(`Surface "${surface}" is not registered in workspace.json. Registered surfaces: ${Object.keys(surfaces).join(', ') || 'none'}`);
35
+ }
36
+ return config;
37
+ }
38
+
39
+ function getSurfacePath(workspacePath, config) {
40
+ return join(workspacePath, '.accel/momentum', config.file);
41
+ }
42
+
43
+ function readSurface(workspacePath, surface) {
44
+ const config = getSurfaceConfig(workspacePath, surface);
45
+ const filepath = getSurfacePath(workspacePath, config);
46
+ if (!existsSync(filepath)) {
47
+ return { surface, version: 1, last_modified: null, items: [], archived: [] };
48
+ }
49
+ try {
50
+ return JSON.parse(readFileSync(filepath, 'utf-8'));
51
+ } catch (error) {
52
+ debugLog(`Error reading ${surface} data:`, error.message);
53
+ return { surface, version: 1, last_modified: null, items: [], archived: [] };
54
+ }
55
+ }
56
+
57
+ function writeSurface(workspacePath, surface, data) {
58
+ const config = getSurfaceConfig(workspacePath, surface);
59
+ const filepath = getSurfacePath(workspacePath, config);
60
+ data.last_modified = formatTimestamp();
61
+ writeFileSync(filepath, JSON.stringify(data, null, 2), 'utf-8');
62
+ }
63
+
64
+ function generateId(prefix, items) {
65
+ let max = 0;
66
+ for (const item of items) {
67
+ const id = item.id || '';
68
+ const match = id.match(new RegExp(`^${prefix}-(\\d+)$`));
69
+ if (match) {
70
+ const num = parseInt(match[1], 10);
71
+ if (num > max) max = num;
72
+ }
73
+ }
74
+ return `${prefix}-${String(max + 1).padStart(3, '0')}`;
75
+ }
76
+
77
+ function formatTimestamp() {
78
+ return new Date().toISOString();
79
+ }
80
+
81
+ // ============================================================
82
+ // TOOL DEFINITIONS
83
+ // ============================================================
84
+
85
+ export const TOOLS = [
86
+ {
87
+ name: "momentum_list_surfaces",
88
+ description: "List all registered data surfaces from workspace.json with item counts. Returns surface names, descriptions, and current item counts.",
89
+ inputSchema: {
90
+ type: "object",
91
+ properties: {},
92
+ required: []
93
+ }
94
+ },
95
+ {
96
+ name: "momentum_get_surface",
97
+ description: "Read all items from a registered data surface. Returns the full surface object including metadata, items array, and archived array.",
98
+ inputSchema: {
99
+ type: "object",
100
+ properties: {
101
+ surface: {
102
+ type: "string",
103
+ description: "Surface name (e.g., 'active', 'backlog')"
104
+ }
105
+ },
106
+ required: ["surface"]
107
+ }
108
+ },
109
+ {
110
+ name: "momentum_get_item",
111
+ description: "Get a specific item by ID from a data surface.",
112
+ inputSchema: {
113
+ type: "object",
114
+ properties: {
115
+ surface: {
116
+ type: "string",
117
+ description: "Surface name (e.g., 'active', 'backlog')"
118
+ },
119
+ id: {
120
+ type: "string",
121
+ description: "Item ID (e.g., 'ACT-001', 'BL-003')"
122
+ }
123
+ },
124
+ required: ["surface", "id"]
125
+ }
126
+ },
127
+ {
128
+ name: "momentum_add_item",
129
+ description: "Add a new item to a data surface. Auto-generates ID from surface schema's id_prefix. Validates required fields if schema defines them.",
130
+ inputSchema: {
131
+ type: "object",
132
+ properties: {
133
+ surface: {
134
+ type: "string",
135
+ description: "Surface name (e.g., 'active', 'backlog')"
136
+ },
137
+ data: {
138
+ type: "object",
139
+ description: "Item data object with fields matching the surface schema"
140
+ }
141
+ },
142
+ required: ["surface", "data"]
143
+ }
144
+ },
145
+ {
146
+ name: "momentum_update_item",
147
+ description: "Update an existing item's fields by ID. Performs shallow merge — only specified fields are updated, others preserved.",
148
+ inputSchema: {
149
+ type: "object",
150
+ properties: {
151
+ surface: {
152
+ type: "string",
153
+ description: "Surface name (e.g., 'active', 'backlog')"
154
+ },
155
+ id: {
156
+ type: "string",
157
+ description: "Item ID to update"
158
+ },
159
+ data: {
160
+ type: "object",
161
+ description: "Fields to update (shallow merge onto existing item)"
162
+ }
163
+ },
164
+ required: ["surface", "id", "data"]
165
+ }
166
+ },
167
+ {
168
+ name: "momentum_archive_item",
169
+ description: "Archive an item by ID — removes from items array and moves to archived array with timestamp.",
170
+ inputSchema: {
171
+ type: "object",
172
+ properties: {
173
+ surface: {
174
+ type: "string",
175
+ description: "Surface name (e.g., 'active', 'backlog')"
176
+ },
177
+ id: {
178
+ type: "string",
179
+ description: "Item ID to archive"
180
+ }
181
+ },
182
+ required: ["surface", "id"]
183
+ }
184
+ },
185
+ {
186
+ name: "momentum_search",
187
+ description: "Search across one or all registered surfaces by keyword. Case-insensitive substring match across all string fields in each item.",
188
+ inputSchema: {
189
+ type: "object",
190
+ properties: {
191
+ query: {
192
+ type: "string",
193
+ description: "Search query (case-insensitive substring match)"
194
+ },
195
+ surface: {
196
+ type: "string",
197
+ description: "Optional: limit search to one surface. Omit to search all."
198
+ }
199
+ },
200
+ required: ["query"]
201
+ }
202
+ }
203
+ ];
204
+
205
+ // ============================================================
206
+ // TOOL HANDLERS
207
+ // ============================================================
208
+
209
+ function handleListSurfaces(workspacePath) {
210
+ const ws = getWorkspaceJson(workspacePath);
211
+ const surfaces = ws.surfaces || {};
212
+ const result = [];
213
+
214
+ for (const [name, config] of Object.entries(surfaces)) {
215
+ const filepath = join(workspacePath, '.accel/momentum', config.file);
216
+ let itemsCount = 0;
217
+ if (existsSync(filepath)) {
218
+ try {
219
+ const data = JSON.parse(readFileSync(filepath, 'utf-8'));
220
+ itemsCount = (data.items || []).length;
221
+ } catch { /* ignore parse errors */ }
222
+ }
223
+ result.push({
224
+ name,
225
+ description: config.description || '',
226
+ file: config.file,
227
+ items_count: itemsCount,
228
+ hook: config.hook || false
229
+ });
230
+ }
231
+
232
+ return { surfaces: result, count: result.length };
233
+ }
234
+
235
+ function handleGetSurface(args, workspacePath) {
236
+ const { surface } = args;
237
+ if (!surface) throw new Error('Missing required parameter: surface');
238
+ return readSurface(workspacePath, surface);
239
+ }
240
+
241
+ function handleGetItem(args, workspacePath) {
242
+ const { surface, id } = args;
243
+ if (!surface) throw new Error('Missing required parameter: surface');
244
+ if (!id) throw new Error('Missing required parameter: id');
245
+
246
+ const data = readSurface(workspacePath, surface);
247
+ const item = data.items.find(i => i.id === id);
248
+ if (!item) {
249
+ throw new Error(`Item "${id}" not found in surface "${surface}". Available IDs: ${data.items.map(i => i.id).join(', ') || 'none'}`);
250
+ }
251
+ return item;
252
+ }
253
+
254
+ function handleAddItem(args, workspacePath) {
255
+ const { surface, data: itemData } = args;
256
+ if (!surface) throw new Error('Missing required parameter: surface');
257
+ if (!itemData) throw new Error('Missing required parameter: data');
258
+
259
+ const config = getSurfaceConfig(workspacePath, surface);
260
+ const schema = config.schema || {};
261
+
262
+ // Validate required fields
263
+ if (schema.required_fields) {
264
+ for (const field of schema.required_fields) {
265
+ if (itemData[field] === undefined || itemData[field] === null || itemData[field] === '') {
266
+ throw new Error(`Missing required field "${field}" for surface "${surface}". Required: ${schema.required_fields.join(', ')}`);
267
+ }
268
+ }
269
+ }
270
+
271
+ const surfaceData = readSurface(workspacePath, surface);
272
+
273
+ // Generate ID
274
+ const prefix = schema.id_prefix || surface.toUpperCase().slice(0, 3);
275
+ const newId = generateId(prefix, surfaceData.items);
276
+
277
+ const newItem = {
278
+ id: newId,
279
+ ...itemData,
280
+ added: formatTimestamp()
281
+ };
282
+
283
+ surfaceData.items.push(newItem);
284
+ writeSurface(workspacePath, surface, surfaceData);
285
+
286
+ debugLog(`Added item ${newId} to ${surface}`);
287
+ return newItem;
288
+ }
289
+
290
+ function handleUpdateItem(args, workspacePath) {
291
+ const { surface, id, data: updateData } = args;
292
+ if (!surface) throw new Error('Missing required parameter: surface');
293
+ if (!id) throw new Error('Missing required parameter: id');
294
+ if (!updateData) throw new Error('Missing required parameter: data');
295
+
296
+ const surfaceData = readSurface(workspacePath, surface);
297
+ const index = surfaceData.items.findIndex(i => i.id === id);
298
+ if (index === -1) {
299
+ throw new Error(`Item "${id}" not found in surface "${surface}"`);
300
+ }
301
+
302
+ // Shallow merge — preserve existing fields, update specified ones
303
+ surfaceData.items[index] = {
304
+ ...surfaceData.items[index],
305
+ ...updateData,
306
+ id, // Prevent ID overwrite
307
+ updated: formatTimestamp()
308
+ };
309
+
310
+ writeSurface(workspacePath, surface, surfaceData);
311
+
312
+ debugLog(`Updated item ${id} in ${surface}`);
313
+ return surfaceData.items[index];
314
+ }
315
+
316
+ function handleArchiveItem(args, workspacePath) {
317
+ const { surface, id } = args;
318
+ if (!surface) throw new Error('Missing required parameter: surface');
319
+ if (!id) throw new Error('Missing required parameter: id');
320
+
321
+ const surfaceData = readSurface(workspacePath, surface);
322
+ const index = surfaceData.items.findIndex(i => i.id === id);
323
+ if (index === -1) {
324
+ throw new Error(`Item "${id}" not found in surface "${surface}"`);
325
+ }
326
+
327
+ // Remove from items
328
+ const [item] = surfaceData.items.splice(index, 1);
329
+ item.archived = formatTimestamp();
330
+
331
+ // Add to archived array
332
+ if (!surfaceData.archived) surfaceData.archived = [];
333
+ surfaceData.archived.push(item);
334
+
335
+ writeSurface(workspacePath, surface, surfaceData);
336
+
337
+ debugLog(`Archived item ${id} from ${surface}`);
338
+ return item;
339
+ }
340
+
341
+ function handleSearch(args, workspacePath) {
342
+ const { query, surface: targetSurface } = args;
343
+ if (!query) throw new Error('Missing required parameter: query');
344
+
345
+ const ws = getWorkspaceJson(workspacePath);
346
+ const surfaces = ws.surfaces || {};
347
+ const queryLower = query.toLowerCase();
348
+ const results = [];
349
+
350
+ const surfacesToSearch = targetSurface
351
+ ? { [targetSurface]: getSurfaceConfig(workspacePath, targetSurface) }
352
+ : surfaces;
353
+
354
+ for (const [name, config] of Object.entries(surfacesToSearch)) {
355
+ const filepath = join(workspacePath, '.accel/momentum', config.file);
356
+ if (!existsSync(filepath)) continue;
357
+
358
+ let data;
359
+ try {
360
+ data = JSON.parse(readFileSync(filepath, 'utf-8'));
361
+ } catch { continue; }
362
+
363
+ for (const item of (data.items || [])) {
364
+ for (const [field, value] of Object.entries(item)) {
365
+ if (typeof value === 'string' && value.toLowerCase().includes(queryLower)) {
366
+ results.push({
367
+ surface: name,
368
+ id: item.id,
369
+ title: item.title || item.id,
370
+ match_field: field
371
+ });
372
+ break; // One match per item is enough
373
+ }
374
+ }
375
+ }
376
+ }
377
+
378
+ return { results, count: results.length, query };
379
+ }
380
+
381
+ // ============================================================
382
+ // HANDLER DISPATCH
383
+ // ============================================================
384
+
385
+ export function handleTool(name, args, workspacePath) {
386
+ switch (name) {
387
+ case 'momentum_list_surfaces':
388
+ return handleListSurfaces(workspacePath);
389
+ case 'momentum_get_surface':
390
+ return handleGetSurface(args, workspacePath);
391
+ case 'momentum_get_item':
392
+ return handleGetItem(args, workspacePath);
393
+ case 'momentum_add_item':
394
+ return handleAddItem(args, workspacePath);
395
+ case 'momentum_update_item':
396
+ return handleUpdateItem(args, workspacePath);
397
+ case 'momentum_archive_item':
398
+ return handleArchiveItem(args, workspacePath);
399
+ case 'momentum_search':
400
+ return handleSearch(args, workspacePath);
401
+ default:
402
+ return null;
403
+ }
404
+ }