project-iris 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (729) hide show
  1. package/README.md +424 -0
  2. package/dist/bridge/agent-runner.js +190 -0
  3. package/dist/bridge/connector-factory.js +31 -0
  4. package/dist/bridge/connectors/antigravity-connector.js +18 -0
  5. package/dist/bridge/connectors/cursor-connector.js +31 -0
  6. package/dist/bridge/connectors/in-process-connector.js +29 -0
  7. package/dist/bridge/connectors/vscode-connector.js +31 -0
  8. package/dist/bridge/connectors/windsurf-connector.js +23 -0
  9. package/dist/bridge/filesystem-connector.js +110 -0
  10. package/dist/bridge/helper.js +203 -0
  11. package/dist/bridge/types.js +10 -0
  12. package/dist/cli.js +38 -0
  13. package/dist/commands/ask.js +259 -0
  14. package/dist/commands/bridge.js +88 -0
  15. package/dist/commands/develop.js +141 -0
  16. package/dist/commands/doctor.js +102 -0
  17. package/dist/commands/flow.js +301 -0
  18. package/dist/commands/framework.js +273 -0
  19. package/dist/commands/generate.js +59 -0
  20. package/dist/commands/install.js +73 -0
  21. package/dist/commands/pack.js +33 -0
  22. package/dist/commands/phase.js +38 -0
  23. package/dist/commands/run.js +199 -0
  24. package/dist/commands/status.js +114 -0
  25. package/dist/commands/uninstall.js +14 -0
  26. package/dist/commands/use.js +20 -0
  27. package/dist/commands/validate.js +102 -0
  28. package/dist/framework/framework-loader.js +97 -0
  29. package/dist/framework/framework-paths.js +48 -0
  30. package/dist/framework/framework-types.js +15 -0
  31. package/dist/iris/artifact-checker.js +78 -0
  32. package/dist/iris/artifacts/config.js +68 -0
  33. package/dist/iris/artifacts/generator.js +88 -0
  34. package/dist/iris/artifacts/types.js +1 -0
  35. package/dist/iris/bundle.js +44 -0
  36. package/dist/iris/doctrine/collector.js +124 -0
  37. package/dist/iris/fixer.js +149 -0
  38. package/dist/iris/flows/manifest.js +124 -0
  39. package/dist/iris/framework-context.js +49 -0
  40. package/dist/iris/framework-manager.js +215 -0
  41. package/dist/iris/fs/atomic.js +22 -0
  42. package/dist/iris/guard.js +38 -0
  43. package/dist/iris/importers/bmad.js +70 -0
  44. package/dist/iris/importers/index.js +9 -0
  45. package/dist/iris/importers/speckit.js +15 -0
  46. package/dist/iris/importers/specsmd.js +78 -0
  47. package/dist/iris/importers/types.js +8 -0
  48. package/dist/iris/importers/writer.js +139 -0
  49. package/dist/iris/include.js +49 -0
  50. package/dist/iris/installer.js +334 -0
  51. package/dist/iris/interactive/env.js +21 -0
  52. package/dist/iris/interactive/intent-interview.js +345 -0
  53. package/dist/iris/interactive/intent-schema.js +28 -0
  54. package/dist/iris/interactive/interview-io.js +22 -0
  55. package/dist/iris/interview/config.js +71 -0
  56. package/dist/iris/interview/types.js +16 -0
  57. package/dist/iris/interview/utils.js +38 -0
  58. package/dist/iris/manifest.js +54 -0
  59. package/dist/iris/packer.js +325 -0
  60. package/dist/iris/parsers/unit-parser.js +43 -0
  61. package/dist/iris/paths.js +18 -0
  62. package/dist/iris/policy.js +133 -0
  63. package/dist/iris/proc.js +56 -0
  64. package/dist/iris/report.js +53 -0
  65. package/dist/iris/resolver.js +66 -0
  66. package/dist/iris/router.js +114 -0
  67. package/dist/iris/routes.js +189 -0
  68. package/dist/iris/run-state.js +146 -0
  69. package/dist/iris/state.js +113 -0
  70. package/dist/iris/templates.js +70 -0
  71. package/dist/iris/tmp.js +24 -0
  72. package/dist/iris/uninstaller.js +181 -0
  73. package/dist/iris/utils/interpolate.js +42 -0
  74. package/dist/iris/validator.js +391 -0
  75. package/dist/iris/workflow/config.js +51 -0
  76. package/dist/iris/workflow/engine.js +129 -0
  77. package/dist/iris/workflow/steps.js +448 -0
  78. package/dist/iris/workflow/types.js +1 -0
  79. package/dist/lib.js +96 -0
  80. package/dist/utils/exit-codes.js +7 -0
  81. package/dist/workflows/bolt-execution.js +238 -0
  82. package/dist/workflows/bolt-plan.js +192 -0
  83. package/dist/workflows/intent-inception.js +210 -0
  84. package/dist/workflows/reporting.js +74 -0
  85. package/package.json +45 -0
  86. package/src/iris_bundle/.iris/aidlc/README.md +16 -0
  87. package/src/iris_bundle/.iris/aidlc/agents/iris-construction-agent.md +35 -0
  88. package/src/iris_bundle/.iris/aidlc/agents/iris-inception-agent.md +30 -0
  89. package/src/iris_bundle/.iris/aidlc/agents/iris-master-agent.md +35 -0
  90. package/src/iris_bundle/.iris/aidlc/agents/iris-operations-agent.md +29 -0
  91. package/src/iris_bundle/.iris/aidlc/commands/iris-construction-agent.md +18 -0
  92. package/src/iris_bundle/.iris/aidlc/commands/iris-inception-agent.md +18 -0
  93. package/src/iris_bundle/.iris/aidlc/commands/iris-master-agent.md +18 -0
  94. package/src/iris_bundle/.iris/aidlc/commands/iris-operations-agent.md +18 -0
  95. package/src/iris_bundle/.iris/aidlc/context/context-map.md +25 -0
  96. package/src/iris_bundle/.iris/aidlc/context/exclusion-rules.md +13 -0
  97. package/src/iris_bundle/.iris/aidlc/context/load-order.md +25 -0
  98. package/src/iris_bundle/.iris/aidlc/memory/intent-rules.md +9 -0
  99. package/src/iris_bundle/.iris/aidlc/memory/log-rules.md +5 -0
  100. package/src/iris_bundle/.iris/aidlc/memory/memory-bank.yaml +39 -0
  101. package/src/iris_bundle/.iris/aidlc/memory/unit-rules.md +9 -0
  102. package/src/iris_bundle/.iris/aidlc/quick-start.md +24 -0
  103. package/src/iris_bundle/.iris/aidlc/skills/execution/implementation.md +14 -0
  104. package/src/iris_bundle/.iris/aidlc/skills/execution/refactoring.md +13 -0
  105. package/src/iris_bundle/.iris/aidlc/skills/execution/scaffold-generation.md +15 -0
  106. package/src/iris_bundle/.iris/aidlc/skills/governance/escalation.md +13 -0
  107. package/src/iris_bundle/.iris/aidlc/skills/governance/quality-gates.md +14 -0
  108. package/src/iris_bundle/.iris/aidlc/skills/governance/stop-conditions.md +11 -0
  109. package/src/iris_bundle/.iris/aidlc/skills/reasoning/decomposition.md +23 -0
  110. package/src/iris_bundle/.iris/aidlc/skills/reasoning/risk-analysis.md +14 -0
  111. package/src/iris_bundle/.iris/aidlc/skills/reasoning/verification.md +21 -0
  112. package/src/iris_bundle/.iris/aidlc/standards/artifacts-registry.md +38 -0
  113. package/src/iris_bundle/.iris/aidlc/standards/decision-logging.md +16 -0
  114. package/src/iris_bundle/.iris/aidlc/standards/doctrine-structure.md +31 -0
  115. package/src/iris_bundle/.iris/aidlc/standards/documentation-rules.md +15 -0
  116. package/src/iris_bundle/.iris/aidlc/standards/file-structure.md +21 -0
  117. package/src/iris_bundle/.iris/aidlc/standards/naming-conventions.md +18 -0
  118. package/src/iris_bundle/.iris/aidlc/standards/phases-and-gates.md +25 -0
  119. package/src/iris_bundle/.iris/aidlc/standards/routes-and-routing.md +35 -0
  120. package/src/iris_bundle/.iris/aidlc/standards/tool-wrappers.md +32 -0
  121. package/src/iris_bundle/.iris/aidlc/templates/bolt.md +23 -0
  122. package/src/iris_bundle/.iris/aidlc/templates/doctrine-doc-template.md +33 -0
  123. package/src/iris_bundle/.iris/aidlc/templates/intent.md +23 -0
  124. package/src/iris_bundle/.iris/aidlc/templates/log.md +24 -0
  125. package/src/iris_bundle/.iris/aidlc/templates/review.md +21 -0
  126. package/src/iris_bundle/.iris/aidlc/templates/unit.md +31 -0
  127. package/src/iris_bundle/.iris/aidlc/validation/failure-modes.md +16 -0
  128. package/src/iris_bundle/.iris/aidlc/validation/phase-preconditions.md +21 -0
  129. package/src/iris_bundle/.iris/aidlc/validation/quality-checklist.md +20 -0
  130. package/src/iris_bundle/.iris/flows/specs-md/doctrine/templates/requirements.md +18 -0
  131. package/src/iris_bundle/.iris/flows/specs-md/doctrine/templates/system-context.md +17 -0
  132. package/src/iris_bundle/.iris/flows/specs-md/doctrine/templates/unit-briefs/construction.md +16 -0
  133. package/src/iris_bundle/.iris/flows/specs-md/doctrine/templates/unit-briefs/operations.md +14 -0
  134. package/src/iris_bundle/.iris/flows/specs-md/doctrine/templates/units.md +11 -0
  135. package/src/iris_bundle/.iris/flows/specs-md/flow.yaml +8 -0
  136. package/src/iris_bundle/.iris/flows/specs-md/policy.overlay.yaml +26 -0
  137. package/src/iris_bundle/.iris/flows/specs-md/routes.overlay.yaml +16 -0
  138. package/src/iris_bundle/.iris/policy.yaml +27 -0
  139. package/src/iris_bundle/.iris/routes.yaml +98 -0
  140. package/src/iris_bundle/.iris/state.yaml +7 -0
  141. package/src/iris_bundle/.iris/tools/claude/.claude/claude.md +9 -0
  142. package/src/iris_bundle/.iris/tools/claude/.claude/commands/compare-specs.md +203 -0
  143. package/src/iris_bundle/.iris/tools/claude/.claude/commands/iris-construction-agent.md +25 -0
  144. package/src/iris_bundle/.iris/tools/claude/.claude/commands/iris-inception-agent.md +25 -0
  145. package/src/iris_bundle/.iris/tools/claude/.claude/commands/iris-master-agent.md +25 -0
  146. package/src/iris_bundle/.iris/tools/claude/.claude/commands/iris-operations-agent.md +25 -0
  147. package/src/iris_bundle/.iris/tools/codex/AGENTS.md +15 -0
  148. package/src/iris_bundle/.iris/tools/cursor/.cursor/commands/iris-construction-agent.md +25 -0
  149. package/src/iris_bundle/.iris/tools/cursor/.cursor/commands/iris-inception-agent.md +25 -0
  150. package/src/iris_bundle/.iris/tools/cursor/.cursor/commands/iris-master-agent.md +25 -0
  151. package/src/iris_bundle/.iris/tools/cursor/.cursor/commands/iris-operations-agent.md +25 -0
  152. package/src/iris_bundle/.iris/tools/gemini/.gemini/commands/iris-construction-agent.toml +29 -0
  153. package/src/iris_bundle/.iris/tools/gemini/.gemini/commands/iris-inception-agent.toml +29 -0
  154. package/src/iris_bundle/.iris/tools/gemini/.gemini/commands/iris-master-agent.toml +29 -0
  155. package/src/iris_bundle/.iris/tools/gemini/.gemini/commands/iris-operations-agent.toml +29 -0
  156. package/src/iris_bundle/frameworks/iris-core/.claude/claude.md +238 -0
  157. package/src/iris_bundle/frameworks/iris-core/.claude/commands/compare-iris.md +203 -0
  158. package/src/iris_bundle/frameworks/iris-core/.claude/commands/irismd-construction-agent.md +63 -0
  159. package/src/iris_bundle/frameworks/iris-core/.claude/commands/irismd-inception-agent.md +55 -0
  160. package/src/iris_bundle/frameworks/iris-core/.claude/commands/irismd-master-agent.md +47 -0
  161. package/src/iris_bundle/frameworks/iris-core/.claude/commands/irismd-operations-agent.md +77 -0
  162. package/src/iris_bundle/frameworks/iris-core/.github/workflows/claude-code-review.yml +57 -0
  163. package/src/iris_bundle/frameworks/iris-core/.github/workflows/claude.yml +50 -0
  164. package/src/iris_bundle/frameworks/iris-core/.github/workflows/npm-package-ci.yml +46 -0
  165. package/src/iris_bundle/frameworks/iris-core/.github/workflows/npm-package-dev.yml +59 -0
  166. package/src/iris_bundle/frameworks/iris-core/.github/workflows/npm-package-release.yml +107 -0
  167. package/src/iris_bundle/frameworks/iris-core/.github/workflows/vscode-publish.yml +113 -0
  168. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/README.md +372 -0
  169. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/agents/construction-agent.md +80 -0
  170. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/agents/inception-agent.md +97 -0
  171. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/agents/master-agent.md +61 -0
  172. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/agents/operations-agent.md +89 -0
  173. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/commands/construction-agent.md +63 -0
  174. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/commands/inception-agent.md +55 -0
  175. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/commands/master-agent.md +47 -0
  176. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/commands/operations-agent.md +77 -0
  177. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/context-config.yaml +67 -0
  178. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/memory-bank.yaml +104 -0
  179. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/quick-start.md +322 -0
  180. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/construction/bolt-list.md +163 -0
  181. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/construction/bolt-replan.md +345 -0
  182. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/construction/bolt-start.md +442 -0
  183. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/construction/bolt-status.md +185 -0
  184. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/construction/navigator.md +196 -0
  185. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/inception/bolt-plan.md +372 -0
  186. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/inception/context.md +171 -0
  187. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/inception/intent-create.md +211 -0
  188. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/inception/intent-list.md +124 -0
  189. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/inception/navigator.md +207 -0
  190. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/inception/requirements.md +227 -0
  191. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/inception/review.md +248 -0
  192. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/inception/story-create.md +304 -0
  193. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/inception/units.md +278 -0
  194. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/master/analyze-context.md +239 -0
  195. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/master/answer-question.md +141 -0
  196. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/master/explain-flow.md +158 -0
  197. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/master/project-init.md +281 -0
  198. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/master/route-request.md +126 -0
  199. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/operations/build.md +237 -0
  200. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/operations/deploy.md +259 -0
  201. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/operations/monitor.md +265 -0
  202. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/operations/navigator.md +209 -0
  203. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/skills/operations/verify.md +224 -0
  204. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/construction/bolt-template.md +226 -0
  205. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/construction/bolt-types/ddd-construction-bolt/adr-template.md +49 -0
  206. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/construction/bolt-types/ddd-construction-bolt/ddd-01-domain-model-template.md +55 -0
  207. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/construction/bolt-types/ddd-construction-bolt/ddd-02-technical-design-template.md +67 -0
  208. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/construction/bolt-types/ddd-construction-bolt/ddd-03-test-report-template.md +62 -0
  209. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/construction/bolt-types/ddd-construction-bolt.md +528 -0
  210. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/construction/bolt-types/simple-construction-bolt.md +347 -0
  211. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/construction/bolt-types/spike-bolt.md +240 -0
  212. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/construction/construction-log-template.md +129 -0
  213. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/construction/standards/coding-standards.md +29 -0
  214. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/construction/standards/system-architecture.md +22 -0
  215. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/construction/standards/tech-stack.md +19 -0
  216. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/inception/inception-log-template.md +134 -0
  217. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/inception/project/README.md +55 -0
  218. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/inception/requirements-template.md +144 -0
  219. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/inception/stories-template.md +38 -0
  220. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/inception/story-template.md +147 -0
  221. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/inception/system-context-template.md +29 -0
  222. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/inception/unit-brief-template.md +177 -0
  223. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/inception/units-template.md +52 -0
  224. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/standards/catalog.yaml +345 -0
  225. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/standards/coding-standards.guide.md +553 -0
  226. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/standards/data-stack.guide.md +162 -0
  227. package/src/iris_bundle/frameworks/iris-core/.irismd/aidlc/templates/standards/tech-stack.guide.md +280 -0
  228. package/src/iris_bundle/frameworks/iris-core/.markdownlint.yaml +142 -0
  229. package/src/iris_bundle/frameworks/iris-core/LICENSE +21 -0
  230. package/src/iris_bundle/frameworks/iris-core/PRIVACY.md +38 -0
  231. package/src/iris_bundle/frameworks/iris-core/README.md +397 -0
  232. package/src/iris_bundle/frameworks/iris-core/_iris_legacy/framework.yaml +4 -0
  233. package/src/iris_bundle/frameworks/iris-core/_iris_legacy/interview.yaml +9 -0
  234. package/src/iris_bundle/frameworks/iris-core/_iris_legacy/pack.yaml +2 -0
  235. package/src/iris_bundle/frameworks/iris-core/_iris_legacy/policy.yaml +27 -0
  236. package/src/iris_bundle/frameworks/iris-core/_iris_legacy/routes.yaml +98 -0
  237. package/src/iris_bundle/frameworks/iris-core/_iris_legacy/templates/bolt.md +23 -0
  238. package/src/iris_bundle/frameworks/iris-core/_iris_legacy/templates/doctrine-doc-template.md +33 -0
  239. package/src/iris_bundle/frameworks/iris-core/_iris_legacy/templates/intent.md +23 -0
  240. package/src/iris_bundle/frameworks/iris-core/_iris_legacy/templates/log.md +24 -0
  241. package/src/iris_bundle/frameworks/iris-core/_iris_legacy/templates/review.md +21 -0
  242. package/src/iris_bundle/frameworks/iris-core/_iris_legacy/templates/unit.md +31 -0
  243. package/src/iris_bundle/frameworks/iris-core/artifacts.yaml +78 -0
  244. package/src/iris_bundle/frameworks/iris-core/dev_release_guide.md +324 -0
  245. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/.claude/skills/frontend-design/SKILL.md +106 -0
  246. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/CLAUDE.md +171 -0
  247. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/README.md +20 -0
  248. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/agents/construction-agent.mdx +358 -0
  249. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/agents/inception-agent.mdx +306 -0
  250. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/agents/master-agent.mdx +230 -0
  251. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/agents/operations-agent.mdx +344 -0
  252. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/agents/overview.mdx +187 -0
  253. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/architecture/flows.mdx +136 -0
  254. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/community.mdx +91 -0
  255. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/compare/overview.mdx +167 -0
  256. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/compare/vs-bmad.mdx +167 -0
  257. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/compare/vs-kiro.mdx +208 -0
  258. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/compare/vs-openspec.mdx +140 -0
  259. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/compare/vs-speckit.mdx +146 -0
  260. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/core-concepts/bolts.mdx +268 -0
  261. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/core-concepts/intents.mdx +164 -0
  262. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/core-concepts/memory-bank.mdx +209 -0
  263. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/core-concepts/standards.mdx +277 -0
  264. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/core-concepts/units.mdx +184 -0
  265. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/docs.json +148 -0
  266. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/faq.mdx +364 -0
  267. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/feedback.mdx +55 -0
  268. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/getting-started/installation.mdx +91 -0
  269. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/getting-started/quick-start.mdx +149 -0
  270. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/getting-started/vscode-extension.mdx +180 -0
  271. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/guides/bolt-types.mdx +182 -0
  272. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/images/extension-gallery/bolts.jpeg +0 -0
  273. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/images/extension-gallery/overview.jpeg +0 -0
  274. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/images/extension-gallery/specs.jpeg +0 -0
  275. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/images/extension-preview.png +0 -0
  276. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/images/favicon.png +0 -0
  277. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/images/hero-dark.svg +129 -0
  278. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/images/hero-light.svg +129 -0
  279. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/images/logo.png +0 -0
  280. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/images/old_favicon.svg +40 -0
  281. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/images/quickstart.cast +3788 -0
  282. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/images/quickstart.gif +0 -0
  283. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/index.mdx +179 -0
  284. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/methodology/ai-dlc-vs-agile.mdx +138 -0
  285. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/methodology/sdlc-reimagined.mdx +270 -0
  286. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/methodology/three-phases.mdx +225 -0
  287. package/src/iris_bundle/frameworks/iris-core/docs.iris.md/methodology/what-is-ai-dlc.mdx +96 -0
  288. package/src/iris_bundle/frameworks/iris-core/framework.yaml +4 -0
  289. package/src/iris_bundle/frameworks/iris-core/images/763995.png +0 -0
  290. package/src/iris_bundle/frameworks/iris-core/images/763995.svg +354 -0
  291. package/src/iris_bundle/frameworks/iris-core/images/favicon-64.png +0 -0
  292. package/src/iris_bundle/frameworks/iris-core/images/favicon.png +0 -0
  293. package/src/iris_bundle/frameworks/iris-core/images/logo.png +0 -0
  294. package/src/iris_bundle/frameworks/iris-core/images/old_favicon.svg +40 -0
  295. package/src/iris_bundle/frameworks/iris-core/images/specs_md_pixel_logo.png +0 -0
  296. package/src/iris_bundle/frameworks/iris-core/images/specs_md_pixel_logo_big.png +0 -0
  297. package/src/iris_bundle/frameworks/iris-core/interview.yaml +48 -0
  298. package/src/iris_bundle/frameworks/iris-core/memory-bank/PRFAQ.md +193 -0
  299. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/016-analytics-tracker/bolt.md +122 -0
  300. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/016-analytics-tracker/implementation-plan.md +172 -0
  301. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/016-analytics-tracker/implementation-walkthrough.md +56 -0
  302. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/016-analytics-tracker/test-walkthrough.md +96 -0
  303. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/017-privacy-documentation/bolt.md +72 -0
  304. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-artifact-parser-1/bolt.md +94 -0
  305. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-artifact-parser-1/implementation-plan.md +297 -0
  306. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-artifact-parser-1/implementation-walkthrough.md +56 -0
  307. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-artifact-parser-1/test-walkthrough.md +99 -0
  308. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-artifact-parser-2/bolt.md +88 -0
  309. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-artifact-parser-2/implementation-plan.md +196 -0
  310. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-artifact-parser-2/implementation-walkthrough.md +154 -0
  311. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-artifact-parser-2/test-walkthrough.md +119 -0
  312. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-extension-core-1/bolt.md +99 -0
  313. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-extension-core-1/implementation-plan.md +70 -0
  314. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-extension-core-1/implementation-walkthrough.md +45 -0
  315. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-extension-core-1/test-walkthrough.md +60 -0
  316. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-file-watcher-1/bolt.md +86 -0
  317. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-file-watcher-1/implementation-plan.md +154 -0
  318. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-file-watcher-1/implementation-walkthrough.md +43 -0
  319. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-file-watcher-1/test-walkthrough.md +74 -0
  320. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-1/bolt.md +89 -0
  321. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-1/implementation-plan.md +76 -0
  322. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-1/implementation-walkthrough.md +43 -0
  323. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-1/test-walkthrough.md +70 -0
  324. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-2/bolt.md +90 -0
  325. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-2/implementation-plan.md +93 -0
  326. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-2/implementation-walkthrough.md +44 -0
  327. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-2/test-walkthrough.md +54 -0
  328. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-3/bolt.md +90 -0
  329. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-3/implementation-plan.md +168 -0
  330. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-3/implementation-walkthrough.md +137 -0
  331. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-3/test-walkthrough.md +134 -0
  332. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-4/bolt.md +93 -0
  333. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-4/implementation-plan.md +176 -0
  334. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-4/implementation-walkthrough.md +159 -0
  335. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-4/test-walkthrough.md +105 -0
  336. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-5/bolt.md +104 -0
  337. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-sidebar-provider-5/implementation-plan.md +146 -0
  338. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-1/bolt.md +83 -0
  339. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-1/implementation-plan.md +161 -0
  340. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-1/implementation-walkthrough.md +58 -0
  341. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-1/test-walkthrough.md +104 -0
  342. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-2/bolt.md +83 -0
  343. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-2/implementation-plan.md +179 -0
  344. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-2/implementation-walkthrough.md +124 -0
  345. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-2/test-walkthrough.md +95 -0
  346. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-3/bolt.md +83 -0
  347. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-3/implementation-plan.md +196 -0
  348. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-3/implementation-walkthrough.md +207 -0
  349. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-3/test-walkthrough.md +194 -0
  350. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-4/bolt.md +92 -0
  351. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-4/implementation-plan.md +217 -0
  352. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-4/implementation-walkthrough.md +138 -0
  353. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-4/test-walkthrough.md +196 -0
  354. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-5/bolt.md +89 -0
  355. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-5/implementation-plan.md +181 -0
  356. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-5/implementation-walkthrough.md +160 -0
  357. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-webview-lit-migration-5/test-walkthrough.md +121 -0
  358. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-welcome-view-1/bolt.md +92 -0
  359. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-welcome-view-1/implementation-plan.md +73 -0
  360. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-welcome-view-1/implementation-walkthrough.md +44 -0
  361. package/src/iris_bundle/frameworks/iris-core/memory-bank/bolts/bolt-welcome-view-1/test-walkthrough.md +49 -0
  362. package/src/iris_bundle/frameworks/iris-core/memory-bank/glossary.md +197 -0
  363. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/001-multi-agent-orchestration/requirements.md +129 -0
  364. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/001-multi-agent-orchestration/research/approval-gates-simplification.md +839 -0
  365. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/001-multi-agent-orchestration/research/archive/approval-gates-analysis.md +331 -0
  366. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/001-multi-agent-orchestration/system-context.md +167 -0
  367. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/001-multi-agent-orchestration/units/construction-agent/unit-brief.md +111 -0
  368. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/001-multi-agent-orchestration/units/inception-agent/unit-brief.md +135 -0
  369. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/001-multi-agent-orchestration/units/master-agent/unit-brief.md +580 -0
  370. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/001-multi-agent-orchestration/units/operations-agent/unit-brief.md +72 -0
  371. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/001-multi-agent-orchestration/units.md +168 -0
  372. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/002-agentic-coding-tool-integration/requirements.md +96 -0
  373. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/002-agentic-coding-tool-integration/system-context.md +170 -0
  374. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/002-agentic-coding-tool-integration/units/antigravity-installer/unit-brief.md +156 -0
  375. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/002-agentic-coding-tool-integration/units/claude-code-installer/unit-brief.md +180 -0
  376. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/002-agentic-coding-tool-integration/units/cline-installer/unit-brief.md +106 -0
  377. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/002-agentic-coding-tool-integration/units/codex-installer/unit-brief.md +106 -0
  378. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/002-agentic-coding-tool-integration/units/copilot-installer/unit-brief.md +139 -0
  379. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/002-agentic-coding-tool-integration/units/cursor-installer/unit-brief.md +119 -0
  380. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/002-agentic-coding-tool-integration/units/gemini-installer/unit-brief.md +107 -0
  381. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/002-agentic-coding-tool-integration/units/installer-core/unit-brief.md +240 -0
  382. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/002-agentic-coding-tool-integration/units/kilo-installer/unit-brief.md +106 -0
  383. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/002-agentic-coding-tool-integration/units/kiro-installer/unit-brief.md +108 -0
  384. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/002-agentic-coding-tool-integration/units/opencode-installer/unit-brief.md +107 -0
  385. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/002-agentic-coding-tool-integration/units/roo-installer/unit-brief.md +107 -0
  386. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/002-agentic-coding-tool-integration/units/windsurf-installer/unit-brief.md +128 -0
  387. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/002-agentic-coding-tool-integration/units.md +188 -0
  388. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/003-memory-bank-system/requirements.md +196 -0
  389. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/003-memory-bank-system/system-context.md +181 -0
  390. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/003-memory-bank-system/units/artifact-storage/unit-brief.md +192 -0
  391. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/003-memory-bank-system/units/configuration-schema/unit-brief.md +204 -0
  392. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/003-memory-bank-system/units/context-loader/unit-brief.md +245 -0
  393. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/003-memory-bank-system/units.md +97 -0
  394. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/004-standards-system/requirements.md +125 -0
  395. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/004-standards-system/system-context.md +158 -0
  396. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/004-standards-system/units/facilitation-guides/unit-brief.md +250 -0
  397. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/004-standards-system/units/standards-catalog/unit-brief.md +355 -0
  398. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/004-standards-system/units/standards-templates/unit-brief.md +394 -0
  399. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/004-standards-system/units.md +110 -0
  400. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/005-testing-strategy/requirements.md +188 -0
  401. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/005-testing-strategy/system-context.md +229 -0
  402. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/005-testing-strategy/units/01-specification-contract-testing/unit-brief.md +197 -0
  403. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/005-testing-strategy/units/02-cli-installer-testing/unit-brief.md +377 -0
  404. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/005-testing-strategy/units/03-golden-dataset-management/unit-brief.md +465 -0
  405. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/005-testing-strategy/units/04-agent-behavior-evaluation/unit-brief.md +459 -0
  406. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/005-testing-strategy/units/05-cicd-integration/unit-brief.md +587 -0
  407. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/005-testing-strategy/units.md +332 -0
  408. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/006-brownfield-support/requirements.md +214 -0
  409. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/007-installer-analytics/requirements.md +308 -0
  410. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/007-installer-analytics/system-context.md +335 -0
  411. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/007-installer-analytics/units/001-analytics-tracker/construction-log.md +52 -0
  412. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/007-installer-analytics/units/001-analytics-tracker/stories/001-initialize-mixpanel.md +56 -0
  413. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/007-installer-analytics/units/001-analytics-tracker/stories/002-detect-shell.md +68 -0
  414. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/007-installer-analytics/units/001-analytics-tracker/stories/003-check-telemetry-disabled.md +66 -0
  415. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/007-installer-analytics/units/001-analytics-tracker/stories/004-track-installer-events.md +67 -0
  416. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/007-installer-analytics/units/001-analytics-tracker/stories/005-track-selection-events.md +66 -0
  417. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/007-installer-analytics/units/001-analytics-tracker/stories/006-cli-no-telemetry-flag.md +59 -0
  418. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/007-installer-analytics/units/001-analytics-tracker/unit-brief.md +191 -0
  419. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/007-installer-analytics/units/002-privacy-documentation/stories/001-create-privacy-md.md +58 -0
  420. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/007-installer-analytics/units/002-privacy-documentation/stories/002-add-readme-section.md +61 -0
  421. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/007-installer-analytics/units/002-privacy-documentation/unit-brief.md +158 -0
  422. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/007-installer-analytics/units.md +453 -0
  423. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/008-terminal-dashboard/requirements.md +222 -0
  424. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/008-terminal-dashboard/system-context.md +198 -0
  425. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/008-terminal-dashboard/units.md +275 -0
  426. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/009-versioning-strategy/requirements.md +308 -0
  427. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/009-versioning-strategy/system-context.md +273 -0
  428. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/009-versioning-strategy/units.md +312 -0
  429. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/010-smart-unit-decomposition/requirements.md +111 -0
  430. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/010-smart-unit-decomposition/system-context.md +154 -0
  431. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/010-smart-unit-decomposition/units.md +102 -0
  432. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/inception-log.md +101 -0
  433. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/requirements.md +282 -0
  434. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/system-context.md +114 -0
  435. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/artifact-parser/construction-log.md +57 -0
  436. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/artifact-parser/stories/001-memory-bank-schema.md +56 -0
  437. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/artifact-parser/stories/002-project-detection.md +54 -0
  438. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/artifact-parser/stories/003-artifact-parsing.md +57 -0
  439. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/artifact-parser/stories/004-frontmatter-parser.md +61 -0
  440. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/artifact-parser/stories/005-bolt-dependencies.md +58 -0
  441. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/artifact-parser/stories/006-activity-feed-derivation.md +70 -0
  442. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/artifact-parser/unit-brief.md +223 -0
  443. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/extension-core/construction-log.md +59 -0
  444. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/extension-core/stories/001-extension-activation.md +55 -0
  445. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/extension-core/stories/002-command-registration.md +54 -0
  446. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/extension-core/stories/003-file-operation-commands.md +57 -0
  447. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/extension-core/unit-brief.md +224 -0
  448. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/file-watcher/construction-log.md +52 -0
  449. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/file-watcher/stories/001-file-system-watcher.md +57 -0
  450. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/file-watcher/stories/002-debounced-refresh.md +53 -0
  451. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/file-watcher/unit-brief.md +173 -0
  452. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/construction-log.md +63 -0
  453. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/001-tree-data-provider.md +55 -0
  454. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/002-intent-unit-story-tree.md +56 -0
  455. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/003-bolt-tree.md +56 -0
  456. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/004-status-icons.md +55 -0
  457. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/005-pixel-logo-footer.md +55 -0
  458. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/006-webview-tab-architecture.md +62 -0
  459. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/007-command-center-bolts-tab.md +65 -0
  460. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/008-current-focus-card.md +62 -0
  461. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/009-up-next-queue.md +61 -0
  462. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/010-activity-feed-ui.md +63 -0
  463. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/011-filewatcher-statestore-integration.md +49 -0
  464. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/012-next-actions-ui.md +57 -0
  465. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/013-start-bolt-action.md +72 -0
  466. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/014-intent-selection-strategies.md +54 -0
  467. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/015-persist-expanded-state.md +56 -0
  468. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/016-bolt-filtering.md +72 -0
  469. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/017-activity-open-button.md +50 -0
  470. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/018-specs-view.md +63 -0
  471. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/stories/019-overview-view.md +84 -0
  472. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/sidebar-provider/unit-brief.md +305 -0
  473. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/webview-lit-migration/stories/020-fix-infinite-rerender.md +144 -0
  474. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/webview-lit-migration/stories/021-remove-duplicate-files.md +94 -0
  475. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/webview-lit-migration/stories/022-setup-esbuild.md +156 -0
  476. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/webview-lit-migration/stories/023-lit-scaffold.md +202 -0
  477. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/webview-lit-migration/stories/024-tabs-component.md +161 -0
  478. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/webview-lit-migration/stories/025-bolts-view-components.md +182 -0
  479. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/webview-lit-migration/stories/026-specs-view-components.md +223 -0
  480. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/webview-lit-migration/stories/027-overview-view-components.md +391 -0
  481. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/webview-lit-migration/stories/028-state-context.md +317 -0
  482. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/webview-lit-migration/stories/029-ipc-typed-messaging.md +396 -0
  483. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/webview-lit-migration/unit-brief.md +133 -0
  484. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/welcome-view/construction-log.md +58 -0
  485. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/welcome-view/stories/001-welcome-view-ui.md +57 -0
  486. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/welcome-view/stories/002-install-button-flow.md +55 -0
  487. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/welcome-view/stories/003-post-installation-detection.md +55 -0
  488. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units/welcome-view/unit-brief.md +211 -0
  489. package/src/iris_bundle/frameworks/iris-core/memory-bank/intents/011-vscode-extension/units.md +129 -0
  490. package/src/iris_bundle/frameworks/iris-core/memory-bank/maintenance-log.md +21 -0
  491. package/src/iris_bundle/frameworks/iris-core/memory-bank/project.yaml +16 -0
  492. package/src/iris_bundle/frameworks/iris-core/memory-bank/research/test_strategy/promptfoo-specsmd-tutorial.md +911 -0
  493. package/src/iris_bundle/frameworks/iris-core/memory-bank/research/test_strategy/promptfoo-tutorial.md +796 -0
  494. package/src/iris_bundle/frameworks/iris-core/memory-bank/research/test_strategy/testing-strategy.md +1057 -0
  495. package/src/iris_bundle/frameworks/iris-core/memory-bank/research/unified-modernization-model.md +559 -0
  496. package/src/iris_bundle/frameworks/iris-core/memory-bank/research/vibe-to-production-academic-research.md +578 -0
  497. package/src/iris_bundle/frameworks/iris-core/memory-bank/research/vibe-to-spec-flow-options.md +547 -0
  498. package/src/iris_bundle/frameworks/iris-core/memory-bank/standards/coding-standards.md +217 -0
  499. package/src/iris_bundle/frameworks/iris-core/memory-bank/standards/output-formatting.md +202 -0
  500. package/src/iris_bundle/frameworks/iris-core/memory-bank/standards/skill-template.md +308 -0
  501. package/src/iris_bundle/frameworks/iris-core/memory-bank/standards/system-architecture.md +177 -0
  502. package/src/iris_bundle/frameworks/iris-core/memory-bank/standards/tech-stack.md +88 -0
  503. package/src/iris_bundle/frameworks/iris-core/memory-bank/story-index.md +154 -0
  504. package/src/iris_bundle/frameworks/iris-core/memory-bank/term-mappings.md +121 -0
  505. package/src/iris_bundle/frameworks/iris-core/pack.yaml +2 -0
  506. package/src/iris_bundle/frameworks/iris-core/package.json +11 -0
  507. package/src/iris_bundle/frameworks/iris-core/policy.yaml +73 -0
  508. package/src/iris_bundle/frameworks/iris-core/resources/ai-dlc-specification.md +286 -0
  509. package/src/iris_bundle/frameworks/iris-core/resources/aidlc.pdf +0 -0
  510. package/src/iris_bundle/frameworks/iris-core/resources/images/aidlc-core-framework.png +0 -0
  511. package/src/iris_bundle/frameworks/iris-core/resources/images/aidlc-phases-detail.png +0 -0
  512. package/src/iris_bundle/frameworks/iris-core/resources/images/aidlc-workflow-steps.png +0 -0
  513. package/src/iris_bundle/frameworks/iris-core/routes.yaml +98 -0
  514. package/src/iris_bundle/frameworks/iris-core/src/README.md +322 -0
  515. package/src/iris_bundle/frameworks/iris-core/src/__tests__/schemas/agent.schema.yaml +20 -0
  516. package/src/iris_bundle/frameworks/iris-core/src/__tests__/schemas/catalog.schema.yaml +60 -0
  517. package/src/iris_bundle/frameworks/iris-core/src/__tests__/schemas/context-config.schema.yaml +24 -0
  518. package/src/iris_bundle/frameworks/iris-core/src/__tests__/schemas/memory-bank.schema.yaml +61 -0
  519. package/src/iris_bundle/frameworks/iris-core/src/__tests__/schemas/skill.schema.yaml +22 -0
  520. package/src/iris_bundle/frameworks/iris-core/src/__tests__/unit/analytics/analytics.test.ts +240 -0
  521. package/src/iris_bundle/frameworks/iris-core/src/__tests__/unit/architecture/bolt-type-agnostic.test.ts +282 -0
  522. package/src/iris_bundle/frameworks/iris-core/src/__tests__/unit/flow-consistency/code-examples.test.ts +93 -0
  523. package/src/iris_bundle/frameworks/iris-core/src/__tests__/unit/flow-consistency/helpers.ts +79 -0
  524. package/src/iris_bundle/frameworks/iris-core/src/__tests__/unit/flow-consistency/placeholder-consistency.test.ts +76 -0
  525. package/src/iris_bundle/frameworks/iris-core/src/__tests__/unit/flow-consistency/reference-integrity.test.ts +92 -0
  526. package/src/iris_bundle/frameworks/iris-core/src/__tests__/unit/flow-consistency/terminology-consistency.test.ts +72 -0
  527. package/src/iris_bundle/frameworks/iris-core/src/__tests__/unit/schema-validation/markdown-schema.test.ts +55 -0
  528. package/src/iris_bundle/frameworks/iris-core/src/__tests__/unit/schema-validation/yaml-config-schema.test.ts +53 -0
  529. package/src/iris_bundle/frameworks/iris-core/src/bin/cli.js +21 -0
  530. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/README.md +372 -0
  531. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/agents/construction-agent.md +80 -0
  532. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/agents/inception-agent.md +97 -0
  533. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/agents/master-agent.md +61 -0
  534. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/agents/operations-agent.md +89 -0
  535. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/commands/construction-agent.md +63 -0
  536. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/commands/inception-agent.md +55 -0
  537. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/commands/master-agent.md +47 -0
  538. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/commands/operations-agent.md +77 -0
  539. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/context-config.yaml +67 -0
  540. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/memory-bank.yaml +104 -0
  541. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/quick-start.md +322 -0
  542. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/construction/bolt-list.md +163 -0
  543. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/construction/bolt-replan.md +345 -0
  544. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/construction/bolt-start.md +442 -0
  545. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/construction/bolt-status.md +185 -0
  546. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/construction/navigator.md +196 -0
  547. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/inception/bolt-plan.md +372 -0
  548. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/inception/context.md +171 -0
  549. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/inception/intent-create.md +211 -0
  550. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/inception/intent-list.md +124 -0
  551. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/inception/navigator.md +207 -0
  552. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/inception/requirements.md +227 -0
  553. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/inception/review.md +248 -0
  554. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/inception/story-create.md +304 -0
  555. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/inception/units.md +278 -0
  556. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/master/analyze-context.md +239 -0
  557. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/master/answer-question.md +141 -0
  558. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/master/explain-flow.md +158 -0
  559. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/master/project-init.md +281 -0
  560. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/master/route-request.md +126 -0
  561. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/operations/build.md +237 -0
  562. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/operations/deploy.md +259 -0
  563. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/operations/monitor.md +265 -0
  564. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/operations/navigator.md +209 -0
  565. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/skills/operations/verify.md +224 -0
  566. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/construction/bolt-template.md +226 -0
  567. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/construction/bolt-types/ddd-construction-bolt/adr-template.md +49 -0
  568. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/construction/bolt-types/ddd-construction-bolt/ddd-01-domain-model-template.md +55 -0
  569. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/construction/bolt-types/ddd-construction-bolt/ddd-02-technical-design-template.md +67 -0
  570. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/construction/bolt-types/ddd-construction-bolt/ddd-03-test-report-template.md +62 -0
  571. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/construction/bolt-types/ddd-construction-bolt.md +528 -0
  572. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/construction/bolt-types/simple-construction-bolt.md +347 -0
  573. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/construction/bolt-types/spike-bolt.md +240 -0
  574. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/construction/construction-log-template.md +129 -0
  575. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/construction/standards/coding-standards.md +29 -0
  576. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/construction/standards/system-architecture.md +22 -0
  577. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/construction/standards/tech-stack.md +19 -0
  578. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/inception/inception-log-template.md +134 -0
  579. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/inception/project/README.md +55 -0
  580. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/inception/requirements-template.md +144 -0
  581. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/inception/stories-template.md +38 -0
  582. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/inception/story-template.md +147 -0
  583. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/inception/system-context-template.md +29 -0
  584. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/inception/unit-brief-template.md +177 -0
  585. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/inception/units-template.md +52 -0
  586. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/standards/catalog.yaml +345 -0
  587. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/standards/coding-standards.guide.md +553 -0
  588. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/standards/data-stack.guide.md +162 -0
  589. package/src/iris_bundle/frameworks/iris-core/src/flows/aidlc/templates/standards/tech-stack.guide.md +280 -0
  590. package/src/iris_bundle/frameworks/iris-core/src/lib/InstallerFactory.js +36 -0
  591. package/src/iris_bundle/frameworks/iris-core/src/lib/analytics/env-detector.js +92 -0
  592. package/src/iris_bundle/frameworks/iris-core/src/lib/analytics/index.js +22 -0
  593. package/src/iris_bundle/frameworks/iris-core/src/lib/analytics/machine-id.js +33 -0
  594. package/src/iris_bundle/frameworks/iris-core/src/lib/analytics/tracker.js +232 -0
  595. package/src/iris_bundle/frameworks/iris-core/src/lib/cli-utils.js +342 -0
  596. package/src/iris_bundle/frameworks/iris-core/src/lib/constants.js +32 -0
  597. package/src/iris_bundle/frameworks/iris-core/src/lib/installer.js +402 -0
  598. package/src/iris_bundle/frameworks/iris-core/src/lib/installers/AntigravityInstaller.js +22 -0
  599. package/src/iris_bundle/frameworks/iris-core/src/lib/installers/ClaudeInstaller.js +85 -0
  600. package/src/iris_bundle/frameworks/iris-core/src/lib/installers/ClineInstaller.js +21 -0
  601. package/src/iris_bundle/frameworks/iris-core/src/lib/installers/CodexInstaller.js +21 -0
  602. package/src/iris_bundle/frameworks/iris-core/src/lib/installers/CopilotInstaller.js +113 -0
  603. package/src/iris_bundle/frameworks/iris-core/src/lib/installers/CursorInstaller.js +63 -0
  604. package/src/iris_bundle/frameworks/iris-core/src/lib/installers/GeminiInstaller.js +75 -0
  605. package/src/iris_bundle/frameworks/iris-core/src/lib/installers/KiroInstaller.js +22 -0
  606. package/src/iris_bundle/frameworks/iris-core/src/lib/installers/OpenCodeInstaller.js +22 -0
  607. package/src/iris_bundle/frameworks/iris-core/src/lib/installers/RooInstaller.js +22 -0
  608. package/src/iris_bundle/frameworks/iris-core/src/lib/installers/ToolInstaller.js +73 -0
  609. package/src/iris_bundle/frameworks/iris-core/src/lib/installers/WindsurfInstaller.js +76 -0
  610. package/src/iris_bundle/frameworks/iris-core/src/lib/markdown-validator.ts +175 -0
  611. package/src/iris_bundle/frameworks/iris-core/src/lib/yaml-validator.ts +99 -0
  612. package/src/iris_bundle/frameworks/iris-core/src/package-lock.json +9922 -0
  613. package/src/iris_bundle/frameworks/iris-core/src/package.json +118 -0
  614. package/src/iris_bundle/frameworks/iris-core/src/scripts/artifact-validator.js +594 -0
  615. package/src/iris_bundle/frameworks/iris-core/src/scripts/bolt-complete.js +606 -0
  616. package/src/iris_bundle/frameworks/iris-core/src/scripts/status-integrity.js +598 -0
  617. package/src/iris_bundle/frameworks/iris-core/src/specs_md_pixel_logo.png +0 -0
  618. package/src/iris_bundle/frameworks/iris-core/src/tsconfig.json +16 -0
  619. package/src/iris_bundle/frameworks/iris-core/src/vitest.config.ts +12 -0
  620. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/.claude/skills/frontend-design/SKILL.md +42 -0
  621. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/.mocharc.json +5 -0
  622. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/.vscodeignore +17 -0
  623. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/DEVGUIDE.md +103 -0
  624. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/LICENSE +21 -0
  625. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/README.md +198 -0
  626. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/index.html +635 -0
  627. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-1-metrics-dashboard.html +542 -0
  628. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-10-dual-view-focus.html +1105 -0
  629. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-11-dual-view-grouped.html +2304 -0
  630. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-12-dependency-graph.html +1400 -0
  631. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-13-hierarchy-explorer.html +1278 -0
  632. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-14-swimlane-deps.html +1370 -0
  633. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-2-pipeline-flow.html +673 -0
  634. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-3-focus-mode.html +898 -0
  635. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-4-kanban-board.html +858 -0
  636. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-5-timeline.html +890 -0
  637. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-6-activity-feed.html +923 -0
  638. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-7-heatmap-grid.html +932 -0
  639. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-8-2-spec.md +657 -0
  640. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-8-2.html +2098 -0
  641. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-8-command-center.html +2043 -0
  642. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-8a-command-center-timeline.html +1222 -0
  643. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/design-mockups/variation-9-dual-view.html +1101 -0
  644. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/esbuild.webview.mjs +70 -0
  645. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/eslint.config.mjs +36 -0
  646. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/package-lock.json +5712 -0
  647. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/package.json +116 -0
  648. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/resources/extension-preview.png +0 -0
  649. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/resources/extension_icon.svg +40 -0
  650. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/resources/favicon-64.png +0 -0
  651. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/resources/favicon.png +0 -0
  652. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/resources/favicon.svg +40 -0
  653. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/resources/logo.png +0 -0
  654. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/extension.ts +142 -0
  655. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/parser/activityFeed.ts +184 -0
  656. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/parser/artifactParser.ts +477 -0
  657. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/parser/boltTypeParser.ts +191 -0
  658. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/parser/dependencyComputation.ts +157 -0
  659. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/parser/frontmatterParser.ts +144 -0
  660. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/parser/index.ts +93 -0
  661. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/parser/memoryBankSchema.ts +140 -0
  662. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/parser/projectDetection.ts +132 -0
  663. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/parser/types.ts +241 -0
  664. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/sidebar/iconHelper.ts +82 -0
  665. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/sidebar/index.ts +85 -0
  666. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/sidebar/treeBuilder.ts +289 -0
  667. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/sidebar/treeProvider.ts +225 -0
  668. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/sidebar/types.ts +254 -0
  669. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/sidebar/webviewMessaging.ts +306 -0
  670. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/sidebar/webviewProvider.ts +866 -0
  671. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/state/index.ts +114 -0
  672. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/state/selectors.ts +652 -0
  673. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/state/stateStore.ts +419 -0
  674. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/state/types.ts +311 -0
  675. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/test/parser/activityFeed.test.ts +269 -0
  676. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/test/parser/artifactParser.test.ts +440 -0
  677. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/test/parser/dependencyComputation.test.ts +288 -0
  678. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/test/parser/frontmatterParser.test.ts +191 -0
  679. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/test/parser/memoryBankSchema.test.ts +185 -0
  680. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/test/parser/projectDetection.test.ts +146 -0
  681. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/test/runTest.ts +20 -0
  682. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/test/sidebar/treeBuilder.test.ts +329 -0
  683. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/test/sidebar/types.test.ts +239 -0
  684. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/test/sidebar/webviewContent.test.ts +67 -0
  685. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/test/sidebar/webviewMessaging.test.ts +369 -0
  686. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/test/sidebar/webviewProvider.test.ts +282 -0
  687. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/test/state/selectors.test.ts +457 -0
  688. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/test/state/stateStore.test.ts +622 -0
  689. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/test/watcher/debounce.test.ts +155 -0
  690. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/test/watcher/fileWatcher.test.ts +77 -0
  691. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/watcher/debounce.ts +70 -0
  692. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/watcher/fileWatcher.ts +147 -0
  693. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/watcher/index.ts +39 -0
  694. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/watcher/types.ts +43 -0
  695. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/app.ts +870 -0
  696. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/bolts/activity-feed.ts +232 -0
  697. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/bolts/activity-item.ts +208 -0
  698. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/bolts/bolts-view.ts +201 -0
  699. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/bolts/completion-item.ts +299 -0
  700. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/bolts/completions-section.ts +197 -0
  701. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/bolts/current-bolts.ts +184 -0
  702. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/bolts/focus-card.ts +431 -0
  703. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/bolts/focus-section.ts +179 -0
  704. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/bolts/queue-item.ts +306 -0
  705. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/bolts/queue-section.ts +198 -0
  706. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/bolts/stories-list.ts +151 -0
  707. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/shared/base-element.ts +29 -0
  708. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/shared/empty-state.ts +82 -0
  709. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/shared/progress-bar.ts +120 -0
  710. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/shared/progress-ring.ts +100 -0
  711. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/shared/stage-pipeline.ts +133 -0
  712. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/components/tabs/view-tabs.ts +127 -0
  713. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/html.ts +542 -0
  714. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/index.ts +104 -0
  715. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/lit/index.ts +16 -0
  716. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/scripts.ts +241 -0
  717. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/styles/theme.ts +50 -0
  718. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/styles.ts +1194 -0
  719. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/types/messages.ts +40 -0
  720. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/types/vscode.ts +13 -0
  721. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/utils/messaging.ts +57 -0
  722. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/utils.ts +16 -0
  723. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/webview/vscode-api.ts +14 -0
  724. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/welcome/WelcomeViewProvider.ts +254 -0
  725. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/welcome/index.ts +9 -0
  726. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/src/welcome/installHandler.ts +82 -0
  727. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/tsconfig.json +30 -0
  728. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/tsconfig.test.json +26 -0
  729. package/src/iris_bundle/frameworks/iris-core/vs-code-extension/tsconfig.webview.json +23 -0
@@ -0,0 +1,2304 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Variation 11: Dual View with Group by State (Interactive)</title>
7
+ <style>
8
+ /* VS Code Theme Variables */
9
+ :root {
10
+ --vscode-editor-background: #1e1e1e;
11
+ --vscode-editor-foreground: #cccccc;
12
+ --vscode-sideBar-background: #252526;
13
+ --vscode-sideBarSectionHeader-background: #2d2d2d;
14
+ --vscode-input-background: #3c3c3c;
15
+ --vscode-input-border: #3c3c3c;
16
+ --vscode-list-hoverBackground: #2a2d2e;
17
+ --vscode-badge-background: #4d4d4d;
18
+ --vscode-badge-foreground: #ffffff;
19
+ --vscode-descriptionForeground: #858585;
20
+
21
+ --status-complete: #22c55e;
22
+ --status-active: #f97316;
23
+ --status-pending: #6b7280;
24
+ --accent-primary: #f97316;
25
+ }
26
+
27
+ .theme-light {
28
+ --vscode-editor-background: #ffffff;
29
+ --vscode-editor-foreground: #333333;
30
+ --vscode-sideBar-background: #f3f3f3;
31
+ --vscode-sideBarSectionHeader-background: #e8e8e8;
32
+ --vscode-input-background: #ffffff;
33
+ --vscode-input-border: #cecece;
34
+ --vscode-list-hoverBackground: #e8e8e8;
35
+ --vscode-descriptionForeground: #717171;
36
+ }
37
+
38
+ * {
39
+ margin: 0;
40
+ padding: 0;
41
+ box-sizing: border-box;
42
+ }
43
+
44
+ body {
45
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
46
+ background: var(--vscode-editor-background);
47
+ color: var(--vscode-editor-foreground);
48
+ font-size: 13px;
49
+ }
50
+
51
+ .sidebar {
52
+ width: 320px;
53
+ min-height: 100vh;
54
+ background: var(--vscode-sideBar-background);
55
+ border-right: 1px solid var(--vscode-input-border);
56
+ position: relative;
57
+ padding-bottom: 42px;
58
+ }
59
+
60
+ .header {
61
+ padding: 10px 12px;
62
+ background: var(--vscode-sideBarSectionHeader-background);
63
+ border-bottom: 1px solid var(--vscode-input-border);
64
+ display: flex;
65
+ justify-content: space-between;
66
+ align-items: center;
67
+ }
68
+
69
+ .header-title {
70
+ font-size: 11px;
71
+ font-weight: 600;
72
+ text-transform: uppercase;
73
+ letter-spacing: 0.5px;
74
+ }
75
+
76
+ .header-actions {
77
+ display: flex;
78
+ gap: 4px;
79
+ }
80
+
81
+ .icon-btn {
82
+ background: none;
83
+ border: none;
84
+ color: var(--vscode-descriptionForeground);
85
+ cursor: pointer;
86
+ padding: 4px 6px;
87
+ border-radius: 4px;
88
+ font-size: 14px;
89
+ }
90
+
91
+ .icon-btn:hover {
92
+ background: var(--vscode-list-hoverBackground);
93
+ color: var(--vscode-editor-foreground);
94
+ }
95
+
96
+ /* Main View Tabs */
97
+ .view-tabs {
98
+ display: flex;
99
+ background: var(--vscode-editor-background);
100
+ border-bottom: 1px solid var(--vscode-input-border);
101
+ }
102
+
103
+ .view-tab {
104
+ flex: 1;
105
+ padding: 10px;
106
+ font-size: 11px;
107
+ font-weight: 600;
108
+ text-align: center;
109
+ background: none;
110
+ border: none;
111
+ color: var(--vscode-descriptionForeground);
112
+ cursor: pointer;
113
+ border-bottom: 2px solid transparent;
114
+ transition: all 0.15s;
115
+ }
116
+
117
+ .view-tab:hover {
118
+ color: var(--vscode-editor-foreground);
119
+ background: var(--vscode-list-hoverBackground);
120
+ }
121
+
122
+ .view-tab.active {
123
+ color: var(--accent-primary);
124
+ border-bottom-color: var(--accent-primary);
125
+ }
126
+
127
+ /* Toolbar */
128
+ .toolbar {
129
+ padding: 8px 12px;
130
+ background: var(--vscode-sideBarSectionHeader-background);
131
+ border-bottom: 1px solid var(--vscode-input-border);
132
+ }
133
+
134
+ .toolbar-row {
135
+ display: flex;
136
+ gap: 6px;
137
+ align-items: center;
138
+ }
139
+
140
+ .toolbar-row + .toolbar-row {
141
+ margin-top: 6px;
142
+ }
143
+
144
+ .toolbar-label {
145
+ font-size: 9px;
146
+ color: var(--vscode-descriptionForeground);
147
+ text-transform: uppercase;
148
+ min-width: 50px;
149
+ }
150
+
151
+ .toolbar-select {
152
+ flex: 1;
153
+ padding: 5px 8px;
154
+ font-size: 10px;
155
+ background: var(--vscode-input-background);
156
+ border: 1px solid var(--vscode-input-border);
157
+ color: var(--vscode-editor-foreground);
158
+ border-radius: 4px;
159
+ cursor: pointer;
160
+ }
161
+
162
+ /* Group By Buttons */
163
+ .group-by-buttons {
164
+ display: flex;
165
+ gap: 4px;
166
+ flex: 1;
167
+ }
168
+
169
+ .group-btn {
170
+ flex: 1;
171
+ padding: 5px 8px;
172
+ font-size: 10px;
173
+ background: var(--vscode-input-background);
174
+ border: 1px solid var(--vscode-input-border);
175
+ color: var(--vscode-descriptionForeground);
176
+ border-radius: 4px;
177
+ cursor: pointer;
178
+ transition: all 0.15s;
179
+ }
180
+
181
+ .group-btn:hover {
182
+ border-color: var(--accent-primary);
183
+ color: var(--vscode-editor-foreground);
184
+ }
185
+
186
+ .group-btn.active {
187
+ background: var(--accent-primary);
188
+ border-color: var(--accent-primary);
189
+ color: white;
190
+ }
191
+
192
+ /* Summary Bar */
193
+ .summary-bar {
194
+ display: flex;
195
+ padding: 8px 12px;
196
+ gap: 8px;
197
+ background: var(--vscode-editor-background);
198
+ border-bottom: 1px solid var(--vscode-input-border);
199
+ }
200
+
201
+ .summary-item {
202
+ display: flex;
203
+ align-items: center;
204
+ gap: 4px;
205
+ font-size: 10px;
206
+ cursor: pointer;
207
+ padding: 4px 8px;
208
+ border-radius: 4px;
209
+ transition: background 0.15s;
210
+ }
211
+
212
+ .summary-item:hover {
213
+ background: var(--vscode-list-hoverBackground);
214
+ }
215
+
216
+ .summary-item.active {
217
+ background: rgba(249, 115, 22, 0.2);
218
+ }
219
+
220
+ .summary-dot {
221
+ width: 8px;
222
+ height: 8px;
223
+ border-radius: 50%;
224
+ }
225
+
226
+ .summary-dot.active {
227
+ background: var(--status-active);
228
+ }
229
+
230
+ .summary-dot.complete {
231
+ background: var(--status-complete);
232
+ }
233
+
234
+ .summary-dot.pending {
235
+ background: var(--status-pending);
236
+ }
237
+
238
+ .summary-value {
239
+ font-weight: 600;
240
+ }
241
+
242
+ .summary-label {
243
+ color: var(--vscode-descriptionForeground);
244
+ }
245
+
246
+ /* View Container */
247
+ .view-container {
248
+ display: none;
249
+ }
250
+
251
+ .view-container.active {
252
+ display: block;
253
+ }
254
+
255
+ /* Bolts Content */
256
+ .bolts-content {
257
+ min-height: 200px;
258
+ }
259
+
260
+ /* Group Section */
261
+ .group-section {
262
+ border-bottom: 1px solid var(--vscode-input-border);
263
+ }
264
+
265
+ .group-section.hidden {
266
+ display: none;
267
+ }
268
+
269
+ .group-header {
270
+ display: flex;
271
+ align-items: center;
272
+ gap: 8px;
273
+ padding: 8px 12px;
274
+ background: var(--vscode-sideBarSectionHeader-background);
275
+ cursor: pointer;
276
+ transition: background 0.15s;
277
+ user-select: none;
278
+ }
279
+
280
+ .group-header:hover {
281
+ background: var(--vscode-list-hoverBackground);
282
+ }
283
+
284
+ .group-expand {
285
+ font-size: 10px;
286
+ color: var(--vscode-descriptionForeground);
287
+ transition: transform 0.2s;
288
+ }
289
+
290
+ .group-section.collapsed .group-expand {
291
+ transform: rotate(-90deg);
292
+ }
293
+
294
+ .group-indicator {
295
+ width: 10px;
296
+ height: 10px;
297
+ border-radius: 50%;
298
+ }
299
+
300
+ .group-indicator.active {
301
+ background: var(--status-active);
302
+ box-shadow: 0 0 6px rgba(249, 115, 22, 0.5);
303
+ }
304
+
305
+ .group-indicator.complete {
306
+ background: var(--status-complete);
307
+ }
308
+
309
+ .group-indicator.pending {
310
+ background: var(--status-pending);
311
+ }
312
+
313
+ .group-title {
314
+ flex: 1;
315
+ font-size: 10px;
316
+ font-weight: 600;
317
+ text-transform: uppercase;
318
+ }
319
+
320
+ .group-title.active {
321
+ color: var(--status-active);
322
+ }
323
+
324
+ .group-title.complete {
325
+ color: var(--status-complete);
326
+ }
327
+
328
+ .group-count {
329
+ font-size: 9px;
330
+ padding: 2px 8px;
331
+ border-radius: 10px;
332
+ background: var(--vscode-badge-background);
333
+ }
334
+
335
+ .group-content {
336
+ max-height: 2000px;
337
+ overflow: hidden;
338
+ transition: max-height 0.3s ease;
339
+ background: var(--vscode-editor-background);
340
+ }
341
+
342
+ .group-section.collapsed .group-content {
343
+ max-height: 0;
344
+ }
345
+
346
+ /* Bolt Card */
347
+ .bolt-card {
348
+ border-bottom: 1px solid var(--vscode-input-border);
349
+ }
350
+
351
+ .bolt-card.hidden {
352
+ display: none;
353
+ }
354
+
355
+ .bolt-card:last-child {
356
+ border-bottom: none;
357
+ }
358
+
359
+ .bolt-card-header {
360
+ display: flex;
361
+ align-items: center;
362
+ gap: 10px;
363
+ padding: 10px 12px;
364
+ cursor: pointer;
365
+ transition: background 0.15s;
366
+ }
367
+
368
+ .bolt-card-header:hover {
369
+ background: var(--vscode-list-hoverBackground);
370
+ }
371
+
372
+ .bolt-card.expanded .bolt-card-header {
373
+ background: var(--vscode-list-hoverBackground);
374
+ }
375
+
376
+ .bolt-priority {
377
+ width: 20px;
378
+ height: 20px;
379
+ border-radius: 4px;
380
+ display: flex;
381
+ align-items: center;
382
+ justify-content: center;
383
+ font-size: 10px;
384
+ font-weight: 600;
385
+ background: var(--vscode-input-background);
386
+ color: var(--vscode-descriptionForeground);
387
+ }
388
+
389
+ .bolt-priority.p1 {
390
+ background: rgba(249, 115, 22, 0.2);
391
+ color: var(--accent-primary);
392
+ }
393
+
394
+ .bolt-info {
395
+ flex: 1;
396
+ min-width: 0;
397
+ }
398
+
399
+ .bolt-name {
400
+ font-size: 11px;
401
+ font-weight: 500;
402
+ white-space: nowrap;
403
+ overflow: hidden;
404
+ text-overflow: ellipsis;
405
+ }
406
+
407
+ .bolt-meta {
408
+ font-size: 9px;
409
+ color: var(--vscode-descriptionForeground);
410
+ margin-top: 2px;
411
+ display: flex;
412
+ gap: 8px;
413
+ }
414
+
415
+ .bolt-type {
416
+ padding: 1px 4px;
417
+ background: var(--vscode-badge-background);
418
+ border-radius: 2px;
419
+ }
420
+
421
+ .bolt-stages {
422
+ display: flex;
423
+ gap: 2px;
424
+ }
425
+
426
+ .bolt-stage {
427
+ width: 16px;
428
+ height: 16px;
429
+ border-radius: 3px;
430
+ display: flex;
431
+ align-items: center;
432
+ justify-content: center;
433
+ font-size: 8px;
434
+ font-weight: 600;
435
+ cursor: pointer;
436
+ transition: transform 0.15s;
437
+ }
438
+
439
+ .bolt-stage:hover {
440
+ transform: scale(1.2);
441
+ }
442
+
443
+ .bolt-stage.complete {
444
+ background: var(--status-complete);
445
+ color: white;
446
+ }
447
+
448
+ .bolt-stage.active {
449
+ background: var(--status-active);
450
+ color: white;
451
+ }
452
+
453
+ .bolt-stage.pending {
454
+ background: var(--vscode-input-background);
455
+ color: var(--vscode-descriptionForeground);
456
+ }
457
+
458
+ .bolt-expand {
459
+ font-size: 10px;
460
+ color: var(--vscode-descriptionForeground);
461
+ transition: transform 0.2s;
462
+ }
463
+
464
+ .bolt-card.expanded .bolt-expand {
465
+ transform: rotate(180deg);
466
+ }
467
+
468
+ /* Bolt Expanded Content */
469
+ .bolt-card-content {
470
+ max-height: 0;
471
+ overflow: hidden;
472
+ transition: max-height 0.3s ease;
473
+ }
474
+
475
+ .bolt-card.expanded .bolt-card-content {
476
+ max-height: 400px;
477
+ }
478
+
479
+ .bolt-card-inner {
480
+ padding: 12px;
481
+ border-left: 3px solid var(--accent-primary);
482
+ margin-left: 12px;
483
+ }
484
+
485
+ .bolt-stage-row {
486
+ display: flex;
487
+ gap: 4px;
488
+ margin-bottom: 12px;
489
+ }
490
+
491
+ .bolt-stage-item {
492
+ flex: 1;
493
+ padding: 6px 4px;
494
+ text-align: center;
495
+ border-radius: 4px;
496
+ cursor: pointer;
497
+ transition: all 0.15s;
498
+ }
499
+
500
+ .bolt-stage-item:hover {
501
+ transform: translateY(-1px);
502
+ }
503
+
504
+ .bolt-stage-item.complete {
505
+ background: rgba(34, 197, 94, 0.2);
506
+ color: var(--status-complete);
507
+ }
508
+
509
+ .bolt-stage-item.active {
510
+ background: rgba(249, 115, 22, 0.2);
511
+ color: var(--status-active);
512
+ border: 1px solid var(--accent-primary);
513
+ }
514
+
515
+ .bolt-stage-item.pending {
516
+ background: var(--vscode-input-background);
517
+ color: var(--vscode-descriptionForeground);
518
+ }
519
+
520
+ .bolt-stage-icon {
521
+ font-size: 12px;
522
+ }
523
+
524
+ .bolt-stage-name {
525
+ font-size: 8px;
526
+ text-transform: uppercase;
527
+ margin-top: 2px;
528
+ }
529
+
530
+ .bolt-stories-row {
531
+ display: flex;
532
+ justify-content: space-between;
533
+ align-items: center;
534
+ margin-bottom: 8px;
535
+ }
536
+
537
+ .bolt-stories-label {
538
+ font-size: 10px;
539
+ color: var(--vscode-descriptionForeground);
540
+ }
541
+
542
+ .bolt-stories-count {
543
+ font-size: 10px;
544
+ color: var(--status-complete);
545
+ }
546
+
547
+ .bolt-stories-toggle {
548
+ font-size: 9px;
549
+ color: var(--accent-primary);
550
+ background: none;
551
+ border: none;
552
+ cursor: pointer;
553
+ }
554
+
555
+ .bolt-stories-toggle:hover {
556
+ text-decoration: underline;
557
+ }
558
+
559
+ .bolt-stories-list {
560
+ display: flex;
561
+ flex-direction: column;
562
+ gap: 4px;
563
+ margin-bottom: 12px;
564
+ }
565
+
566
+ .bolt-story {
567
+ display: flex;
568
+ align-items: center;
569
+ gap: 8px;
570
+ padding: 6px 10px;
571
+ background: var(--vscode-sideBar-background);
572
+ border-radius: 4px;
573
+ font-size: 10px;
574
+ cursor: pointer;
575
+ transition: background 0.15s;
576
+ }
577
+
578
+ .bolt-story:hover {
579
+ background: var(--vscode-list-hoverBackground);
580
+ }
581
+
582
+ .bolt-story-checkbox {
583
+ width: 14px;
584
+ height: 14px;
585
+ border-radius: 3px;
586
+ border: 2px solid var(--vscode-input-border);
587
+ display: flex;
588
+ align-items: center;
589
+ justify-content: center;
590
+ font-size: 10px;
591
+ flex-shrink: 0;
592
+ }
593
+
594
+ .bolt-story-checkbox.done {
595
+ background: var(--status-complete);
596
+ border-color: var(--status-complete);
597
+ color: white;
598
+ }
599
+
600
+ .bolt-story-name {
601
+ flex: 1;
602
+ }
603
+
604
+ .bolt-story-name.done {
605
+ color: var(--vscode-descriptionForeground);
606
+ }
607
+
608
+ .bolt-actions {
609
+ display: flex;
610
+ gap: 6px;
611
+ }
612
+
613
+ .bolt-btn {
614
+ flex: 1;
615
+ padding: 8px;
616
+ font-size: 10px;
617
+ font-weight: 500;
618
+ border: none;
619
+ border-radius: 4px;
620
+ cursor: pointer;
621
+ transition: all 0.15s;
622
+ }
623
+
624
+ .bolt-btn-primary {
625
+ background: var(--accent-primary);
626
+ color: white;
627
+ }
628
+
629
+ .bolt-btn-primary:hover {
630
+ filter: brightness(1.1);
631
+ }
632
+
633
+ .bolt-btn-secondary {
634
+ background: var(--vscode-input-background);
635
+ color: var(--vscode-editor-foreground);
636
+ border: 1px solid var(--vscode-input-border);
637
+ }
638
+
639
+ .bolt-btn-secondary:hover {
640
+ background: var(--vscode-list-hoverBackground);
641
+ }
642
+
643
+ /* Flat List (No Grouping) */
644
+ .flat-list {
645
+ display: none;
646
+ }
647
+
648
+ .flat-list.visible {
649
+ display: block;
650
+ }
651
+
652
+ .grouped-list.hidden {
653
+ display: none;
654
+ }
655
+
656
+ /* Specs View */
657
+ .specs-content {
658
+ padding: 0;
659
+ }
660
+
661
+ .intent-item {
662
+ border-bottom: 1px solid var(--vscode-input-border);
663
+ }
664
+
665
+ .intent-item.hidden {
666
+ display: none;
667
+ }
668
+
669
+ .intent-header {
670
+ display: flex;
671
+ align-items: center;
672
+ gap: 8px;
673
+ padding: 10px 12px;
674
+ cursor: pointer;
675
+ transition: background 0.15s;
676
+ }
677
+
678
+ .intent-header:hover {
679
+ background: var(--vscode-list-hoverBackground);
680
+ }
681
+
682
+ .intent-expand {
683
+ font-size: 10px;
684
+ color: var(--vscode-descriptionForeground);
685
+ transition: transform 0.2s;
686
+ }
687
+
688
+ .intent-item.collapsed .intent-expand {
689
+ transform: rotate(-90deg);
690
+ }
691
+
692
+ .intent-icon {
693
+ font-size: 14px;
694
+ }
695
+
696
+ .intent-info {
697
+ flex: 1;
698
+ }
699
+
700
+ .intent-name {
701
+ font-size: 12px;
702
+ font-weight: 500;
703
+ }
704
+
705
+ .intent-meta {
706
+ font-size: 10px;
707
+ color: var(--vscode-descriptionForeground);
708
+ margin-top: 2px;
709
+ }
710
+
711
+ .intent-progress {
712
+ display: flex;
713
+ align-items: center;
714
+ gap: 6px;
715
+ }
716
+
717
+ .progress-ring {
718
+ width: 28px;
719
+ height: 28px;
720
+ position: relative;
721
+ }
722
+
723
+ .progress-ring svg {
724
+ transform: rotate(-90deg);
725
+ }
726
+
727
+ .progress-ring-bg {
728
+ fill: none;
729
+ stroke: var(--vscode-input-background);
730
+ stroke-width: 3;
731
+ }
732
+
733
+ .progress-ring-fill {
734
+ fill: none;
735
+ stroke: var(--status-complete);
736
+ stroke-width: 3;
737
+ stroke-linecap: round;
738
+ stroke-dasharray: 69.115;
739
+ transition: stroke-dashoffset 0.3s;
740
+ }
741
+
742
+ .progress-ring-text {
743
+ position: absolute;
744
+ top: 50%;
745
+ left: 50%;
746
+ transform: translate(-50%, -50%);
747
+ font-size: 8px;
748
+ font-weight: 600;
749
+ }
750
+
751
+ .intent-content {
752
+ max-height: 2000px;
753
+ overflow: hidden;
754
+ transition: max-height 0.3s ease;
755
+ background: var(--vscode-editor-background);
756
+ }
757
+
758
+ .intent-item.collapsed .intent-content {
759
+ max-height: 0;
760
+ }
761
+
762
+ /* Intent Card Expanded View */
763
+ .intent-card-inner {
764
+ padding: 16px;
765
+ background: var(--vscode-editor-background);
766
+ border-left: 3px solid var(--accent-primary);
767
+ margin: 0 12px 12px 12px;
768
+ border-radius: 0 8px 8px 0;
769
+ }
770
+
771
+ .intent-card-header-row {
772
+ display: flex;
773
+ align-items: center;
774
+ gap: 16px;
775
+ margin-bottom: 16px;
776
+ }
777
+
778
+ .intent-progress-ring-large {
779
+ width: 64px;
780
+ height: 64px;
781
+ position: relative;
782
+ }
783
+
784
+ .intent-progress-ring-large svg {
785
+ transform: rotate(-90deg);
786
+ }
787
+
788
+ .intent-progress-ring-large .ring-bg {
789
+ fill: none;
790
+ stroke: var(--vscode-input-background);
791
+ stroke-width: 6;
792
+ }
793
+
794
+ .intent-progress-ring-large .ring-fill {
795
+ fill: none;
796
+ stroke: var(--status-complete);
797
+ stroke-width: 6;
798
+ stroke-linecap: round;
799
+ stroke-dasharray: 163.36;
800
+ transition: stroke-dashoffset 0.3s;
801
+ }
802
+
803
+ .intent-progress-ring-large .ring-fill.active {
804
+ stroke: var(--status-active);
805
+ }
806
+
807
+ .intent-progress-text {
808
+ position: absolute;
809
+ top: 50%;
810
+ left: 50%;
811
+ transform: translate(-50%, -50%);
812
+ font-size: 16px;
813
+ font-weight: 600;
814
+ color: var(--accent-primary);
815
+ }
816
+
817
+ .intent-stage-info {
818
+ flex: 1;
819
+ }
820
+
821
+ .intent-stage-title {
822
+ font-size: 13px;
823
+ margin-bottom: 4px;
824
+ }
825
+
826
+ .intent-stage-title span {
827
+ color: var(--accent-primary);
828
+ font-weight: 600;
829
+ }
830
+
831
+ .intent-stage-subtitle {
832
+ font-size: 11px;
833
+ color: var(--vscode-descriptionForeground);
834
+ }
835
+
836
+ .intent-status-badge {
837
+ padding: 4px 10px;
838
+ border-radius: 12px;
839
+ font-size: 10px;
840
+ font-weight: 600;
841
+ text-transform: uppercase;
842
+ }
843
+
844
+ .intent-status-badge.active {
845
+ background: rgba(249, 115, 22, 0.2);
846
+ color: var(--status-active);
847
+ border: 1px solid var(--status-active);
848
+ }
849
+
850
+ .intent-status-badge.complete {
851
+ background: rgba(34, 197, 94, 0.2);
852
+ color: var(--status-complete);
853
+ }
854
+
855
+ .intent-status-badge.pending {
856
+ background: var(--vscode-input-background);
857
+ color: var(--vscode-descriptionForeground);
858
+ }
859
+
860
+ /* Unit Pipeline */
861
+ .unit-pipeline {
862
+ display: flex;
863
+ align-items: center;
864
+ gap: 0;
865
+ margin-bottom: 16px;
866
+ padding: 12px 0;
867
+ }
868
+
869
+ .unit-pipeline-item {
870
+ display: flex;
871
+ flex-direction: column;
872
+ align-items: center;
873
+ flex: 1;
874
+ position: relative;
875
+ }
876
+
877
+ .unit-pipeline-item:not(:last-child)::after {
878
+ content: '';
879
+ position: absolute;
880
+ top: 12px;
881
+ left: 50%;
882
+ width: 100%;
883
+ height: 3px;
884
+ background: var(--vscode-input-background);
885
+ z-index: 0;
886
+ }
887
+
888
+ .unit-pipeline-item.complete:not(:last-child)::after {
889
+ background: var(--status-complete);
890
+ }
891
+
892
+ .unit-pipeline-node {
893
+ width: 24px;
894
+ height: 24px;
895
+ border-radius: 50%;
896
+ display: flex;
897
+ align-items: center;
898
+ justify-content: center;
899
+ font-size: 10px;
900
+ font-weight: 600;
901
+ z-index: 1;
902
+ background: var(--vscode-input-background);
903
+ color: var(--vscode-descriptionForeground);
904
+ }
905
+
906
+ .unit-pipeline-node.complete {
907
+ background: var(--status-complete);
908
+ color: white;
909
+ }
910
+
911
+ .unit-pipeline-node.active {
912
+ background: var(--status-active);
913
+ color: white;
914
+ box-shadow: 0 0 8px rgba(249, 115, 22, 0.5);
915
+ }
916
+
917
+ .unit-pipeline-label {
918
+ font-size: 8px;
919
+ text-transform: uppercase;
920
+ margin-top: 6px;
921
+ color: var(--vscode-descriptionForeground);
922
+ text-align: center;
923
+ max-width: 60px;
924
+ overflow: hidden;
925
+ text-overflow: ellipsis;
926
+ white-space: nowrap;
927
+ }
928
+
929
+ .unit-pipeline-label.active {
930
+ color: var(--status-active);
931
+ }
932
+
933
+ .unit-pipeline-label.complete {
934
+ color: var(--status-complete);
935
+ }
936
+
937
+ /* Stories Section in Intent Card */
938
+ .intent-stories-section {
939
+ margin-bottom: 16px;
940
+ }
941
+
942
+ .intent-stories-header {
943
+ display: flex;
944
+ justify-content: space-between;
945
+ align-items: center;
946
+ margin-bottom: 8px;
947
+ }
948
+
949
+ .intent-stories-title {
950
+ font-size: 11px;
951
+ color: var(--vscode-descriptionForeground);
952
+ }
953
+
954
+ .intent-stories-count {
955
+ font-size: 11px;
956
+ color: var(--vscode-editor-foreground);
957
+ }
958
+
959
+ .intent-stories-list {
960
+ display: flex;
961
+ flex-direction: column;
962
+ gap: 6px;
963
+ max-height: 180px;
964
+ overflow-y: auto;
965
+ }
966
+
967
+ .intent-story-item {
968
+ display: flex;
969
+ align-items: center;
970
+ gap: 10px;
971
+ padding: 8px 12px;
972
+ background: var(--vscode-sideBar-background);
973
+ border-radius: 6px;
974
+ cursor: pointer;
975
+ transition: background 0.15s;
976
+ }
977
+
978
+ .intent-story-item:hover {
979
+ background: var(--vscode-list-hoverBackground);
980
+ }
981
+
982
+ .intent-story-checkbox {
983
+ width: 18px;
984
+ height: 18px;
985
+ border-radius: 4px;
986
+ border: 2px solid var(--vscode-input-border);
987
+ display: flex;
988
+ align-items: center;
989
+ justify-content: center;
990
+ font-size: 12px;
991
+ flex-shrink: 0;
992
+ }
993
+
994
+ .intent-story-checkbox.complete {
995
+ background: var(--status-complete);
996
+ border-color: var(--status-complete);
997
+ color: white;
998
+ }
999
+
1000
+ .intent-story-checkbox.active {
1001
+ border-color: var(--status-active);
1002
+ color: var(--status-active);
1003
+ }
1004
+
1005
+ .intent-story-name {
1006
+ flex: 1;
1007
+ font-size: 11px;
1008
+ }
1009
+
1010
+ .intent-story-name.complete {
1011
+ color: var(--vscode-descriptionForeground);
1012
+ text-decoration: line-through;
1013
+ }
1014
+
1015
+ /* Intent Card Actions */
1016
+ .intent-card-actions {
1017
+ display: flex;
1018
+ gap: 8px;
1019
+ }
1020
+
1021
+ .intent-btn {
1022
+ flex: 1;
1023
+ padding: 10px 16px;
1024
+ font-size: 11px;
1025
+ font-weight: 500;
1026
+ border: none;
1027
+ border-radius: 6px;
1028
+ cursor: pointer;
1029
+ transition: all 0.15s;
1030
+ display: flex;
1031
+ align-items: center;
1032
+ justify-content: center;
1033
+ gap: 6px;
1034
+ }
1035
+
1036
+ .intent-btn-primary {
1037
+ background: var(--accent-primary);
1038
+ color: white;
1039
+ }
1040
+
1041
+ .intent-btn-primary:hover {
1042
+ filter: brightness(1.1);
1043
+ }
1044
+
1045
+ .intent-btn-secondary {
1046
+ background: var(--vscode-input-background);
1047
+ color: var(--vscode-editor-foreground);
1048
+ border: 1px solid var(--vscode-input-border);
1049
+ }
1050
+
1051
+ .intent-btn-secondary:hover {
1052
+ background: var(--vscode-list-hoverBackground);
1053
+ }
1054
+
1055
+ .intent-btn-success {
1056
+ background: var(--status-complete);
1057
+ color: white;
1058
+ }
1059
+
1060
+ .intent-btn-success:hover {
1061
+ filter: brightness(1.1);
1062
+ }
1063
+
1064
+ .unit-item {
1065
+ border-bottom: 1px solid var(--vscode-input-border);
1066
+ }
1067
+
1068
+ .unit-header {
1069
+ display: flex;
1070
+ align-items: center;
1071
+ gap: 8px;
1072
+ padding: 8px 12px 8px 28px;
1073
+ cursor: pointer;
1074
+ transition: background 0.15s;
1075
+ }
1076
+
1077
+ .unit-header:hover {
1078
+ background: var(--vscode-list-hoverBackground);
1079
+ }
1080
+
1081
+ .unit-expand {
1082
+ font-size: 10px;
1083
+ color: var(--vscode-descriptionForeground);
1084
+ transition: transform 0.2s;
1085
+ }
1086
+
1087
+ .unit-item.collapsed .unit-expand {
1088
+ transform: rotate(-90deg);
1089
+ }
1090
+
1091
+ .unit-name {
1092
+ flex: 1;
1093
+ font-size: 11px;
1094
+ }
1095
+
1096
+ .unit-progress {
1097
+ font-size: 9px;
1098
+ color: var(--vscode-descriptionForeground);
1099
+ }
1100
+
1101
+ .unit-content {
1102
+ max-height: 1000px;
1103
+ overflow: hidden;
1104
+ transition: max-height 0.3s ease;
1105
+ }
1106
+
1107
+ .unit-item.collapsed .unit-content {
1108
+ max-height: 0;
1109
+ }
1110
+
1111
+ .story-item {
1112
+ display: flex;
1113
+ align-items: center;
1114
+ gap: 8px;
1115
+ padding: 6px 12px 6px 44px;
1116
+ cursor: pointer;
1117
+ transition: background 0.15s;
1118
+ }
1119
+
1120
+ .story-item:hover {
1121
+ background: var(--vscode-list-hoverBackground);
1122
+ }
1123
+
1124
+ .story-item.hidden {
1125
+ display: none;
1126
+ }
1127
+
1128
+ .story-expand {
1129
+ font-size: 8px;
1130
+ color: var(--vscode-descriptionForeground);
1131
+ transition: transform 0.2s;
1132
+ }
1133
+
1134
+ .story-item.expanded .story-expand {
1135
+ transform: rotate(90deg);
1136
+ }
1137
+
1138
+ .story-status {
1139
+ width: 12px;
1140
+ height: 12px;
1141
+ border-radius: 50%;
1142
+ border: 2px solid var(--vscode-input-border);
1143
+ display: flex;
1144
+ align-items: center;
1145
+ justify-content: center;
1146
+ font-size: 8px;
1147
+ }
1148
+
1149
+ .story-status.complete {
1150
+ background: var(--status-complete);
1151
+ border-color: var(--status-complete);
1152
+ color: white;
1153
+ }
1154
+
1155
+ .story-status.active {
1156
+ background: var(--status-active);
1157
+ border-color: var(--status-active);
1158
+ color: white;
1159
+ }
1160
+
1161
+ .story-name {
1162
+ flex: 1;
1163
+ font-size: 11px;
1164
+ }
1165
+
1166
+ .story-name.complete {
1167
+ color: var(--vscode-descriptionForeground);
1168
+ }
1169
+
1170
+ .story-details {
1171
+ max-height: 0;
1172
+ overflow: hidden;
1173
+ transition: max-height 0.2s ease;
1174
+ background: var(--vscode-sideBar-background);
1175
+ margin-left: 44px;
1176
+ border-radius: 4px;
1177
+ }
1178
+
1179
+ .story-details.visible {
1180
+ max-height: 150px;
1181
+ padding: 8px 10px;
1182
+ margin-bottom: 4px;
1183
+ }
1184
+
1185
+ .story-detail-row {
1186
+ display: flex;
1187
+ gap: 8px;
1188
+ font-size: 10px;
1189
+ margin-bottom: 4px;
1190
+ }
1191
+
1192
+ .detail-label {
1193
+ color: var(--vscode-descriptionForeground);
1194
+ min-width: 50px;
1195
+ }
1196
+
1197
+ .detail-value {
1198
+ color: var(--vscode-editor-foreground);
1199
+ }
1200
+
1201
+ .detail-value.status-complete {
1202
+ color: var(--status-complete);
1203
+ }
1204
+
1205
+ .detail-value.status-active {
1206
+ color: var(--status-active);
1207
+ }
1208
+
1209
+ .detail-value.status-pending {
1210
+ color: var(--vscode-descriptionForeground);
1211
+ }
1212
+
1213
+ .story-actions {
1214
+ display: flex;
1215
+ gap: 6px;
1216
+ margin-top: 8px;
1217
+ }
1218
+
1219
+ .story-btn {
1220
+ padding: 4px 8px;
1221
+ font-size: 9px;
1222
+ background: var(--vscode-input-background);
1223
+ border: 1px solid var(--vscode-input-border);
1224
+ color: var(--vscode-editor-foreground);
1225
+ border-radius: 3px;
1226
+ cursor: pointer;
1227
+ }
1228
+
1229
+ .story-btn:hover {
1230
+ background: var(--vscode-list-hoverBackground);
1231
+ }
1232
+
1233
+ /* Dashboard Content */
1234
+ .dashboard-content {
1235
+ padding: 16px 12px;
1236
+ }
1237
+
1238
+ .metrics-title {
1239
+ font-size: 9px;
1240
+ text-transform: uppercase;
1241
+ color: var(--vscode-descriptionForeground);
1242
+ margin-bottom: 8px;
1243
+ letter-spacing: 0.5px;
1244
+ }
1245
+
1246
+ .metrics-grid {
1247
+ display: grid;
1248
+ grid-template-columns: repeat(3, 1fr);
1249
+ gap: 8px;
1250
+ }
1251
+
1252
+ .metric-item {
1253
+ text-align: center;
1254
+ padding: 8px 4px;
1255
+ background: var(--vscode-editor-background);
1256
+ border-radius: 4px;
1257
+ }
1258
+
1259
+ .metric-value {
1260
+ font-size: 16px;
1261
+ font-weight: 600;
1262
+ color: var(--vscode-editor-foreground);
1263
+ }
1264
+
1265
+ .metric-value.highlight {
1266
+ color: var(--accent-primary);
1267
+ }
1268
+
1269
+ .metric-value.green {
1270
+ color: var(--status-complete);
1271
+ }
1272
+
1273
+ .metric-value.blue {
1274
+ color: #3b82f6;
1275
+ }
1276
+
1277
+ .metric-label {
1278
+ font-size: 9px;
1279
+ color: var(--vscode-descriptionForeground);
1280
+ margin-top: 2px;
1281
+ }
1282
+
1283
+ /* Theme Toggle */
1284
+ .theme-toggle {
1285
+ padding: 8px 12px;
1286
+ background: var(--vscode-editor-background);
1287
+ border-top: 1px solid var(--vscode-input-border);
1288
+ display: flex;
1289
+ gap: 8px;
1290
+ position: absolute;
1291
+ bottom: 0;
1292
+ left: 0;
1293
+ right: 0;
1294
+ }
1295
+
1296
+ .theme-btn {
1297
+ flex: 1;
1298
+ padding: 6px;
1299
+ font-size: 10px;
1300
+ border: 1px solid var(--vscode-input-border);
1301
+ background: var(--vscode-input-background);
1302
+ color: var(--vscode-editor-foreground);
1303
+ border-radius: 4px;
1304
+ cursor: pointer;
1305
+ }
1306
+
1307
+ .theme-btn.active {
1308
+ background: var(--accent-primary);
1309
+ border-color: var(--accent-primary);
1310
+ color: white;
1311
+ }
1312
+
1313
+ /* Empty State */
1314
+ .empty-state {
1315
+ padding: 24px;
1316
+ text-align: center;
1317
+ color: var(--vscode-descriptionForeground);
1318
+ font-size: 11px;
1319
+ }
1320
+
1321
+ /* File List Styles */
1322
+ .files-section {
1323
+ margin-top: 8px;
1324
+ margin-bottom: 12px;
1325
+ }
1326
+
1327
+ .files-header {
1328
+ display: flex;
1329
+ align-items: center;
1330
+ justify-content: space-between;
1331
+ margin-bottom: 6px;
1332
+ }
1333
+
1334
+ .files-label {
1335
+ font-size: 10px;
1336
+ color: var(--vscode-descriptionForeground);
1337
+ }
1338
+
1339
+ .files-toggle {
1340
+ font-size: 9px;
1341
+ color: var(--accent-primary);
1342
+ background: none;
1343
+ border: none;
1344
+ cursor: pointer;
1345
+ }
1346
+
1347
+ .files-toggle:hover {
1348
+ text-decoration: underline;
1349
+ }
1350
+
1351
+ .files-list {
1352
+ display: flex;
1353
+ flex-direction: column;
1354
+ gap: 3px;
1355
+ max-height: 0;
1356
+ overflow: hidden;
1357
+ transition: max-height 0.2s ease;
1358
+ }
1359
+
1360
+ .files-list.visible {
1361
+ max-height: 200px;
1362
+ }
1363
+
1364
+ .file-item {
1365
+ display: flex;
1366
+ align-items: center;
1367
+ gap: 6px;
1368
+ padding: 4px 8px;
1369
+ background: var(--vscode-sideBar-background);
1370
+ border-radius: 3px;
1371
+ font-size: 10px;
1372
+ cursor: pointer;
1373
+ transition: all 0.15s;
1374
+ }
1375
+
1376
+ .file-item:hover {
1377
+ background: var(--vscode-list-hoverBackground);
1378
+ }
1379
+
1380
+ .file-item.missing {
1381
+ opacity: 0.4;
1382
+ cursor: not-allowed;
1383
+ }
1384
+
1385
+ .file-icon {
1386
+ font-size: 12px;
1387
+ }
1388
+
1389
+ .file-icon.md { color: #519aba; }
1390
+ .file-icon.missing { color: var(--vscode-descriptionForeground); }
1391
+
1392
+ .file-name {
1393
+ flex: 1;
1394
+ }
1395
+
1396
+ .file-status {
1397
+ font-size: 8px;
1398
+ padding: 1px 4px;
1399
+ border-radius: 2px;
1400
+ }
1401
+
1402
+ .file-status.exists {
1403
+ background: rgba(34, 197, 94, 0.2);
1404
+ color: var(--status-complete);
1405
+ }
1406
+
1407
+ .file-status.pending {
1408
+ background: var(--vscode-input-background);
1409
+ color: var(--vscode-descriptionForeground);
1410
+ }
1411
+
1412
+ /* Intent/Unit File Icons */
1413
+ .spec-files-btn {
1414
+ font-size: 10px;
1415
+ color: var(--vscode-descriptionForeground);
1416
+ background: none;
1417
+ border: none;
1418
+ cursor: pointer;
1419
+ padding: 2px 4px;
1420
+ border-radius: 3px;
1421
+ }
1422
+
1423
+ .spec-files-btn:hover {
1424
+ background: var(--vscode-list-hoverBackground);
1425
+ color: var(--accent-primary);
1426
+ }
1427
+ </style>
1428
+ </head>
1429
+ <body>
1430
+ <div class="sidebar" id="sidebar">
1431
+ <div class="header">
1432
+ <span class="header-title">SpecsMD</span>
1433
+ <div class="header-actions">
1434
+ <button type="button" class="icon-btn" title="Refresh" onclick="renderBolts()">&#8635;</button>
1435
+ <button type="button" class="icon-btn" title="Settings">&#9881;</button>
1436
+ </div>
1437
+ </div>
1438
+
1439
+ <!-- Main View Tabs -->
1440
+ <div class="view-tabs">
1441
+ <button type="button" class="view-tab" id="specs-tab" onclick="switchView('specs')">
1442
+ &#128203; Specs
1443
+ </button>
1444
+ <button type="button" class="view-tab active" id="bolts-tab" onclick="switchView('bolts')">
1445
+ &#9889; Bolts
1446
+ </button>
1447
+ <button type="button" class="view-tab" id="dashboard-tab" onclick="switchView('dashboard')">
1448
+ &#128202; Dashboard
1449
+ </button>
1450
+ </div>
1451
+
1452
+ <!-- =========== SPECS VIEW =========== -->
1453
+ <div class="view-container" id="specs-view">
1454
+ <div class="toolbar">
1455
+ <div class="toolbar-row">
1456
+ <span class="toolbar-label">Filter</span>
1457
+ <select class="toolbar-select" id="specs-filter" aria-label="Filter status" onchange="filterSpecs()">
1458
+ <option value="all">All Status</option>
1459
+ <option value="active">In Progress</option>
1460
+ <option value="complete">Completed</option>
1461
+ <option value="pending">Not Started</option>
1462
+ </select>
1463
+ </div>
1464
+ </div>
1465
+ <div class="specs-content" id="specs-content">
1466
+ <!-- Will be rendered by JS -->
1467
+ </div>
1468
+ </div>
1469
+
1470
+ <!-- =========== BOLTS VIEW =========== -->
1471
+ <div class="view-container active" id="bolts-view">
1472
+ <div class="toolbar">
1473
+ <div class="toolbar-row">
1474
+ <span class="toolbar-label">Filter</span>
1475
+ <select class="toolbar-select" id="intent-filter" aria-label="Filter intent" onchange="filterBolts()">
1476
+ <option value="all">All Intents</option>
1477
+ </select>
1478
+ <select class="toolbar-select" id="status-filter" aria-label="Filter status" onchange="filterBolts()">
1479
+ <option value="all">All Status</option>
1480
+ <option value="active">In Progress</option>
1481
+ <option value="complete">Completed</option>
1482
+ <option value="pending">Backlog</option>
1483
+ </select>
1484
+ </div>
1485
+ <div class="toolbar-row">
1486
+ <span class="toolbar-label">Group</span>
1487
+ <div class="group-by-buttons">
1488
+ <button type="button" class="group-btn active" data-group="state" onclick="setGroupBy('state')">State</button>
1489
+ <button type="button" class="group-btn" data-group="intent" onclick="setGroupBy('intent')">Intent</button>
1490
+ <button type="button" class="group-btn" data-group="type" onclick="setGroupBy('type')">Type</button>
1491
+ <button type="button" class="group-btn" data-group="none" onclick="setGroupBy('none')">None</button>
1492
+ </div>
1493
+ </div>
1494
+ </div>
1495
+
1496
+ <div class="summary-bar" id="summary-bar">
1497
+ <!-- Will be rendered by JS -->
1498
+ </div>
1499
+
1500
+ <div class="bolts-content" id="bolts-content">
1501
+ <!-- Will be rendered by JS -->
1502
+ </div>
1503
+ </div>
1504
+
1505
+ <!-- =========== DASHBOARD VIEW =========== -->
1506
+ <div class="view-container" id="dashboard-view">
1507
+ <div class="dashboard-content">
1508
+ <div class="metrics-title">Overall Progress</div>
1509
+ <div class="metrics-grid">
1510
+ <div class="metric-item">
1511
+ <div class="metric-value green" id="metric-intents">1/2</div>
1512
+ <div class="metric-label">Intents</div>
1513
+ </div>
1514
+ <div class="metric-item">
1515
+ <div class="metric-value blue" id="metric-bolts">3/10</div>
1516
+ <div class="metric-label">Bolts</div>
1517
+ </div>
1518
+ <div class="metric-item">
1519
+ <div class="metric-value highlight" id="metric-complete">27%</div>
1520
+ <div class="metric-label">Complete</div>
1521
+ </div>
1522
+ </div>
1523
+ </div>
1524
+ </div>
1525
+
1526
+ <div class="theme-toggle">
1527
+ <button type="button" class="theme-btn active" onclick="setTheme('dark')">Dark</button>
1528
+ <button type="button" class="theme-btn" onclick="setTheme('light')">Light</button>
1529
+ </div>
1530
+ </div>
1531
+
1532
+ <script>
1533
+ // ==================== DATA MODEL ====================
1534
+ const intents = [
1535
+ { id: 'intent-1', name: '001-admin-panel', units: ['unit-1', 'unit-2', 'unit-3'] },
1536
+ { id: 'intent-2', name: '002-api-gateway', units: ['unit-4', 'unit-5', 'unit-6'] }
1537
+ ];
1538
+
1539
+ const units = [
1540
+ { id: 'unit-1', name: 'user-management', intentId: 'intent-1', stories: ['story-1', 'story-2', 'story-3', 'story-4'] },
1541
+ { id: 'unit-2', name: 'role-permissions', intentId: 'intent-1', stories: ['story-5', 'story-6', 'story-7', 'story-8', 'story-9', 'story-10'] },
1542
+ { id: 'unit-3', name: 'audit-logging', intentId: 'intent-1', stories: ['story-11', 'story-12', 'story-13', 'story-14'] },
1543
+ { id: 'unit-4', name: 'rate-limiting', intentId: 'intent-2', stories: ['story-15', 'story-16', 'story-17'] },
1544
+ { id: 'unit-5', name: 'authentication', intentId: 'intent-2', stories: ['story-18', 'story-19', 'story-20', 'story-21'] },
1545
+ { id: 'unit-6', name: 'request-routing', intentId: 'intent-2', stories: ['story-22', 'story-23', 'story-24'] }
1546
+ ];
1547
+
1548
+ const stories = [
1549
+ { id: 'story-1', name: '001-create-user', unitId: 'unit-1', status: 'complete' },
1550
+ { id: 'story-2', name: '002-view-user-list', unitId: 'unit-1', status: 'complete' },
1551
+ { id: 'story-3', name: '003-update-user', unitId: 'unit-1', status: 'pending' },
1552
+ { id: 'story-4', name: '004-delete-user', unitId: 'unit-1', status: 'pending' },
1553
+ { id: 'story-5', name: '001-create-role', unitId: 'unit-2', status: 'complete' },
1554
+ { id: 'story-6', name: '002-manage-permissions', unitId: 'unit-2', status: 'complete' },
1555
+ { id: 'story-7', name: '003-view-roles', unitId: 'unit-2', status: 'complete' },
1556
+ { id: 'story-8', name: '004-delete-role', unitId: 'unit-2', status: 'complete' },
1557
+ { id: 'story-9', name: '005-view-role-users', unitId: 'unit-2', status: 'complete' },
1558
+ { id: 'story-10', name: '006-effective-permissions', unitId: 'unit-2', status: 'complete' },
1559
+ { id: 'story-11', name: '001-log-actions', unitId: 'unit-3', status: 'pending' },
1560
+ { id: 'story-12', name: '002-view-audit-log', unitId: 'unit-3', status: 'pending' },
1561
+ { id: 'story-13', name: '003-filter-logs', unitId: 'unit-3', status: 'pending' },
1562
+ { id: 'story-14', name: '004-export-logs', unitId: 'unit-3', status: 'pending' },
1563
+ { id: 'story-15', name: '001-configure-limits', unitId: 'unit-4', status: 'complete' },
1564
+ { id: 'story-16', name: '002-throttle-requests', unitId: 'unit-4', status: 'active' },
1565
+ { id: 'story-17', name: '003-burst-handling', unitId: 'unit-4', status: 'pending' },
1566
+ { id: 'story-18', name: '001-jwt-validation', unitId: 'unit-5', status: 'complete' },
1567
+ { id: 'story-19', name: '002-api-key-auth', unitId: 'unit-5', status: 'complete' },
1568
+ { id: 'story-20', name: '003-oauth-integration', unitId: 'unit-5', status: 'active' },
1569
+ { id: 'story-21', name: '004-token-refresh', unitId: 'unit-5', status: 'pending' },
1570
+ { id: 'story-22', name: '001-path-routing', unitId: 'unit-6', status: 'pending' },
1571
+ { id: 'story-23', name: '002-load-balancing', unitId: 'unit-6', status: 'pending' },
1572
+ { id: 'story-24', name: '003-service-discovery', unitId: 'unit-6', status: 'pending' }
1573
+ ];
1574
+
1575
+ // File templates by artifact type
1576
+ const fileTemplates = {
1577
+ intent: ['requirements.md', 'system-context.md', 'units.md', 'inception-log.md'],
1578
+ unit: ['unit-brief.md', 'construction-log.md'],
1579
+ story: (storyName) => [`${storyName}.md`],
1580
+ bolt: {
1581
+ 'DDD': ['bolt.md', 'ddd-01-domain-model.md', 'ddd-02-technical-design.md', 'ddd-03-test-report.md'],
1582
+ 'Simple': ['bolt.md', 'implementation-plan.md', 'implementation-walkthrough.md', 'test-walkthrough.md']
1583
+ }
1584
+ };
1585
+
1586
+ // Function to get files for a bolt based on its type and stage completion
1587
+ function getBoltFiles(bolt) {
1588
+ const baseFiles = fileTemplates.bolt[bolt.type] || fileTemplates.bolt['Simple'];
1589
+ const stageToFile = {
1590
+ 'DDD': { model: 'ddd-01-domain-model.md', design: 'ddd-02-technical-design.md', test: 'ddd-03-test-report.md' },
1591
+ 'Simple': { model: 'implementation-plan.md', implement: 'implementation-walkthrough.md', test: 'test-walkthrough.md' }
1592
+ };
1593
+
1594
+ return baseFiles.map(file => {
1595
+ const mapping = stageToFile[bolt.type];
1596
+ let exists = file === 'bolt.md'; // bolt.md always exists
1597
+
1598
+ for (const [stage, stageFile] of Object.entries(mapping || {})) {
1599
+ if (file === stageFile && (bolt.stages[stage] === 'complete' || bolt.stages[stage] === 'active')) {
1600
+ exists = true;
1601
+ break;
1602
+ }
1603
+ }
1604
+
1605
+ return { name: file, exists };
1606
+ });
1607
+ }
1608
+
1609
+ const bolts = [
1610
+ {
1611
+ id: 'bolt-1',
1612
+ name: 'user-management-service-1',
1613
+ type: 'DDD',
1614
+ intentId: 'intent-1',
1615
+ status: 'active',
1616
+ stages: { model: 'complete', design: 'active', adr: 'pending', implement: 'pending', test: 'pending' },
1617
+ stories: [
1618
+ { name: '001-create-user', done: true },
1619
+ { name: '002-view-user-list', done: true },
1620
+ { name: '003-update-user', done: false },
1621
+ { name: '004-delete-user', done: false }
1622
+ ]
1623
+ },
1624
+ {
1625
+ id: 'bolt-2',
1626
+ name: 'role-permission-service-1',
1627
+ type: 'DDD',
1628
+ intentId: 'intent-1',
1629
+ status: 'complete',
1630
+ stages: { model: 'complete', design: 'complete', adr: 'complete', implement: 'complete', test: 'complete' },
1631
+ stories: [
1632
+ { name: '001-create-role', done: true },
1633
+ { name: '002-manage-permissions', done: true },
1634
+ { name: '003-view-roles', done: true },
1635
+ { name: '004-delete-role', done: true },
1636
+ { name: '005-view-role-users', done: true },
1637
+ { name: '006-effective-permissions', done: true }
1638
+ ]
1639
+ },
1640
+ {
1641
+ id: 'bolt-3',
1642
+ name: 'admin-panel-ui-1',
1643
+ type: 'Simple',
1644
+ intentId: 'intent-1',
1645
+ status: 'pending',
1646
+ stages: { model: 'pending', design: 'pending', adr: 'pending', implement: 'pending', test: 'pending' },
1647
+ stories: [
1648
+ { name: '001-panel-layout', done: false },
1649
+ { name: '002-navigation', done: false },
1650
+ { name: '003-dashboard', done: false },
1651
+ { name: '004-settings', done: false }
1652
+ ]
1653
+ },
1654
+ {
1655
+ id: 'bolt-4',
1656
+ name: 'admin-panel-ui-2',
1657
+ type: 'Simple',
1658
+ intentId: 'intent-1',
1659
+ status: 'pending',
1660
+ stages: { model: 'pending', design: 'pending', adr: 'pending', implement: 'pending', test: 'pending' },
1661
+ stories: [
1662
+ { name: '001-user-table', done: false },
1663
+ { name: '002-role-table', done: false },
1664
+ { name: '003-forms', done: false },
1665
+ { name: '004-modals', done: false }
1666
+ ]
1667
+ },
1668
+ {
1669
+ id: 'bolt-5',
1670
+ name: 'audit-service-1',
1671
+ type: 'DDD',
1672
+ intentId: 'intent-1',
1673
+ status: 'pending',
1674
+ stages: { model: 'pending', design: 'pending', adr: 'pending', implement: 'pending', test: 'pending' },
1675
+ stories: [
1676
+ { name: '001-log-actions', done: false },
1677
+ { name: '002-query-logs', done: false }
1678
+ ]
1679
+ },
1680
+ {
1681
+ id: 'bolt-6',
1682
+ name: 'user-management-service-2',
1683
+ type: 'DDD',
1684
+ intentId: 'intent-1',
1685
+ status: 'pending',
1686
+ stages: { model: 'pending', design: 'pending', adr: 'pending', implement: 'pending', test: 'pending' },
1687
+ stories: [
1688
+ { name: '001-bulk-create', done: false },
1689
+ { name: '002-bulk-delete', done: false },
1690
+ { name: '003-import-export', done: false },
1691
+ { name: '004-user-search', done: false }
1692
+ ]
1693
+ },
1694
+ // Intent 2: API Gateway Bolts
1695
+ {
1696
+ id: 'bolt-7',
1697
+ name: 'rate-limiter-service-1',
1698
+ type: 'DDD',
1699
+ intentId: 'intent-2',
1700
+ status: 'complete',
1701
+ stages: { model: 'complete', design: 'complete', adr: 'complete', implement: 'complete', test: 'complete' },
1702
+ stories: [
1703
+ { name: '001-configure-limits', done: true },
1704
+ { name: '002-throttle-requests', done: true },
1705
+ { name: '003-burst-handling', done: true }
1706
+ ]
1707
+ },
1708
+ {
1709
+ id: 'bolt-8',
1710
+ name: 'auth-gateway-1',
1711
+ type: 'DDD',
1712
+ intentId: 'intent-2',
1713
+ status: 'active',
1714
+ stages: { model: 'complete', design: 'complete', adr: 'active', implement: 'pending', test: 'pending' },
1715
+ stories: [
1716
+ { name: '001-jwt-validation', done: true },
1717
+ { name: '002-api-key-auth', done: true },
1718
+ { name: '003-oauth-integration', done: false },
1719
+ { name: '004-token-refresh', done: false }
1720
+ ]
1721
+ },
1722
+ {
1723
+ id: 'bolt-9',
1724
+ name: 'router-service-1',
1725
+ type: 'Simple',
1726
+ intentId: 'intent-2',
1727
+ status: 'pending',
1728
+ stages: { model: 'pending', design: 'pending', adr: 'pending', implement: 'pending', test: 'pending' },
1729
+ stories: [
1730
+ { name: '001-path-routing', done: false },
1731
+ { name: '002-load-balancing', done: false },
1732
+ { name: '003-service-discovery', done: false }
1733
+ ]
1734
+ },
1735
+ {
1736
+ id: 'bolt-10',
1737
+ name: 'gateway-ui-1',
1738
+ type: 'Simple',
1739
+ intentId: 'intent-2',
1740
+ status: 'pending',
1741
+ stages: { model: 'pending', design: 'pending', adr: 'pending', implement: 'pending', test: 'pending' },
1742
+ stories: [
1743
+ { name: '001-dashboard', done: false },
1744
+ { name: '002-route-editor', done: false },
1745
+ { name: '003-metrics-view', done: false }
1746
+ ]
1747
+ }
1748
+ ];
1749
+
1750
+ // ==================== STATE ====================
1751
+ let currentGroupBy = 'state';
1752
+ let currentIntentFilter = 'all';
1753
+ let currentStatusFilter = 'all';
1754
+ let currentSpecsFilter = 'all';
1755
+ let expandedBoltId = 'bolt-1';
1756
+ let expandedIntentId = 'intent-1';
1757
+ let expandedUnitIds = ['unit-1'];
1758
+ let expandedStoryId = null;
1759
+ let collapsedGroups = [];
1760
+
1761
+ // ==================== RENDER FUNCTIONS ====================
1762
+
1763
+ function renderSummary() {
1764
+ const activeCount = bolts.filter(b => b.status === 'active').length;
1765
+ const completeCount = bolts.filter(b => b.status === 'complete').length;
1766
+ const pendingCount = bolts.filter(b => b.status === 'pending').length;
1767
+
1768
+ document.getElementById('summary-bar').innerHTML = `
1769
+ <div class="summary-item ${currentStatusFilter === 'active' ? 'active' : ''}" onclick="quickFilterStatus('active')">
1770
+ <div class="summary-dot active"></div>
1771
+ <span class="summary-value">${activeCount}</span>
1772
+ <span class="summary-label">Active</span>
1773
+ </div>
1774
+ <div class="summary-item ${currentStatusFilter === 'complete' ? 'active' : ''}" onclick="quickFilterStatus('complete')">
1775
+ <div class="summary-dot complete"></div>
1776
+ <span class="summary-value">${completeCount}</span>
1777
+ <span class="summary-label">Done</span>
1778
+ </div>
1779
+ <div class="summary-item ${currentStatusFilter === 'pending' ? 'active' : ''}" onclick="quickFilterStatus('pending')">
1780
+ <div class="summary-dot pending"></div>
1781
+ <span class="summary-value">${pendingCount}</span>
1782
+ <span class="summary-label">Backlog</span>
1783
+ </div>
1784
+ `;
1785
+ }
1786
+
1787
+ function renderBolts() {
1788
+ const container = document.getElementById('bolts-content');
1789
+ let filteredBolts = [...bolts];
1790
+
1791
+ // Apply filters
1792
+ if (currentIntentFilter !== 'all') {
1793
+ filteredBolts = filteredBolts.filter(b => b.intentId === currentIntentFilter);
1794
+ }
1795
+ if (currentStatusFilter !== 'all') {
1796
+ filteredBolts = filteredBolts.filter(b => b.status === currentStatusFilter);
1797
+ }
1798
+
1799
+ if (currentGroupBy === 'none') {
1800
+ container.innerHTML = renderFlatList(filteredBolts);
1801
+ } else {
1802
+ container.innerHTML = renderGroupedList(filteredBolts);
1803
+ }
1804
+
1805
+ renderSummary();
1806
+ populateIntentFilter();
1807
+ }
1808
+
1809
+ function renderFlatList(boltList) {
1810
+ if (boltList.length === 0) {
1811
+ return '<div class="empty-state">No bolts match your filters</div>';
1812
+ }
1813
+
1814
+ let priority = 1;
1815
+ return boltList.map(bolt => renderBoltCard(bolt, priority++)).join('');
1816
+ }
1817
+
1818
+ function renderGroupedList(boltList) {
1819
+ let groups = {};
1820
+
1821
+ if (currentGroupBy === 'state') {
1822
+ groups = {
1823
+ active: { title: 'In Progress', indicator: 'active', bolts: boltList.filter(b => b.status === 'active') },
1824
+ complete: { title: 'Completed', indicator: 'complete', bolts: boltList.filter(b => b.status === 'complete') },
1825
+ pending: { title: 'Backlog', indicator: 'pending', bolts: boltList.filter(b => b.status === 'pending') }
1826
+ };
1827
+ } else if (currentGroupBy === 'intent') {
1828
+ intents.forEach(intent => {
1829
+ groups[intent.id] = {
1830
+ title: intent.name,
1831
+ indicator: 'pending',
1832
+ bolts: boltList.filter(b => b.intentId === intent.id)
1833
+ };
1834
+ });
1835
+ } else if (currentGroupBy === 'type') {
1836
+ groups = {
1837
+ DDD: { title: 'DDD Bolts', indicator: 'active', bolts: boltList.filter(b => b.type === 'DDD') },
1838
+ Simple: { title: 'Simple Bolts', indicator: 'pending', bolts: boltList.filter(b => b.type === 'Simple') }
1839
+ };
1840
+ }
1841
+
1842
+ let html = '';
1843
+ let globalPriority = 1;
1844
+
1845
+ for (const [key, group] of Object.entries(groups)) {
1846
+ if (group.bolts.length === 0) continue;
1847
+
1848
+ const isCollapsed = collapsedGroups.includes(key);
1849
+ html += `
1850
+ <div class="group-section ${isCollapsed ? 'collapsed' : ''}" id="group-${key}">
1851
+ <div class="group-header" onclick="toggleGroup('${key}')">
1852
+ <span class="group-expand">&#9660;</span>
1853
+ <div class="group-indicator ${group.indicator}"></div>
1854
+ <span class="group-title ${group.indicator}">${group.title}</span>
1855
+ <span class="group-count">${group.bolts.length}</span>
1856
+ </div>
1857
+ <div class="group-content">
1858
+ ${group.bolts.map(bolt => renderBoltCard(bolt, globalPriority++)).join('')}
1859
+ </div>
1860
+ </div>
1861
+ `;
1862
+ }
1863
+
1864
+ return html || '<div class="empty-state">No bolts match your filters</div>';
1865
+ }
1866
+
1867
+ function renderBoltCard(bolt, priority) {
1868
+ const isExpanded = bolt.id === expandedBoltId;
1869
+ const doneStories = bolt.stories.filter(s => s.done).length;
1870
+ const totalStories = bolt.stories.length;
1871
+
1872
+ const stageIcons = { model: 'M', design: 'D', adr: 'A', implement: 'I', test: 'T' };
1873
+ const stageNames = { model: 'Model', design: 'Design', adr: 'ADR', implement: 'Impl', test: 'Test' };
1874
+
1875
+ const stagesHtml = Object.entries(bolt.stages).map(([stage, status]) => `
1876
+ <div class="bolt-stage ${status}" title="${stageNames[stage]}: ${status}">${stageIcons[stage]}</div>
1877
+ `).join('');
1878
+
1879
+ const stageDetailHtml = Object.entries(bolt.stages).map(([stage, status]) => `
1880
+ <div class="bolt-stage-item ${status}">
1881
+ <div class="bolt-stage-icon">${status === 'complete' ? '&#10003;' : status === 'active' ? '&#9679;' : '&#9675;'}</div>
1882
+ <div class="bolt-stage-name">${stageNames[stage]}</div>
1883
+ </div>
1884
+ `).join('');
1885
+
1886
+ const storiesHtml = bolt.stories.map(s => `
1887
+ <div class="bolt-story" onclick="event.stopPropagation()">
1888
+ <div class="bolt-story-checkbox ${s.done ? 'done' : ''}">${s.done ? '&#10003;' : ''}</div>
1889
+ <span class="bolt-story-name ${s.done ? 'done' : ''}">${s.name}</span>
1890
+ </div>
1891
+ `).join('');
1892
+
1893
+ // Get files for this bolt type
1894
+ const boltFiles = getBoltFiles(bolt);
1895
+ const existingFilesCount = boltFiles.filter(f => f.exists).length;
1896
+ const filesHtml = boltFiles.map(f => `
1897
+ <div class="file-item ${f.exists ? '' : 'missing'}" onclick="event.stopPropagation()">
1898
+ <span class="file-icon ${f.exists ? 'md' : 'missing'}">&#128196;</span>
1899
+ <span class="file-name">${f.name}</span>
1900
+ <span class="file-status ${f.exists ? 'exists' : 'pending'}">${f.exists ? 'exists' : 'pending'}</span>
1901
+ </div>
1902
+ `).join('');
1903
+
1904
+ const actionBtn = '<button type="button" class="bolt-btn bolt-btn-secondary">Files</button>';
1905
+
1906
+ return `
1907
+ <div class="bolt-card ${isExpanded ? 'expanded' : ''}" id="${bolt.id}">
1908
+ <div class="bolt-card-header" onclick="toggleBolt('${bolt.id}')">
1909
+ <div class="bolt-priority ${bolt.status === 'active' ? 'p1' : ''}">${bolt.status === 'complete' ? '-' : priority}</div>
1910
+ <div class="bolt-info">
1911
+ <div class="bolt-name">${bolt.name}</div>
1912
+ <div class="bolt-meta">
1913
+ <span class="bolt-type">${bolt.type}</span>
1914
+ <span>${doneStories}/${totalStories} stories</span>
1915
+ </div>
1916
+ </div>
1917
+ <div class="bolt-stages">${stagesHtml}</div>
1918
+ <span class="bolt-expand">&#9660;</span>
1919
+ </div>
1920
+ <div class="bolt-card-content">
1921
+ <div class="bolt-card-inner">
1922
+ <div class="bolt-stage-row">${stageDetailHtml}</div>
1923
+ <div class="bolt-stories-row">
1924
+ <span class="bolt-stories-label">Stories</span>
1925
+ <span class="bolt-stories-count">${doneStories}/${totalStories}</span>
1926
+ </div>
1927
+ <div class="bolt-stories-list">${storiesHtml}</div>
1928
+ <div class="bolt-actions">${actionBtn}</div>
1929
+ </div>
1930
+ </div>
1931
+ </div>
1932
+ `;
1933
+ }
1934
+
1935
+ function getCurrentStageName(bolt) {
1936
+ for (const [stage, status] of Object.entries(bolt.stages)) {
1937
+ if (status === 'active') {
1938
+ return stage.charAt(0).toUpperCase() + stage.slice(1);
1939
+ }
1940
+ }
1941
+ return 'Model';
1942
+ }
1943
+
1944
+ function renderSpecs() {
1945
+ const container = document.getElementById('specs-content');
1946
+ let html = '';
1947
+
1948
+ intents.forEach(intent => {
1949
+ const intentUnits = units.filter(u => u.unitId !== 'x' && intent.units.includes(u.id));
1950
+ const allStories = intentUnits.flatMap(u => stories.filter(s => s.unitId === u.id));
1951
+ const doneStories = allStories.filter(s => s.status === 'complete').length;
1952
+ const activeStories = allStories.filter(s => s.status === 'active').length;
1953
+ const progress = Math.round((doneStories / allStories.length) * 100);
1954
+ const dashOffset = 69.115 - (69.115 * progress / 100);
1955
+ const largeDashOffset = 163.36 - (163.36 * progress / 100);
1956
+
1957
+ const isExpanded = expandedIntentId === intent.id;
1958
+
1959
+ // Determine intent status
1960
+ let intentStatus = 'pending';
1961
+ if (progress === 100) intentStatus = 'complete';
1962
+ else if (activeStories > 0 || doneStories > 0) intentStatus = 'active';
1963
+
1964
+ // Apply filter - skip intents that don't match the current filter
1965
+ if (currentSpecsFilter !== 'all' && intentStatus !== currentSpecsFilter) {
1966
+ return; // Skip this intent
1967
+ }
1968
+
1969
+ // Find current unit (first with active stories, or first incomplete)
1970
+ let currentUnit = intentUnits.find(u => {
1971
+ const unitStories = stories.filter(s => s.unitId === u.id);
1972
+ return unitStories.some(s => s.status === 'active');
1973
+ }) || intentUnits.find(u => {
1974
+ const unitStories = stories.filter(s => s.unitId === u.id);
1975
+ return unitStories.some(s => s.status !== 'complete');
1976
+ }) || intentUnits[0];
1977
+
1978
+ // Get bolts for this intent
1979
+ const intentBolts = bolts.filter(b => b.intentId === intent.id);
1980
+ const completedBolts = intentBolts.filter(b => b.status === 'complete').length;
1981
+
1982
+ // Bolt pipeline HTML
1983
+ const boltPipelineHtml = intentBolts.slice(0, 5).map(bolt => {
1984
+ return `
1985
+ <div class="unit-pipeline-item ${bolt.status}">
1986
+ <div class="unit-pipeline-node ${bolt.status}">${bolt.status === 'complete' ? '&#10003;' : bolt.name.charAt(0).toUpperCase()}</div>
1987
+ <span class="unit-pipeline-label ${bolt.status}">${bolt.name.split('-').slice(0, 2).join('-')}</span>
1988
+ </div>
1989
+ `;
1990
+ }).join('');
1991
+
1992
+ // Bolts for expanded view
1993
+ const boltsHtml = intentBolts.map(bolt => {
1994
+ const doneStagesCount = Object.values(bolt.stages).filter(s => s === 'complete').length;
1995
+ const totalStagesCount = Object.keys(bolt.stages).length;
1996
+
1997
+ return `
1998
+ <div class="intent-story-item">
1999
+ <div class="intent-story-checkbox ${bolt.status}">${bolt.status === 'complete' ? '&#10003;' : ''}</div>
2000
+ <span class="intent-story-name ${bolt.status}">${bolt.name}</span>
2001
+ <span style="font-size: 10px; color: var(--vscode-descriptionForeground);">${doneStagesCount}/${totalStagesCount}</span>
2002
+ </div>
2003
+ `;
2004
+ }).join('');
2005
+
2006
+ // Status badge text
2007
+ const statusText = intentStatus === 'complete' ? 'Complete' : intentStatus === 'active' ? 'In Progress' : 'Not Started';
2008
+
2009
+ // Action buttons
2010
+ const actionButtons = '<button type="button" class="intent-btn intent-btn-secondary">Files</button>';
2011
+
2012
+ html += `
2013
+ <div class="intent-item ${isExpanded ? '' : 'collapsed'}" id="${intent.id}">
2014
+ <div class="intent-header" onclick="toggleIntent('${intent.id}')">
2015
+ <span class="intent-expand">&#9660;</span>
2016
+ <span class="intent-icon">&#128203;</span>
2017
+ <div class="intent-info">
2018
+ <div class="intent-name">${intent.name}</div>
2019
+ <div class="intent-meta">${intentUnits.length} units | ${allStories.length} stories</div>
2020
+ </div>
2021
+ <div class="intent-progress">
2022
+ <div class="progress-ring">
2023
+ <svg width="28" height="28" viewBox="0 0 28 28">
2024
+ <circle class="progress-ring-bg" cx="14" cy="14" r="11"></circle>
2025
+ <circle class="progress-ring-fill" cx="14" cy="14" r="11" style="stroke-dashoffset: ${dashOffset}"></circle>
2026
+ </svg>
2027
+ <span class="progress-ring-text">${progress}%</span>
2028
+ </div>
2029
+ </div>
2030
+ </div>
2031
+ <div class="intent-content">
2032
+ <div class="intent-card-inner">
2033
+ <div class="intent-card-header-row">
2034
+ <div class="intent-progress-ring-large">
2035
+ <svg width="64" height="64" viewBox="0 0 64 64">
2036
+ <circle class="ring-bg" cx="32" cy="32" r="26"></circle>
2037
+ <circle class="ring-fill ${intentStatus === 'active' ? 'active' : ''}" cx="32" cy="32" r="26" style="stroke-dashoffset: ${largeDashOffset}"></circle>
2038
+ </svg>
2039
+ <span class="intent-progress-text">${progress}%</span>
2040
+ </div>
2041
+ <div class="intent-stage-info">
2042
+ <div class="intent-stage-title">Bolts: <span>${completedBolts}/${intentBolts.length}</span></div>
2043
+ <div class="intent-stage-subtitle">${doneStories} of ${allStories.length} stories complete</div>
2044
+ </div>
2045
+ <span class="intent-status-badge ${intentStatus}">${statusText}</span>
2046
+ </div>
2047
+
2048
+ <div class="intent-stories-section">
2049
+ <div class="intent-stories-header">
2050
+ <span class="intent-stories-title">Bolts</span>
2051
+ <span class="intent-stories-count">${completedBolts}/${intentBolts.length}</span>
2052
+ </div>
2053
+ <div class="intent-stories-list">
2054
+ ${boltsHtml}
2055
+ </div>
2056
+ </div>
2057
+
2058
+ <div class="intent-stories-section">
2059
+ <div class="intent-stories-header">
2060
+ <span class="intent-stories-title">Units</span>
2061
+ <span class="intent-stories-count">${intentUnits.filter(u => stories.filter(s => s.unitId === u.id).every(s => s.status === 'complete')).length}/${intentUnits.length}</span>
2062
+ </div>
2063
+ <div class="intent-stories-list">
2064
+ ${renderIntentUnits(intentUnits)}
2065
+ </div>
2066
+ </div>
2067
+
2068
+ <div class="intent-card-actions">
2069
+ ${actionButtons}
2070
+ </div>
2071
+ </div>
2072
+ </div>
2073
+ </div>
2074
+ `;
2075
+ });
2076
+
2077
+ container.innerHTML = html;
2078
+ }
2079
+
2080
+ function renderUnits(unitList) {
2081
+ return unitList.map(unit => {
2082
+ const unitStories = stories.filter(s => s.unitId === unit.id);
2083
+ const doneStories = unitStories.filter(s => s.status === 'complete').length;
2084
+ const isExpanded = expandedUnitIds.includes(unit.id);
2085
+
2086
+ // Apply filter
2087
+ let filteredStories = unitStories;
2088
+ if (currentSpecsFilter !== 'all') {
2089
+ filteredStories = unitStories.filter(s => s.status === currentSpecsFilter);
2090
+ }
2091
+
2092
+ return `
2093
+ <div class="unit-item ${isExpanded ? '' : 'collapsed'}" id="${unit.id}">
2094
+ <div class="unit-header" onclick="toggleUnit('${unit.id}')">
2095
+ <span class="unit-expand">&#9660;</span>
2096
+ <span class="unit-name">${unit.name}</span>
2097
+ <span class="unit-progress">${doneStories}/${unitStories.length}</span>
2098
+ </div>
2099
+ <div class="unit-content">
2100
+ ${filteredStories.map(story => `
2101
+ <div class="story-item ${story.id === expandedStoryId ? 'expanded' : ''}" data-status="${story.status}" onclick="toggleStory('${story.id}')">
2102
+ <span class="story-expand">&#9654;</span>
2103
+ <div class="story-status ${story.status}">${story.status === 'complete' ? '&#10003;' : story.status === 'active' ? '&#9679;' : ''}</div>
2104
+ <span class="story-name ${story.status}">${story.name}</span>
2105
+ </div>
2106
+ <div class="story-details ${story.id === expandedStoryId ? 'visible' : ''}" id="story-details-${story.id}">
2107
+ <div class="story-detail-row"><span class="detail-label">Status:</span><span class="detail-value status-${story.status}">${story.status}</span></div>
2108
+ <div class="story-detail-row"><span class="detail-label">Unit:</span><span class="detail-value">${unit.name}</span></div>
2109
+ <div class="story-detail-row"><span class="detail-label">Type:</span><span class="detail-value">User Story</span></div>
2110
+ <div class="story-actions">
2111
+ <button type="button" class="story-btn" onclick="event.stopPropagation()">View Spec</button>
2112
+ <button type="button" class="story-btn" onclick="event.stopPropagation()">Open File</button>
2113
+ </div>
2114
+ </div>
2115
+ `).join('')}
2116
+ </div>
2117
+ </div>
2118
+ `;
2119
+ }).join('');
2120
+ }
2121
+
2122
+ function renderIntentUnits(intentUnits) {
2123
+ return intentUnits.map(unit => {
2124
+ const unitStories = stories.filter(s => s.unitId === unit.id);
2125
+ const unitDone = unitStories.filter(s => s.status === 'complete').length;
2126
+ const unitComplete = unitDone === unitStories.length && unitStories.length > 0;
2127
+ const unitActive = unitStories.some(s => s.status === 'active');
2128
+ let unitStatus = 'pending';
2129
+ if (unitComplete) unitStatus = 'complete';
2130
+ else if (unitActive || unitDone > 0) unitStatus = 'active';
2131
+ return `
2132
+ <div class="intent-story-item">
2133
+ <div class="intent-story-checkbox ${unitStatus}">${unitStatus === 'complete' ? '&#10003;' : ''}</div>
2134
+ <span class="intent-story-name ${unitStatus}">${unit.name}</span>
2135
+ <span style="font-size: 10px; color: var(--vscode-descriptionForeground);">${unitDone}/${unitStories.length}</span>
2136
+ </div>
2137
+ `;
2138
+ }).join('');
2139
+ }
2140
+
2141
+ function populateIntentFilter() {
2142
+ const select = document.getElementById('intent-filter');
2143
+ select.innerHTML = '<option value="all">All Intents</option>' +
2144
+ intents.map(i => `<option value="${i.id}">${i.name}</option>`).join('');
2145
+ select.value = currentIntentFilter;
2146
+ }
2147
+
2148
+ // ==================== EVENT HANDLERS ====================
2149
+
2150
+ function switchView(view) {
2151
+ document.getElementById('specs-tab').classList.toggle('active', view === 'specs');
2152
+ document.getElementById('bolts-tab').classList.toggle('active', view === 'bolts');
2153
+ document.getElementById('dashboard-tab').classList.toggle('active', view === 'dashboard');
2154
+ document.getElementById('specs-view').classList.toggle('active', view === 'specs');
2155
+ document.getElementById('bolts-view').classList.toggle('active', view === 'bolts');
2156
+ document.getElementById('dashboard-view').classList.toggle('active', view === 'dashboard');
2157
+
2158
+ if (view === 'specs') {
2159
+ renderSpecs();
2160
+ } else if (view === 'dashboard') {
2161
+ renderMetrics();
2162
+ }
2163
+ }
2164
+
2165
+ function setGroupBy(type) {
2166
+ currentGroupBy = type;
2167
+ document.querySelectorAll('.group-btn').forEach(btn => {
2168
+ btn.classList.toggle('active', btn.dataset.group === type);
2169
+ });
2170
+ collapsedGroups = [];
2171
+ renderBolts();
2172
+ }
2173
+
2174
+ function toggleGroup(key) {
2175
+ const idx = collapsedGroups.indexOf(key);
2176
+ if (idx === -1) {
2177
+ collapsedGroups.push(key);
2178
+ } else {
2179
+ collapsedGroups.splice(idx, 1);
2180
+ }
2181
+ const groupEl = document.getElementById('group-' + key);
2182
+ if (groupEl) {
2183
+ groupEl.classList.toggle('collapsed');
2184
+ }
2185
+ }
2186
+
2187
+ function toggleBolt(id) {
2188
+ if (expandedBoltId === id) {
2189
+ expandedBoltId = null;
2190
+ } else {
2191
+ expandedBoltId = id;
2192
+ }
2193
+ renderBolts();
2194
+ }
2195
+
2196
+ function toggleStoriesList(boltId) {
2197
+ const list = document.getElementById('stories-' + boltId);
2198
+ const btn = list.previousElementSibling.querySelector('.bolt-stories-toggle');
2199
+ list.classList.toggle('visible');
2200
+ btn.textContent = list.classList.contains('visible') ? 'Hide' : 'Show';
2201
+ }
2202
+
2203
+ function toggleFilesList(boltId) {
2204
+ const list = document.getElementById('files-' + boltId);
2205
+ const btn = list.previousElementSibling.querySelector('.files-toggle');
2206
+ list.classList.toggle('visible');
2207
+ btn.textContent = list.classList.contains('visible') ? 'Hide' : 'Show';
2208
+ }
2209
+
2210
+ function toggleIntent(id) {
2211
+ if (expandedIntentId === id) {
2212
+ expandedIntentId = null;
2213
+ } else {
2214
+ expandedIntentId = id;
2215
+ }
2216
+ renderSpecs();
2217
+ }
2218
+
2219
+ function toggleUnit(id) {
2220
+ const idx = expandedUnitIds.indexOf(id);
2221
+ if (idx === -1) {
2222
+ expandedUnitIds.push(id);
2223
+ } else {
2224
+ expandedUnitIds.splice(idx, 1);
2225
+ }
2226
+ renderSpecs();
2227
+ }
2228
+
2229
+ function toggleStory(storyId) {
2230
+ if (expandedStoryId === storyId) {
2231
+ expandedStoryId = null;
2232
+ } else {
2233
+ expandedStoryId = storyId;
2234
+ }
2235
+ renderSpecs();
2236
+ }
2237
+
2238
+ function filterBolts() {
2239
+ currentIntentFilter = document.getElementById('intent-filter').value;
2240
+ currentStatusFilter = document.getElementById('status-filter').value;
2241
+ renderBolts();
2242
+ }
2243
+
2244
+ function quickFilterStatus(status) {
2245
+ if (currentStatusFilter === status) {
2246
+ currentStatusFilter = 'all';
2247
+ } else {
2248
+ currentStatusFilter = status;
2249
+ }
2250
+ document.getElementById('status-filter').value = currentStatusFilter;
2251
+ renderBolts();
2252
+ }
2253
+
2254
+ function filterSpecs() {
2255
+ currentSpecsFilter = document.getElementById('specs-filter').value;
2256
+ renderSpecs();
2257
+ }
2258
+
2259
+ function setTheme(theme) {
2260
+ const sidebar = document.getElementById('sidebar');
2261
+ const buttons = document.querySelectorAll('.theme-btn');
2262
+ buttons.forEach(btn => btn.classList.remove('active'));
2263
+ event.target.classList.add('active');
2264
+ if (theme === 'light') {
2265
+ sidebar.classList.add('theme-light');
2266
+ } else {
2267
+ sidebar.classList.remove('theme-light');
2268
+ }
2269
+ }
2270
+
2271
+ function renderMetrics() {
2272
+ // Calculate intents completion (based on all stories in intent being complete)
2273
+ const totalIntents = intents.length;
2274
+ const completedIntents = intents.filter(intent => {
2275
+ const intentUnits = units.filter(u => intent.units.includes(u.id));
2276
+ const intentStories = intentUnits.flatMap(u => stories.filter(s => s.unitId === u.id));
2277
+ return intentStories.length > 0 && intentStories.every(s => s.status === 'complete');
2278
+ }).length;
2279
+
2280
+ // Calculate bolts completion
2281
+ const totalBolts = bolts.length;
2282
+ const completedBolts = bolts.filter(b => b.status === 'complete').length;
2283
+
2284
+ // Calculate total completion rate (based on stages)
2285
+ const totalStages = bolts.reduce((acc, b) => acc + Object.keys(b.stages).length, 0);
2286
+ const completedStages = bolts.reduce((acc, b) => {
2287
+ return acc + Object.values(b.stages).filter(s => s === 'complete').length;
2288
+ }, 0);
2289
+ const completePercent = Math.round((completedStages / totalStages) * 100);
2290
+
2291
+ document.getElementById('metric-intents').textContent = `${completedIntents}/${totalIntents}`;
2292
+ document.getElementById('metric-bolts').textContent = `${completedBolts}/${totalBolts}`;
2293
+ document.getElementById('metric-complete').textContent = completePercent + '%';
2294
+ }
2295
+
2296
+ // ==================== INIT ====================
2297
+ document.addEventListener('DOMContentLoaded', () => {
2298
+ renderBolts();
2299
+ renderSpecs();
2300
+ renderMetrics();
2301
+ });
2302
+ </script>
2303
+ </body>
2304
+ </html>