grimoire-framework 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 (1174) hide show
  1. package/.claude/CLAUDE.md +318 -0
  2. package/.claude/hooks/README.md +170 -0
  3. package/.claude/hooks/enforce-architecture-first.py +198 -0
  4. package/.claude/hooks/install-hooks.sh +43 -0
  5. package/.claude/hooks/mind-clone-governance.py +192 -0
  6. package/.claude/hooks/pre-commit-version-check.sh +157 -0
  7. package/.claude/hooks/precompact-session-digest.js +47 -0
  8. package/.claude/hooks/read-protection.py +153 -0
  9. package/.claude/hooks/slug-validation.py +176 -0
  10. package/.claude/hooks/sql-governance.py +182 -0
  11. package/.claude/hooks/synapse-engine.js +77 -0
  12. package/.claude/hooks/write-path-validation.py +196 -0
  13. package/.claude/rules/mcp-usage.md +177 -0
  14. package/.grimoire/cli/commands/config/index.js +609 -0
  15. package/.grimoire/cli/commands/generate/index.js +222 -0
  16. package/.grimoire/cli/commands/manifest/index.js +47 -0
  17. package/.grimoire/cli/commands/manifest/regenerate.js +97 -0
  18. package/.grimoire/cli/commands/manifest/validate.js +66 -0
  19. package/.grimoire/cli/commands/mcp/add.js +235 -0
  20. package/.grimoire/cli/commands/mcp/index.js +77 -0
  21. package/.grimoire/cli/commands/mcp/link.js +218 -0
  22. package/.grimoire/cli/commands/mcp/setup.js +165 -0
  23. package/.grimoire/cli/commands/mcp/status.js +184 -0
  24. package/.grimoire/cli/commands/metrics/cleanup.js +91 -0
  25. package/.grimoire/cli/commands/metrics/index.js +66 -0
  26. package/.grimoire/cli/commands/metrics/record.js +154 -0
  27. package/.grimoire/cli/commands/metrics/seed.js +127 -0
  28. package/.grimoire/cli/commands/metrics/show.js +209 -0
  29. package/.grimoire/cli/commands/migrate/analyze.js +355 -0
  30. package/.grimoire/cli/commands/migrate/backup.js +354 -0
  31. package/.grimoire/cli/commands/migrate/execute.js +294 -0
  32. package/.grimoire/cli/commands/migrate/index.js +443 -0
  33. package/.grimoire/cli/commands/migrate/rollback.js +325 -0
  34. package/.grimoire/cli/commands/migrate/update-imports.js +398 -0
  35. package/.grimoire/cli/commands/migrate/validate.js +454 -0
  36. package/.grimoire/cli/commands/pro/index.js +705 -0
  37. package/.grimoire/cli/commands/qa/index.js +57 -0
  38. package/.grimoire/cli/commands/qa/run.js +163 -0
  39. package/.grimoire/cli/commands/qa/status.js +195 -0
  40. package/.grimoire/cli/commands/validate/index.js +431 -0
  41. package/.grimoire/cli/commands/workers/formatters/info-formatter.js +275 -0
  42. package/.grimoire/cli/commands/workers/formatters/list-table.js +265 -0
  43. package/.grimoire/cli/commands/workers/formatters/list-tree.js +160 -0
  44. package/.grimoire/cli/commands/workers/index.js +57 -0
  45. package/.grimoire/cli/commands/workers/info.js +195 -0
  46. package/.grimoire/cli/commands/workers/list.js +215 -0
  47. package/.grimoire/cli/commands/workers/search-filters.js +185 -0
  48. package/.grimoire/cli/commands/workers/search-keyword.js +310 -0
  49. package/.grimoire/cli/commands/workers/search-semantic.js +294 -0
  50. package/.grimoire/cli/commands/workers/search.js +155 -0
  51. package/.grimoire/cli/commands/workers/utils/pagination.js +102 -0
  52. package/.grimoire/cli/index.js +150 -0
  53. package/.grimoire/cli/utils/output-formatter-cli.js +233 -0
  54. package/.grimoire/cli/utils/score-calculator.js +221 -0
  55. package/.grimoire/constitution.md +172 -0
  56. package/.grimoire/core/README.md +231 -0
  57. package/.grimoire/core/code-intel/code-intel-client.js +280 -0
  58. package/.grimoire/core/code-intel/code-intel-enricher.js +160 -0
  59. package/.grimoire/core/code-intel/index.js +137 -0
  60. package/.grimoire/core/code-intel/providers/code-graph-provider.js +201 -0
  61. package/.grimoire/core/code-intel/providers/provider-interface.js +108 -0
  62. package/.grimoire/core/config/config-cache.js +233 -0
  63. package/.grimoire/core/config/config-loader.js +281 -0
  64. package/.grimoire/core/config/config-resolver.js +609 -0
  65. package/.grimoire/core/config/env-interpolator.js +122 -0
  66. package/.grimoire/core/config/merge-utils.js +101 -0
  67. package/.grimoire/core/config/migrate-config.js +293 -0
  68. package/.grimoire/core/config/schemas/framework-config.schema.json +19 -0
  69. package/.grimoire/core/config/schemas/local-config.schema.json +20 -0
  70. package/.grimoire/core/config/schemas/project-config.schema.json +32 -0
  71. package/.grimoire/core/config/schemas/user-config.schema.json +33 -0
  72. package/.grimoire/core/config/templates/user-config.yaml +24 -0
  73. package/.grimoire/core/docs/SHARD-TRANSLATION-GUIDE.md +337 -0
  74. package/.grimoire/core/docs/component-creation-guide.md +459 -0
  75. package/.grimoire/core/docs/session-update-pattern.md +316 -0
  76. package/.grimoire/core/docs/template-syntax.md +267 -0
  77. package/.grimoire/core/docs/troubleshooting-guide.md +626 -0
  78. package/.grimoire/core/elicitation/agent-elicitation.js +272 -0
  79. package/.grimoire/core/elicitation/elicitation-engine.js +486 -0
  80. package/.grimoire/core/elicitation/session-manager.js +322 -0
  81. package/.grimoire/core/elicitation/task-elicitation.js +281 -0
  82. package/.grimoire/core/elicitation/workflow-elicitation.js +349 -0
  83. package/.grimoire/core/events/dashboard-emitter.js +369 -0
  84. package/.grimoire/core/events/index.js +17 -0
  85. package/.grimoire/core/events/types.js +52 -0
  86. package/.grimoire/core/execution/autonomous-build-loop.js +1068 -0
  87. package/.grimoire/core/execution/build-orchestrator.js +1055 -0
  88. package/.grimoire/core/execution/build-state-manager.js +1530 -0
  89. package/.grimoire/core/execution/context-injector.js +537 -0
  90. package/.grimoire/core/execution/parallel-executor.js +292 -0
  91. package/.grimoire/core/execution/parallel-monitor.js +429 -0
  92. package/.grimoire/core/execution/rate-limit-manager.js +314 -0
  93. package/.grimoire/core/execution/result-aggregator.js +486 -0
  94. package/.grimoire/core/execution/semantic-merge-engine.js +1736 -0
  95. package/.grimoire/core/execution/subagent-dispatcher.js +848 -0
  96. package/.grimoire/core/execution/wave-executor.js +397 -0
  97. package/.grimoire/core/health-check/base-check.js +224 -0
  98. package/.grimoire/core/health-check/check-registry.js +253 -0
  99. package/.grimoire/core/health-check/checks/deployment/build-config.js +111 -0
  100. package/.grimoire/core/health-check/checks/deployment/ci-config.js +125 -0
  101. package/.grimoire/core/health-check/checks/deployment/deployment-readiness.js +152 -0
  102. package/.grimoire/core/health-check/checks/deployment/docker-config.js +122 -0
  103. package/.grimoire/core/health-check/checks/deployment/env-file.js +111 -0
  104. package/.grimoire/core/health-check/checks/deployment/index.js +29 -0
  105. package/.grimoire/core/health-check/checks/index.js +56 -0
  106. package/.grimoire/core/health-check/checks/local/disk-space.js +214 -0
  107. package/.grimoire/core/health-check/checks/local/environment-vars.js +136 -0
  108. package/.grimoire/core/health-check/checks/local/git-install.js +158 -0
  109. package/.grimoire/core/health-check/checks/local/ide-detection.js +148 -0
  110. package/.grimoire/core/health-check/checks/local/index.js +35 -0
  111. package/.grimoire/core/health-check/checks/local/memory.js +138 -0
  112. package/.grimoire/core/health-check/checks/local/network.js +170 -0
  113. package/.grimoire/core/health-check/checks/local/npm-install.js +149 -0
  114. package/.grimoire/core/health-check/checks/local/shell-environment.js +120 -0
  115. package/.grimoire/core/health-check/checks/project/agent-config.js +167 -0
  116. package/.grimoire/core/health-check/checks/project/dependencies.js +150 -0
  117. package/.grimoire/core/health-check/checks/project/framework-config.js +133 -0
  118. package/.grimoire/core/health-check/checks/project/grimoire-directory.js +143 -0
  119. package/.grimoire/core/health-check/checks/project/index.js +35 -0
  120. package/.grimoire/core/health-check/checks/project/node-version.js +163 -0
  121. package/.grimoire/core/health-check/checks/project/package-json.js +107 -0
  122. package/.grimoire/core/health-check/checks/project/task-definitions.js +192 -0
  123. package/.grimoire/core/health-check/checks/project/workflow-dependencies.js +214 -0
  124. package/.grimoire/core/health-check/checks/repository/branch-protection.js +107 -0
  125. package/.grimoire/core/health-check/checks/repository/commit-history.js +144 -0
  126. package/.grimoire/core/health-check/checks/repository/conflicts.js +152 -0
  127. package/.grimoire/core/health-check/checks/repository/git-repo.js +159 -0
  128. package/.grimoire/core/health-check/checks/repository/git-status.js +149 -0
  129. package/.grimoire/core/health-check/checks/repository/gitignore.js +194 -0
  130. package/.grimoire/core/health-check/checks/repository/index.js +35 -0
  131. package/.grimoire/core/health-check/checks/repository/large-files.js +183 -0
  132. package/.grimoire/core/health-check/checks/repository/lockfile-integrity.js +144 -0
  133. package/.grimoire/core/health-check/checks/services/api-endpoints.js +168 -0
  134. package/.grimoire/core/health-check/checks/services/claude-code.js +139 -0
  135. package/.grimoire/core/health-check/checks/services/gemini-cli.js +241 -0
  136. package/.grimoire/core/health-check/checks/services/github-cli.js +117 -0
  137. package/.grimoire/core/health-check/checks/services/index.js +29 -0
  138. package/.grimoire/core/health-check/checks/services/mcp-integration.js +125 -0
  139. package/.grimoire/core/health-check/engine.js +407 -0
  140. package/.grimoire/core/health-check/healers/backup-manager.js +340 -0
  141. package/.grimoire/core/health-check/healers/index.js +330 -0
  142. package/.grimoire/core/health-check/index.js +370 -0
  143. package/.grimoire/core/health-check/reporters/console.js +331 -0
  144. package/.grimoire/core/health-check/reporters/index.js +117 -0
  145. package/.grimoire/core/health-check/reporters/json.js +301 -0
  146. package/.grimoire/core/health-check/reporters/markdown.js +323 -0
  147. package/.grimoire/core/ideation/ideation-engine.js +834 -0
  148. package/.grimoire/core/ids/README.md +123 -0
  149. package/.grimoire/core/ids/circuit-breaker.js +156 -0
  150. package/.grimoire/core/ids/framework-governor.js +567 -0
  151. package/.grimoire/core/ids/gates/g1-epic-creation.js +101 -0
  152. package/.grimoire/core/ids/gates/g2-story-creation.js +133 -0
  153. package/.grimoire/core/ids/gates/g3-story-validation.js +166 -0
  154. package/.grimoire/core/ids/gates/g4-dev-context.js +155 -0
  155. package/.grimoire/core/ids/incremental-decision-engine.js +651 -0
  156. package/.grimoire/core/ids/index.js +157 -0
  157. package/.grimoire/core/ids/registry-healer.js +868 -0
  158. package/.grimoire/core/ids/registry-loader.js +281 -0
  159. package/.grimoire/core/ids/registry-updater.js +703 -0
  160. package/.grimoire/core/ids/verification-gate.js +306 -0
  161. package/.grimoire/core/index.esm.js +44 -0
  162. package/.grimoire/core/index.js +90 -0
  163. package/.grimoire/core/manifest/manifest-generator.js +388 -0
  164. package/.grimoire/core/manifest/manifest-validator.js +431 -0
  165. package/.grimoire/core/mcp/config-migrator.js +341 -0
  166. package/.grimoire/core/mcp/global-config-manager.js +370 -0
  167. package/.grimoire/core/mcp/index.js +34 -0
  168. package/.grimoire/core/mcp/os-detector.js +189 -0
  169. package/.grimoire/core/mcp/symlink-manager.js +415 -0
  170. package/.grimoire/core/memory/__tests__/active-modules.verify.js +254 -0
  171. package/.grimoire/core/memory/gotchas-memory.js +1154 -0
  172. package/.grimoire/core/migration/migration-config.yaml +85 -0
  173. package/.grimoire/core/migration/module-mapping.yaml +91 -0
  174. package/.grimoire/core/orchestration/agent-invoker.js +612 -0
  175. package/.grimoire/core/orchestration/bob-orchestrator.js +1032 -0
  176. package/.grimoire/core/orchestration/bob-status-writer.js +482 -0
  177. package/.grimoire/core/orchestration/bob-surface-criteria.yaml +272 -0
  178. package/.grimoire/core/orchestration/brownfield-handler.js +741 -0
  179. package/.grimoire/core/orchestration/checklist-runner.js +328 -0
  180. package/.grimoire/core/orchestration/cli-commands.js +581 -0
  181. package/.grimoire/core/orchestration/condition-evaluator.js +379 -0
  182. package/.grimoire/core/orchestration/context-manager.js +616 -0
  183. package/.grimoire/core/orchestration/dashboard-integration.js +520 -0
  184. package/.grimoire/core/orchestration/data-lifecycle-manager.js +357 -0
  185. package/.grimoire/core/orchestration/epic-context-accumulator.js +396 -0
  186. package/.grimoire/core/orchestration/execution-profile-resolver.js +107 -0
  187. package/.grimoire/core/orchestration/executor-assignment.js +413 -0
  188. package/.grimoire/core/orchestration/executors/epic-3-executor.js +223 -0
  189. package/.grimoire/core/orchestration/executors/epic-4-executor.js +269 -0
  190. package/.grimoire/core/orchestration/executors/epic-5-executor.js +329 -0
  191. package/.grimoire/core/orchestration/executors/epic-6-executor.js +265 -0
  192. package/.grimoire/core/orchestration/executors/epic-executor.js +237 -0
  193. package/.grimoire/core/orchestration/executors/index.js +86 -0
  194. package/.grimoire/core/orchestration/gate-evaluator.js +495 -0
  195. package/.grimoire/core/orchestration/gemini-model-selector.js +161 -0
  196. package/.grimoire/core/orchestration/greenfield-handler.js +890 -0
  197. package/.grimoire/core/orchestration/index.js +323 -0
  198. package/.grimoire/core/orchestration/lock-manager.js +327 -0
  199. package/.grimoire/core/orchestration/master-orchestrator.js +1544 -0
  200. package/.grimoire/core/orchestration/message-formatter.js +279 -0
  201. package/.grimoire/core/orchestration/parallel-executor.js +225 -0
  202. package/.grimoire/core/orchestration/recovery-handler.js +721 -0
  203. package/.grimoire/core/orchestration/session-state.js +876 -0
  204. package/.grimoire/core/orchestration/skill-dispatcher.js +364 -0
  205. package/.grimoire/core/orchestration/subagent-prompt-builder.js +370 -0
  206. package/.grimoire/core/orchestration/surface-checker.js +403 -0
  207. package/.grimoire/core/orchestration/task-complexity-classifier.js +123 -0
  208. package/.grimoire/core/orchestration/tech-stack-detector.js +599 -0
  209. package/.grimoire/core/orchestration/terminal-spawner.js +1044 -0
  210. package/.grimoire/core/orchestration/workflow-executor.js +1182 -0
  211. package/.grimoire/core/orchestration/workflow-orchestrator.js +907 -0
  212. package/.grimoire/core/permissions/__tests__/permission-mode.test.js +293 -0
  213. package/.grimoire/core/permissions/index.js +140 -0
  214. package/.grimoire/core/permissions/operation-guard.js +395 -0
  215. package/.grimoire/core/permissions/permission-mode.js +271 -0
  216. package/.grimoire/core/quality-gates/base-layer.js +134 -0
  217. package/.grimoire/core/quality-gates/checklist-generator.js +329 -0
  218. package/.grimoire/core/quality-gates/focus-area-recommender.js +361 -0
  219. package/.grimoire/core/quality-gates/human-review-orchestrator.js +530 -0
  220. package/.grimoire/core/quality-gates/layer1-precommit.js +336 -0
  221. package/.grimoire/core/quality-gates/layer2-pr-automation.js +331 -0
  222. package/.grimoire/core/quality-gates/layer3-human-review.js +350 -0
  223. package/.grimoire/core/quality-gates/notification-manager.js +551 -0
  224. package/.grimoire/core/quality-gates/quality-gate-config.yaml +87 -0
  225. package/.grimoire/core/quality-gates/quality-gate-manager.js +603 -0
  226. package/.grimoire/core/registry/README.md +181 -0
  227. package/.grimoire/core/registry/build-registry.js +454 -0
  228. package/.grimoire/core/registry/registry-loader.js +331 -0
  229. package/.grimoire/core/registry/registry-schema.json +168 -0
  230. package/.grimoire/core/registry/service-registry.json +6468 -0
  231. package/.grimoire/core/registry/validate-registry.js +341 -0
  232. package/.grimoire/core/session/context-detector.js +233 -0
  233. package/.grimoire/core/session/context-loader.js +443 -0
  234. package/.grimoire/core/synapse/context/context-builder.js +34 -0
  235. package/.grimoire/core/synapse/context/context-tracker.js +190 -0
  236. package/.grimoire/core/synapse/diagnostics/collectors/consistency-collector.js +168 -0
  237. package/.grimoire/core/synapse/diagnostics/collectors/hook-collector.js +129 -0
  238. package/.grimoire/core/synapse/diagnostics/collectors/manifest-collector.js +82 -0
  239. package/.grimoire/core/synapse/diagnostics/collectors/output-analyzer.js +134 -0
  240. package/.grimoire/core/synapse/diagnostics/collectors/pipeline-collector.js +75 -0
  241. package/.grimoire/core/synapse/diagnostics/collectors/quality-collector.js +252 -0
  242. package/.grimoire/core/synapse/diagnostics/collectors/relevance-matrix.js +174 -0
  243. package/.grimoire/core/synapse/diagnostics/collectors/safe-read-json.js +31 -0
  244. package/.grimoire/core/synapse/diagnostics/collectors/session-collector.js +102 -0
  245. package/.grimoire/core/synapse/diagnostics/collectors/timing-collector.js +126 -0
  246. package/.grimoire/core/synapse/diagnostics/collectors/uap-collector.js +83 -0
  247. package/.grimoire/core/synapse/diagnostics/report-formatter.js +485 -0
  248. package/.grimoire/core/synapse/diagnostics/synapse-diagnostics.js +95 -0
  249. package/.grimoire/core/synapse/domain/domain-loader.js +322 -0
  250. package/.grimoire/core/synapse/engine.js +380 -0
  251. package/.grimoire/core/synapse/layers/l0-constitution.js +80 -0
  252. package/.grimoire/core/synapse/layers/l1-global.js +102 -0
  253. package/.grimoire/core/synapse/layers/l2-agent.js +94 -0
  254. package/.grimoire/core/synapse/layers/l3-workflow.js +94 -0
  255. package/.grimoire/core/synapse/layers/l4-task.js +83 -0
  256. package/.grimoire/core/synapse/layers/l5-squad.js +244 -0
  257. package/.grimoire/core/synapse/layers/l6-keyword.js +154 -0
  258. package/.grimoire/core/synapse/layers/l7-star-command.js +169 -0
  259. package/.grimoire/core/synapse/layers/layer-processor.js +82 -0
  260. package/.grimoire/core/synapse/memory/memory-bridge.js +246 -0
  261. package/.grimoire/core/synapse/output/formatter.js +561 -0
  262. package/.grimoire/core/synapse/runtime/hook-runtime.js +61 -0
  263. package/.grimoire/core/synapse/scripts/generate-constitution.js +205 -0
  264. package/.grimoire/core/synapse/session/session-manager.js +403 -0
  265. package/.grimoire/core/synapse/utils/paths.js +57 -0
  266. package/.grimoire/core/synapse/utils/tokens.js +25 -0
  267. package/.grimoire/core/ui/index.js +43 -0
  268. package/.grimoire/core/ui/observability-panel.js +394 -0
  269. package/.grimoire/core/ui/panel-renderer.js +337 -0
  270. package/.grimoire/core/utils/output-formatter.js +299 -0
  271. package/.grimoire/core/utils/security-utils.js +336 -0
  272. package/.grimoire/core/utils/yaml-validator.js +416 -0
  273. package/.grimoire/core-config.yaml +357 -0
  274. package/.grimoire/data/agent-config-requirements.yaml +409 -0
  275. package/.grimoire/data/entity-registry.yaml +9219 -0
  276. package/.grimoire/data/grimoire-kb.md +918 -0
  277. package/.grimoire/data/learned-patterns.yaml +3 -0
  278. package/.grimoire/data/tech-presets/_template.md +259 -0
  279. package/.grimoire/data/tech-presets/nextjs-react.md +933 -0
  280. package/.grimoire/data/technical-preferences.md +85 -0
  281. package/.grimoire/data/workflow-patterns.yaml +836 -0
  282. package/.grimoire/data/workflow-state-schema.yaml +203 -0
  283. package/.grimoire/development/README.md +143 -0
  284. package/.grimoire/development/agent-teams/team-all.yaml +16 -0
  285. package/.grimoire/development/agent-teams/team-fullstack.yaml +19 -0
  286. package/.grimoire/development/agent-teams/team-ide-minimal.yaml +10 -0
  287. package/.grimoire/development/agent-teams/team-no-ui.yaml +14 -0
  288. package/.grimoire/development/agent-teams/team-qa-focused.yaml +155 -0
  289. package/.grimoire/development/agents/analyst.md +261 -0
  290. package/.grimoire/development/agents/architect.md +461 -0
  291. package/.grimoire/development/agents/caravaggio.md +31 -0
  292. package/.grimoire/development/agents/data-engineer.md +482 -0
  293. package/.grimoire/development/agents/dev.md +548 -0
  294. package/.grimoire/development/agents/devops.md +500 -0
  295. package/.grimoire/development/agents/frida.md +31 -0
  296. package/.grimoire/development/agents/grimoire-master.md +447 -0
  297. package/.grimoire/development/agents/picasso.md +31 -0
  298. package/.grimoire/development/agents/pm.md +365 -0
  299. package/.grimoire/development/agents/po.md +323 -0
  300. package/.grimoire/development/agents/qa.md +437 -0
  301. package/.grimoire/development/agents/salvador.md +31 -0
  302. package/.grimoire/development/agents/sm.md +275 -0
  303. package/.grimoire/development/agents/squad-creator.md +330 -0
  304. package/.grimoire/development/agents/tarsila.md +31 -0
  305. package/.grimoire/development/agents/ux-design-expert.md +482 -0
  306. package/.grimoire/development/agents/van-gogh.md +31 -0
  307. package/.grimoire/development/agents/warhol.md +31 -0
  308. package/.grimoire/development/checklists/agent-quality-gate.md +560 -0
  309. package/.grimoire/development/checklists/brownfield-compatibility-checklist.md +116 -0
  310. package/.grimoire/development/checklists/self-critique-checklist.md +274 -0
  311. package/.grimoire/development/data/decision-heuristics-framework.md +622 -0
  312. package/.grimoire/development/data/quality-dimensions-framework.md +427 -0
  313. package/.grimoire/development/data/tier-system-framework.md +476 -0
  314. package/.grimoire/development/scripts/activation-runtime.js +64 -0
  315. package/.grimoire/development/scripts/agent-assignment-resolver.js +231 -0
  316. package/.grimoire/development/scripts/agent-config-loader.js +628 -0
  317. package/.grimoire/development/scripts/agent-exit-hooks.js +97 -0
  318. package/.grimoire/development/scripts/apply-inline-greeting-all-agents.js +147 -0
  319. package/.grimoire/development/scripts/approval-workflow.js +643 -0
  320. package/.grimoire/development/scripts/audit-agent-config.js +382 -0
  321. package/.grimoire/development/scripts/backlog-manager.js +409 -0
  322. package/.grimoire/development/scripts/backup-manager.js +607 -0
  323. package/.grimoire/development/scripts/batch-update-agents-session-context.js +97 -0
  324. package/.grimoire/development/scripts/branch-manager.js +390 -0
  325. package/.grimoire/development/scripts/code-quality-improver.js +1312 -0
  326. package/.grimoire/development/scripts/commit-message-generator.js +850 -0
  327. package/.grimoire/development/scripts/conflict-resolver.js +675 -0
  328. package/.grimoire/development/scripts/decision-context.js +229 -0
  329. package/.grimoire/development/scripts/decision-log-generator.js +294 -0
  330. package/.grimoire/development/scripts/decision-log-indexer.js +285 -0
  331. package/.grimoire/development/scripts/decision-recorder.js +169 -0
  332. package/.grimoire/development/scripts/dependency-analyzer.js +639 -0
  333. package/.grimoire/development/scripts/dev-context-loader.js +298 -0
  334. package/.grimoire/development/scripts/diff-generator.js +352 -0
  335. package/.grimoire/development/scripts/elicitation-engine.js +385 -0
  336. package/.grimoire/development/scripts/elicitation-session-manager.js +300 -0
  337. package/.grimoire/development/scripts/generate-greeting.js +109 -0
  338. package/.grimoire/development/scripts/git-wrapper.js +462 -0
  339. package/.grimoire/development/scripts/greeting-builder.js +1406 -0
  340. package/.grimoire/development/scripts/greeting-config-cli.js +86 -0
  341. package/.grimoire/development/scripts/greeting-preference-manager.js +170 -0
  342. package/.grimoire/development/scripts/manifest-preview.js +245 -0
  343. package/.grimoire/development/scripts/metrics-tracker.js +776 -0
  344. package/.grimoire/development/scripts/migrate-task-to-v2.js +379 -0
  345. package/.grimoire/development/scripts/modification-validator.js +555 -0
  346. package/.grimoire/development/scripts/pattern-learner.js +1225 -0
  347. package/.grimoire/development/scripts/performance-analyzer.js +758 -0
  348. package/.grimoire/development/scripts/populate-entity-registry.js +281 -0
  349. package/.grimoire/development/scripts/refactoring-suggester.js +1139 -0
  350. package/.grimoire/development/scripts/rollback-handler.js +532 -0
  351. package/.grimoire/development/scripts/security-checker.js +359 -0
  352. package/.grimoire/development/scripts/skill-validator.js +343 -0
  353. package/.grimoire/development/scripts/squad/README.md +114 -0
  354. package/.grimoire/development/scripts/squad/index.js +124 -0
  355. package/.grimoire/development/scripts/squad/squad-analyzer.js +638 -0
  356. package/.grimoire/development/scripts/squad/squad-designer.js +1010 -0
  357. package/.grimoire/development/scripts/squad/squad-downloader.js +511 -0
  358. package/.grimoire/development/scripts/squad/squad-extender.js +872 -0
  359. package/.grimoire/development/scripts/squad/squad-generator.js +1406 -0
  360. package/.grimoire/development/scripts/squad/squad-loader.js +359 -0
  361. package/.grimoire/development/scripts/squad/squad-migrator.js +628 -0
  362. package/.grimoire/development/scripts/squad/squad-publisher.js +630 -0
  363. package/.grimoire/development/scripts/squad/squad-validator.js +857 -0
  364. package/.grimoire/development/scripts/story-index-generator.js +339 -0
  365. package/.grimoire/development/scripts/story-manager.js +375 -0
  366. package/.grimoire/development/scripts/story-update-hook.js +259 -0
  367. package/.grimoire/development/scripts/task-identifier-resolver.js +145 -0
  368. package/.grimoire/development/scripts/template-engine.js +240 -0
  369. package/.grimoire/development/scripts/template-validator.js +279 -0
  370. package/.grimoire/development/scripts/test-generator.js +844 -0
  371. package/.grimoire/development/scripts/test-greeting-system.js +143 -0
  372. package/.grimoire/development/scripts/transaction-manager.js +591 -0
  373. package/.grimoire/development/scripts/unified-activation-pipeline.js +796 -0
  374. package/.grimoire/development/scripts/usage-tracker.js +675 -0
  375. package/.grimoire/development/scripts/validate-filenames.js +228 -0
  376. package/.grimoire/development/scripts/validate-task-v2.js +320 -0
  377. package/.grimoire/development/scripts/verify-workflow-gaps.js +1034 -0
  378. package/.grimoire/development/scripts/version-tracker.js +527 -0
  379. package/.grimoire/development/scripts/workflow-navigator.js +328 -0
  380. package/.grimoire/development/scripts/workflow-state-manager.js +652 -0
  381. package/.grimoire/development/scripts/workflow-validator.js +697 -0
  382. package/.grimoire/development/scripts/yaml-validator.js +397 -0
  383. package/.grimoire/development/tasks/add-mcp.md +437 -0
  384. package/.grimoire/development/tasks/advanced-elicitation.md +320 -0
  385. package/.grimoire/development/tasks/analyst-facilitate-brainstorming.md +343 -0
  386. package/.grimoire/development/tasks/analyze-brownfield.md +458 -0
  387. package/.grimoire/development/tasks/analyze-cross-artifact.md +358 -0
  388. package/.grimoire/development/tasks/analyze-framework.md +698 -0
  389. package/.grimoire/development/tasks/analyze-performance.md +639 -0
  390. package/.grimoire/development/tasks/analyze-project-structure.md +623 -0
  391. package/.grimoire/development/tasks/apply-qa-fixes.md +342 -0
  392. package/.grimoire/development/tasks/architect-analyze-impact.md +828 -0
  393. package/.grimoire/development/tasks/audit-codebase.md +431 -0
  394. package/.grimoire/development/tasks/audit-tailwind-config.md +272 -0
  395. package/.grimoire/development/tasks/audit-utilities.md +360 -0
  396. package/.grimoire/development/tasks/blocks/README.md +180 -0
  397. package/.grimoire/development/tasks/blocks/agent-prompt-template.md +117 -0
  398. package/.grimoire/development/tasks/blocks/context-loading.md +110 -0
  399. package/.grimoire/development/tasks/blocks/execution-pattern.md +122 -0
  400. package/.grimoire/development/tasks/blocks/finalization.md +123 -0
  401. package/.grimoire/development/tasks/bootstrap-shadcn-library.md +288 -0
  402. package/.grimoire/development/tasks/brownfield-create-epic.md +533 -0
  403. package/.grimoire/development/tasks/brownfield-create-story.md +358 -0
  404. package/.grimoire/development/tasks/build-autonomous.md +186 -0
  405. package/.grimoire/development/tasks/build-component.md +480 -0
  406. package/.grimoire/development/tasks/build-resume.md +125 -0
  407. package/.grimoire/development/tasks/build-status.md +155 -0
  408. package/.grimoire/development/tasks/build.md +142 -0
  409. package/.grimoire/development/tasks/calculate-roi.md +457 -0
  410. package/.grimoire/development/tasks/check-docs-links.md +114 -0
  411. package/.grimoire/development/tasks/ci-cd-configuration.md +766 -0
  412. package/.grimoire/development/tasks/cleanup-utilities.md +672 -0
  413. package/.grimoire/development/tasks/cleanup-worktrees.md +39 -0
  414. package/.grimoire/development/tasks/collaborative-edit.md +1110 -0
  415. package/.grimoire/development/tasks/compose-molecule.md +286 -0
  416. package/.grimoire/development/tasks/consolidate-patterns.md +416 -0
  417. package/.grimoire/development/tasks/correct-course.md +281 -0
  418. package/.grimoire/development/tasks/create-agent.md +1199 -0
  419. package/.grimoire/development/tasks/create-brownfield-story.md +728 -0
  420. package/.grimoire/development/tasks/create-deep-research-prompt.md +500 -0
  421. package/.grimoire/development/tasks/create-doc.md +318 -0
  422. package/.grimoire/development/tasks/create-next-story.md +776 -0
  423. package/.grimoire/development/tasks/create-service.md +393 -0
  424. package/.grimoire/development/tasks/create-suite.md +285 -0
  425. package/.grimoire/development/tasks/create-task.md +391 -0
  426. package/.grimoire/development/tasks/create-workflow.md +429 -0
  427. package/.grimoire/development/tasks/create-worktree.md +439 -0
  428. package/.grimoire/development/tasks/db-analyze-hotpaths.md +574 -0
  429. package/.grimoire/development/tasks/db-apply-migration.md +383 -0
  430. package/.grimoire/development/tasks/db-bootstrap.md +644 -0
  431. package/.grimoire/development/tasks/db-domain-modeling.md +695 -0
  432. package/.grimoire/development/tasks/db-dry-run.md +295 -0
  433. package/.grimoire/development/tasks/db-env-check.md +262 -0
  434. package/.grimoire/development/tasks/db-explain.md +633 -0
  435. package/.grimoire/development/tasks/db-impersonate.md +497 -0
  436. package/.grimoire/development/tasks/db-load-csv.md +595 -0
  437. package/.grimoire/development/tasks/db-policy-apply.md +655 -0
  438. package/.grimoire/development/tasks/db-rls-audit.md +413 -0
  439. package/.grimoire/development/tasks/db-rollback.md +741 -0
  440. package/.grimoire/development/tasks/db-run-sql.md +615 -0
  441. package/.grimoire/development/tasks/db-schema-audit.md +1013 -0
  442. package/.grimoire/development/tasks/db-seed.md +392 -0
  443. package/.grimoire/development/tasks/db-smoke-test.md +353 -0
  444. package/.grimoire/development/tasks/db-snapshot.md +571 -0
  445. package/.grimoire/development/tasks/db-squad-integration.md +665 -0
  446. package/.grimoire/development/tasks/db-supabase-setup.md +714 -0
  447. package/.grimoire/development/tasks/db-verify-order.md +517 -0
  448. package/.grimoire/development/tasks/deprecate-component.md +958 -0
  449. package/.grimoire/development/tasks/dev-apply-qa-fixes.md +320 -0
  450. package/.grimoire/development/tasks/dev-backlog-debt.md +471 -0
  451. package/.grimoire/development/tasks/dev-develop-story.md +912 -0
  452. package/.grimoire/development/tasks/dev-improve-code-quality.md +874 -0
  453. package/.grimoire/development/tasks/dev-optimize-performance.md +1035 -0
  454. package/.grimoire/development/tasks/dev-suggest-refactoring.md +872 -0
  455. package/.grimoire/development/tasks/dev-validate-next-story.md +350 -0
  456. package/.grimoire/development/tasks/document-gotchas.md +479 -0
  457. package/.grimoire/development/tasks/document-project.md +554 -0
  458. package/.grimoire/development/tasks/environment-bootstrap.md +1391 -0
  459. package/.grimoire/development/tasks/execute-checklist.md +303 -0
  460. package/.grimoire/development/tasks/execute-epic-plan.md +887 -0
  461. package/.grimoire/development/tasks/export-design-tokens-dtcg.md +276 -0
  462. package/.grimoire/development/tasks/extend-pattern.md +271 -0
  463. package/.grimoire/development/tasks/extract-patterns.md +399 -0
  464. package/.grimoire/development/tasks/extract-tokens.md +469 -0
  465. package/.grimoire/development/tasks/facilitate-brainstorming-session.md +520 -0
  466. package/.grimoire/development/tasks/generate-ai-frontend-prompt.md +262 -0
  467. package/.grimoire/development/tasks/generate-documentation.md +286 -0
  468. package/.grimoire/development/tasks/generate-migration-strategy.md +524 -0
  469. package/.grimoire/development/tasks/generate-shock-report.md +503 -0
  470. package/.grimoire/development/tasks/github-devops-github-pr-automation.md +666 -0
  471. package/.grimoire/development/tasks/github-devops-pre-push-quality-gate.md +791 -0
  472. package/.grimoire/development/tasks/github-devops-repository-cleanup.md +376 -0
  473. package/.grimoire/development/tasks/github-devops-version-management.md +485 -0
  474. package/.grimoire/development/tasks/gotcha.md +138 -0
  475. package/.grimoire/development/tasks/gotchas.md +155 -0
  476. package/.grimoire/development/tasks/health-check.yaml +227 -0
  477. package/.grimoire/development/tasks/ids-governor.md +96 -0
  478. package/.grimoire/development/tasks/ids-health.md +91 -0
  479. package/.grimoire/development/tasks/ids-query.md +156 -0
  480. package/.grimoire/development/tasks/improve-self.md +824 -0
  481. package/.grimoire/development/tasks/index-docs.md +389 -0
  482. package/.grimoire/development/tasks/init-project-status.md +508 -0
  483. package/.grimoire/development/tasks/integrate-squad.md +316 -0
  484. package/.grimoire/development/tasks/kb-mode-interaction.md +285 -0
  485. package/.grimoire/development/tasks/learn-patterns.md +902 -0
  486. package/.grimoire/development/tasks/list-mcps.md +33 -0
  487. package/.grimoire/development/tasks/list-worktrees.md +344 -0
  488. package/.grimoire/development/tasks/mcp-workflow.md +438 -0
  489. package/.grimoire/development/tasks/merge-worktree.md +42 -0
  490. package/.grimoire/development/tasks/modify-agent.md +399 -0
  491. package/.grimoire/development/tasks/modify-task.md +442 -0
  492. package/.grimoire/development/tasks/modify-workflow.md +511 -0
  493. package/.grimoire/development/tasks/next.md +327 -0
  494. package/.grimoire/development/tasks/orchestrate-resume.md +60 -0
  495. package/.grimoire/development/tasks/orchestrate-status.md +64 -0
  496. package/.grimoire/development/tasks/orchestrate-stop.md +55 -0
  497. package/.grimoire/development/tasks/orchestrate.md +66 -0
  498. package/.grimoire/development/tasks/patterns.md +336 -0
  499. package/.grimoire/development/tasks/plan-create-context.md +812 -0
  500. package/.grimoire/development/tasks/plan-create-implementation.md +797 -0
  501. package/.grimoire/development/tasks/plan-execute-subtask.md +962 -0
  502. package/.grimoire/development/tasks/po-backlog-add.md +372 -0
  503. package/.grimoire/development/tasks/po-close-story.md +428 -0
  504. package/.grimoire/development/tasks/po-manage-story-backlog.md +525 -0
  505. package/.grimoire/development/tasks/po-pull-story-from-clickup.md +542 -0
  506. package/.grimoire/development/tasks/po-pull-story.md +318 -0
  507. package/.grimoire/development/tasks/po-stories-index.md +353 -0
  508. package/.grimoire/development/tasks/po-sync-story-to-clickup.md +459 -0
  509. package/.grimoire/development/tasks/po-sync-story.md +305 -0
  510. package/.grimoire/development/tasks/pr-automation.md +703 -0
  511. package/.grimoire/development/tasks/propose-modification.md +844 -0
  512. package/.grimoire/development/tasks/publish-npm.md +259 -0
  513. package/.grimoire/development/tasks/qa-after-creation.md +519 -0
  514. package/.grimoire/development/tasks/qa-backlog-add-followup.md +427 -0
  515. package/.grimoire/development/tasks/qa-browser-console-check.md +343 -0
  516. package/.grimoire/development/tasks/qa-create-fix-request.md +625 -0
  517. package/.grimoire/development/tasks/qa-evidence-requirements.md +314 -0
  518. package/.grimoire/development/tasks/qa-false-positive-detection.md +374 -0
  519. package/.grimoire/development/tasks/qa-fix-issues.md +686 -0
  520. package/.grimoire/development/tasks/qa-gate.md +375 -0
  521. package/.grimoire/development/tasks/qa-generate-tests.md +1176 -0
  522. package/.grimoire/development/tasks/qa-library-validation.md +497 -0
  523. package/.grimoire/development/tasks/qa-migration-validation.md +584 -0
  524. package/.grimoire/development/tasks/qa-nfr-assess.md +559 -0
  525. package/.grimoire/development/tasks/qa-review-build.md +1225 -0
  526. package/.grimoire/development/tasks/qa-review-proposal.md +1159 -0
  527. package/.grimoire/development/tasks/qa-review-story.md +684 -0
  528. package/.grimoire/development/tasks/qa-risk-profile.md +568 -0
  529. package/.grimoire/development/tasks/qa-run-tests.md +279 -0
  530. package/.grimoire/development/tasks/qa-security-checklist.md +552 -0
  531. package/.grimoire/development/tasks/qa-test-design.md +389 -0
  532. package/.grimoire/development/tasks/qa-trace-requirements.md +478 -0
  533. package/.grimoire/development/tasks/release-management.md +754 -0
  534. package/.grimoire/development/tasks/remove-mcp.md +35 -0
  535. package/.grimoire/development/tasks/remove-worktree.md +435 -0
  536. package/.grimoire/development/tasks/run-design-system-pipeline.md +642 -0
  537. package/.grimoire/development/tasks/run-workflow-engine.md +861 -0
  538. package/.grimoire/development/tasks/run-workflow.md +389 -0
  539. package/.grimoire/development/tasks/search-mcp.md +309 -0
  540. package/.grimoire/development/tasks/security-audit.md +556 -0
  541. package/.grimoire/development/tasks/security-scan.md +792 -0
  542. package/.grimoire/development/tasks/session-resume.md +193 -0
  543. package/.grimoire/development/tasks/setup-database.md +743 -0
  544. package/.grimoire/development/tasks/setup-design-system.md +464 -0
  545. package/.grimoire/development/tasks/setup-github.md +876 -0
  546. package/.grimoire/development/tasks/setup-llm-routing.md +231 -0
  547. package/.grimoire/development/tasks/setup-mcp-docker.md +628 -0
  548. package/.grimoire/development/tasks/setup-project-docs.md +442 -0
  549. package/.grimoire/development/tasks/shard-doc.md +539 -0
  550. package/.grimoire/development/tasks/sm-create-next-story.md +482 -0
  551. package/.grimoire/development/tasks/spec-assess-complexity.md +461 -0
  552. package/.grimoire/development/tasks/spec-critique.md +595 -0
  553. package/.grimoire/development/tasks/spec-gather-requirements.md +545 -0
  554. package/.grimoire/development/tasks/spec-research-dependencies.md +446 -0
  555. package/.grimoire/development/tasks/spec-write-spec.md +531 -0
  556. package/.grimoire/development/tasks/squad-creator-analyze.md +318 -0
  557. package/.grimoire/development/tasks/squad-creator-create.md +314 -0
  558. package/.grimoire/development/tasks/squad-creator-design.md +335 -0
  559. package/.grimoire/development/tasks/squad-creator-download.md +169 -0
  560. package/.grimoire/development/tasks/squad-creator-extend.md +413 -0
  561. package/.grimoire/development/tasks/squad-creator-list.md +226 -0
  562. package/.grimoire/development/tasks/squad-creator-migrate.md +245 -0
  563. package/.grimoire/development/tasks/squad-creator-publish.md +231 -0
  564. package/.grimoire/development/tasks/squad-creator-sync-grimoire.md +317 -0
  565. package/.grimoire/development/tasks/squad-creator-sync-ide-command.md +403 -0
  566. package/.grimoire/development/tasks/squad-creator-validate.md +160 -0
  567. package/.grimoire/development/tasks/story-checkpoint.md +361 -0
  568. package/.grimoire/development/tasks/sync-documentation.md +866 -0
  569. package/.grimoire/development/tasks/tailwind-upgrade.md +296 -0
  570. package/.grimoire/development/tasks/test-as-user.md +623 -0
  571. package/.grimoire/development/tasks/test-validation-task.md +172 -0
  572. package/.grimoire/development/tasks/undo-last.md +348 -0
  573. package/.grimoire/development/tasks/update-grimoire.md +153 -0
  574. package/.grimoire/development/tasks/update-manifest.md +411 -0
  575. package/.grimoire/development/tasks/update-source-tree.md +138 -0
  576. package/.grimoire/development/tasks/ux-create-wireframe.md +619 -0
  577. package/.grimoire/development/tasks/ux-ds-scan-artifact.md +674 -0
  578. package/.grimoire/development/tasks/ux-user-research.md +561 -0
  579. package/.grimoire/development/tasks/validate-agents.md +117 -0
  580. package/.grimoire/development/tasks/validate-next-story.md +456 -0
  581. package/.grimoire/development/tasks/validate-tech-preset.md +187 -0
  582. package/.grimoire/development/tasks/validate-workflow.md +323 -0
  583. package/.grimoire/development/tasks/verify-subtask.md +237 -0
  584. package/.grimoire/development/tasks/waves.md +206 -0
  585. package/.grimoire/development/tasks/yolo-toggle.md +115 -0
  586. package/.grimoire/development/templates/grimoire-doc-template.md +496 -0
  587. package/.grimoire/development/templates/research-prompt-tmpl.md +486 -0
  588. package/.grimoire/development/templates/service-template/README.md.hbs +159 -0
  589. package/.grimoire/development/templates/service-template/__tests__/index.test.ts.hbs +238 -0
  590. package/.grimoire/development/templates/service-template/client.ts.hbs +404 -0
  591. package/.grimoire/development/templates/service-template/errors.ts.hbs +183 -0
  592. package/.grimoire/development/templates/service-template/index.ts.hbs +121 -0
  593. package/.grimoire/development/templates/service-template/jest.config.js +89 -0
  594. package/.grimoire/development/templates/service-template/package.json.hbs +88 -0
  595. package/.grimoire/development/templates/service-template/tsconfig.json +45 -0
  596. package/.grimoire/development/templates/service-template/types.ts.hbs +146 -0
  597. package/.grimoire/development/templates/squad/agent-template.md +69 -0
  598. package/.grimoire/development/templates/squad/checklist-template.md +82 -0
  599. package/.grimoire/development/templates/squad/data-template.yaml +105 -0
  600. package/.grimoire/development/templates/squad/script-template.js +179 -0
  601. package/.grimoire/development/templates/squad/task-template.md +125 -0
  602. package/.grimoire/development/templates/squad/template-template.md +98 -0
  603. package/.grimoire/development/templates/squad/tool-template.js +103 -0
  604. package/.grimoire/development/templates/squad/workflow-template.yaml +108 -0
  605. package/.grimoire/development/templates/squad-template/LICENSE +21 -0
  606. package/.grimoire/development/templates/squad-template/README.md +37 -0
  607. package/.grimoire/development/templates/squad-template/agents/example-agent.yaml +36 -0
  608. package/.grimoire/development/templates/squad-template/package.json +20 -0
  609. package/.grimoire/development/templates/squad-template/squad.yaml +26 -0
  610. package/.grimoire/development/templates/squad-template/tasks/example-task.yaml +46 -0
  611. package/.grimoire/development/templates/squad-template/templates/example-template.md +24 -0
  612. package/.grimoire/development/templates/squad-template/tests/example-agent.test.js +54 -0
  613. package/.grimoire/development/templates/squad-template/workflows/example-workflow.yaml +54 -0
  614. package/.grimoire/development/templates/subagent-step-prompt.md +122 -0
  615. package/.grimoire/development/workflows/README.md +82 -0
  616. package/.grimoire/development/workflows/auto-worktree.yaml +423 -0
  617. package/.grimoire/development/workflows/brownfield-discovery.yaml +933 -0
  618. package/.grimoire/development/workflows/brownfield-fullstack.yaml +369 -0
  619. package/.grimoire/development/workflows/brownfield-service.yaml +246 -0
  620. package/.grimoire/development/workflows/brownfield-ui.yaml +260 -0
  621. package/.grimoire/development/workflows/design-system-build-quality.yaml +228 -0
  622. package/.grimoire/development/workflows/development-cycle.yaml +427 -0
  623. package/.grimoire/development/workflows/epic-orchestration.yaml +328 -0
  624. package/.grimoire/development/workflows/greenfield-fullstack.yaml +386 -0
  625. package/.grimoire/development/workflows/greenfield-service.yaml +278 -0
  626. package/.grimoire/development/workflows/greenfield-ui.yaml +284 -0
  627. package/.grimoire/development/workflows/qa-loop.yaml +444 -0
  628. package/.grimoire/development/workflows/spec-pipeline.yaml +577 -0
  629. package/.grimoire/development/workflows/story-development-cycle.yaml +285 -0
  630. package/.grimoire/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +574 -0
  631. package/.grimoire/docs/standards/EXECUTOR-DECISION-TREE.md +698 -0
  632. package/.grimoire/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +513 -0
  633. package/.grimoire/docs/standards/QUALITY-GATES-SPECIFICATION.md +558 -0
  634. package/.grimoire/docs/standards/STANDARDS-INDEX.md +212 -0
  635. package/.grimoire/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +551 -0
  636. package/.grimoire/docs/standards/TASK-FORMAT-SPECIFICATION-V1.md +1415 -0
  637. package/.grimoire/docs/standards/grimoire-COLOR-PALETTE-QUICK-REFERENCE.md +186 -0
  638. package/.grimoire/docs/standards/grimoire-COLOR-PALETTE-V2.1.md +354 -0
  639. package/.grimoire/docs/standards/grimoire-LIVRO-DE-OURO-V2.1-COMPLETE.md +839 -0
  640. package/.grimoire/docs/standards/grimoire-LIVRO-DE-OURO-V2.2-SUMMARY.md +1341 -0
  641. package/.grimoire/elicitation/agent-elicitation.js +272 -0
  642. package/.grimoire/elicitation/task-elicitation.js +281 -0
  643. package/.grimoire/elicitation/workflow-elicitation.js +315 -0
  644. package/.grimoire/framework-config.yaml +152 -0
  645. package/.grimoire/hooks/gemini/after-tool.js +78 -0
  646. package/.grimoire/hooks/gemini/before-agent.js +80 -0
  647. package/.grimoire/hooks/gemini/before-tool.js +115 -0
  648. package/.grimoire/hooks/gemini/rewind-handler.js +69 -0
  649. package/.grimoire/hooks/gemini/session-end.js +91 -0
  650. package/.grimoire/hooks/gemini/session-start.js +91 -0
  651. package/.grimoire/hooks/ids-post-commit.js +118 -0
  652. package/.grimoire/hooks/ids-pre-push.js +125 -0
  653. package/.grimoire/hooks/unified/README.md +309 -0
  654. package/.grimoire/hooks/unified/hook-interface.js +161 -0
  655. package/.grimoire/hooks/unified/hook-registry.js +143 -0
  656. package/.grimoire/hooks/unified/index.js +36 -0
  657. package/.grimoire/hooks/unified/runners/precompact-runner.js +98 -0
  658. package/.grimoire/index.esm.js +17 -0
  659. package/.grimoire/index.js +17 -0
  660. package/.grimoire/infrastructure/README.md +128 -0
  661. package/.grimoire/infrastructure/contracts/compatibility/grimoire-4.0.4.yaml +46 -0
  662. package/.grimoire/infrastructure/index.js +200 -0
  663. package/.grimoire/infrastructure/integrations/ai-providers/README.md +103 -0
  664. package/.grimoire/infrastructure/integrations/ai-providers/ai-provider-factory.js +286 -0
  665. package/.grimoire/infrastructure/integrations/ai-providers/ai-provider.js +145 -0
  666. package/.grimoire/infrastructure/integrations/ai-providers/claude-provider.js +170 -0
  667. package/.grimoire/infrastructure/integrations/ai-providers/gemini-provider.js +365 -0
  668. package/.grimoire/infrastructure/integrations/ai-providers/index.js +45 -0
  669. package/.grimoire/infrastructure/integrations/gemini-extensions/cloudrun-adapter.js +129 -0
  670. package/.grimoire/infrastructure/integrations/gemini-extensions/index.js +41 -0
  671. package/.grimoire/infrastructure/integrations/gemini-extensions/policy-sync.js +74 -0
  672. package/.grimoire/infrastructure/integrations/gemini-extensions/security-adapter.js +159 -0
  673. package/.grimoire/infrastructure/integrations/gemini-extensions/supabase-adapter.js +88 -0
  674. package/.grimoire/infrastructure/integrations/gemini-extensions/workspace-adapter.js +100 -0
  675. package/.grimoire/infrastructure/integrations/pm-adapters/README.md +60 -0
  676. package/.grimoire/infrastructure/integrations/pm-adapters/clickup-adapter.js +345 -0
  677. package/.grimoire/infrastructure/integrations/pm-adapters/github-adapter.js +393 -0
  678. package/.grimoire/infrastructure/integrations/pm-adapters/jira-adapter.js +449 -0
  679. package/.grimoire/infrastructure/integrations/pm-adapters/local-adapter.js +176 -0
  680. package/.grimoire/infrastructure/schemas/agent-v3-schema.json +160 -0
  681. package/.grimoire/infrastructure/schemas/build-state.schema.json +158 -0
  682. package/.grimoire/infrastructure/schemas/task-v3-schema.json +152 -0
  683. package/.grimoire/infrastructure/scripts/approach-manager.js +1005 -0
  684. package/.grimoire/infrastructure/scripts/approval-workflow.js +644 -0
  685. package/.grimoire/infrastructure/scripts/asset-inventory.js +622 -0
  686. package/.grimoire/infrastructure/scripts/atomic-layer-classifier.js +309 -0
  687. package/.grimoire/infrastructure/scripts/backup-manager.js +607 -0
  688. package/.grimoire/infrastructure/scripts/batch-creator.js +609 -0
  689. package/.grimoire/infrastructure/scripts/branch-manager.js +391 -0
  690. package/.grimoire/infrastructure/scripts/capability-analyzer.js +535 -0
  691. package/.grimoire/infrastructure/scripts/changelog-generator.js +554 -0
  692. package/.grimoire/infrastructure/scripts/cicd-discovery.js +1269 -0
  693. package/.grimoire/infrastructure/scripts/clickup-helpers.js +227 -0
  694. package/.grimoire/infrastructure/scripts/code-quality-improver.js +1312 -0
  695. package/.grimoire/infrastructure/scripts/codebase-mapper.js +1288 -0
  696. package/.grimoire/infrastructure/scripts/codex-skills-sync/index.js +184 -0
  697. package/.grimoire/infrastructure/scripts/codex-skills-sync/validate.js +174 -0
  698. package/.grimoire/infrastructure/scripts/commit-message-generator.js +850 -0
  699. package/.grimoire/infrastructure/scripts/component-generator.js +738 -0
  700. package/.grimoire/infrastructure/scripts/component-metadata.js +628 -0
  701. package/.grimoire/infrastructure/scripts/component-search.js +278 -0
  702. package/.grimoire/infrastructure/scripts/config-cache.js +322 -0
  703. package/.grimoire/infrastructure/scripts/config-loader.js +351 -0
  704. package/.grimoire/infrastructure/scripts/conflict-resolver.js +675 -0
  705. package/.grimoire/infrastructure/scripts/coverage-analyzer.js +882 -0
  706. package/.grimoire/infrastructure/scripts/dashboard-status-writer.js +310 -0
  707. package/.grimoire/infrastructure/scripts/dependency-analyzer.js +639 -0
  708. package/.grimoire/infrastructure/scripts/dependency-impact-analyzer.js +704 -0
  709. package/.grimoire/infrastructure/scripts/diff-generator.js +129 -0
  710. package/.grimoire/infrastructure/scripts/documentation-integrity/brownfield-analyzer.js +502 -0
  711. package/.grimoire/infrastructure/scripts/documentation-integrity/config-generator.js +369 -0
  712. package/.grimoire/infrastructure/scripts/documentation-integrity/deployment-config-loader.js +309 -0
  713. package/.grimoire/infrastructure/scripts/documentation-integrity/doc-generator.js +331 -0
  714. package/.grimoire/infrastructure/scripts/documentation-integrity/gitignore-generator.js +314 -0
  715. package/.grimoire/infrastructure/scripts/documentation-integrity/index.js +75 -0
  716. package/.grimoire/infrastructure/scripts/documentation-integrity/mode-detector.js +391 -0
  717. package/.grimoire/infrastructure/scripts/documentation-synchronizer.js +1432 -0
  718. package/.grimoire/infrastructure/scripts/framework-analyzer.js +763 -0
  719. package/.grimoire/infrastructure/scripts/git-config-detector.js +293 -0
  720. package/.grimoire/infrastructure/scripts/git-hooks/post-commit.js +75 -0
  721. package/.grimoire/infrastructure/scripts/git-wrapper.js +444 -0
  722. package/.grimoire/infrastructure/scripts/gotchas-documenter.js +1296 -0
  723. package/.grimoire/infrastructure/scripts/grimoire-validator.js +295 -0
  724. package/.grimoire/infrastructure/scripts/ide-sync/README.md +220 -0
  725. package/.grimoire/infrastructure/scripts/ide-sync/agent-parser.js +295 -0
  726. package/.grimoire/infrastructure/scripts/ide-sync/gemini-commands.js +207 -0
  727. package/.grimoire/infrastructure/scripts/ide-sync/index.js +540 -0
  728. package/.grimoire/infrastructure/scripts/ide-sync/redirect-generator.js +179 -0
  729. package/.grimoire/infrastructure/scripts/ide-sync/transformers/antigravity.js +107 -0
  730. package/.grimoire/infrastructure/scripts/ide-sync/transformers/claude-code.js +86 -0
  731. package/.grimoire/infrastructure/scripts/ide-sync/transformers/cursor.js +96 -0
  732. package/.grimoire/infrastructure/scripts/ide-sync/validator.js +273 -0
  733. package/.grimoire/infrastructure/scripts/improvement-engine.js +758 -0
  734. package/.grimoire/infrastructure/scripts/improvement-validator.js +710 -0
  735. package/.grimoire/infrastructure/scripts/llm-routing/install-llm-routing.js +282 -0
  736. package/.grimoire/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +129 -0
  737. package/.grimoire/infrastructure/scripts/llm-routing/templates/claude-free-tracked.sh +108 -0
  738. package/.grimoire/infrastructure/scripts/llm-routing/templates/claude-free.cmd +80 -0
  739. package/.grimoire/infrastructure/scripts/llm-routing/templates/claude-free.sh +62 -0
  740. package/.grimoire/infrastructure/scripts/llm-routing/templates/claude-max.cmd +26 -0
  741. package/.grimoire/infrastructure/scripts/llm-routing/templates/claude-max.sh +18 -0
  742. package/.grimoire/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +73 -0
  743. package/.grimoire/infrastructure/scripts/llm-routing/templates/deepseek-proxy.sh +65 -0
  744. package/.grimoire/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +53 -0
  745. package/.grimoire/infrastructure/scripts/llm-routing/templates/deepseek-usage.sh +16 -0
  746. package/.grimoire/infrastructure/scripts/llm-routing/usage-tracker/index.js +551 -0
  747. package/.grimoire/infrastructure/scripts/migrate-agent.js +528 -0
  748. package/.grimoire/infrastructure/scripts/modification-risk-assessment.js +970 -0
  749. package/.grimoire/infrastructure/scripts/modification-validator.js +555 -0
  750. package/.grimoire/infrastructure/scripts/output-formatter.js +298 -0
  751. package/.grimoire/infrastructure/scripts/path-analyzer.js +476 -0
  752. package/.grimoire/infrastructure/scripts/pattern-extractor.js +1563 -0
  753. package/.grimoire/infrastructure/scripts/performance-analyzer.js +758 -0
  754. package/.grimoire/infrastructure/scripts/performance-and-error-resolver.js +258 -0
  755. package/.grimoire/infrastructure/scripts/performance-optimizer.js +1902 -0
  756. package/.grimoire/infrastructure/scripts/performance-tracker.js +454 -0
  757. package/.grimoire/infrastructure/scripts/plan-tracker.js +922 -0
  758. package/.grimoire/infrastructure/scripts/pm-adapter-factory.js +182 -0
  759. package/.grimoire/infrastructure/scripts/pm-adapter.js +134 -0
  760. package/.grimoire/infrastructure/scripts/pr-review-ai.js +1062 -0
  761. package/.grimoire/infrastructure/scripts/project-status-loader.js +850 -0
  762. package/.grimoire/infrastructure/scripts/qa-loop-orchestrator.js +1264 -0
  763. package/.grimoire/infrastructure/scripts/qa-report-generator.js +1154 -0
  764. package/.grimoire/infrastructure/scripts/recovery-tracker.js +965 -0
  765. package/.grimoire/infrastructure/scripts/refactoring-suggester.js +1139 -0
  766. package/.grimoire/infrastructure/scripts/repository-detector.js +66 -0
  767. package/.grimoire/infrastructure/scripts/rollback-manager.js +734 -0
  768. package/.grimoire/infrastructure/scripts/sandbox-tester.js +618 -0
  769. package/.grimoire/infrastructure/scripts/security-checker.js +359 -0
  770. package/.grimoire/infrastructure/scripts/spot-check-validator.js +149 -0
  771. package/.grimoire/infrastructure/scripts/status-mapper.js +116 -0
  772. package/.grimoire/infrastructure/scripts/story-worktree-hooks.js +426 -0
  773. package/.grimoire/infrastructure/scripts/stuck-detector.js +1251 -0
  774. package/.grimoire/infrastructure/scripts/subtask-verifier.js +793 -0
  775. package/.grimoire/infrastructure/scripts/template-engine.js +240 -0
  776. package/.grimoire/infrastructure/scripts/template-validator.js +279 -0
  777. package/.grimoire/infrastructure/scripts/test-discovery.js +1259 -0
  778. package/.grimoire/infrastructure/scripts/test-generator.js +845 -0
  779. package/.grimoire/infrastructure/scripts/test-quality-assessment.js +1082 -0
  780. package/.grimoire/infrastructure/scripts/test-utilities-fast.js +126 -0
  781. package/.grimoire/infrastructure/scripts/test-utilities.js +201 -0
  782. package/.grimoire/infrastructure/scripts/tool-resolver.js +362 -0
  783. package/.grimoire/infrastructure/scripts/transaction-manager.js +590 -0
  784. package/.grimoire/infrastructure/scripts/usage-analytics.js +636 -0
  785. package/.grimoire/infrastructure/scripts/validate-agents.js +527 -0
  786. package/.grimoire/infrastructure/scripts/validate-claude-integration.js +103 -0
  787. package/.grimoire/infrastructure/scripts/validate-codex-integration.js +143 -0
  788. package/.grimoire/infrastructure/scripts/validate-gemini-integration.js +153 -0
  789. package/.grimoire/infrastructure/scripts/validate-output-pattern.js +213 -0
  790. package/.grimoire/infrastructure/scripts/validate-parity.js +357 -0
  791. package/.grimoire/infrastructure/scripts/validate-paths.js +144 -0
  792. package/.grimoire/infrastructure/scripts/validate-user-profile.js +251 -0
  793. package/.grimoire/infrastructure/scripts/visual-impact-generator.js +1056 -0
  794. package/.grimoire/infrastructure/scripts/worktree-manager.js +704 -0
  795. package/.grimoire/infrastructure/scripts/yaml-validator.js +397 -0
  796. package/.grimoire/infrastructure/templates/coderabbit.yaml.template +280 -0
  797. package/.grimoire/infrastructure/templates/core-config/core-config-brownfield.tmpl.yaml +177 -0
  798. package/.grimoire/infrastructure/templates/core-config/core-config-greenfield.tmpl.yaml +169 -0
  799. package/.grimoire/infrastructure/templates/github-workflows/README.md +110 -0
  800. package/.grimoire/infrastructure/templates/github-workflows/ci.yml.template +170 -0
  801. package/.grimoire/infrastructure/templates/github-workflows/pr-automation.yml.template +331 -0
  802. package/.grimoire/infrastructure/templates/github-workflows/release.yml.template +197 -0
  803. package/.grimoire/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +20 -0
  804. package/.grimoire/infrastructure/templates/gitignore/gitignore-grimoire-base.tmpl +65 -0
  805. package/.grimoire/infrastructure/templates/gitignore/gitignore-node.tmpl +86 -0
  806. package/.grimoire/infrastructure/templates/gitignore/gitignore-python.tmpl +146 -0
  807. package/.grimoire/infrastructure/templates/grimoire-sync.yaml.template +183 -0
  808. package/.grimoire/infrastructure/templates/project-docs/coding-standards-tmpl.md +347 -0
  809. package/.grimoire/infrastructure/templates/project-docs/source-tree-tmpl.md +179 -0
  810. package/.grimoire/infrastructure/templates/project-docs/tech-stack-tmpl.md +269 -0
  811. package/.grimoire/infrastructure/tests/project-status-loader.test.js +569 -0
  812. package/.grimoire/infrastructure/tests/regression-suite-v2.md +622 -0
  813. package/.grimoire/infrastructure/tests/validate-module.js +98 -0
  814. package/.grimoire/infrastructure/tests/worktree-manager.test.js +620 -0
  815. package/.grimoire/infrastructure/tools/README.md +224 -0
  816. package/.grimoire/infrastructure/tools/cli/github-cli.yaml +200 -0
  817. package/.grimoire/infrastructure/tools/cli/llm-routing.yaml +128 -0
  818. package/.grimoire/infrastructure/tools/cli/railway-cli.yaml +260 -0
  819. package/.grimoire/infrastructure/tools/cli/supabase-cli.yaml +224 -0
  820. package/.grimoire/infrastructure/tools/local/ffmpeg.yaml +261 -0
  821. package/.grimoire/infrastructure/tools/mcp/21st-dev-magic.yaml +127 -0
  822. package/.grimoire/infrastructure/tools/mcp/browser.yaml +103 -0
  823. package/.grimoire/infrastructure/tools/mcp/clickup.yaml +535 -0
  824. package/.grimoire/infrastructure/tools/mcp/context7.yaml +78 -0
  825. package/.grimoire/infrastructure/tools/mcp/desktop-commander.yaml +180 -0
  826. package/.grimoire/infrastructure/tools/mcp/exa.yaml +103 -0
  827. package/.grimoire/infrastructure/tools/mcp/google-workspace.yaml +930 -0
  828. package/.grimoire/infrastructure/tools/mcp/n8n.yaml +551 -0
  829. package/.grimoire/infrastructure/tools/mcp/supabase.yaml +808 -0
  830. package/.grimoire/install-manifest.yaml +4058 -0
  831. package/.grimoire/local-config.yaml.template +73 -0
  832. package/.grimoire/manifests/schema/manifest-schema.json +191 -0
  833. package/.grimoire/monitor/hooks/lib/__init__.py +2 -0
  834. package/.grimoire/monitor/hooks/lib/enrich.py +59 -0
  835. package/.grimoire/monitor/hooks/lib/send_event.py +48 -0
  836. package/.grimoire/monitor/hooks/notification.py +30 -0
  837. package/.grimoire/monitor/hooks/post_tool_use.py +46 -0
  838. package/.grimoire/monitor/hooks/pre_compact.py +30 -0
  839. package/.grimoire/monitor/hooks/pre_tool_use.py +41 -0
  840. package/.grimoire/monitor/hooks/stop.py +30 -0
  841. package/.grimoire/monitor/hooks/subagent_stop.py +30 -0
  842. package/.grimoire/monitor/hooks/user_prompt_submit.py +39 -0
  843. package/.grimoire/package.json +104 -0
  844. package/.grimoire/presets/README.md +359 -0
  845. package/.grimoire/product/README.md +57 -0
  846. package/.grimoire/product/checklists/accessibility-wcag-checklist.md +80 -0
  847. package/.grimoire/product/checklists/architect-checklist.md +444 -0
  848. package/.grimoire/product/checklists/change-checklist.md +183 -0
  849. package/.grimoire/product/checklists/component-quality-checklist.md +74 -0
  850. package/.grimoire/product/checklists/database-design-checklist.md +119 -0
  851. package/.grimoire/product/checklists/dba-predeploy-checklist.md +97 -0
  852. package/.grimoire/product/checklists/dba-rollback-checklist.md +99 -0
  853. package/.grimoire/product/checklists/migration-readiness-checklist.md +75 -0
  854. package/.grimoire/product/checklists/pattern-audit-checklist.md +88 -0
  855. package/.grimoire/product/checklists/pm-checklist.md +376 -0
  856. package/.grimoire/product/checklists/po-master-checklist.md +442 -0
  857. package/.grimoire/product/checklists/pre-push-checklist.md +108 -0
  858. package/.grimoire/product/checklists/release-checklist.md +122 -0
  859. package/.grimoire/product/checklists/self-critique-checklist.md +387 -0
  860. package/.grimoire/product/checklists/story-dod-checklist.md +102 -0
  861. package/.grimoire/product/checklists/story-draft-checklist.md +216 -0
  862. package/.grimoire/product/data/atomic-design-principles.md +108 -0
  863. package/.grimoire/product/data/brainstorming-techniques.md +37 -0
  864. package/.grimoire/product/data/consolidation-algorithms.md +142 -0
  865. package/.grimoire/product/data/database-best-practices.md +182 -0
  866. package/.grimoire/product/data/design-token-best-practices.md +107 -0
  867. package/.grimoire/product/data/elicitation-methods.md +135 -0
  868. package/.grimoire/product/data/integration-patterns.md +207 -0
  869. package/.grimoire/product/data/migration-safety-guide.md +329 -0
  870. package/.grimoire/product/data/mode-selection-best-practices.md +471 -0
  871. package/.grimoire/product/data/postgres-tuning-guide.md +300 -0
  872. package/.grimoire/product/data/rls-security-patterns.md +333 -0
  873. package/.grimoire/product/data/roi-calculation-guide.md +142 -0
  874. package/.grimoire/product/data/supabase-patterns.md +330 -0
  875. package/.grimoire/product/data/test-levels-framework.md +149 -0
  876. package/.grimoire/product/data/test-priorities-matrix.md +175 -0
  877. package/.grimoire/product/data/wcag-compliance-guide.md +267 -0
  878. package/.grimoire/product/templates/activation-instructions-inline-greeting.yaml +64 -0
  879. package/.grimoire/product/templates/activation-instructions-template.md +260 -0
  880. package/.grimoire/product/templates/adr.hbs +126 -0
  881. package/.grimoire/product/templates/agent-template.yaml +122 -0
  882. package/.grimoire/product/templates/architecture-tmpl.yaml +651 -0
  883. package/.grimoire/product/templates/brainstorming-output-tmpl.yaml +156 -0
  884. package/.grimoire/product/templates/brownfield-architecture-tmpl.yaml +476 -0
  885. package/.grimoire/product/templates/brownfield-prd-tmpl.yaml +280 -0
  886. package/.grimoire/product/templates/brownfield-risk-report-tmpl.yaml +278 -0
  887. package/.grimoire/product/templates/changelog-template.md +134 -0
  888. package/.grimoire/product/templates/command-rationalization-matrix.md +154 -0
  889. package/.grimoire/product/templates/competitor-analysis-tmpl.yaml +293 -0
  890. package/.grimoire/product/templates/component-react-tmpl.tsx +98 -0
  891. package/.grimoire/product/templates/current-approach-tmpl.md +56 -0
  892. package/.grimoire/product/templates/dbdr.hbs +242 -0
  893. package/.grimoire/product/templates/design-story-tmpl.yaml +588 -0
  894. package/.grimoire/product/templates/ds-artifact-analysis.md +70 -0
  895. package/.grimoire/product/templates/engine/elicitation.js +298 -0
  896. package/.grimoire/product/templates/engine/index.js +310 -0
  897. package/.grimoire/product/templates/engine/loader.js +232 -0
  898. package/.grimoire/product/templates/engine/renderer.js +343 -0
  899. package/.grimoire/product/templates/engine/schemas/adr.schema.json +102 -0
  900. package/.grimoire/product/templates/engine/schemas/dbdr.schema.json +205 -0
  901. package/.grimoire/product/templates/engine/schemas/epic.schema.json +175 -0
  902. package/.grimoire/product/templates/engine/schemas/pmdr.schema.json +175 -0
  903. package/.grimoire/product/templates/engine/schemas/prd-v2.schema.json +300 -0
  904. package/.grimoire/product/templates/engine/schemas/prd.schema.json +152 -0
  905. package/.grimoire/product/templates/engine/schemas/story.schema.json +222 -0
  906. package/.grimoire/product/templates/engine/schemas/task.schema.json +154 -0
  907. package/.grimoire/product/templates/engine/validator.js +295 -0
  908. package/.grimoire/product/templates/epic.hbs +213 -0
  909. package/.grimoire/product/templates/eslintrc-security.json +32 -0
  910. package/.grimoire/product/templates/front-end-architecture-tmpl.yaml +206 -0
  911. package/.grimoire/product/templates/front-end-spec-tmpl.yaml +349 -0
  912. package/.grimoire/product/templates/fullstack-architecture-tmpl.yaml +805 -0
  913. package/.grimoire/product/templates/gemini/settings.json +81 -0
  914. package/.grimoire/product/templates/github-actions-cd.yml +213 -0
  915. package/.grimoire/product/templates/github-actions-ci.yml +173 -0
  916. package/.grimoire/product/templates/github-pr-template.md +68 -0
  917. package/.grimoire/product/templates/gordon-mcp.yaml +141 -0
  918. package/.grimoire/product/templates/grimoire-ai-config.yaml +107 -0
  919. package/.grimoire/product/templates/ide-rules/antigravity-rules.md +117 -0
  920. package/.grimoire/product/templates/ide-rules/claude-rules.md +233 -0
  921. package/.grimoire/product/templates/ide-rules/codex-rules.md +67 -0
  922. package/.grimoire/product/templates/ide-rules/copilot-rules.md +94 -0
  923. package/.grimoire/product/templates/ide-rules/cursor-rules.md +116 -0
  924. package/.grimoire/product/templates/ide-rules/gemini-rules.md +89 -0
  925. package/.grimoire/product/templates/index-strategy-tmpl.yaml +53 -0
  926. package/.grimoire/product/templates/market-research-tmpl.yaml +252 -0
  927. package/.grimoire/product/templates/mcp-workflow.js +273 -0
  928. package/.grimoire/product/templates/migration-plan-tmpl.yaml +1022 -0
  929. package/.grimoire/product/templates/migration-strategy-tmpl.md +524 -0
  930. package/.grimoire/product/templates/personalized-agent-template.md +260 -0
  931. package/.grimoire/product/templates/personalized-checklist-template.md +341 -0
  932. package/.grimoire/product/templates/personalized-task-template-v2.md +907 -0
  933. package/.grimoire/product/templates/personalized-task-template.md +345 -0
  934. package/.grimoire/product/templates/personalized-template-file.yaml +323 -0
  935. package/.grimoire/product/templates/personalized-workflow-template.yaml +461 -0
  936. package/.grimoire/product/templates/pmdr.hbs +187 -0
  937. package/.grimoire/product/templates/prd-tmpl.yaml +202 -0
  938. package/.grimoire/product/templates/prd-v2.0.hbs +217 -0
  939. package/.grimoire/product/templates/prd.hbs +202 -0
  940. package/.grimoire/product/templates/project-brief-tmpl.yaml +221 -0
  941. package/.grimoire/product/templates/qa-gate-tmpl.yaml +240 -0
  942. package/.grimoire/product/templates/qa-report-tmpl.md +235 -0
  943. package/.grimoire/product/templates/rls-policies-tmpl.yaml +1203 -0
  944. package/.grimoire/product/templates/schema-design-tmpl.yaml +428 -0
  945. package/.grimoire/product/templates/shock-report-tmpl.html +502 -0
  946. package/.grimoire/product/templates/spec-tmpl.md +235 -0
  947. package/.grimoire/product/templates/state-persistence-tmpl.yaml +219 -0
  948. package/.grimoire/product/templates/statusline/statusline-script.js +190 -0
  949. package/.grimoire/product/templates/statusline/track-agent.sh +70 -0
  950. package/.grimoire/product/templates/story-tmpl.yaml +369 -0
  951. package/.grimoire/product/templates/story.hbs +264 -0
  952. package/.grimoire/product/templates/task-execution-report.md +496 -0
  953. package/.grimoire/product/templates/task-template.md +123 -0
  954. package/.grimoire/product/templates/task.hbs +171 -0
  955. package/.grimoire/product/templates/tmpl-comment-on-examples.sql +158 -0
  956. package/.grimoire/product/templates/tmpl-migration-script.sql +91 -0
  957. package/.grimoire/product/templates/tmpl-rls-granular-policies.sql +104 -0
  958. package/.grimoire/product/templates/tmpl-rls-kiss-policy.sql +10 -0
  959. package/.grimoire/product/templates/tmpl-rls-roles.sql +135 -0
  960. package/.grimoire/product/templates/tmpl-rls-simple.sql +77 -0
  961. package/.grimoire/product/templates/tmpl-rls-tenant.sql +152 -0
  962. package/.grimoire/product/templates/tmpl-rollback-script.sql +77 -0
  963. package/.grimoire/product/templates/tmpl-seed-data.sql +140 -0
  964. package/.grimoire/product/templates/tmpl-smoke-test.sql +16 -0
  965. package/.grimoire/product/templates/tmpl-staging-copy-merge.sql +139 -0
  966. package/.grimoire/product/templates/tmpl-stored-proc.sql +140 -0
  967. package/.grimoire/product/templates/tmpl-trigger.sql +152 -0
  968. package/.grimoire/product/templates/tmpl-view-materialized.sql +133 -0
  969. package/.grimoire/product/templates/tmpl-view.sql +177 -0
  970. package/.grimoire/product/templates/token-exports-css-tmpl.css +240 -0
  971. package/.grimoire/product/templates/token-exports-tailwind-tmpl.js +395 -0
  972. package/.grimoire/product/templates/tokens-schema-tmpl.yaml +305 -0
  973. package/.grimoire/product/templates/workflow-template.yaml +152 -0
  974. package/.grimoire/project-config.yaml +166 -0
  975. package/.grimoire/quality/metrics-collector.js +601 -0
  976. package/.grimoire/quality/metrics-hook.js +261 -0
  977. package/.grimoire/quality/schemas/quality-metrics.schema.json +234 -0
  978. package/.grimoire/quality/seed-metrics.js +336 -0
  979. package/.grimoire/schemas/README.md +405 -0
  980. package/.grimoire/schemas/agent-v3-schema.json +395 -0
  981. package/.grimoire/schemas/squad-design-schema.json +300 -0
  982. package/.grimoire/schemas/squad-schema.json +187 -0
  983. package/.grimoire/schemas/task-v3-schema.json +354 -0
  984. package/.grimoire/schemas/validate-v3-schema.js +431 -0
  985. package/.grimoire/scripts/README.md +124 -0
  986. package/.grimoire/scripts/batch-migrate-phase1.ps1 +37 -0
  987. package/.grimoire/scripts/batch-migrate-phase2.ps1 +89 -0
  988. package/.grimoire/scripts/batch-migrate-phase3.ps1 +46 -0
  989. package/.grimoire/scripts/command-execution-hook.js +202 -0
  990. package/.grimoire/scripts/diagnostics/diagnose-installation.js +276 -0
  991. package/.grimoire/scripts/diagnostics/diagnose-npx-issue.ps1 +98 -0
  992. package/.grimoire/scripts/diagnostics/health-dashboard/README.md +123 -0
  993. package/.grimoire/scripts/diagnostics/health-dashboard/index.html +14 -0
  994. package/.grimoire/scripts/diagnostics/health-dashboard/package-lock.json +5262 -0
  995. package/.grimoire/scripts/diagnostics/health-dashboard/package.json +25 -0
  996. package/.grimoire/scripts/diagnostics/health-dashboard/public/favicon.svg +10 -0
  997. package/.grimoire/scripts/diagnostics/health-dashboard/src/App.jsx +22 -0
  998. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/AutoFixLog.css +122 -0
  999. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/AutoFixLog.jsx +72 -0
  1000. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/DomainCard.css +121 -0
  1001. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/DomainCard.jsx +116 -0
  1002. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/HealthScore.css +80 -0
  1003. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/HealthScore.jsx +81 -0
  1004. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/IssuesList.css +184 -0
  1005. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/IssuesList.jsx +145 -0
  1006. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/TechDebtList.css +114 -0
  1007. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/TechDebtList.jsx +72 -0
  1008. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/index.js +9 -0
  1009. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/Card.css +44 -0
  1010. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/Card.jsx +25 -0
  1011. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/Chart.css +14 -0
  1012. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/Chart.jsx +138 -0
  1013. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/Header.css +54 -0
  1014. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/Header.jsx +22 -0
  1015. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/StatusBadge.css +77 -0
  1016. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/StatusBadge.jsx +45 -0
  1017. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/index.js +4 -0
  1018. package/.grimoire/scripts/diagnostics/health-dashboard/src/hooks/index.js +2 -0
  1019. package/.grimoire/scripts/diagnostics/health-dashboard/src/hooks/useAutoRefresh.js +89 -0
  1020. package/.grimoire/scripts/diagnostics/health-dashboard/src/hooks/useHealthData.js +308 -0
  1021. package/.grimoire/scripts/diagnostics/health-dashboard/src/main.jsx +13 -0
  1022. package/.grimoire/scripts/diagnostics/health-dashboard/src/pages/Dashboard.css +238 -0
  1023. package/.grimoire/scripts/diagnostics/health-dashboard/src/pages/Dashboard.jsx +154 -0
  1024. package/.grimoire/scripts/diagnostics/health-dashboard/src/pages/DomainDetail.css +259 -0
  1025. package/.grimoire/scripts/diagnostics/health-dashboard/src/pages/DomainDetail.jsx +164 -0
  1026. package/.grimoire/scripts/diagnostics/health-dashboard/src/pages/index.js +2 -0
  1027. package/.grimoire/scripts/diagnostics/health-dashboard/src/styles/App.css +19 -0
  1028. package/.grimoire/scripts/diagnostics/health-dashboard/src/styles/index.css +67 -0
  1029. package/.grimoire/scripts/diagnostics/health-dashboard/vite.config.js +23 -0
  1030. package/.grimoire/scripts/diagnostics/quick-diagnose.cmd +86 -0
  1031. package/.grimoire/scripts/diagnostics/quick-diagnose.ps1 +118 -0
  1032. package/.grimoire/scripts/grimoire-doc-template.md +326 -0
  1033. package/.grimoire/scripts/migrate-framework-docs.sh +302 -0
  1034. package/.grimoire/scripts/pm.sh +455 -0
  1035. package/.grimoire/scripts/session-context-loader.js +46 -0
  1036. package/.grimoire/scripts/test-template-system.js +942 -0
  1037. package/.grimoire/scripts/update-grimoire.sh +176 -0
  1038. package/.grimoire/scripts/validate-phase1.ps1 +36 -0
  1039. package/.grimoire/scripts/workflow-management.md +70 -0
  1040. package/.grimoire/user-guide.md +1411 -0
  1041. package/.grimoire/utils/format-duration.js +95 -0
  1042. package/.grimoire/utils/grimoire-validator.js +27 -0
  1043. package/.grimoire/workflow-intelligence/__tests__/confidence-scorer.test.js +334 -0
  1044. package/.grimoire/workflow-intelligence/__tests__/integration.test.js +339 -0
  1045. package/.grimoire/workflow-intelligence/__tests__/suggestion-engine.test.js +437 -0
  1046. package/.grimoire/workflow-intelligence/__tests__/wave-analyzer.test.js +447 -0
  1047. package/.grimoire/workflow-intelligence/__tests__/workflow-registry.test.js +302 -0
  1048. package/.grimoire/workflow-intelligence/engine/confidence-scorer.js +306 -0
  1049. package/.grimoire/workflow-intelligence/engine/output-formatter.js +299 -0
  1050. package/.grimoire/workflow-intelligence/engine/suggestion-engine.js +798 -0
  1051. package/.grimoire/workflow-intelligence/engine/wave-analyzer.js +683 -0
  1052. package/.grimoire/workflow-intelligence/index.js +330 -0
  1053. package/.grimoire/workflow-intelligence/learning/capture-hook.js +148 -0
  1054. package/.grimoire/workflow-intelligence/learning/gotcha-registry.js +654 -0
  1055. package/.grimoire/workflow-intelligence/learning/index.js +306 -0
  1056. package/.grimoire/workflow-intelligence/learning/pattern-capture.js +330 -0
  1057. package/.grimoire/workflow-intelligence/learning/pattern-store.js +497 -0
  1058. package/.grimoire/workflow-intelligence/learning/pattern-validator.js +310 -0
  1059. package/.grimoire/workflow-intelligence/learning/qa-feedback.js +586 -0
  1060. package/.grimoire/workflow-intelligence/learning/semantic-search.js +521 -0
  1061. package/.grimoire/workflow-intelligence/registry/workflow-registry.js +357 -0
  1062. package/.grimoire/working-in-the-brownfield.md +362 -0
  1063. package/LICENSE +25 -0
  1064. package/README.md +59 -0
  1065. package/bin/grimoire-ids.js +560 -0
  1066. package/bin/grimoire-init.js +1232 -0
  1067. package/bin/grimoire-minimal.js +40 -0
  1068. package/bin/grimoire.js +1118 -0
  1069. package/bin/modules/env-config.js +436 -0
  1070. package/bin/modules/mcp-installer.js +384 -0
  1071. package/bin/utils/install-errors.js +340 -0
  1072. package/bin/utils/install-transaction.js +447 -0
  1073. package/bin/utils/pro-detector.js +110 -0
  1074. package/package.json +158 -0
  1075. package/packages/gemini-grimoire-extension/README.md +55 -0
  1076. package/packages/gemini-grimoire-extension/commands/grimoire-agent.js +7 -0
  1077. package/packages/gemini-grimoire-extension/commands/grimoire-agents.js +51 -0
  1078. package/packages/gemini-grimoire-extension/commands/grimoire-analyst.js +6 -0
  1079. package/packages/gemini-grimoire-extension/commands/grimoire-architect.js +6 -0
  1080. package/packages/gemini-grimoire-extension/commands/grimoire-data-engineer.js +6 -0
  1081. package/packages/gemini-grimoire-extension/commands/grimoire-dev.js +6 -0
  1082. package/packages/gemini-grimoire-extension/commands/grimoire-devops.js +6 -0
  1083. package/packages/gemini-grimoire-extension/commands/grimoire-master.js +7 -0
  1084. package/packages/gemini-grimoire-extension/commands/grimoire-menu.js +6 -0
  1085. package/packages/gemini-grimoire-extension/commands/grimoire-pm.js +6 -0
  1086. package/packages/gemini-grimoire-extension/commands/grimoire-po.js +6 -0
  1087. package/packages/gemini-grimoire-extension/commands/grimoire-qa.js +6 -0
  1088. package/packages/gemini-grimoire-extension/commands/grimoire-sm.js +6 -0
  1089. package/packages/gemini-grimoire-extension/commands/grimoire-squad-creator.js +6 -0
  1090. package/packages/gemini-grimoire-extension/commands/grimoire-status.js +68 -0
  1091. package/packages/gemini-grimoire-extension/commands/grimoire-ux-design-expert.js +6 -0
  1092. package/packages/gemini-grimoire-extension/commands/grimoire-validate.js +35 -0
  1093. package/packages/gemini-grimoire-extension/commands/lib/agent-launcher.js +147 -0
  1094. package/packages/gemini-grimoire-extension/extension.json +149 -0
  1095. package/packages/gemini-grimoire-extension/gemini-extension.json +149 -0
  1096. package/packages/gemini-grimoire-extension/hooks/hooks.json +72 -0
  1097. package/packages/grimoire-install/.releaserc.json +39 -0
  1098. package/packages/grimoire-install/CHANGELOG.md +33 -0
  1099. package/packages/grimoire-install/README.md +119 -0
  1100. package/packages/grimoire-install/bin/edmcp.js +80 -0
  1101. package/packages/grimoire-install/bin/grimoire-install.js +51 -0
  1102. package/packages/grimoire-install/jest.config.js +27 -0
  1103. package/packages/grimoire-install/package.json +68 -0
  1104. package/packages/grimoire-install/src/dep-checker.js +306 -0
  1105. package/packages/grimoire-install/src/edmcp/index.js +382 -0
  1106. package/packages/grimoire-install/src/installer.js +487 -0
  1107. package/packages/grimoire-install/src/os-detector.js +280 -0
  1108. package/packages/grimoire-pro-cli/bin/grimoire-pro.js +233 -0
  1109. package/packages/grimoire-pro-cli/package.json +38 -0
  1110. package/packages/grimoire-pro-cli/src/recover.js +101 -0
  1111. package/packages/installer/package.json +40 -0
  1112. package/packages/installer/src/__tests__/performance-benchmark.js +384 -0
  1113. package/packages/installer/src/config/configure-environment.js +373 -0
  1114. package/packages/installer/src/config/ide-configs.js +161 -0
  1115. package/packages/installer/src/config/templates/core-config-template.js +199 -0
  1116. package/packages/installer/src/config/templates/env-template.js +272 -0
  1117. package/packages/installer/src/config/validation/config-validator.js +244 -0
  1118. package/packages/installer/src/detection/detect-project-type.js +83 -0
  1119. package/packages/installer/src/installer/brownfield-upgrader.js +440 -0
  1120. package/packages/installer/src/installer/dependency-installer.js +335 -0
  1121. package/packages/installer/src/installer/file-hasher.js +234 -0
  1122. package/packages/installer/src/installer/grimoire-core-installer.js +428 -0
  1123. package/packages/installer/src/installer/manifest-signature.js +380 -0
  1124. package/packages/installer/src/installer/post-install-validator.js +1524 -0
  1125. package/packages/installer/src/merger/index.js +72 -0
  1126. package/packages/installer/src/merger/parsers/env-parser.js +153 -0
  1127. package/packages/installer/src/merger/parsers/markdown-section-parser.js +199 -0
  1128. package/packages/installer/src/merger/strategies/base-merger.js +61 -0
  1129. package/packages/installer/src/merger/strategies/env-merger.js +138 -0
  1130. package/packages/installer/src/merger/strategies/index.js +105 -0
  1131. package/packages/installer/src/merger/strategies/markdown-merger.js +208 -0
  1132. package/packages/installer/src/merger/strategies/replace-merger.js +68 -0
  1133. package/packages/installer/src/merger/types.js +72 -0
  1134. package/packages/installer/src/pro/pro-scaffolder.js +387 -0
  1135. package/packages/installer/src/updater/index.js +814 -0
  1136. package/packages/installer/src/utils/grimoire-colors.js +235 -0
  1137. package/packages/installer/src/wizard/feedback.js +232 -0
  1138. package/packages/installer/src/wizard/i18n.js +230 -0
  1139. package/packages/installer/src/wizard/ide-config-generator.js +993 -0
  1140. package/packages/installer/src/wizard/ide-selector.js +86 -0
  1141. package/packages/installer/src/wizard/index.js +831 -0
  1142. package/packages/installer/src/wizard/pro-setup.js +1223 -0
  1143. package/packages/installer/src/wizard/questions.js +336 -0
  1144. package/packages/installer/src/wizard/validation/index.js +121 -0
  1145. package/packages/installer/src/wizard/validation/report-generator.js +254 -0
  1146. package/packages/installer/src/wizard/validation/troubleshooting-system.js +348 -0
  1147. package/packages/installer/src/wizard/validation/validators/config-validator.js +364 -0
  1148. package/packages/installer/src/wizard/validation/validators/dependency-validator.js +333 -0
  1149. package/packages/installer/src/wizard/validation/validators/file-structure-validator.js +175 -0
  1150. package/packages/installer/src/wizard/validation/validators/mcp-health-checker.js +310 -0
  1151. package/packages/installer/src/wizard/validators.js +274 -0
  1152. package/packages/installer/src/wizard/wizard.js +246 -0
  1153. package/packages/installer/tests/integration/environment-configuration.test.js +331 -0
  1154. package/packages/installer/tests/integration/wizard-detection.test.js +353 -0
  1155. package/packages/installer/tests/unit/config-validator.test.js +316 -0
  1156. package/packages/installer/tests/unit/detection/detect-project-type.test.js +403 -0
  1157. package/packages/installer/tests/unit/env-template.test.js +189 -0
  1158. package/packages/installer/tests/unit/merger/env-merger.test.js +192 -0
  1159. package/packages/installer/tests/unit/merger/markdown-merger.test.js +262 -0
  1160. package/packages/installer/tests/unit/merger/strategies.test.js +153 -0
  1161. package/scripts/check-markdown-links.py +353 -0
  1162. package/scripts/code-intel-health-check.js +344 -0
  1163. package/scripts/dashboard-parallel-dev.sh +184 -0
  1164. package/scripts/dashboard-parallel-phase3.sh +130 -0
  1165. package/scripts/dashboard-parallel-phase4.sh +131 -0
  1166. package/scripts/ensure-manifest.js +59 -0
  1167. package/scripts/generate-install-manifest.js +368 -0
  1168. package/scripts/install-monitor-hooks.sh +83 -0
  1169. package/scripts/package-synapse.js +325 -0
  1170. package/scripts/semantic-lint.js +191 -0
  1171. package/scripts/sign-manifest.ps1 +132 -0
  1172. package/scripts/sign-manifest.sh +122 -0
  1173. package/scripts/validate-manifest.js +267 -0
  1174. package/scripts/validate-package-completeness.js +319 -0
@@ -0,0 +1,1032 @@
1
+ /**
2
+ * Bob Orchestrator - Decision Tree Entry Point
3
+ *
4
+ * Story 12.3: Bob Orchestration Logic (Decision Tree)
5
+ * PRD Reference: §3.3 (Decision Tree), §3.7 (Router not God Class)
6
+ *
7
+ * This is the main entry point for Bob (PM agent). It detects project state
8
+ * and routes to the appropriate workflow using codified decision logic
9
+ * (no LLM reasoning for routing decisions).
10
+ *
11
+ * Integrates all Epic 11 modules:
12
+ * - ExecutorAssignment (11.1) — agent selection
13
+ * - TerminalSpawner (11.2) — agent spawning
14
+ * - WorkflowExecutor (11.3) — development cycle
15
+ * - SurfaceChecker (11.4) — human decision criteria
16
+ * - SessionState (11.5) — session persistence
17
+ *
18
+ * Constraint: < 50 lines of other-agent-specific logic (PRD §3.7)
19
+ *
20
+ * @module core/orchestration/bob-orchestrator
21
+ * @version 1.0.0
22
+ */
23
+
24
+ 'use strict';
25
+
26
+ const fs = require('fs');
27
+ const path = require('path');
28
+
29
+ const { resolveConfig } = require('../config/config-resolver');
30
+ const ExecutorAssignment = require('./executor-assignment');
31
+ const { WorkflowExecutor } = require('./workflow-executor');
32
+ const { SurfaceChecker } = require('./surface-checker');
33
+ const { SessionState } = require('./session-state');
34
+ const LockManager = require('./lock-manager');
35
+ const { DataLifecycleManager } = require('./data-lifecycle-manager');
36
+
37
+ // Story 12.8: Brownfield Handler
38
+ const { BrownfieldHandler } = require('./brownfield-handler');
39
+
40
+ // Story 12.13: Greenfield Handler
41
+ const { GreenfieldHandler } = require('./greenfield-handler');
42
+
43
+ // Story 12.6: Observability Panel Integration + Dashboard Bridge
44
+ const { ObservabilityPanel, PanelMode } = require('../ui/observability-panel');
45
+ const { BobStatusWriter } = require('./bob-status-writer');
46
+ const { getDashboardEmitter } = require('../events/dashboard-emitter');
47
+
48
+ // Story 12.7: Educational Mode
49
+ const { MessageFormatter } = require('./message-formatter');
50
+ const { setUserConfigValue } = require('../config/config-resolver');
51
+
52
+ /**
53
+ * Project state enum — detected by decision tree
54
+ * @enum {string}
55
+ */
56
+ const ProjectState = {
57
+ NO_CONFIG: 'NO_CONFIG',
58
+ EXISTING_NO_DOCS: 'EXISTING_NO_DOCS',
59
+ EXISTING_WITH_DOCS: 'EXISTING_WITH_DOCS',
60
+ GREENFIELD: 'GREENFIELD',
61
+ };
62
+
63
+ /**
64
+ * Orchestration result
65
+ * @typedef {Object} OrchestrationResult
66
+ * @property {boolean} success - Whether orchestration completed successfully
67
+ * @property {string} projectState - Detected project state
68
+ * @property {string} action - Action taken
69
+ * @property {Object} [data] - Additional result data
70
+ * @property {string} [error] - Error message if failed
71
+ */
72
+
73
+ /**
74
+ * BobOrchestrator — Main decision tree and orchestration entry point
75
+ */
76
+ class BobOrchestrator {
77
+ /**
78
+ * Creates a new BobOrchestrator instance
79
+ * @param {string} projectRoot - Project root directory
80
+ * @param {Object} [options] - Orchestrator options
81
+ * @param {boolean} [options.debug=false] - Enable debug logging
82
+ */
83
+ constructor(projectRoot, options = {}) {
84
+ if (!projectRoot || typeof projectRoot !== 'string') {
85
+ throw new Error('projectRoot is required and must be a string');
86
+ }
87
+
88
+ this.projectRoot = projectRoot;
89
+ this.options = {
90
+ debug: false,
91
+ ...options,
92
+ };
93
+
94
+ // Initialize Epic 11 dependencies
95
+ this.surfaceChecker = new SurfaceChecker();
96
+ this.sessionState = new SessionState(projectRoot, { debug: this.options.debug });
97
+ this.workflowExecutor = new WorkflowExecutor(projectRoot, { debug: this.options.debug });
98
+ this.lockManager = new LockManager(projectRoot, { debug: this.options.debug });
99
+
100
+ // Story 12.5: Data Lifecycle Manager
101
+ this.dataLifecycleManager = new DataLifecycleManager(projectRoot, { debug: this.options.debug });
102
+
103
+ // Story 12.8: Brownfield Handler
104
+ this.brownfieldHandler = new BrownfieldHandler(projectRoot, {
105
+ debug: this.options.debug,
106
+ workflowExecutor: this.workflowExecutor,
107
+ surfaceChecker: this.surfaceChecker,
108
+ sessionState: this.sessionState,
109
+ });
110
+
111
+ // Story 12.13: Greenfield Handler
112
+ this.greenfieldHandler = new GreenfieldHandler(projectRoot, {
113
+ debug: this.options.debug,
114
+ workflowExecutor: this.workflowExecutor,
115
+ surfaceChecker: this.surfaceChecker,
116
+ sessionState: this.sessionState,
117
+ });
118
+
119
+ // Story 12.7: Educational Mode (AC1-2)
120
+ // Educational mode is resolved from: session override > user config > default (false)
121
+ this.educationalMode = this._resolveEducationalMode();
122
+ this.messageFormatter = new MessageFormatter({ educationalMode: this.educationalMode });
123
+
124
+ // Story 12.6: Observability Panel Integration (AC1-5)
125
+ // Story 12.7: Panel mode based on educational mode (AC2, AC7)
126
+ this.observabilityPanel = new ObservabilityPanel({
127
+ mode: this.educationalMode ? PanelMode.DETAILED : PanelMode.MINIMAL,
128
+ refreshRate: 1000, // 1 second refresh (AC3)
129
+ });
130
+
131
+ // Story 12.6: Dashboard Bridge (AC6-11)
132
+ this.bobStatusWriter = new BobStatusWriter(projectRoot, { debug: this.options.debug });
133
+ this.dashboardEmitter = getDashboardEmitter();
134
+
135
+ // Story 12.6: Wire up callbacks (AC1, AC2)
136
+ this._setupObservabilityCallbacks();
137
+
138
+ this._log('BobOrchestrator initialized');
139
+ }
140
+
141
+ /**
142
+ * Sets up observability panel callbacks (Story 12.6 - AC1, AC2, AC6-11)
143
+ * @private
144
+ */
145
+ _setupObservabilityCallbacks() {
146
+ // Map phase ID to pipeline stage
147
+ const stageMap = {
148
+ '1_validation': 'validation',
149
+ '2_development': 'development',
150
+ '3_self_healing': 'self_healing',
151
+ '4_quality_gate': 'quality_gate',
152
+ '5_push': 'push',
153
+ '6_checkpoint': 'checkpoint',
154
+ };
155
+
156
+ // Map agent ID to agent name
157
+ const agentNameMap = {
158
+ '@dev': 'Dex',
159
+ '@qa': 'Quinn',
160
+ '@architect': 'Aria',
161
+ '@devops': 'Gage',
162
+ '@pm': 'Morgan',
163
+ '@po': 'Pax',
164
+ '@sm': 'River',
165
+ dev: 'Dex',
166
+ qa: 'Quinn',
167
+ architect: 'Aria',
168
+ devops: 'Gage',
169
+ pm: 'Morgan',
170
+ po: 'Pax',
171
+ sm: 'River',
172
+ };
173
+
174
+ // AC2: Phase change callback
175
+ this.workflowExecutor.onPhaseChange((phase, storyId, executor) => {
176
+ const stageName = stageMap[phase] || phase;
177
+
178
+ // CLI Panel update (AC2)
179
+ this.observabilityPanel.setPipelineStage(stageName);
180
+ this._log(`Panel updated: phase=${stageName}, story=${storyId}, executor=${executor}`);
181
+
182
+ // Dashboard Bridge: bob-status.json update (AC6)
183
+ this.bobStatusWriter.updatePhase(stageName).catch((err) => {
184
+ this._log(`BobStatusWriter error: ${err.message}`);
185
+ });
186
+
187
+ // Dashboard Bridge: WebSocket event (AC7)
188
+ this.dashboardEmitter.emitBobPhaseChange(stageName, storyId, executor).catch((err) => {
189
+ this._log(`DashboardEmitter error: ${err.message}`);
190
+ });
191
+ });
192
+
193
+ // AC1: Agent spawn callback
194
+ this.workflowExecutor.onAgentSpawn((agent, task) => {
195
+ const agentId = agent.startsWith('@') ? agent : `@${agent}`;
196
+ const agentName = agentNameMap[agent] || agent;
197
+ const reason = `Assigned for ${task}`;
198
+
199
+ // CLI Panel update (AC1)
200
+ this.observabilityPanel.setCurrentAgent(agentId, agentName, task, reason);
201
+ this._log(`Panel updated: agent=${agentId}, name=${agentName}, task=${task}`);
202
+
203
+ // Dashboard Bridge: bob-status.json update (AC6)
204
+ this.bobStatusWriter.updateAgent(agentId, agentName, task, reason).catch((err) => {
205
+ this._log(`BobStatusWriter error: ${err.message}`);
206
+ });
207
+ });
208
+
209
+ // Story 12.13: Greenfield handler observability callbacks (AC10)
210
+ this.greenfieldHandler.on('phaseStart', ({ phase }) => {
211
+ this.observabilityPanel.setPipelineStage(phase);
212
+ this._log(`Greenfield panel updated: phase=${phase}`);
213
+ this.bobStatusWriter.updatePhase(phase).catch((err) => {
214
+ this._log(`BobStatusWriter error: ${err.message}`);
215
+ });
216
+ });
217
+
218
+ this.greenfieldHandler.on('agentSpawn', ({ agent, task }) => {
219
+ const agentId = agent.startsWith('@') ? agent : `@${agent}`;
220
+ const agentName = agentNameMap[agent] || agentNameMap[agent.replace('@', '')] || agent;
221
+ this.observabilityPanel.setCurrentAgent(agentId, agentName, task, `Greenfield: ${task}`);
222
+ this._log(`Greenfield panel updated: agent=${agentId}, task=${task}`);
223
+ this.bobStatusWriter.updateAgent(agentId, agentName, task, `Greenfield: ${task}`).catch((err) => {
224
+ this._log(`BobStatusWriter error: ${err.message}`);
225
+ });
226
+ });
227
+
228
+ this.greenfieldHandler.on('terminalSpawn', ({ agent, pid, task }) => {
229
+ this.observabilityPanel.addTerminal(agent, pid, task);
230
+ this._log(`Greenfield panel updated: terminal agent=${agent}, pid=${pid}`);
231
+ this.bobStatusWriter.addTerminal(agent, pid, task).catch((err) => {
232
+ this._log(`BobStatusWriter error: ${err.message}`);
233
+ });
234
+ this.dashboardEmitter.emitBobAgentSpawned(agent, pid, task).catch((err) => {
235
+ this._log(`DashboardEmitter error: ${err.message}`);
236
+ });
237
+ });
238
+
239
+ // AC1: Terminal spawn callback
240
+ this.workflowExecutor.onTerminalSpawn((agent, pid, task) => {
241
+ // CLI Panel update (AC1)
242
+ this.observabilityPanel.addTerminal(agent, pid, task);
243
+ this._log(`Panel updated: terminal added agent=${agent}, pid=${pid}, task=${task}`);
244
+
245
+ // Dashboard Bridge: bob-status.json update (AC6)
246
+ this.bobStatusWriter.addTerminal(agent, pid, task).catch((err) => {
247
+ this._log(`BobStatusWriter error: ${err.message}`);
248
+ });
249
+
250
+ // Dashboard Bridge: WebSocket event (AC7)
251
+ this.dashboardEmitter.emitBobAgentSpawned(agent, pid, task).catch((err) => {
252
+ this._log(`DashboardEmitter error: ${err.message}`);
253
+ });
254
+ });
255
+ }
256
+
257
+ /**
258
+ * Resolves the educational mode value (Story 12.7 - AC1, AC2)
259
+ *
260
+ * Priority: session override > user config (L5) > default (false)
261
+ *
262
+ * @returns {boolean} Educational mode value
263
+ * @private
264
+ */
265
+ _resolveEducationalMode() {
266
+ // 1. Check session override (highest priority)
267
+ const sessionOverride = this.sessionState.getSessionOverride('educational_mode');
268
+ if (sessionOverride !== null) {
269
+ this._log(`Educational mode from session override: ${sessionOverride}`);
270
+ return Boolean(sessionOverride);
271
+ }
272
+
273
+ // 2. Check user config (L5)
274
+ try {
275
+ const configResult = resolveConfig(this.projectRoot, { skipCache: true });
276
+ if (configResult?.config?.educational_mode !== undefined) {
277
+ this._log(`Educational mode from user config: ${configResult.config.educational_mode}`);
278
+ return Boolean(configResult.config.educational_mode);
279
+ }
280
+ } catch {
281
+ // Config error — fall through to default
282
+ }
283
+
284
+ // 3. Default: OFF
285
+ this._log('Educational mode defaulting to false');
286
+ return false;
287
+ }
288
+
289
+ /**
290
+ * Detects educational mode toggle commands in user input (Story 12.7 - AC5)
291
+ *
292
+ * Supported commands (case-insensitive):
293
+ * - "ativa modo educativo", "ativa educativo", "modo educativo on", "educational mode on"
294
+ * - "desativa modo educativo", "desativa educativo", "modo educativo off", "educational mode off"
295
+ *
296
+ * @param {string} userInput - User input text
297
+ * @returns {Object|null} Toggle result or null if not a toggle command
298
+ * @returns {boolean} result.enable - Whether to enable educational mode
299
+ * @returns {string} result.command - Matched command
300
+ */
301
+ _detectEducationalModeToggle(userInput) {
302
+ if (!userInput || typeof userInput !== 'string') {
303
+ return null;
304
+ }
305
+
306
+ const input = userInput.toLowerCase().trim();
307
+
308
+ // Disable patterns - check BEFORE enable patterns
309
+ // because "desativa" contains "ativa" and would false-match enable patterns
310
+ const disablePatterns = [
311
+ /desativa\s+modo\s+educativo/,
312
+ /desativa\s+educativo/,
313
+ /modo\s+educativo\s+off/,
314
+ /educational\s+mode\s+off/,
315
+ /disable\s+educational\s+mode/,
316
+ /bob[,\s]+desativa\s+modo\s+educativo/,
317
+ /bob[,\s]+desativa\s+educativo/,
318
+ ];
319
+
320
+ // Enable patterns
321
+ const enablePatterns = [
322
+ /(?<![a-z])ativa\s+modo\s+educativo/,
323
+ /(?<![a-z])ativa\s+educativo/,
324
+ /modo\s+educativo\s+on/,
325
+ /educational\s+mode\s+on/,
326
+ /enable\s+educational\s+mode/,
327
+ /bob[,\s]+ativa\s+modo\s+educativo/,
328
+ /bob[,\s]+ativa\s+educativo/,
329
+ ];
330
+
331
+ // Check disable patterns first (since "desativa" contains "ativa")
332
+ for (const pattern of disablePatterns) {
333
+ if (pattern.test(input)) {
334
+ return { enable: false, command: input };
335
+ }
336
+ }
337
+
338
+ for (const pattern of enablePatterns) {
339
+ if (pattern.test(input)) {
340
+ return { enable: true, command: input };
341
+ }
342
+ }
343
+
344
+ return null;
345
+ }
346
+
347
+ /**
348
+ * Handles educational mode toggle (Story 12.7 - AC5, AC6)
349
+ *
350
+ * @param {boolean} enable - Whether to enable educational mode
351
+ * @param {string} [persistenceType='session'] - 'session' or 'permanent'
352
+ * @returns {Promise<Object>} Toggle result
353
+ */
354
+ async handleEducationalModeToggle(enable, persistenceType = 'session') {
355
+ this._log(`Handling educational mode toggle: enable=${enable}, persistence=${persistenceType}`);
356
+
357
+ // Update internal state
358
+ this.educationalMode = enable;
359
+ this.messageFormatter.setEducationalMode(enable);
360
+
361
+ // Update observability panel mode (AC7)
362
+ this.observabilityPanel.setMode(enable ? PanelMode.DETAILED : PanelMode.MINIMAL);
363
+
364
+ // Clear/fill tradeoffs based on mode (AC7)
365
+ if (enable) {
366
+ // DETAILED mode: tradeoffs will be populated during execution
367
+ this._log('Educational mode ON: Panel set to DETAILED');
368
+ } else {
369
+ // MINIMAL mode: clear tradeoffs and reasoning
370
+ this.observabilityPanel.updateState({ tradeoffs: [], next_steps: [] });
371
+ this._log('Educational mode OFF: Panel set to MINIMAL, tradeoffs cleared');
372
+ }
373
+
374
+ // Persist based on type (AC6)
375
+ if (persistenceType === 'permanent') {
376
+ // Write to user config (L5)
377
+ setUserConfigValue('educational_mode', enable);
378
+ this._log('Educational mode persisted permanently to user config');
379
+ } else {
380
+ // Write to session state
381
+ const sessionExists = await this.sessionState.exists();
382
+ if (sessionExists) {
383
+ await this.sessionState.setSessionOverride('educational_mode', enable);
384
+ this._log('Educational mode persisted to session override');
385
+ }
386
+ }
387
+
388
+ // Return formatted feedback
389
+ return {
390
+ success: true,
391
+ educationalMode: enable,
392
+ persistenceType,
393
+ message: this.messageFormatter.formatToggleFeedback(enable),
394
+ };
395
+ }
396
+
397
+ /**
398
+ * Gets the persistence prompt for educational mode toggle (Story 12.7 - AC6)
399
+ * @returns {string} Prompt message
400
+ */
401
+ getEducationalModePersistencePrompt() {
402
+ return this.messageFormatter.formatPersistencePrompt();
403
+ }
404
+
405
+ /**
406
+ * Main entry point — executes the decision tree and routes to workflow
407
+ *
408
+ * @param {Object} [context] - Optional execution context
409
+ * @param {string} [context.userGoal] - User's stated goal
410
+ * @param {string} [context.storyPath] - Path to story file (if known)
411
+ * @returns {Promise<OrchestrationResult>} Orchestration result
412
+ */
413
+ async orchestrate(context = {}) {
414
+ const resource = 'bob-orchestration';
415
+
416
+ // Story 12.7: Detect educational mode toggle BEFORE any routing (AC5)
417
+ // This allows toggle to work regardless of project state
418
+ if (context.userGoal) {
419
+ const toggleResult = this._detectEducationalModeToggle(context.userGoal);
420
+ if (toggleResult !== null) {
421
+ this._log(`Educational mode toggle detected: enable=${toggleResult.enable}`);
422
+ // Return early with toggle prompt for persistence choice
423
+ return {
424
+ success: true,
425
+ projectState: null,
426
+ action: 'educational_mode_toggle',
427
+ data: {
428
+ enable: toggleResult.enable,
429
+ command: toggleResult.command,
430
+ persistencePrompt: this.getEducationalModePersistencePrompt(),
431
+ },
432
+ };
433
+ }
434
+ }
435
+
436
+ try {
437
+ // Acquire orchestration lock (AC14)
438
+ const lockAcquired = await this.lockManager.acquireLock(resource);
439
+ if (!lockAcquired) {
440
+ return {
441
+ success: false,
442
+ projectState: null,
443
+ action: 'lock_failed',
444
+ error: 'Another Bob orchestration is already running. Wait or check .grimoire/locks/',
445
+ };
446
+ }
447
+
448
+ // Story 12.7: Refresh educational mode from session state after loading (AC2)
449
+ // Session state might have been loaded by previous operations
450
+ this.educationalMode = this._resolveEducationalMode();
451
+ this.messageFormatter.setEducationalMode(this.educationalMode);
452
+ this.observabilityPanel.setMode(this.educationalMode ? PanelMode.DETAILED : PanelMode.MINIMAL);
453
+ this._log(`Educational mode resolved: ${this.educationalMode}`);
454
+
455
+ // Story 12.6: Start observability panel (AC1, AC3, AC7)
456
+ this.observabilityPanel.start();
457
+ this._log('Observability panel started');
458
+
459
+ // Story 12.6: Initialize Dashboard Bridge (AC6, AC11)
460
+ await this.bobStatusWriter.initialize();
461
+ this._log('Bob status writer initialized');
462
+
463
+ // Story 12.5: Run data lifecycle cleanup BEFORE session check (AC8-11)
464
+ const cleanupResult = await this.dataLifecycleManager.runStartupCleanup();
465
+ this._log(`Startup cleanup: ${JSON.stringify(cleanupResult)}`);
466
+
467
+ // Step 1: Detect project state (AC3-6)
468
+ const projectState = this.detectProjectState(this.projectRoot);
469
+ this._log(`Detected project state: ${projectState}`);
470
+
471
+ // Story 12.5: Check for existing session with formatted summary (AC1-4)
472
+ const sessionCheck = await this._checkExistingSession();
473
+ if (sessionCheck.hasSession) {
474
+ this._log(`Session found: ${sessionCheck.summary}`);
475
+
476
+ // Surface to ask user about resume (AC3)
477
+ const surfaceResult = this.surfaceChecker.shouldSurface({
478
+ valid_options_count: 4,
479
+ options_with_tradeoffs: sessionCheck.summary,
480
+ });
481
+
482
+ if (surfaceResult.should_surface) {
483
+ // Story 12.6: Stop panel when returning early (AC7)
484
+ this.observabilityPanel.stop();
485
+ await this.bobStatusWriter.complete().catch(() => {});
486
+ await this.lockManager.releaseLock(resource);
487
+ return {
488
+ success: true,
489
+ projectState,
490
+ action: 'resume_prompt',
491
+ data: {
492
+ surfaceResult,
493
+ resumeOptions: this.sessionState.getResumeOptions(),
494
+ summary: sessionCheck.summary,
495
+ crashInfo: sessionCheck.crashInfo,
496
+ formattedMessage: sessionCheck.formattedMessage,
497
+ cleanupResult,
498
+ },
499
+ };
500
+ }
501
+ }
502
+
503
+ // Step 3: Route based on project state (AC7 — codified decision tree)
504
+ const result = await this._routeByState(projectState, context);
505
+
506
+ // Story 12.6: Stop observability panel and complete status (AC7)
507
+ this.observabilityPanel.stop();
508
+ await this.bobStatusWriter.complete();
509
+ this._log('Observability panel stopped');
510
+
511
+ // Release lock
512
+ await this.lockManager.releaseLock(resource);
513
+
514
+ return {
515
+ success: true,
516
+ projectState,
517
+ cleanupResult,
518
+ ...result,
519
+ };
520
+ } catch (error) {
521
+ // Story 12.6: Stop observability panel on error (AC7)
522
+ this.observabilityPanel.stop();
523
+ await this.bobStatusWriter.complete().catch(() => {});
524
+
525
+ // Ensure lock is released on error
526
+ await this.lockManager.releaseLock(resource).catch(() => {});
527
+
528
+ return {
529
+ success: false,
530
+ projectState: null,
531
+ action: 'error',
532
+ error: `Orchestration failed: ${error.message}`,
533
+ };
534
+ }
535
+ }
536
+
537
+ /**
538
+ * Checks for existing session and builds formatted summary (Story 12.5 - AC1, AC2, AC4)
539
+ *
540
+ * @returns {Promise<Object>} Session check result
541
+ * @private
542
+ */
543
+ async _checkExistingSession() {
544
+ // AC1: Check for session state file
545
+ const sessionExists = await this.sessionState.exists();
546
+ if (!sessionExists) {
547
+ return { hasSession: false };
548
+ }
549
+
550
+ // AC1: Load session state
551
+ const state = await this.sessionState.loadSessionState();
552
+ if (!state) {
553
+ return { hasSession: false };
554
+ }
555
+
556
+ // AC4: Check for crash
557
+ const crashInfo = await this.sessionState.detectCrash();
558
+
559
+ // AC2: Calculate elapsed time
560
+ const lastUpdated = new Date(state.session_state.last_updated);
561
+ const now = new Date();
562
+ const elapsedMs = now - lastUpdated;
563
+ const elapsedMinutes = Math.floor(elapsedMs / (1000 * 60));
564
+ const elapsedHours = Math.floor(elapsedMinutes / 60);
565
+ const elapsedDays = Math.floor(elapsedHours / 24);
566
+
567
+ // Format elapsed time string
568
+ let elapsedString;
569
+ if (elapsedDays > 0) {
570
+ elapsedString = `${elapsedDays} dia${elapsedDays > 1 ? 's' : ''}`;
571
+ } else if (elapsedHours > 0) {
572
+ elapsedString = `${elapsedHours} hora${elapsedHours > 1 ? 's' : ''}`;
573
+ } else {
574
+ elapsedString = `${elapsedMinutes} minuto${elapsedMinutes > 1 ? 's' : ''}`;
575
+ }
576
+
577
+ // AC2: Build formatted message
578
+ const epicTitle = state.session_state.epic?.title || 'Unknown Epic';
579
+ const currentStory = state.session_state.progress?.current_story || 'N/A';
580
+ const currentPhase = state.session_state.workflow?.current_phase || 'N/A';
581
+
582
+ let formattedMessage = `Bem-vindo de volta! Você pausou há ${elapsedString}. Epic: ${epicTitle}, Story: ${currentStory}, Fase: ${currentPhase}`;
583
+
584
+ // AC4: Prepend crash warning if detected
585
+ if (crashInfo.isCrash) {
586
+ formattedMessage = `⚠️ Sessão anterior pode ter crashado (última atualização há ${crashInfo.minutesSinceUpdate} min)\n\n${formattedMessage}`;
587
+ }
588
+
589
+ return {
590
+ hasSession: true,
591
+ state,
592
+ crashInfo,
593
+ elapsedString,
594
+ formattedMessage,
595
+ summary: this.sessionState.getResumeSummary(),
596
+ epicTitle,
597
+ currentStory,
598
+ currentPhase,
599
+ };
600
+ }
601
+
602
+ /**
603
+ * Handles session resume based on user selection (Story 12.5 - AC3, AC7)
604
+ *
605
+ * @param {string} option - Resume option (continue|review|restart|discard)
606
+ * @returns {Promise<Object>} Resume result
607
+ */
608
+ async handleSessionResume(option) {
609
+ this._log(`Handling session resume: ${option}`);
610
+
611
+ const result = await this.sessionState.handleResumeOption(option);
612
+
613
+ switch (result.action) {
614
+ case 'continue':
615
+ // AC3 [1]: Continue from where user paused
616
+ this._log(`Continuing story ${result.story} from phase ${result.phase}`);
617
+ return {
618
+ success: true,
619
+ action: 'continue',
620
+ storyPath: this._resolveStoryPath(result.story),
621
+ phase: result.phase,
622
+ message: `Continuando story ${result.story} da fase ${result.phase}`,
623
+ };
624
+
625
+ case 'review':
626
+ // AC3 [2]: Show details and re-prompt
627
+ return {
628
+ success: true,
629
+ action: 'review',
630
+ summary: result.summary,
631
+ message: 'Detalhes da sessão disponíveis. Escolha uma opção após revisar.',
632
+ needsReprompt: true,
633
+ };
634
+
635
+ case 'restart':
636
+ // AC3 [3]: Reset story (keep epic progress, clear story workflow state)
637
+ this._log(`Restarting story ${result.story}`);
638
+ return {
639
+ success: true,
640
+ action: 'restart',
641
+ storyPath: this._resolveStoryPath(result.story),
642
+ message: `Recomeçando story ${result.story} do início`,
643
+ };
644
+
645
+ case 'discard':
646
+ // AC3 [4]: Delete session state and start fresh
647
+ this._log('Session discarded');
648
+ return {
649
+ success: true,
650
+ action: 'discard',
651
+ message: 'Sessão descartada. Pronto para novo épico.',
652
+ };
653
+
654
+ default:
655
+ return {
656
+ success: false,
657
+ action: 'unknown',
658
+ error: `Unknown resume option: ${option}`,
659
+ };
660
+ }
661
+ }
662
+
663
+ /**
664
+ * Resolves story ID to full path
665
+ * @param {string} storyId - Story ID (e.g., "12.5" or "story-12.5")
666
+ * @returns {string} Full path to story file
667
+ * @private
668
+ */
669
+ _resolveStoryPath(storyId) {
670
+ // Normalize story ID
671
+ const normalizedId = storyId.replace('story-', '').replace('.story', '');
672
+
673
+ // Try active stories first
674
+ const activePath = path.join(this.projectRoot, 'docs/stories/active', `${normalizedId}.story.md`);
675
+ if (fs.existsSync(activePath)) {
676
+ return activePath;
677
+ }
678
+
679
+ // Try docs/stories root
680
+ const rootPath = path.join(this.projectRoot, 'docs/stories', `${normalizedId}.story.md`);
681
+ if (fs.existsSync(rootPath)) {
682
+ return rootPath;
683
+ }
684
+
685
+ // Return best guess path
686
+ return activePath;
687
+ }
688
+
689
+ /**
690
+ * Detects the current project state (AC3-6)
691
+ *
692
+ * Decision tree implemented as pure if/else statements (AC7 — no LLM).
693
+ *
694
+ * @param {string} [projectRoot=this.projectRoot] - Project root directory (defaults to instance projectRoot)
695
+ * @returns {string} ProjectState enum value
696
+ */
697
+ detectProjectState(projectRoot = this.projectRoot) {
698
+ // Check 1: Is this a greenfield project? (AC6)
699
+ // No package.json, no .git, no docs/ → brand new project
700
+ const hasPackageJson = fs.existsSync(path.join(projectRoot, 'package.json'));
701
+ const hasGit = fs.existsSync(path.join(projectRoot, '.git'));
702
+ const hasDocs = fs.existsSync(path.join(projectRoot, 'docs'));
703
+
704
+ if (!hasPackageJson && !hasGit && !hasDocs) {
705
+ return ProjectState.GREENFIELD;
706
+ }
707
+
708
+ // Check 2: Does config exist? (AC3)
709
+ let configExists = false;
710
+ try {
711
+ const result = resolveConfig(projectRoot, { skipCache: true });
712
+ configExists = result && result.config && Object.keys(result.config).length > 0;
713
+ } catch {
714
+ configExists = false;
715
+ }
716
+
717
+ if (!configExists) {
718
+ return ProjectState.NO_CONFIG;
719
+ }
720
+
721
+ // Check 3: Does grimoire documentation exist? (AC4, AC5)
722
+ const hasArchDocs = fs.existsSync(path.join(projectRoot, 'docs/architecture'));
723
+
724
+ if (!hasArchDocs) {
725
+ return ProjectState.EXISTING_NO_DOCS;
726
+ }
727
+
728
+ return ProjectState.EXISTING_WITH_DOCS;
729
+ }
730
+
731
+ /**
732
+ * Routes to the appropriate workflow based on project state (AC7)
733
+ *
734
+ * All routing is codified — no LLM reasoning involved.
735
+ *
736
+ * @param {string} projectState - Detected project state
737
+ * @param {Object} context - Execution context
738
+ * @returns {Promise<Object>} Route result
739
+ * @private
740
+ */
741
+ async _routeByState(projectState, context) {
742
+ switch (projectState) {
743
+ case ProjectState.NO_CONFIG:
744
+ return this._handleNoConfig(context);
745
+
746
+ case ProjectState.EXISTING_NO_DOCS:
747
+ return this._handleBrownfield(context);
748
+
749
+ case ProjectState.EXISTING_WITH_DOCS:
750
+ return this._handleExistingProject(context);
751
+
752
+ case ProjectState.GREENFIELD:
753
+ return this._handleGreenfield(context);
754
+
755
+ default:
756
+ return {
757
+ action: 'unknown_state',
758
+ error: `Unknown project state: ${projectState}`,
759
+ };
760
+ }
761
+ }
762
+
763
+ /**
764
+ * Handles NO_CONFIG state — onboarding or defaults (AC3)
765
+ * @param {Object} context - Execution context
766
+ * @returns {Promise<Object>} Handler result
767
+ * @private
768
+ */
769
+ async _handleNoConfig(_context) {
770
+ this._log('No config detected — triggering onboarding');
771
+
772
+ return {
773
+ action: 'onboarding',
774
+ data: {
775
+ message: 'Projeto sem configuração grimoire detectado. Iniciando onboarding...',
776
+ nextStep: 'run_grimoire_init',
777
+ },
778
+ };
779
+ }
780
+
781
+ /**
782
+ * Handles EXISTING_NO_DOCS state — Brownfield Discovery (AC4)
783
+ *
784
+ * Story 12.8: Delegates to BrownfieldHandler for first execution behavior.
785
+ * - AC1: Detects first execution (EXISTING_NO_DOCS state)
786
+ * - AC2: Presents welcome message with time estimate
787
+ * - AC3: Executes brownfield-discovery.yaml workflow
788
+ * - AC4: Generates system-architecture.md and TECHNICAL-DEBT-REPORT.md
789
+ * - AC5: Post-discovery flow (resolve debts vs add feature)
790
+ * - AC6: Idempotent re-execution
791
+ *
792
+ * @param {Object} context - Execution context
793
+ * @returns {Promise<Object>} Handler result
794
+ * @private
795
+ */
796
+ async _handleBrownfield(context) {
797
+ this._log('🔍 First execution detected — project has code but no grimoire docs');
798
+
799
+ // Delegate to BrownfieldHandler (Story 12.8 - Task 3.6)
800
+ return this.brownfieldHandler.handle(context);
801
+ }
802
+
803
+ /**
804
+ * Handles brownfield user decision (accept/decline analysis)
805
+ *
806
+ * Story 12.8 - AC2: User accepts or declines the brownfield discovery.
807
+ *
808
+ * @param {boolean} accepted - Whether user accepted analysis
809
+ * @param {Object} [context={}] - Execution context
810
+ * @returns {Promise<Object>} Next step result
811
+ */
812
+ async handleBrownfieldDecision(accepted, context = {}) {
813
+ this._log(`Brownfield decision: ${accepted ? 'ACCEPTED' : 'DECLINED'}`);
814
+ return this.brownfieldHandler.handleUserDecision(accepted, context);
815
+ }
816
+
817
+ /**
818
+ * Handles brownfield phase failure action (retry/skip/abort)
819
+ *
820
+ * Story 12.8 - AC3 Task 3.5: User chooses action on phase failure.
821
+ *
822
+ * @param {string} phase - Failed phase
823
+ * @param {string} action - User action (retry/skip/abort)
824
+ * @param {Object} [context={}] - Execution context
825
+ * @returns {Promise<Object>} Next step result
826
+ */
827
+ async handleBrownfieldPhaseFailure(phase, action, context = {}) {
828
+ this._log(`Brownfield phase failure action: ${action} for ${phase}`);
829
+ return this.brownfieldHandler.handlePhaseFailureAction(phase, action, context);
830
+ }
831
+
832
+ /**
833
+ * Handles post-discovery choice (resolve debts vs add feature)
834
+ *
835
+ * Story 12.8 - AC5: User chooses next step after discovery.
836
+ *
837
+ * @param {string} choice - User choice (resolve_debts/add_feature)
838
+ * @param {Object} [context={}] - Execution context
839
+ * @returns {Promise<Object>} Routing result
840
+ */
841
+ async handlePostDiscoveryChoice(choice, context = {}) {
842
+ this._log(`Post-discovery choice: ${choice}`);
843
+ return this.brownfieldHandler.handle({ ...context, postDiscoveryChoice: choice });
844
+ }
845
+
846
+ /**
847
+ * Handles EXISTING_WITH_DOCS state — ask user goal (AC5)
848
+ * @param {Object} context - Execution context
849
+ * @returns {Promise<Object>} Handler result
850
+ * @private
851
+ */
852
+ async _handleExistingProject(context) {
853
+ this._log('Existing project with docs — asking objective');
854
+
855
+ // If user already provided a story, execute it directly (AC8-10)
856
+ if (context.storyPath) {
857
+ return this._executeStory(context.storyPath);
858
+ }
859
+
860
+ // Surface to ask user what they want to do (AC11)
861
+ const surfaceResult = this.surfaceChecker.shouldSurface({
862
+ valid_options_count: 4,
863
+ options_with_tradeoffs: [
864
+ '1. Feature — Adicionar funcionalidade nova',
865
+ '2. Bug Fix — Corrigir um problema',
866
+ '3. Refactor — Melhorar código existente',
867
+ '4. Tech Debt — Resolver dívida técnica',
868
+ ].join('\n'),
869
+ });
870
+
871
+ return {
872
+ action: 'ask_objective',
873
+ data: {
874
+ message: 'Projeto configurado. O que você quer fazer?',
875
+ options: ['feature', 'bug', 'refactor', 'debt'],
876
+ surfaceResult,
877
+ },
878
+ };
879
+ }
880
+
881
+ /**
882
+ * Handles GREENFIELD state — delegates to GreenfieldHandler (AC6)
883
+ *
884
+ * Story 12.13: Greenfield Workflow via Bob
885
+ * - AC1: Greenfield detected (no package.json, .git, docs/)
886
+ * - AC2-5: Orchestrates 4 phases via GreenfieldHandler
887
+ * - AC6-10: Integrates with all Epic 11 modules
888
+ *
889
+ * @param {Object} context - Execution context
890
+ * @returns {Promise<Object>} Handler result
891
+ * @private
892
+ */
893
+ async _handleGreenfield(context) {
894
+ this._log('Greenfield project — delegating to greenfield-handler');
895
+
896
+ // Delegate to GreenfieldHandler (Story 12.13)
897
+ return this.greenfieldHandler.handle(context);
898
+ }
899
+
900
+ /**
901
+ * Handles greenfield surface decision (GO/PAUSE/text input)
902
+ *
903
+ * Story 12.13 - AC11-14: Surface decisions between phases
904
+ *
905
+ * @param {string} decision - User decision
906
+ * @param {number} nextPhase - Next phase number
907
+ * @param {Object} [context={}] - Execution context
908
+ * @returns {Promise<Object>} Next step result
909
+ */
910
+ async handleGreenfieldSurfaceDecision(decision, nextPhase, context = {}) {
911
+ this._log(`Greenfield surface decision: ${decision}, next phase: ${nextPhase}`);
912
+ return this.greenfieldHandler.handleSurfaceDecision(decision, nextPhase, context);
913
+ }
914
+
915
+ /**
916
+ * Handles greenfield phase failure action (retry/skip/abort)
917
+ *
918
+ * Story 12.13 - AC15: Error handling with Retry/Skip/Abort
919
+ *
920
+ * @param {string} phase - Failed phase
921
+ * @param {string} action - User action (retry/skip/abort)
922
+ * @param {Object} [context={}] - Execution context
923
+ * @returns {Promise<Object>} Next step result
924
+ */
925
+ async handleGreenfieldPhaseFailure(phase, action, context = {}) {
926
+ this._log(`Greenfield phase failure: action=${action}, phase=${phase}`);
927
+ return this.greenfieldHandler.handlePhaseFailureAction(phase, action, context);
928
+ }
929
+
930
+ /**
931
+ * Executes a story through the development cycle (AC8-10)
932
+ *
933
+ * Delegates to Epic 11 modules:
934
+ * - ExecutorAssignment for agent selection (AC8)
935
+ * - TerminalSpawner for agent spawning (AC9)
936
+ * - WorkflowExecutor for development cycle (AC10)
937
+ *
938
+ * Story 12.5 AC5: Updates session state at each phase transition.
939
+ *
940
+ * @param {string} storyPath - Path to story file
941
+ * @returns {Promise<Object>} Execution result
942
+ * @private
943
+ */
944
+ async _executeStory(storyPath) {
945
+ this._log(`Executing story: ${storyPath}`);
946
+
947
+ // AC8: Assign executor using story content
948
+ const storyContent = fs.readFileSync(storyPath, 'utf8');
949
+ const assignment = ExecutorAssignment.assignExecutorFromContent(storyContent);
950
+ const storyId = path.basename(storyPath, '.story.md');
951
+
952
+ this._log(`Assigned executor: ${assignment.executor}, gate: ${assignment.quality_gate}`);
953
+
954
+ // Ensure session state is loaded
955
+ const sessionExists = await this.sessionState.exists();
956
+ if (sessionExists) {
957
+ await this.sessionState.loadSessionState();
958
+ }
959
+
960
+ // Story 12.5 AC5: Track validation phase
961
+ await this._updatePhase('validation', storyId, assignment.executor);
962
+
963
+ // Story 12.5 AC5: Track development phase
964
+ await this._updatePhase('development', storyId, assignment.executor);
965
+
966
+ // AC10: Execute development cycle via WorkflowExecutor
967
+ const result = await this.workflowExecutor.execute(storyPath);
968
+
969
+ // Story 12.5 AC5: Track self_healing phase (if applicable)
970
+ if (result.selfHealing) {
971
+ await this._updatePhase('self_healing', storyId, assignment.executor);
972
+ }
973
+
974
+ // Story 12.5 AC5: Track quality_gate phase
975
+ await this._updatePhase('quality_gate', storyId, assignment.quality_gate);
976
+
977
+ // Story 12.5 AC5: Track push phase (if applicable)
978
+ if (result.success) {
979
+ await this._updatePhase('push', storyId, '@devops');
980
+ }
981
+
982
+ // Story 12.5 AC5: Track checkpoint
983
+ await this._updatePhase('checkpoint', storyId, assignment.executor);
984
+
985
+ return {
986
+ action: 'story_executed',
987
+ data: {
988
+ assignment,
989
+ result,
990
+ storyPath,
991
+ },
992
+ };
993
+ }
994
+
995
+ /**
996
+ * Updates session state for a phase transition (Story 12.5 - AC5)
997
+ *
998
+ * @param {string} phase - Phase name
999
+ * @param {string} storyId - Story ID
1000
+ * @param {string} executor - Executor agent
1001
+ * @returns {Promise<void>}
1002
+ * @private
1003
+ */
1004
+ async _updatePhase(phase, storyId, executor) {
1005
+ try {
1006
+ const sessionExists = await this.sessionState.exists();
1007
+ if (sessionExists && this.sessionState.state) {
1008
+ await this.sessionState.recordPhaseChange(phase, storyId, executor);
1009
+ this._log(`Phase updated: ${phase} for ${storyId} by ${executor}`);
1010
+ }
1011
+ } catch (error) {
1012
+ this._log(`Failed to update phase: ${error.message}`);
1013
+ }
1014
+ }
1015
+
1016
+ /**
1017
+ * Debug logger
1018
+ * @param {string} message - Log message
1019
+ * @private
1020
+ */
1021
+ _log(message) {
1022
+ if (this.options.debug) {
1023
+ console.log(`[BobOrchestrator] ${message}`);
1024
+ }
1025
+ }
1026
+ }
1027
+
1028
+ module.exports = {
1029
+ BobOrchestrator,
1030
+ ProjectState,
1031
+ };
1032
+