bmad-elsabro 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (572) hide show
  1. package/.auto-claude-security.json +209 -0
  2. package/.claude_settings.json +34 -0
  3. package/.coderabbit.yaml +40 -0
  4. package/.nvmrc +1 -0
  5. package/.prettierignore +9 -0
  6. package/AI_TEST_GENERATOR_VERIFICATION.md +260 -0
  7. package/BUDGET_ALERT_TESTING.md +325 -0
  8. package/CHANGELOG.md +1488 -0
  9. package/CNAME +1 -0
  10. package/CONTRIBUTING.md +167 -0
  11. package/CONTRIBUTORS.md +32 -0
  12. package/LEGACY_MIGRATION_TESTING.md +428 -0
  13. package/LICENSE +30 -0
  14. package/PARTY_MODE_VERIFICATION.md +274 -0
  15. package/PROJECT_DETECTOR_TESTING.md +288 -0
  16. package/README.md +236 -0
  17. package/SECURITY.md +85 -0
  18. package/TRADEMARK.md +55 -0
  19. package/WORKFLOW_ROUTER_IMPLEMENTATION.md +379 -0
  20. package/Wordmark.png +0 -0
  21. package/banner-bmad-method.png +0 -0
  22. package/build/icons/512x512.png +0 -0
  23. package/build-mac.sh +3 -0
  24. package/docs/404.md +9 -0
  25. package/docs/_STYLE_GUIDE.md +367 -0
  26. package/docs/developer/api-reference.md +945 -0
  27. package/docs/developer/architecture.md +563 -0
  28. package/docs/developer/contributing.md +831 -0
  29. package/docs/downloads.md +74 -0
  30. package/docs/explanation/advanced-elicitation.md +24 -0
  31. package/docs/explanation/adversarial-review.md +57 -0
  32. package/docs/explanation/brainstorming.md +31 -0
  33. package/docs/explanation/brownfield-faq.md +55 -0
  34. package/docs/explanation/party-mode.md +57 -0
  35. package/docs/explanation/preventing-agent-conflicts.md +110 -0
  36. package/docs/explanation/quick-flow.md +27 -0
  37. package/docs/explanation/why-solutioning-matters.md +75 -0
  38. package/docs/how-to/brownfield/index.md +84 -0
  39. package/docs/how-to/brownfield/quick-fix-in-brownfield.md +76 -0
  40. package/docs/how-to/customize-bmad.md +158 -0
  41. package/docs/how-to/get-answers-about-bmad.md +102 -0
  42. package/docs/how-to/install-bmad.md +82 -0
  43. package/docs/how-to/shard-large-documents.md +101 -0
  44. package/docs/how-to/upgrade-to-v6.md +131 -0
  45. package/docs/index.md +56 -0
  46. package/docs/reference/workflow-map.md +83 -0
  47. package/docs/tea/explanation/engagement-models.md +710 -0
  48. package/docs/tea/explanation/fixture-architecture.md +457 -0
  49. package/docs/tea/explanation/knowledge-base-system.md +554 -0
  50. package/docs/tea/explanation/network-first-patterns.md +853 -0
  51. package/docs/tea/explanation/risk-based-testing.md +586 -0
  52. package/docs/tea/explanation/tea-overview.md +410 -0
  53. package/docs/tea/explanation/test-quality-standards.md +907 -0
  54. package/docs/tea/explanation/testing-as-engineering.md +112 -0
  55. package/docs/tea/glossary/index.md +159 -0
  56. package/docs/tea/how-to/brownfield/use-tea-for-enterprise.md +525 -0
  57. package/docs/tea/how-to/brownfield/use-tea-with-existing-tests.md +577 -0
  58. package/docs/tea/how-to/customization/enable-tea-mcp-enhancements.md +424 -0
  59. package/docs/tea/how-to/customization/integrate-playwright-utils.md +813 -0
  60. package/docs/tea/how-to/workflows/run-atdd.md +436 -0
  61. package/docs/tea/how-to/workflows/run-automate.md +653 -0
  62. package/docs/tea/how-to/workflows/run-nfr-assess.md +679 -0
  63. package/docs/tea/how-to/workflows/run-test-design.md +135 -0
  64. package/docs/tea/how-to/workflows/run-test-review.md +605 -0
  65. package/docs/tea/how-to/workflows/run-trace.md +883 -0
  66. package/docs/tea/how-to/workflows/setup-ci.md +712 -0
  67. package/docs/tea/how-to/workflows/setup-test-framework.md +98 -0
  68. package/docs/tea/reference/commands.md +276 -0
  69. package/docs/tea/reference/configuration.md +678 -0
  70. package/docs/tea/reference/knowledge-base.md +340 -0
  71. package/docs/tea/tutorials/tea-lite-quickstart.md +444 -0
  72. package/docs/tutorials/getting-started.md +205 -0
  73. package/docs/user-guide/getting-started.md +348 -0
  74. package/docs/user-guide/token-economy.md +601 -0
  75. package/docs/user-guide/workflows.md +546 -0
  76. package/electron-builder.yml +75 -0
  77. package/eslint.config.mjs +152 -0
  78. package/package.json +162 -0
  79. package/prettier.config.mjs +32 -0
  80. package/public/monaco-workers/index.js +21 -0
  81. package/renderer/App.tsx +311 -0
  82. package/renderer/components/ChatPanel.tsx +285 -0
  83. package/renderer/components/CodeEditor.tsx +327 -0
  84. package/renderer/components/CodeEditor.types.ts +245 -0
  85. package/renderer/components/FlowSelector.tsx +534 -0
  86. package/renderer/components/MessageInput.tsx +252 -0
  87. package/renderer/components/MessageList.tsx +204 -0
  88. package/renderer/components/MigrationWizard.tsx +896 -0
  89. package/renderer/components/NotificationCenter.tsx +291 -0
  90. package/renderer/components/OnboardingWizard.tsx +112 -0
  91. package/renderer/components/PartyMode.tsx +555 -0
  92. package/renderer/components/Sidebar.module.css +258 -0
  93. package/renderer/components/Sidebar.tsx +157 -0
  94. package/renderer/components/TemplateSelector.tsx +553 -0
  95. package/renderer/components/Terminal.tsx +523 -0
  96. package/renderer/components/TestCenter.tsx +364 -0
  97. package/renderer/components/TokenAnalytics.tsx +607 -0
  98. package/renderer/components/TokenMonitor.tsx +331 -0
  99. package/renderer/components/TutorialOverlay.tsx +483 -0
  100. package/renderer/components/WorkflowEditor.tsx +470 -0
  101. package/renderer/components/onboarding/Step1Welcome.tsx +72 -0
  102. package/renderer/components/onboarding/Step2Setup.tsx +193 -0
  103. package/renderer/components/onboarding/Step3CreateProject.tsx +209 -0
  104. package/renderer/components/test-center/CoverageDashboard.tsx +588 -0
  105. package/renderer/components/test-center/ELI5Guide.tsx +521 -0
  106. package/renderer/components/test-center/TestList.tsx +381 -0
  107. package/renderer/components/test-center/TestRunner.tsx +431 -0
  108. package/renderer/components/test-center/TestStepWizard.tsx +1000 -0
  109. package/renderer/components/test-center/VisualTestBuilder.tsx +460 -0
  110. package/renderer/components/workflow/DependencyEdge.tsx +200 -0
  111. package/renderer/components/workflow/StepNode.tsx +234 -0
  112. package/renderer/components/workflow/StepPalette.tsx +412 -0
  113. package/renderer/context/ThemeContext.tsx +97 -0
  114. package/renderer/data/shortcuts.json +94 -0
  115. package/renderer/data/testing-guides.json +261 -0
  116. package/renderer/data/tutorials.json +546 -0
  117. package/renderer/hooks/useKeyboardShortcuts.ts +249 -0
  118. package/renderer/hooks/useNotifications.ts +267 -0
  119. package/renderer/hooks/useTheme.ts +149 -0
  120. package/renderer/hooks/useTokenTracking.ts +464 -0
  121. package/renderer/hooks/useWorkflowState.ts +309 -0
  122. package/renderer/index.html +16 -0
  123. package/renderer/index.tsx +17 -0
  124. package/renderer/lib/MONACO_OFFLINE_CONFIG.md +153 -0
  125. package/renderer/lib/chart-utils.ts +472 -0
  126. package/renderer/lib/file-system-provider.ts +295 -0
  127. package/renderer/lib/monaco-loader.ts +247 -0
  128. package/renderer/renderer/components/NOTIFICATION_SYSTEM.md +192 -0
  129. package/renderer/styles.css +55 -0
  130. package/renderer/types/css-modules.d.ts +21 -0
  131. package/renderer/types/electron.d.ts +316 -0
  132. package/src/bmm/_module-installer/installer.js +48 -0
  133. package/src/bmm/agents/analyst.agent.yaml +36 -0
  134. package/src/bmm/agents/architect.agent.yaml +28 -0
  135. package/src/bmm/agents/dev.agent.yaml +38 -0
  136. package/src/bmm/agents/parallel-orchestrator.agent.yaml +50 -0
  137. package/src/bmm/agents/pm.agent.yaml +46 -0
  138. package/src/bmm/agents/quick-flow-solo-dev.agent.yaml +32 -0
  139. package/src/bmm/agents/sm.agent.yaml +36 -0
  140. package/src/bmm/agents/tea.agent.yaml +63 -0
  141. package/src/bmm/agents/tech-writer/tech-writer-sidecar/documentation-standards.md +224 -0
  142. package/src/bmm/agents/tech-writer/tech-writer.agent.yaml +45 -0
  143. package/src/bmm/agents/ux-designer.agent.yaml +26 -0
  144. package/src/bmm/agents/yolo-dev.agent.yaml +41 -0
  145. package/src/bmm/data/auto-testing-config.yaml +84 -0
  146. package/src/bmm/data/guided-mode-instructions.yaml +112 -0
  147. package/src/bmm/data/parallelization-config.yaml +136 -0
  148. package/src/bmm/data/project-context-template.md +26 -0
  149. package/src/bmm/data/speed-profiles.yaml +127 -0
  150. package/src/bmm/module-help.csv +32 -0
  151. package/src/bmm/module.yaml +60 -0
  152. package/src/bmm/teams/default-party.csv +21 -0
  153. package/src/bmm/teams/team-fullstack.yaml +12 -0
  154. package/src/bmm/testarch/knowledge/adr-quality-readiness-checklist.md +350 -0
  155. package/src/bmm/testarch/knowledge/api-request.md +442 -0
  156. package/src/bmm/testarch/knowledge/api-testing-patterns.md +843 -0
  157. package/src/bmm/testarch/knowledge/auth-session.md +552 -0
  158. package/src/bmm/testarch/knowledge/burn-in.md +273 -0
  159. package/src/bmm/testarch/knowledge/ci-burn-in.md +675 -0
  160. package/src/bmm/testarch/knowledge/component-tdd.md +486 -0
  161. package/src/bmm/testarch/knowledge/contract-testing.md +957 -0
  162. package/src/bmm/testarch/knowledge/data-factories.md +500 -0
  163. package/src/bmm/testarch/knowledge/email-auth.md +721 -0
  164. package/src/bmm/testarch/knowledge/error-handling.md +725 -0
  165. package/src/bmm/testarch/knowledge/feature-flags.md +750 -0
  166. package/src/bmm/testarch/knowledge/file-utils.md +463 -0
  167. package/src/bmm/testarch/knowledge/fixture-architecture.md +401 -0
  168. package/src/bmm/testarch/knowledge/fixtures-composition.md +382 -0
  169. package/src/bmm/testarch/knowledge/intercept-network-call.md +430 -0
  170. package/src/bmm/testarch/knowledge/log.md +429 -0
  171. package/src/bmm/testarch/knowledge/network-error-monitor.md +405 -0
  172. package/src/bmm/testarch/knowledge/network-first.md +486 -0
  173. package/src/bmm/testarch/knowledge/network-recorder.md +527 -0
  174. package/src/bmm/testarch/knowledge/nfr-criteria.md +670 -0
  175. package/src/bmm/testarch/knowledge/overview.md +286 -0
  176. package/src/bmm/testarch/knowledge/playwright-config.md +730 -0
  177. package/src/bmm/testarch/knowledge/probability-impact.md +601 -0
  178. package/src/bmm/testarch/knowledge/recurse.md +421 -0
  179. package/src/bmm/testarch/knowledge/risk-governance.md +615 -0
  180. package/src/bmm/testarch/knowledge/selective-testing.md +732 -0
  181. package/src/bmm/testarch/knowledge/selector-resilience.md +527 -0
  182. package/src/bmm/testarch/knowledge/test-healing-patterns.md +644 -0
  183. package/src/bmm/testarch/knowledge/test-levels-framework.md +473 -0
  184. package/src/bmm/testarch/knowledge/test-priorities-matrix.md +373 -0
  185. package/src/bmm/testarch/knowledge/test-quality.md +664 -0
  186. package/src/bmm/testarch/knowledge/timing-debugging.md +372 -0
  187. package/src/bmm/testarch/knowledge/visual-debugging.md +524 -0
  188. package/src/bmm/testarch/tea-index.csv +35 -0
  189. package/src/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
  190. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +177 -0
  191. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +161 -0
  192. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +199 -0
  193. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +202 -0
  194. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +205 -0
  195. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +219 -0
  196. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +162 -0
  197. package/src/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -0
  198. package/src/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
  199. package/src/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
  200. package/src/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
  201. package/src/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
  202. package/src/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
  203. package/src/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
  204. package/src/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
  205. package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
  206. package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +200 -0
  207. package/src/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
  208. package/src/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
  209. package/src/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
  210. package/src/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
  211. package/src/bmm/workflows/1-analysis/research/research.template.md +29 -0
  212. package/src/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
  213. package/src/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
  214. package/src/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
  215. package/src/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
  216. package/src/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +239 -0
  217. package/src/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
  218. package/src/bmm/workflows/1-analysis/research/workflow.md +173 -0
  219. package/src/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +13 -0
  220. package/src/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -0
  221. package/src/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +11 -0
  222. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md +191 -0
  223. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +153 -0
  224. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +224 -0
  225. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +226 -0
  226. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +213 -0
  227. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +207 -0
  228. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +226 -0
  229. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +237 -0
  230. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +228 -0
  231. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +231 -0
  232. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +242 -0
  233. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +217 -0
  234. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +124 -0
  235. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +247 -0
  236. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
  237. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +249 -0
  238. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +253 -0
  239. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +168 -0
  240. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +218 -0
  241. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +191 -0
  242. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +209 -0
  243. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +174 -0
  244. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
  245. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +228 -0
  246. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +217 -0
  247. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
  248. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
  249. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +263 -0
  250. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +209 -0
  251. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
  252. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +242 -0
  253. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +231 -0
  254. package/src/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md +10 -0
  255. package/src/bmm/workflows/2-plan-workflows/create-prd/validation-report-prd-workflow.md +433 -0
  256. package/src/bmm/workflows/2-plan-workflows/create-prd/workflow.md +150 -0
  257. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
  258. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
  259. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
  260. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
  261. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
  262. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
  263. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
  264. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
  265. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
  266. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
  267. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
  268. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
  269. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
  270. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
  271. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +171 -0
  272. package/src/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
  273. package/src/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +43 -0
  274. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +190 -0
  275. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +178 -0
  276. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
  277. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +139 -0
  278. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
  279. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +135 -0
  280. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
  281. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +55 -0
  282. package/src/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
  283. package/src/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
  284. package/src/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
  285. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
  286. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +164 -0
  287. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
  288. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +331 -0
  289. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
  290. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
  291. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
  292. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
  293. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +76 -0
  294. package/src/bmm/workflows/3-solutioning/create-architecture/workflow.md +50 -0
  295. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
  296. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
  297. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
  298. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +149 -0
  299. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
  300. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +59 -0
  301. package/src/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
  302. package/src/bmm/workflows/4-implementation/code-review/instructions.xml +227 -0
  303. package/src/bmm/workflows/4-implementation/code-review/workflow.yaml +51 -0
  304. package/src/bmm/workflows/4-implementation/correct-course/checklist.md +288 -0
  305. package/src/bmm/workflows/4-implementation/correct-course/instructions.md +206 -0
  306. package/src/bmm/workflows/4-implementation/correct-course/workflow.yaml +60 -0
  307. package/src/bmm/workflows/4-implementation/create-story/checklist.md +358 -0
  308. package/src/bmm/workflows/4-implementation/create-story/instructions.xml +345 -0
  309. package/src/bmm/workflows/4-implementation/create-story/template.md +49 -0
  310. package/src/bmm/workflows/4-implementation/create-story/workflow.yaml +61 -0
  311. package/src/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
  312. package/src/bmm/workflows/4-implementation/dev-story/instructions.xml +410 -0
  313. package/src/bmm/workflows/4-implementation/dev-story/workflow.yaml +32 -0
  314. package/src/bmm/workflows/4-implementation/fix-and-test/workflow.md +197 -0
  315. package/src/bmm/workflows/4-implementation/retrospective/instructions.md +1443 -0
  316. package/src/bmm/workflows/4-implementation/retrospective/workflow.yaml +58 -0
  317. package/src/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
  318. package/src/bmm/workflows/4-implementation/sprint-planning/instructions.md +225 -0
  319. package/src/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
  320. package/src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +54 -0
  321. package/src/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
  322. package/src/bmm/workflows/4-implementation/sprint-status/workflow.yaml +36 -0
  323. package/src/bmm/workflows/bmad-quick-flow/brownfield-fast-track/steps/step-01-detect.md +55 -0
  324. package/src/bmm/workflows/bmad-quick-flow/brownfield-fast-track/steps/step-02-confirm.md +48 -0
  325. package/src/bmm/workflows/bmad-quick-flow/brownfield-fast-track/steps/step-03-implement.md +61 -0
  326. package/src/bmm/workflows/bmad-quick-flow/brownfield-fast-track/workflow.md +41 -0
  327. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +176 -0
  328. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
  329. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +153 -0
  330. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
  331. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
  332. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +149 -0
  333. package/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +73 -0
  334. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +192 -0
  335. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +145 -0
  336. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +128 -0
  337. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +201 -0
  338. package/src/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
  339. package/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +93 -0
  340. package/src/bmm/workflows/bmad-quick-flow/yolo-mode/steps/step-01-rapid-spec.md +54 -0
  341. package/src/bmm/workflows/bmad-quick-flow/yolo-mode/steps/step-02-ship-it.md +65 -0
  342. package/src/bmm/workflows/bmad-quick-flow/yolo-mode/workflow.md +54 -0
  343. package/src/bmm/workflows/document-project/checklist.md +245 -0
  344. package/src/bmm/workflows/document-project/documentation-requirements.csv +12 -0
  345. package/src/bmm/workflows/document-project/instructions.md +221 -0
  346. package/src/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
  347. package/src/bmm/workflows/document-project/templates/index-template.md +169 -0
  348. package/src/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
  349. package/src/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
  350. package/src/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
  351. package/src/bmm/workflows/document-project/workflow.yaml +30 -0
  352. package/src/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
  353. package/src/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
  354. package/src/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
  355. package/src/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
  356. package/src/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
  357. package/src/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
  358. package/src/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
  359. package/src/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
  360. package/src/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +27 -0
  361. package/src/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
  362. package/src/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
  363. package/src/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +27 -0
  364. package/src/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
  365. package/src/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
  366. package/src/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +27 -0
  367. package/src/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
  368. package/src/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
  369. package/src/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +27 -0
  370. package/src/bmm/workflows/parallel-work/parallel-analysis/steps/step-01-parse-target.md +49 -0
  371. package/src/bmm/workflows/parallel-work/parallel-analysis/steps/step-02-launch-streams.md +135 -0
  372. package/src/bmm/workflows/parallel-work/parallel-analysis/steps/step-03-sync-point.md +74 -0
  373. package/src/bmm/workflows/parallel-work/parallel-analysis/steps/step-04-merge-insights.md +179 -0
  374. package/src/bmm/workflows/parallel-work/parallel-analysis/workflow.md +55 -0
  375. package/src/bmm/workflows/parallel-work/parallel-generation/workflow.md +109 -0
  376. package/src/bmm/workflows/parallel-work/parallel-reviews/workflow.md +111 -0
  377. package/src/bmm/workflows/parallel-work/parallel-stories/workflow.md +112 -0
  378. package/src/bmm/workflows/parallel-work/sprint-mode/steps/step-01-load-sprint.md +54 -0
  379. package/src/bmm/workflows/parallel-work/sprint-mode/steps/step-02-plan-execution.md +63 -0
  380. package/src/bmm/workflows/parallel-work/sprint-mode/steps/step-03-execute-stories.md +112 -0
  381. package/src/bmm/workflows/parallel-work/sprint-mode/steps/step-04-code-review.md +148 -0
  382. package/src/bmm/workflows/parallel-work/sprint-mode/steps/step-05-integration-testing.md +200 -0
  383. package/src/bmm/workflows/parallel-work/sprint-mode/steps/step-06-sprint-report.md +290 -0
  384. package/src/bmm/workflows/parallel-work/sprint-mode/workflow.md +58 -0
  385. package/src/bmm/workflows/testarch/atdd/atdd-checklist-template.md +363 -0
  386. package/src/bmm/workflows/testarch/atdd/checklist.md +374 -0
  387. package/src/bmm/workflows/testarch/atdd/instructions.md +806 -0
  388. package/src/bmm/workflows/testarch/atdd/workflow.yaml +47 -0
  389. package/src/bmm/workflows/testarch/automate/checklist.md +582 -0
  390. package/src/bmm/workflows/testarch/automate/instructions.md +1324 -0
  391. package/src/bmm/workflows/testarch/automate/workflow.yaml +54 -0
  392. package/src/bmm/workflows/testarch/ci/checklist.md +247 -0
  393. package/src/bmm/workflows/testarch/ci/github-actions-template.yaml +198 -0
  394. package/src/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +149 -0
  395. package/src/bmm/workflows/testarch/ci/instructions.md +536 -0
  396. package/src/bmm/workflows/testarch/ci/workflow.yaml +47 -0
  397. package/src/bmm/workflows/testarch/framework/checklist.md +320 -0
  398. package/src/bmm/workflows/testarch/framework/instructions.md +481 -0
  399. package/src/bmm/workflows/testarch/framework/workflow.yaml +49 -0
  400. package/src/bmm/workflows/testarch/nfr-assess/checklist.md +407 -0
  401. package/src/bmm/workflows/testarch/nfr-assess/instructions.md +726 -0
  402. package/src/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +461 -0
  403. package/src/bmm/workflows/testarch/nfr-assess/workflow.yaml +49 -0
  404. package/src/bmm/workflows/testarch/test-design/checklist.md +407 -0
  405. package/src/bmm/workflows/testarch/test-design/instructions.md +1158 -0
  406. package/src/bmm/workflows/testarch/test-design/test-design-architecture-template.md +213 -0
  407. package/src/bmm/workflows/testarch/test-design/test-design-qa-template.md +286 -0
  408. package/src/bmm/workflows/testarch/test-design/test-design-template.md +294 -0
  409. package/src/bmm/workflows/testarch/test-design/workflow.yaml +71 -0
  410. package/src/bmm/workflows/testarch/test-review/checklist.md +472 -0
  411. package/src/bmm/workflows/testarch/test-review/instructions.md +628 -0
  412. package/src/bmm/workflows/testarch/test-review/test-review-template.md +390 -0
  413. package/src/bmm/workflows/testarch/test-review/workflow.yaml +48 -0
  414. package/src/bmm/workflows/testarch/trace/checklist.md +642 -0
  415. package/src/bmm/workflows/testarch/trace/instructions.md +1030 -0
  416. package/src/bmm/workflows/testarch/trace/trace-template.md +675 -0
  417. package/src/bmm/workflows/testarch/trace/workflow.yaml +57 -0
  418. package/src/core/_module-installer/installer.js +60 -0
  419. package/src/core/agents/bmad-master.agent.yaml +29 -0
  420. package/src/core/module-help.csv +9 -0
  421. package/src/core/module.yaml +25 -0
  422. package/src/core/resources/excalidraw/README.md +160 -0
  423. package/src/core/resources/excalidraw/excalidraw-helpers.md +127 -0
  424. package/src/core/resources/excalidraw/library-loader.md +50 -0
  425. package/src/core/resources/excalidraw/validate-json-instructions.md +79 -0
  426. package/src/core/tasks/editorial-review-prose.xml +100 -0
  427. package/src/core/tasks/editorial-review-structure.xml +209 -0
  428. package/src/core/tasks/help.md +62 -0
  429. package/src/core/tasks/index-docs.xml +65 -0
  430. package/src/core/tasks/review-adversarial-general.xml +48 -0
  431. package/src/core/tasks/shard-doc.xml +109 -0
  432. package/src/core/tasks/workflow.xml +235 -0
  433. package/src/core/workflows/advanced-elicitation/methods.csv +51 -0
  434. package/src/core/workflows/advanced-elicitation/workflow.xml +117 -0
  435. package/src/core/workflows/brainstorming/brain-methods.csv +62 -0
  436. package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -0
  437. package/src/core/workflows/brainstorming/steps/step-01b-continue.md +122 -0
  438. package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -0
  439. package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -0
  440. package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -0
  441. package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -0
  442. package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +399 -0
  443. package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -0
  444. package/src/core/workflows/brainstorming/template.md +15 -0
  445. package/src/core/workflows/brainstorming/workflow.md +58 -0
  446. package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
  447. package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -0
  448. package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +157 -0
  449. package/src/core/workflows/party-mode/workflow.md +194 -0
  450. package/src/utility/agent-components/activation-rules.txt +6 -0
  451. package/src/utility/agent-components/activation-steps.txt +14 -0
  452. package/src/utility/agent-components/agent-command-header.md +1 -0
  453. package/src/utility/agent-components/agent.customize.template.yaml +41 -0
  454. package/src/utility/agent-components/handler-action.txt +4 -0
  455. package/src/utility/agent-components/handler-data.txt +5 -0
  456. package/src/utility/agent-components/handler-exec.txt +6 -0
  457. package/src/utility/agent-components/handler-multi.txt +14 -0
  458. package/src/utility/agent-components/handler-tmpl.txt +5 -0
  459. package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
  460. package/src/utility/agent-components/handler-workflow.txt +10 -0
  461. package/src/utility/agent-components/menu-handlers.txt +6 -0
  462. package/tools/bmad-npx-wrapper.js +69 -0
  463. package/tools/build-docs.js +577 -0
  464. package/tools/cli/README.md +7 -0
  465. package/tools/cli/bmad-cli.js +65 -0
  466. package/tools/cli/commands/diagnostics.js +303 -0
  467. package/tools/cli/commands/install.js +87 -0
  468. package/tools/cli/commands/module.js +210 -0
  469. package/tools/cli/commands/status.js +65 -0
  470. package/tools/cli/commands/uninstall.js +86 -0
  471. package/tools/cli/external-official-modules.yaml +54 -0
  472. package/tools/cli/installers/install-messages.yaml +59 -0
  473. package/tools/cli/installers/lib/core/config-collector.js +1079 -0
  474. package/tools/cli/installers/lib/core/custom-module-cache.js +259 -0
  475. package/tools/cli/installers/lib/core/dependency-resolver.js +739 -0
  476. package/tools/cli/installers/lib/core/detector.js +223 -0
  477. package/tools/cli/installers/lib/core/ide-config-manager.js +156 -0
  478. package/tools/cli/installers/lib/core/installer.js +2812 -0
  479. package/tools/cli/installers/lib/core/manifest-generator.js +1054 -0
  480. package/tools/cli/installers/lib/core/manifest.js +1036 -0
  481. package/tools/cli/installers/lib/custom/handler.js +363 -0
  482. package/tools/cli/installers/lib/ide/_base-ide.js +655 -0
  483. package/tools/cli/installers/lib/ide/_config-driven.js +450 -0
  484. package/tools/cli/installers/lib/ide/codex.js +440 -0
  485. package/tools/cli/installers/lib/ide/kilo.js +250 -0
  486. package/tools/cli/installers/lib/ide/kiro-cli.js +326 -0
  487. package/tools/cli/installers/lib/ide/manager.js +271 -0
  488. package/tools/cli/installers/lib/ide/platform-codes.js +100 -0
  489. package/tools/cli/installers/lib/ide/platform-codes.yaml +227 -0
  490. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +181 -0
  491. package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +163 -0
  492. package/tools/cli/installers/lib/ide/shared/module-injections.js +136 -0
  493. package/tools/cli/installers/lib/ide/shared/path-utils.js +292 -0
  494. package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +270 -0
  495. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +319 -0
  496. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
  497. package/tools/cli/installers/lib/ide/templates/combined/antigravity.md +8 -0
  498. package/tools/cli/installers/lib/ide/templates/combined/default-agent.md +15 -0
  499. package/tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md +14 -0
  500. package/tools/cli/installers/lib/ide/templates/combined/default-workflow.md +6 -0
  501. package/tools/cli/installers/lib/ide/templates/combined/gemini-agent.toml +14 -0
  502. package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow-yaml.toml +16 -0
  503. package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow.toml +14 -0
  504. package/tools/cli/installers/lib/ide/templates/combined/rovodev.md +9 -0
  505. package/tools/cli/installers/lib/ide/templates/combined/trae.md +9 -0
  506. package/tools/cli/installers/lib/ide/templates/combined/windsurf-workflow.md +10 -0
  507. package/tools/cli/installers/lib/ide/templates/split/opencode/body.md +10 -0
  508. package/tools/cli/installers/lib/ide/templates/split/opencode/header.md +4 -0
  509. package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +13 -0
  510. package/tools/cli/installers/lib/ide/templates/workflow-commander.md +5 -0
  511. package/tools/cli/installers/lib/message-loader.js +85 -0
  512. package/tools/cli/installers/lib/modules/external-manager.js +135 -0
  513. package/tools/cli/installers/lib/modules/manager.js +1375 -0
  514. package/tools/cli/lib/activation-builder.js +163 -0
  515. package/tools/cli/lib/agent/compiler.js +522 -0
  516. package/tools/cli/lib/agent/compiler.ts +572 -0
  517. package/tools/cli/lib/agent/installer.js +716 -0
  518. package/tools/cli/lib/agent/template-engine.js +152 -0
  519. package/tools/cli/lib/agent/types.ts +155 -0
  520. package/tools/cli/lib/agent-analyzer.js +109 -0
  521. package/tools/cli/lib/agent-party-generator.js +194 -0
  522. package/tools/cli/lib/cli-utils.js +227 -0
  523. package/tools/cli/lib/config.js +213 -0
  524. package/tools/cli/lib/config.ts +227 -0
  525. package/tools/cli/lib/file-ops.js +204 -0
  526. package/tools/cli/lib/file-ops.ts +215 -0
  527. package/tools/cli/lib/platform-codes.js +116 -0
  528. package/tools/cli/lib/project-root.js +77 -0
  529. package/tools/cli/lib/prompts.js +433 -0
  530. package/tools/cli/lib/prompts.ts +541 -0
  531. package/tools/cli/lib/types/config.types.ts +43 -0
  532. package/tools/cli/lib/types/xml-handler.types.ts +50 -0
  533. package/tools/cli/lib/ui.js +1660 -0
  534. package/tools/cli/lib/xml-handler.js +177 -0
  535. package/tools/cli/lib/xml-handler.ts +188 -0
  536. package/tools/cli/lib/xml-to-markdown.js +82 -0
  537. package/tools/cli/lib/yaml-format.js +245 -0
  538. package/tools/cli/lib/yaml-xml-builder.js +587 -0
  539. package/tools/docs/BUNDLE_DISTRIBUTION_SETUP.md +95 -0
  540. package/tools/docs/fix-refs.md +91 -0
  541. package/tools/docs/index.md +2 -0
  542. package/tools/fix-doc-links.js +288 -0
  543. package/tools/flattener/aggregate.js +76 -0
  544. package/tools/flattener/aggregate.ts +78 -0
  545. package/tools/flattener/binary.js +80 -0
  546. package/tools/flattener/discovery.js +71 -0
  547. package/tools/flattener/files.js +35 -0
  548. package/tools/flattener/files.ts +31 -0
  549. package/tools/flattener/ignoreRules.js +172 -0
  550. package/tools/flattener/main.js +483 -0
  551. package/tools/flattener/main.ts +262 -0
  552. package/tools/flattener/projectRoot.js +201 -0
  553. package/tools/flattener/prompts.js +44 -0
  554. package/tools/flattener/stats.helpers.js +368 -0
  555. package/tools/flattener/stats.js +75 -0
  556. package/tools/flattener/test-matrix.js +409 -0
  557. package/tools/flattener/types.ts +53 -0
  558. package/tools/flattener/xml.js +82 -0
  559. package/tools/format-workflow-md.js +263 -0
  560. package/tools/lib/xml-utils.js +13 -0
  561. package/tools/maintainer/review-pr-README.md +55 -0
  562. package/tools/maintainer/review-pr.md +242 -0
  563. package/tools/migrate-custom-module-paths.js +124 -0
  564. package/tools/platform-codes.yaml +157 -0
  565. package/tools/schema/agent.js +491 -0
  566. package/tools/schema/agent.ts +489 -0
  567. package/tools/schema/agent.types.ts +31 -0
  568. package/tools/update-bmad.sh +24 -0
  569. package/tools/validate-agent-schema.js +110 -0
  570. package/tools/validate-doc-links.js +371 -0
  571. package/tools/validate-svg-changes.sh +356 -0
  572. package/vite-plugin-monaco-editor.ts +108 -0
@@ -0,0 +1,152 @@
1
+ import js from '@eslint/js';
2
+ import eslintConfigPrettier from 'eslint-config-prettier/flat';
3
+ import nodePlugin from 'eslint-plugin-n';
4
+ import unicorn from 'eslint-plugin-unicorn';
5
+ import yml from 'eslint-plugin-yml';
6
+
7
+ export default [
8
+ // Global ignores for files/folders that should not be linted
9
+ {
10
+ ignores: [
11
+ 'dist/**',
12
+ 'coverage/**',
13
+ '**/*.min.js',
14
+ 'test/template-test-generator/**',
15
+ 'test/template-test-generator/**/*.js',
16
+ 'test/template-test-generator/**/*.md',
17
+ 'test/fixtures/**',
18
+ 'test/fixtures/**/*.yaml',
19
+ '_bmad/**',
20
+ '_bmad*/**',
21
+ // Build output
22
+ 'build/**',
23
+ // Website uses ESM/Astro - separate linting ecosystem
24
+ 'website/**',
25
+ // Gitignored patterns
26
+ 'z*/**', // z-samples, z1, z2, etc.
27
+ '.claude/**',
28
+ '.codex/**',
29
+ '.github/chatmodes/**',
30
+ '.agent/**',
31
+ '.agentvibes/**',
32
+ '.kiro/**',
33
+ '.roo/**',
34
+ 'test-project-install/**',
35
+ 'sample-project/**',
36
+ 'tools/template-test-generator/test-scenarios/**',
37
+ 'src/modules/*/sub-modules/**',
38
+ '.bundler-temp/**',
39
+ ],
40
+ },
41
+
42
+ // Base JavaScript recommended rules
43
+ js.configs.recommended,
44
+
45
+ // Node.js rules
46
+ ...nodePlugin.configs['flat/mixed-esm-and-cjs'],
47
+
48
+ // Unicorn rules (modern best practices)
49
+ unicorn.configs.recommended,
50
+
51
+ // YAML linting
52
+ ...yml.configs['flat/recommended'],
53
+
54
+ // Place Prettier last to disable conflicting stylistic rules
55
+ eslintConfigPrettier,
56
+
57
+ // Project-specific tweaks
58
+ {
59
+ rules: {
60
+ // Allow console for CLI tools in this repo
61
+ 'no-console': 'off',
62
+ // Enforce .yaml file extension for consistency
63
+ 'yml/file-extension': [
64
+ 'error',
65
+ {
66
+ extension: 'yaml',
67
+ caseSensitive: true,
68
+ },
69
+ ],
70
+ // Prefer double quotes in YAML wherever quoting is used, but allow the other to avoid escapes
71
+ 'yml/quotes': [
72
+ 'error',
73
+ {
74
+ prefer: 'double',
75
+ avoidEscape: true,
76
+ },
77
+ ],
78
+ // Relax some Unicorn rules that are too opinionated for this codebase
79
+ 'unicorn/prevent-abbreviations': 'off',
80
+ 'unicorn/no-null': 'off',
81
+ },
82
+ },
83
+
84
+ // CLI scripts under tools/** and test/**
85
+ {
86
+ files: ['tools/**/*.js', 'tools/**/*.mjs', 'test/**/*.js'],
87
+ rules: {
88
+ // Allow CommonJS patterns for Node CLI scripts
89
+ 'unicorn/prefer-module': 'off',
90
+ 'unicorn/import-style': 'off',
91
+ 'unicorn/no-process-exit': 'off',
92
+ 'n/no-process-exit': 'off',
93
+ 'unicorn/no-await-expression-member': 'off',
94
+ 'unicorn/prefer-top-level-await': 'off',
95
+ // Avoid failing CI on incidental unused vars in internal scripts
96
+ 'no-unused-vars': 'off',
97
+ // Reduce style-only churn in internal tools
98
+ 'unicorn/prefer-ternary': 'off',
99
+ 'unicorn/filename-case': 'off',
100
+ 'unicorn/no-array-reduce': 'off',
101
+ 'unicorn/no-array-callback-reference': 'off',
102
+ 'unicorn/consistent-function-scoping': 'off',
103
+ 'n/no-extraneous-require': 'off',
104
+ 'n/no-extraneous-import': 'off',
105
+ 'n/no-unpublished-require': 'off',
106
+ 'n/no-unpublished-import': 'off',
107
+ // Some scripts intentionally use globals provided at runtime
108
+ 'no-undef': 'off',
109
+ // Additional relaxed rules for legacy/internal scripts
110
+ 'no-useless-catch': 'off',
111
+ 'unicorn/prefer-number-properties': 'off',
112
+ 'no-unreachable': 'off',
113
+ 'unicorn/text-encoding-identifier-case': 'off',
114
+ },
115
+ },
116
+
117
+ // Module installer scripts use CommonJS for compatibility
118
+ {
119
+ files: ['**/_module-installer/**/*.js'],
120
+ rules: {
121
+ // Allow CommonJS patterns for installer scripts
122
+ 'unicorn/prefer-module': 'off',
123
+ 'n/no-missing-require': 'off',
124
+ 'n/no-unpublished-require': 'off',
125
+ },
126
+ },
127
+
128
+ // ESLint config file should not be checked for publish-related Node rules
129
+ {
130
+ files: ['eslint.config.mjs'],
131
+ rules: {
132
+ 'n/no-unpublished-import': 'off',
133
+ },
134
+ },
135
+
136
+ // GitHub workflow files in this repo may use empty mapping values
137
+ {
138
+ files: ['.github/workflows/**/*.yaml'],
139
+ rules: {
140
+ 'yml/no-empty-mapping-value': 'off',
141
+ },
142
+ },
143
+
144
+ // Other GitHub YAML files may intentionally use empty values and reserved filenames
145
+ {
146
+ files: ['.github/**/*.yaml'],
147
+ rules: {
148
+ 'yml/no-empty-mapping-value': 'off',
149
+ 'unicorn/filename-case': 'off',
150
+ },
151
+ },
152
+ ];
package/package.json ADDED
@@ -0,0 +1,162 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/package.json",
3
+ "name": "bmad-elsabro",
4
+ "version": "1.0.0",
5
+ "description": "BMAD-ElSabro: Enhanced AI-driven agile development with Guided Mode, Auto-Parallelization, YOLO Mode, and Brownfield support",
6
+ "keywords": [
7
+ "agile",
8
+ "ai",
9
+ "orchestrator",
10
+ "development",
11
+ "methodology",
12
+ "agents",
13
+ "bmad",
14
+ "elsabro",
15
+ "guided-mode",
16
+ "parallel",
17
+ "yolo"
18
+ ],
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/goat1990/BMAD-elsabro.git"
22
+ },
23
+ "license": "MIT",
24
+ "author": "goat1990 (based on BMad Method by Brian Madison)",
25
+ "main": "tools/cli/bmad-cli.js",
26
+ "bin": {
27
+ "bmad": "tools/bmad-npx-wrapper.js",
28
+ "bmad-method": "tools/bmad-npx-wrapper.js",
29
+ "bmad-elsabro": "tools/bmad-npx-wrapper.js"
30
+ },
31
+ "scripts": {
32
+ "bmad:install": "node tools/cli/bmad-cli.js install",
33
+ "build:electron": "tsc -p electron/tsconfig.json",
34
+ "build:electron:watch": "tsc -p electron/tsconfig.json --watch",
35
+ "build:linux": "npm run build:renderer && npm run build:electron && electron-builder --linux",
36
+ "build:mac": "npm run build:renderer && npm run build:electron && electron-builder --mac",
37
+ "build:renderer": "vite build",
38
+ "build:win": "npm run build:renderer && npm run build:electron && electron-builder --win",
39
+ "bundle": "node tools/cli/bundlers/bundle-web.js all",
40
+ "electron:build": "npm run build:renderer && npm run build:electron && electron-builder",
41
+ "electron:dev": "concurrently -k \"cross-env NODE_ENV=development npm run build:electron:watch\" \"cross-env NODE_ENV=development vite\" \"wait-on http://localhost:5173 dist/electron/main.js && cross-env NODE_ENV=development electron .\"",
42
+ "electron:start": "cross-env NODE_ENV=development electron .",
43
+ "docs:build": "node tools/build-docs.js",
44
+ "docs:dev": "astro dev --root website",
45
+ "docs:fix-links": "node tools/fix-doc-links.js",
46
+ "docs:preview": "astro preview --root website",
47
+ "docs:validate-links": "node tools/validate-doc-links.js",
48
+ "flatten": "node tools/flattener/main.js",
49
+ "format:check": "prettier --check \"**/*.{js,cjs,mjs,json,yaml}\"",
50
+ "format:fix": "prettier --write \"**/*.{js,cjs,mjs,json,yaml}\"",
51
+ "format:fix:staged": "prettier --write",
52
+ "install:bmad": "node tools/cli/bmad-cli.js install",
53
+ "lint": "eslint . --ext .js,.cjs,.mjs,.yaml --max-warnings=0",
54
+ "lint:fix": "eslint . --ext .js,.cjs,.mjs,.yaml --fix",
55
+ "lint:md": "markdownlint-cli2 \"**/*.md\"",
56
+ "prepare": "husky",
57
+ "rebundle": "node tools/cli/bundlers/bundle-web.js rebundle",
58
+ "release:major": "gh workflow run \"Manual Release\" -f version_bump=major",
59
+ "release:minor": "gh workflow run \"Manual Release\" -f version_bump=minor",
60
+ "release:patch": "gh workflow run \"Manual Release\" -f version_bump=patch",
61
+ "release:watch": "gh run watch",
62
+ "test": "jest && npm run validate:schemas && npm run lint && npm run lint:md && npm run format:check",
63
+ "test:coverage": "jest --coverage",
64
+ "test:e2e": "playwright test",
65
+ "test:e2e:headed": "playwright test --headed",
66
+ "test:e2e:debug": "playwright test --debug",
67
+ "test:e2e:ui": "playwright test --ui",
68
+ "test:install": "jest test/test-installation-components",
69
+ "test:schemas": "jest test/test-agent-schema",
70
+ "validate:schemas": "node tools/validate-agent-schema.js"
71
+ },
72
+ "lint-staged": {
73
+ "*.{js,cjs,mjs}": [
74
+ "npm run lint:fix",
75
+ "npm run format:fix:staged"
76
+ ],
77
+ "*.yaml": [
78
+ "eslint --fix",
79
+ "npm run format:fix:staged"
80
+ ],
81
+ "*.json": [
82
+ "npm run format:fix:staged"
83
+ ],
84
+ "*.md": [
85
+ "markdownlint-cli2"
86
+ ]
87
+ },
88
+ "dependencies": {
89
+ "@clack/prompts": "^0.11.0",
90
+ "@kayvan/markdown-tree-parser": "^1.6.1",
91
+ "@monaco-editor/react": "^4.6.0",
92
+ "@types/react": "^19.2.10",
93
+ "@types/react-dom": "^19.2.3",
94
+ "better-sqlite3": "^11.8.1",
95
+ "boxen": "^5.1.2",
96
+ "chalk": "^4.1.2",
97
+ "cli-table3": "^0.6.5",
98
+ "commander": "^14.0.0",
99
+ "csv-parse": "^6.1.0",
100
+ "figlet": "^1.8.0",
101
+ "fs-extra": "^11.3.0",
102
+ "glob": "^11.0.3",
103
+ "ignore": "^7.0.5",
104
+ "js-yaml": "^4.1.0",
105
+ "monaco-editor": "^0.55.1",
106
+ "ora": "^5.4.1",
107
+ "react": "^19.2.4",
108
+ "react-dom": "^19.2.4",
109
+ "reactflow": "^11.11.4",
110
+ "semver": "^7.6.3",
111
+ "wrap-ansi": "^7.0.0",
112
+ "xml2js": "^0.6.2",
113
+ "yaml": "^2.7.0"
114
+ },
115
+ "devDependencies": {
116
+ "@astrojs/sitemap": "^3.6.0",
117
+ "@astrojs/starlight": "^0.37.0",
118
+ "@eslint/js": "^9.33.0",
119
+ "@playwright/test": "^1.58.0",
120
+ "@tailwindcss/postcss": "^4.1.18",
121
+ "@types/better-sqlite3": "^7.6.12",
122
+ "@types/jest": "^29.5.14",
123
+ "@types/node": "^22.10.5",
124
+ "@vitejs/plugin-react": "^5.1.2",
125
+ "archiver": "^7.0.1",
126
+ "astro": "^5.16.0",
127
+ "autoprefixer": "^10.4.23",
128
+ "c8": "^10.1.3",
129
+ "concurrently": "^9.2.1",
130
+ "cross-env": "^10.1.0",
131
+ "electron": "^33.3.1",
132
+ "electron-builder": "^25.1.8",
133
+ "eslint": "^9.33.0",
134
+ "eslint-config-prettier": "^10.1.8",
135
+ "eslint-plugin-n": "^17.21.3",
136
+ "eslint-plugin-unicorn": "^60.0.0",
137
+ "eslint-plugin-yml": "^1.18.0",
138
+ "husky": "^9.1.7",
139
+ "jest": "^30.0.4",
140
+ "lint-staged": "^16.1.1",
141
+ "markdownlint-cli2": "^0.19.1",
142
+ "playwright": "^1.58.0",
143
+ "postcss": "^8.5.6",
144
+ "prettier": "^3.7.4",
145
+ "prettier-plugin-packagejson": "^2.5.19",
146
+ "sharp": "^0.33.5",
147
+ "tailwindcss": "^4.1.18",
148
+ "ts-jest": "^29.2.5",
149
+ "ts-node": "^10.9.2",
150
+ "typescript": "^5.7.3",
151
+ "vite": "^7.3.1",
152
+ "wait-on": "^9.0.3",
153
+ "yaml-eslint-parser": "^1.2.3",
154
+ "yaml-lint": "^1.7.0"
155
+ },
156
+ "engines": {
157
+ "node": ">=20.0.0"
158
+ },
159
+ "publishConfig": {
160
+ "access": "public"
161
+ }
162
+ }
@@ -0,0 +1,32 @@
1
+ export default {
2
+ $schema: 'https://json.schemastore.org/prettierrc',
3
+ printWidth: 140,
4
+ tabWidth: 2,
5
+ useTabs: false,
6
+ semi: true,
7
+ singleQuote: true,
8
+ trailingComma: 'all',
9
+ bracketSpacing: true,
10
+ arrowParens: 'always',
11
+ endOfLine: 'lf',
12
+ proseWrap: 'preserve',
13
+ overrides: [
14
+ {
15
+ files: ['*.md'],
16
+ options: { proseWrap: 'preserve' },
17
+ },
18
+ {
19
+ files: ['*.yaml'],
20
+ options: { singleQuote: false },
21
+ },
22
+ {
23
+ files: ['*.json', '*.jsonc'],
24
+ options: { singleQuote: false },
25
+ },
26
+ {
27
+ files: ['*.cjs'],
28
+ options: { parser: 'babel' },
29
+ },
30
+ ],
31
+ plugins: ['prettier-plugin-packagejson'],
32
+ };
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Monaco Editor Worker Loader for Electron
3
+ *
4
+ * This file provides a fallback worker loading mechanism for Monaco Editor
5
+ * in Electron environments. It helps resolve worker files from the local
6
+ * file system instead of relying on CDN or web workers.
7
+ *
8
+ * Usage:
9
+ * - Workers are loaded from local node_modules during build
10
+ * - Vite will copy Monaco worker files to the dist directory
11
+ * - This file ensures proper path resolution in Electron's file:// protocol
12
+ */
13
+
14
+ // This file serves as a placeholder for Monaco worker configuration
15
+ // The actual worker loading is handled by monaco-loader.ts via MonacoEnvironment.getWorkerUrl
16
+ // and Vite's build configuration which copies worker files from node_modules
17
+
18
+ export default {
19
+ initialized: true,
20
+ message: 'Monaco workers configured for offline Electron usage',
21
+ };
@@ -0,0 +1,311 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import Sidebar from './components/Sidebar';
3
+ import { ThemeProvider, useThemeContext } from './context/ThemeContext';
4
+ import NotificationCenter from './components/NotificationCenter';
5
+ import { useNotifications } from './hooks/useNotifications';
6
+ import TokenMonitor from './components/TokenMonitor';
7
+ import { useTokenTracking } from './hooks/useTokenTracking';
8
+ import OnboardingWizard, { OnboardingData } from './components/OnboardingWizard';
9
+
10
+ /**
11
+ * AppContent Component
12
+ *
13
+ * Main application content that uses theme context.
14
+ * Separated from App to allow ThemeProvider to wrap it.
15
+ */
16
+ const AppContent: React.FC = () => {
17
+ const [sidebarCollapsed, setSidebarCollapsed] = useState(false);
18
+ const [showOnboarding, setShowOnboarding] = useState(false);
19
+ const [isCheckingOnboarding, setIsCheckingOnboarding] = useState(true);
20
+ const { theme, toggleTheme, setTheme } = useThemeContext();
21
+ const { notifications, success, error, warning, info, dismiss } = useNotifications();
22
+ const { trackUsage, startSession, endSession, session } = useTokenTracking();
23
+
24
+ /**
25
+ * Check if user has completed onboarding
26
+ */
27
+ useEffect(() => {
28
+ const hasCompletedOnboarding = localStorage.getItem('bmad-onboarding-completed');
29
+ if (!hasCompletedOnboarding) {
30
+ setShowOnboarding(true);
31
+ }
32
+ setIsCheckingOnboarding(false);
33
+ }, []);
34
+
35
+ /**
36
+ * Handle onboarding completion
37
+ */
38
+ const handleOnboardingComplete = (data: OnboardingData) => {
39
+ // Apply user preferences
40
+ if (data.preferences.theme !== 'system') {
41
+ setTheme(data.preferences.theme);
42
+ }
43
+
44
+ // Save preferences to localStorage
45
+ localStorage.setItem('bmad-preferences', JSON.stringify(data.preferences));
46
+
47
+ // If project was created, save it (in a real app, this would create the project)
48
+ if (data.project) {
49
+ success(`Project "${data.project.name}" created successfully!`, {
50
+ description: 'You can now start working on your project.',
51
+ });
52
+ } else {
53
+ success('Welcome to BMAD Studio!', {
54
+ description: 'Explore the dashboard to get started.',
55
+ });
56
+ }
57
+
58
+ // Mark onboarding as completed
59
+ localStorage.setItem('bmad-onboarding-completed', 'true');
60
+ setShowOnboarding(false);
61
+ };
62
+
63
+ // Show loading state while checking onboarding status
64
+ if (isCheckingOnboarding) {
65
+ return (
66
+ <div className="min-h-screen bg-white dark:bg-gray-900 flex items-center justify-center">
67
+ <div className="text-gray-600 dark:text-gray-400">Loading...</div>
68
+ </div>
69
+ );
70
+ }
71
+
72
+ // Show onboarding wizard on first launch
73
+ if (showOnboarding) {
74
+ return <OnboardingWizard onComplete={handleOnboardingComplete} />;
75
+ }
76
+
77
+ return (
78
+ <div className="min-h-screen bg-white dark:bg-gray-900 text-gray-900 dark:text-white">
79
+ {/* Sidebar Navigation */}
80
+ <Sidebar
81
+ defaultCollapsed={false}
82
+ onCollapseChange={setSidebarCollapsed}
83
+ theme={theme}
84
+ />
85
+
86
+ {/* Main Content Area - Shifts based on sidebar state */}
87
+ <div
88
+ className="transition-all duration-300"
89
+ style={{
90
+ marginLeft: sidebarCollapsed ? '64px' : '240px',
91
+ }}
92
+ >
93
+ <div className="container mx-auto px-4 py-8">
94
+ <header className="mb-8 flex justify-between items-start">
95
+ <div>
96
+ <h1 className="text-4xl font-bold mb-2">BMAD Studio</h1>
97
+ <p className="text-gray-600 dark:text-gray-400">
98
+ Breakthrough Method of Agile AI-driven Development
99
+ </p>
100
+ </div>
101
+
102
+ {/* Theme Toggle Button */}
103
+ <button
104
+ onClick={toggleTheme}
105
+ className="px-4 py-2 bg-gray-200 dark:bg-gray-700 hover:bg-gray-300 dark:hover:bg-gray-600 text-gray-900 dark:text-white rounded-md transition-colors flex items-center gap-2"
106
+ aria-label={`Switch to ${theme === 'dark' ? 'light' : 'dark'} mode`}
107
+ title={`Switch to ${theme === 'dark' ? 'light' : 'dark'} mode`}
108
+ >
109
+ <span role="img" aria-hidden="true">
110
+ {theme === 'dark' ? '☀️' : '🌙'}
111
+ </span>
112
+ <span className="hidden sm:inline">
113
+ {theme === 'dark' ? 'Light' : 'Dark'} Mode
114
+ </span>
115
+ </button>
116
+ </header>
117
+
118
+ <main>
119
+ <div className="bg-gray-100 dark:bg-gray-800 rounded-lg p-6 shadow-md">
120
+ <h2 className="text-2xl font-semibold mb-4">Welcome to BMAD Studio</h2>
121
+ <p className="mb-4">
122
+ Your professional desktop application for AI-driven development workflows.
123
+ </p>
124
+ <div className="flex gap-4">
125
+ <button className="px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-md transition-colors">
126
+ Get Started
127
+ </button>
128
+ <button className="px-4 py-2 bg-gray-300 dark:bg-gray-700 hover:bg-gray-400 dark:hover:bg-gray-600 text-gray-900 dark:text-white rounded-md transition-colors">
129
+ Learn More
130
+ </button>
131
+ </div>
132
+ </div>
133
+
134
+ {/* Notification Demo Section */}
135
+ <div className="mt-8 bg-gray-100 dark:bg-gray-800 rounded-lg p-6 shadow-md">
136
+ <h2 className="text-2xl font-semibold mb-4">Notification System Demo</h2>
137
+ <p className="mb-4 text-gray-600 dark:text-gray-400">
138
+ Test the notification system with different types of notifications:
139
+ </p>
140
+ <div className="flex flex-wrap gap-3">
141
+ <button
142
+ onClick={() => success('Operation completed successfully!')}
143
+ className="px-4 py-2 bg-green-600 hover:bg-green-700 text-white rounded-md transition-colors"
144
+ >
145
+ ✓ Success
146
+ </button>
147
+ <button
148
+ onClick={() => error('An error occurred. Please try again.', {
149
+ description: 'This error will not auto-dismiss.'
150
+ })}
151
+ className="px-4 py-2 bg-red-600 hover:bg-red-700 text-white rounded-md transition-colors"
152
+ >
153
+ ✕ Error
154
+ </button>
155
+ <button
156
+ onClick={() => warning('This action cannot be undone!', {
157
+ description: 'Please confirm before proceeding.'
158
+ })}
159
+ className="px-4 py-2 bg-yellow-600 hover:bg-yellow-700 text-white rounded-md transition-colors"
160
+ >
161
+ ⚠ Warning
162
+ </button>
163
+ <button
164
+ onClick={() => info('New update available', {
165
+ description: 'Version 1.1.0 is ready to install.',
166
+ action: {
167
+ label: 'Update Now',
168
+ onClick: () => {
169
+ success('Update started!');
170
+ }
171
+ }
172
+ })}
173
+ className="px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-md transition-colors"
174
+ >
175
+ ℹ Info with Action
176
+ </button>
177
+ <button
178
+ onClick={() => {
179
+ success('First notification');
180
+ setTimeout(() => warning('Second notification'), 200);
181
+ setTimeout(() => info('Third notification'), 400);
182
+ }}
183
+ className="px-4 py-2 bg-purple-600 hover:bg-purple-700 text-white rounded-md transition-colors"
184
+ >
185
+ 🔔 Multiple Notifications
186
+ </button>
187
+ </div>
188
+ </div>
189
+
190
+ {/* Token Tracking Demo Section */}
191
+ <div className="mt-8 bg-gray-100 dark:bg-gray-800 rounded-lg p-6 shadow-md">
192
+ <h2 className="text-2xl font-semibold mb-4">Token Tracking Demo</h2>
193
+ <p className="mb-4 text-gray-600 dark:text-gray-400">
194
+ Test the token tracking system with simulated AI interactions:
195
+ </p>
196
+ <div className="flex flex-wrap gap-3">
197
+ <button
198
+ onClick={async () => {
199
+ if (!session) {
200
+ await startSession('demo-workflow');
201
+ success('Session started!');
202
+ } else {
203
+ success('Session already active');
204
+ }
205
+ }}
206
+ className="px-4 py-2 bg-green-600 hover:bg-green-700 text-white rounded-md transition-colors"
207
+ >
208
+ ▶️ Start Session
209
+ </button>
210
+ <button
211
+ onClick={async () => {
212
+ await trackUsage({
213
+ tokensUsed: 150,
214
+ operationType: 'chat',
215
+ agentName: 'demo-agent',
216
+ model: 'claude-3-sonnet',
217
+ inputTokens: 100,
218
+ outputTokens: 50,
219
+ });
220
+ info('Tracked 150 tokens');
221
+ }}
222
+ className="px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-md transition-colors"
223
+ >
224
+ 💬 Chat (150 tokens)
225
+ </button>
226
+ <button
227
+ onClick={async () => {
228
+ await trackUsage({
229
+ tokensUsed: 500,
230
+ operationType: 'code-generation',
231
+ agentName: 'demo-agent',
232
+ model: 'claude-3-sonnet',
233
+ inputTokens: 200,
234
+ outputTokens: 300,
235
+ });
236
+ info('Tracked 500 tokens');
237
+ }}
238
+ className="px-4 py-2 bg-purple-600 hover:bg-purple-700 text-white rounded-md transition-colors"
239
+ >
240
+ ⚙️ Code Gen (500 tokens)
241
+ </button>
242
+ <button
243
+ onClick={async () => {
244
+ await trackUsage({
245
+ tokensUsed: 1000,
246
+ operationType: 'analysis',
247
+ agentName: 'demo-agent',
248
+ model: 'claude-3-opus',
249
+ inputTokens: 600,
250
+ outputTokens: 400,
251
+ });
252
+ warning('Tracked 1000 tokens - large operation');
253
+ }}
254
+ className="px-4 py-2 bg-orange-600 hover:bg-orange-700 text-white rounded-md transition-colors"
255
+ >
256
+ 📊 Analysis (1000 tokens)
257
+ </button>
258
+ <button
259
+ onClick={async () => {
260
+ const result = await endSession();
261
+ if (result) {
262
+ success(`Session ended! Total: ${result.totalTokens} tokens`);
263
+ } else {
264
+ warning('No active session to end');
265
+ }
266
+ }}
267
+ className="px-4 py-2 bg-red-600 hover:bg-red-700 text-white rounded-md transition-colors"
268
+ >
269
+ ⏹️ End Session
270
+ </button>
271
+ </div>
272
+ {session && (
273
+ <div className="mt-4 p-3 bg-blue-50 dark:bg-blue-900/20 rounded border border-blue-200 dark:border-blue-800">
274
+ <p className="text-sm text-blue-800 dark:text-blue-200">
275
+ <strong>Active Session:</strong> {session.sessionId} · {session.totalTokens} tokens
276
+ </p>
277
+ </div>
278
+ )}
279
+ </div>
280
+ </main>
281
+ </div>
282
+ </div>
283
+
284
+ {/* Notification Center - Fixed Position */}
285
+ <NotificationCenter
286
+ notifications={notifications}
287
+ onDismiss={dismiss}
288
+ position="top-right"
289
+ />
290
+
291
+ {/* Token Monitor - Fixed Position */}
292
+ <TokenMonitor position="bottom-right" />
293
+ </div>
294
+ );
295
+ };
296
+
297
+ /**
298
+ * App Component
299
+ *
300
+ * Root application component with ThemeProvider wrapper.
301
+ * Provides theme context to all child components.
302
+ */
303
+ const App: React.FC = () => {
304
+ return (
305
+ <ThemeProvider>
306
+ <AppContent />
307
+ </ThemeProvider>
308
+ );
309
+ };
310
+
311
+ export default App;