specweave 0.21.2 → 0.21.3

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 (553) hide show
  1. package/CLAUDE.md +232 -5
  2. package/dist/plugins/specweave-github/lib/IssueStateManager.d.ts +98 -0
  3. package/dist/plugins/specweave-github/lib/IssueStateManager.d.ts.map +1 -0
  4. package/dist/plugins/specweave-github/lib/IssueStateManager.js +146 -0
  5. package/dist/plugins/specweave-github/lib/IssueStateManager.js.map +1 -0
  6. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -1
  7. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +6 -0
  8. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -1
  9. package/dist/src/cli/commands/check-hooks.d.ts +11 -0
  10. package/dist/src/cli/commands/check-hooks.d.ts.map +1 -0
  11. package/dist/src/cli/commands/check-hooks.js +144 -0
  12. package/dist/src/cli/commands/check-hooks.js.map +1 -0
  13. package/dist/src/cli/commands/cicd-monitor.js +3 -3
  14. package/dist/src/cli/commands/cicd-monitor.js.map +1 -1
  15. package/dist/src/cli/commands/import-docs.js +2 -2
  16. package/dist/src/cli/commands/import-docs.js.map +1 -1
  17. package/dist/src/cli/commands/init-multiproject.js +4 -4
  18. package/dist/src/cli/commands/init-multiproject.js.map +1 -1
  19. package/dist/src/cli/commands/migrate-to-multiproject.js +3 -3
  20. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  21. package/dist/src/cli/commands/plan/agent-invoker.d.ts +79 -0
  22. package/dist/src/cli/commands/plan/agent-invoker.d.ts.map +1 -0
  23. package/dist/src/cli/commands/plan/agent-invoker.js +383 -0
  24. package/dist/src/cli/commands/plan/agent-invoker.js.map +1 -0
  25. package/dist/src/cli/commands/plan/increment-detector.d.ts +27 -0
  26. package/dist/src/cli/commands/plan/increment-detector.d.ts.map +1 -0
  27. package/dist/src/cli/commands/plan/increment-detector.js +159 -0
  28. package/dist/src/cli/commands/plan/increment-detector.js.map +1 -0
  29. package/dist/src/cli/commands/plan/plan-orchestrator.d.ts +45 -0
  30. package/dist/src/cli/commands/plan/plan-orchestrator.d.ts.map +1 -0
  31. package/dist/src/cli/commands/plan/plan-orchestrator.js +229 -0
  32. package/dist/src/cli/commands/plan/plan-orchestrator.js.map +1 -0
  33. package/dist/src/cli/commands/plan/plan-validator.d.ts +36 -0
  34. package/dist/src/cli/commands/plan/plan-validator.d.ts.map +1 -0
  35. package/dist/src/cli/commands/plan/plan-validator.js +174 -0
  36. package/dist/src/cli/commands/plan/plan-validator.js.map +1 -0
  37. package/dist/src/cli/commands/plan/types.d.ts +170 -0
  38. package/dist/src/cli/commands/plan/types.d.ts.map +1 -0
  39. package/dist/src/cli/commands/plan/types.js +42 -0
  40. package/dist/src/cli/commands/plan/types.js.map +1 -0
  41. package/dist/src/cli/commands/plan-command.d.ts +16 -0
  42. package/dist/src/cli/commands/plan-command.d.ts.map +1 -0
  43. package/dist/src/cli/commands/plan-command.js +127 -0
  44. package/dist/src/cli/commands/plan-command.js.map +1 -0
  45. package/dist/src/cli/commands/switch-project.js +3 -3
  46. package/dist/src/cli/commands/switch-project.js.map +1 -1
  47. package/dist/src/cli/commands/validate-parent-repo.js +1 -1
  48. package/dist/src/cli/commands/validate-parent-repo.js.map +1 -1
  49. package/dist/src/config/ConfigManager.d.ts +69 -0
  50. package/dist/src/config/ConfigManager.d.ts.map +1 -0
  51. package/dist/src/config/ConfigManager.js +130 -0
  52. package/dist/src/config/ConfigManager.js.map +1 -0
  53. package/dist/src/config/types.d.ts +1357 -0
  54. package/dist/src/config/types.d.ts.map +1 -0
  55. package/dist/src/config/types.js +67 -0
  56. package/dist/src/config/types.js.map +1 -0
  57. package/dist/src/core/brownfield/importer.d.ts +1 -1
  58. package/dist/src/core/brownfield/importer.d.ts.map +1 -1
  59. package/dist/src/core/brownfield/importer.js +3 -3
  60. package/dist/src/core/brownfield/importer.js.map +1 -1
  61. package/dist/src/core/cicd/config-loader.d.ts +1 -1
  62. package/dist/src/core/cicd/config-loader.d.ts.map +1 -1
  63. package/dist/src/core/cicd/index.d.ts +6 -6
  64. package/dist/src/core/cicd/index.d.ts.map +1 -1
  65. package/dist/src/core/cicd/index.js +6 -6
  66. package/dist/src/core/cicd/index.js.map +1 -1
  67. package/dist/src/core/cicd/monitor-service.d.ts +3 -3
  68. package/dist/src/core/cicd/monitor-service.d.ts.map +1 -1
  69. package/dist/src/core/cicd/monitor-service.js +3 -3
  70. package/dist/src/core/cicd/monitor-service.js.map +1 -1
  71. package/dist/src/core/cicd/notifier.d.ts +1 -1
  72. package/dist/src/core/cicd/notifier.d.ts.map +1 -1
  73. package/dist/src/core/cicd/state-manager.d.ts +1 -1
  74. package/dist/src/core/cicd/state-manager.d.ts.map +1 -1
  75. package/dist/src/core/cicd/state-manager.js +1 -1
  76. package/dist/src/core/cicd/state-manager.js.map +1 -1
  77. package/dist/src/core/cicd/workflow-monitor.d.ts +1 -1
  78. package/dist/src/core/cicd/workflow-monitor.d.ts.map +1 -1
  79. package/dist/src/core/cicd/workflow-monitor.js +1 -1
  80. package/dist/src/core/cicd/workflow-monitor.js.map +1 -1
  81. package/dist/src/core/cost-tracker.d.ts +2 -2
  82. package/dist/src/core/cost-tracker.d.ts.map +1 -1
  83. package/dist/src/core/cost-tracker.js +1 -1
  84. package/dist/src/core/cost-tracker.js.map +1 -1
  85. package/dist/src/core/hooks/HealthReporter.d.ts +55 -0
  86. package/dist/src/core/hooks/HealthReporter.d.ts.map +1 -0
  87. package/dist/src/core/hooks/HealthReporter.js +268 -0
  88. package/dist/src/core/hooks/HealthReporter.js.map +1 -0
  89. package/dist/src/core/hooks/HookAutoFixer.d.ts +41 -0
  90. package/dist/src/core/hooks/HookAutoFixer.d.ts.map +1 -0
  91. package/dist/src/core/hooks/HookAutoFixer.js +222 -0
  92. package/dist/src/core/hooks/HookAutoFixer.js.map +1 -0
  93. package/dist/src/core/hooks/HookExecutor.d.ts +57 -0
  94. package/dist/src/core/hooks/HookExecutor.d.ts.map +1 -0
  95. package/dist/src/core/hooks/HookExecutor.js +287 -0
  96. package/dist/src/core/hooks/HookExecutor.js.map +1 -0
  97. package/dist/src/core/hooks/HookHealthChecker.d.ts +51 -0
  98. package/dist/src/core/hooks/HookHealthChecker.d.ts.map +1 -0
  99. package/dist/src/core/hooks/HookHealthChecker.js +212 -0
  100. package/dist/src/core/hooks/HookHealthChecker.js.map +1 -0
  101. package/dist/src/core/hooks/HookScanner.d.ts +65 -0
  102. package/dist/src/core/hooks/HookScanner.d.ts.map +1 -0
  103. package/dist/src/core/hooks/HookScanner.js +214 -0
  104. package/dist/src/core/hooks/HookScanner.js.map +1 -0
  105. package/dist/src/core/hooks/types.d.ts +281 -0
  106. package/dist/src/core/hooks/types.d.ts.map +1 -0
  107. package/dist/src/core/hooks/types.js +10 -0
  108. package/dist/src/core/hooks/types.js.map +1 -0
  109. package/dist/src/core/iac/index.d.ts +10 -0
  110. package/dist/src/core/iac/index.d.ts.map +1 -0
  111. package/dist/src/core/iac/index.js +11 -0
  112. package/dist/src/core/iac/index.js.map +1 -0
  113. package/dist/src/core/iac/template-engine.d.ts +77 -0
  114. package/dist/src/core/iac/template-engine.d.ts.map +1 -0
  115. package/dist/src/core/iac/template-engine.js +182 -0
  116. package/dist/src/core/iac/template-engine.js.map +1 -0
  117. package/dist/src/core/increment/ac-status-manager.d.ts +115 -0
  118. package/dist/src/core/increment/ac-status-manager.d.ts.map +1 -0
  119. package/dist/src/core/increment/ac-status-manager.js +343 -0
  120. package/dist/src/core/increment/ac-status-manager.js.map +1 -0
  121. package/dist/src/core/increment/auto-transition-manager.d.ts +60 -0
  122. package/dist/src/core/increment/auto-transition-manager.d.ts.map +1 -0
  123. package/dist/src/core/increment/auto-transition-manager.js +192 -0
  124. package/dist/src/core/increment/auto-transition-manager.js.map +1 -0
  125. package/dist/src/core/increment/limits.d.ts +1 -1
  126. package/dist/src/core/increment/limits.d.ts.map +1 -1
  127. package/dist/src/core/increment/limits.js +2 -2
  128. package/dist/src/core/increment/limits.js.map +1 -1
  129. package/dist/src/core/increment/spec-sync-manager.d.ts +177 -0
  130. package/dist/src/core/increment/spec-sync-manager.d.ts.map +1 -0
  131. package/dist/src/core/increment/spec-sync-manager.js +496 -0
  132. package/dist/src/core/increment/spec-sync-manager.js.map +1 -0
  133. package/dist/src/core/increment/status-auto-transition.d.ts +46 -0
  134. package/dist/src/core/increment/status-auto-transition.d.ts.map +1 -0
  135. package/dist/src/core/increment/status-auto-transition.js +178 -0
  136. package/dist/src/core/increment/status-auto-transition.js.map +1 -0
  137. package/dist/src/core/increment/task-state-manager.d.ts +75 -0
  138. package/dist/src/core/increment/task-state-manager.d.ts.map +1 -0
  139. package/dist/src/core/increment/task-state-manager.js +117 -0
  140. package/dist/src/core/increment/task-state-manager.js.map +1 -0
  141. package/dist/src/core/living-docs/CodeValidator.d.ts +68 -0
  142. package/dist/src/core/living-docs/CodeValidator.d.ts.map +1 -0
  143. package/dist/src/core/living-docs/CodeValidator.js +160 -0
  144. package/dist/src/core/living-docs/CodeValidator.js.map +1 -0
  145. package/dist/src/core/living-docs/CompletionPropagator.d.ts +84 -0
  146. package/dist/src/core/living-docs/CompletionPropagator.d.ts.map +1 -0
  147. package/dist/src/core/living-docs/CompletionPropagator.js +205 -0
  148. package/dist/src/core/living-docs/CompletionPropagator.js.map +1 -0
  149. package/dist/src/core/living-docs/ProjectDetector.d.ts +29 -0
  150. package/dist/src/core/living-docs/ProjectDetector.d.ts.map +1 -0
  151. package/dist/src/core/living-docs/ProjectDetector.js +94 -0
  152. package/dist/src/core/living-docs/ProjectDetector.js.map +1 -0
  153. package/dist/src/core/living-docs/SpecDistributor.d.ts +55 -0
  154. package/dist/src/core/living-docs/SpecDistributor.d.ts.map +1 -0
  155. package/dist/src/core/living-docs/SpecDistributor.js +216 -0
  156. package/dist/src/core/living-docs/SpecDistributor.js.map +1 -0
  157. package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts +116 -0
  158. package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts.map +1 -0
  159. package/dist/src/core/living-docs/ThreeLayerSyncManager.js +356 -0
  160. package/dist/src/core/living-docs/ThreeLayerSyncManager.js.map +1 -0
  161. package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
  162. package/dist/src/core/living-docs/hierarchy-mapper.js +2 -1
  163. package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
  164. package/dist/src/core/living-docs/index.d.ts +1 -1
  165. package/dist/src/core/living-docs/index.d.ts.map +1 -1
  166. package/dist/src/core/living-docs/index.js +5 -1
  167. package/dist/src/core/living-docs/index.js.map +1 -1
  168. package/dist/src/core/living-docs/types.d.ts +70 -300
  169. package/dist/src/core/living-docs/types.d.ts.map +1 -1
  170. package/dist/src/core/living-docs/types.js +2 -10
  171. package/dist/src/core/living-docs/types.js.map +1 -1
  172. package/dist/src/core/project-manager.d.ts +1 -1
  173. package/dist/src/core/project-manager.d.ts.map +1 -1
  174. package/dist/src/core/project-manager.js +2 -2
  175. package/dist/src/core/project-manager.js.map +1 -1
  176. package/dist/src/core/qa/quality-gate-decider.d.ts +1 -1
  177. package/dist/src/core/qa/quality-gate-decider.d.ts.map +1 -1
  178. package/dist/src/core/qa/risk-calculator.d.ts +1 -1
  179. package/dist/src/core/qa/risk-calculator.d.ts.map +1 -1
  180. package/dist/src/core/repo-structure/setup-summary.d.ts +1 -1
  181. package/dist/src/core/repo-structure/setup-summary.d.ts.map +1 -1
  182. package/dist/src/core/rfc-generator-v2.d.ts +1 -1
  183. package/dist/src/core/rfc-generator-v2.d.ts.map +1 -1
  184. package/dist/src/core/rfc-generator-v2.js +1 -1
  185. package/dist/src/core/rfc-generator-v2.js.map +1 -1
  186. package/dist/src/core/serverless/context-detector.d.ts +12 -0
  187. package/dist/src/core/serverless/context-detector.d.ts.map +1 -0
  188. package/dist/src/core/serverless/context-detector.js +213 -0
  189. package/dist/src/core/serverless/context-detector.js.map +1 -0
  190. package/dist/src/core/serverless/cost-comparison.d.ts +73 -0
  191. package/dist/src/core/serverless/cost-comparison.d.ts.map +1 -0
  192. package/dist/src/core/serverless/cost-comparison.js +198 -0
  193. package/dist/src/core/serverless/cost-comparison.js.map +1 -0
  194. package/dist/src/core/serverless/cost-estimator.d.ts +69 -0
  195. package/dist/src/core/serverless/cost-estimator.d.ts.map +1 -0
  196. package/dist/src/core/serverless/cost-estimator.js +127 -0
  197. package/dist/src/core/serverless/cost-estimator.js.map +1 -0
  198. package/dist/src/core/serverless/cost-optimizer.d.ts +57 -0
  199. package/dist/src/core/serverless/cost-optimizer.d.ts.map +1 -0
  200. package/dist/src/core/serverless/cost-optimizer.js +221 -0
  201. package/dist/src/core/serverless/cost-optimizer.js.map +1 -0
  202. package/dist/src/core/serverless/index.d.ts +20 -0
  203. package/dist/src/core/serverless/index.d.ts.map +1 -0
  204. package/dist/src/core/serverless/index.js +26 -0
  205. package/dist/src/core/serverless/index.js.map +1 -0
  206. package/dist/src/core/serverless/learning-path-recommender.d.ts +152 -0
  207. package/dist/src/core/serverless/learning-path-recommender.d.ts.map +1 -0
  208. package/dist/src/core/serverless/learning-path-recommender.js +389 -0
  209. package/dist/src/core/serverless/learning-path-recommender.js.map +1 -0
  210. package/dist/src/core/serverless/platform-data-loader.d.ts +22 -0
  211. package/dist/src/core/serverless/platform-data-loader.d.ts.map +1 -0
  212. package/dist/src/core/serverless/platform-data-loader.js +49 -0
  213. package/dist/src/core/serverless/platform-data-loader.js.map +1 -0
  214. package/dist/src/core/serverless/platform-selector.d.ts +20 -0
  215. package/dist/src/core/serverless/platform-selector.d.ts.map +1 -0
  216. package/dist/src/core/serverless/platform-selector.js +279 -0
  217. package/dist/src/core/serverless/platform-selector.js.map +1 -0
  218. package/dist/src/core/serverless/recommendation-formatter.d.ts +24 -0
  219. package/dist/src/core/serverless/recommendation-formatter.d.ts.map +1 -0
  220. package/dist/src/core/serverless/recommendation-formatter.js +70 -0
  221. package/dist/src/core/serverless/recommendation-formatter.js.map +1 -0
  222. package/dist/src/core/serverless/suitability-analyzer.d.ts +22 -0
  223. package/dist/src/core/serverless/suitability-analyzer.d.ts.map +1 -0
  224. package/dist/src/core/serverless/suitability-analyzer.js +262 -0
  225. package/dist/src/core/serverless/suitability-analyzer.js.map +1 -0
  226. package/dist/src/core/serverless/types.d.ts +96 -0
  227. package/dist/src/core/serverless/types.d.ts.map +1 -0
  228. package/dist/src/core/serverless/types.js +5 -0
  229. package/dist/src/core/serverless/types.js.map +1 -0
  230. package/dist/src/core/sync/bidirectional-engine.d.ts +1 -1
  231. package/dist/src/core/sync/bidirectional-engine.d.ts.map +1 -1
  232. package/dist/src/core/sync/enhanced-content-builder.d.ts +1 -1
  233. package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
  234. package/dist/src/core/sync/profile-manager.d.ts +1 -1
  235. package/dist/src/core/sync/profile-manager.d.ts.map +1 -1
  236. package/dist/src/core/sync/profile-selector.d.ts +1 -1
  237. package/dist/src/core/sync/profile-selector.d.ts.map +1 -1
  238. package/dist/src/core/sync/profile-selector.js +1 -1
  239. package/dist/src/core/sync/profile-selector.js.map +1 -1
  240. package/dist/src/core/sync/project-context.d.ts +1 -1
  241. package/dist/src/core/sync/project-context.d.ts.map +1 -1
  242. package/dist/src/core/sync/rate-limiter.d.ts +1 -1
  243. package/dist/src/core/sync/rate-limiter.d.ts.map +1 -1
  244. package/dist/src/core/sync/status-sync-engine.d.ts +2 -2
  245. package/dist/src/core/sync/status-sync-engine.d.ts.map +1 -1
  246. package/dist/src/core/sync/status-sync-engine.js +2 -2
  247. package/dist/src/core/sync/status-sync-engine.js.map +1 -1
  248. package/dist/src/core/sync/time-range-selector.d.ts +1 -1
  249. package/dist/src/core/sync/time-range-selector.d.ts.map +1 -1
  250. package/dist/src/core/sync/time-range-selector.js +1 -1
  251. package/dist/src/core/sync/time-range-selector.js.map +1 -1
  252. package/dist/src/core/types/increment-metadata.d.ts +27 -0
  253. package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
  254. package/dist/src/core/types/increment-metadata.js +45 -1
  255. package/dist/src/core/types/increment-metadata.js.map +1 -1
  256. package/dist/src/core/types/sync-profile.d.ts +2 -0
  257. package/dist/src/core/types/sync-profile.d.ts.map +1 -1
  258. package/dist/src/core/types/sync-profile.js.map +1 -1
  259. package/dist/src/core/validation/increment-structure-validator.d.ts +47 -0
  260. package/dist/src/core/validation/increment-structure-validator.d.ts.map +1 -0
  261. package/dist/src/core/validation/increment-structure-validator.js +187 -0
  262. package/dist/src/core/validation/increment-structure-validator.js.map +1 -0
  263. package/dist/src/core/validation/three-file-validator.d.ts +82 -0
  264. package/dist/src/core/validation/three-file-validator.d.ts.map +1 -0
  265. package/dist/src/core/validation/three-file-validator.js +320 -0
  266. package/dist/src/core/validation/three-file-validator.js.map +1 -0
  267. package/dist/src/core/workflow/phase-detector.d.ts +103 -0
  268. package/dist/src/core/workflow/phase-detector.d.ts.map +1 -0
  269. package/dist/src/core/workflow/phase-detector.js +704 -0
  270. package/dist/src/core/workflow/phase-detector.js.map +1 -0
  271. package/dist/src/core/workflow/types.d.ts +153 -0
  272. package/dist/src/core/workflow/types.d.ts.map +1 -0
  273. package/dist/src/core/workflow/types.js +47 -0
  274. package/dist/src/core/workflow/types.js.map +1 -0
  275. package/dist/src/init/InitFlow.d.ts +37 -0
  276. package/dist/src/init/InitFlow.d.ts.map +1 -0
  277. package/dist/src/init/InitFlow.js +209 -0
  278. package/dist/src/init/InitFlow.js.map +1 -0
  279. package/dist/src/init/architecture/ArchitectureDecisionEngine.d.ts +107 -0
  280. package/dist/src/init/architecture/ArchitectureDecisionEngine.d.ts.map +1 -0
  281. package/dist/src/init/architecture/ArchitectureDecisionEngine.js +405 -0
  282. package/dist/src/init/architecture/ArchitectureDecisionEngine.js.map +1 -0
  283. package/dist/src/init/architecture/CloudCreditsDatabase.d.ts +11 -0
  284. package/dist/src/init/architecture/CloudCreditsDatabase.d.ts.map +1 -0
  285. package/dist/src/init/architecture/CloudCreditsDatabase.js +92 -0
  286. package/dist/src/init/architecture/CloudCreditsDatabase.js.map +1 -0
  287. package/dist/src/init/architecture/types.d.ts +251 -0
  288. package/dist/src/init/architecture/types.d.ts.map +1 -0
  289. package/dist/src/init/architecture/types.js +54 -0
  290. package/dist/src/init/architecture/types.js.map +1 -0
  291. package/dist/src/init/compliance/ComplianceDetector.d.ts +17 -0
  292. package/dist/src/init/compliance/ComplianceDetector.d.ts.map +1 -0
  293. package/dist/src/init/compliance/ComplianceDetector.js +64 -0
  294. package/dist/src/init/compliance/ComplianceDetector.js.map +1 -0
  295. package/dist/src/init/compliance/standards-database.d.ts +48 -0
  296. package/dist/src/init/compliance/standards-database.d.ts.map +1 -0
  297. package/dist/src/init/compliance/standards-database.js +506 -0
  298. package/dist/src/init/compliance/standards-database.js.map +1 -0
  299. package/dist/src/init/compliance/types.d.ts +91 -0
  300. package/dist/src/init/compliance/types.d.ts.map +1 -0
  301. package/dist/src/init/compliance/types.js +43 -0
  302. package/dist/src/init/compliance/types.js.map +1 -0
  303. package/dist/src/init/repo/GitHubAPIClient.d.ts +51 -0
  304. package/dist/src/init/repo/GitHubAPIClient.d.ts.map +1 -0
  305. package/dist/src/init/repo/GitHubAPIClient.js +144 -0
  306. package/dist/src/init/repo/GitHubAPIClient.js.map +1 -0
  307. package/dist/src/init/repo/RepositorySelector.d.ts +45 -0
  308. package/dist/src/init/repo/RepositorySelector.d.ts.map +1 -0
  309. package/dist/src/init/repo/RepositorySelector.js +106 -0
  310. package/dist/src/init/repo/RepositorySelector.js.map +1 -0
  311. package/dist/src/init/repo/types.d.ts +95 -0
  312. package/dist/src/init/repo/types.d.ts.map +1 -0
  313. package/dist/src/init/repo/types.js +25 -0
  314. package/dist/src/init/repo/types.js.map +1 -0
  315. package/dist/src/init/research/CompetitorAnalyzer.d.ts +79 -0
  316. package/dist/src/init/research/CompetitorAnalyzer.d.ts.map +1 -0
  317. package/dist/src/init/research/CompetitorAnalyzer.js +265 -0
  318. package/dist/src/init/research/CompetitorAnalyzer.js.map +1 -0
  319. package/dist/src/init/research/MarketDetector.d.ts +62 -0
  320. package/dist/src/init/research/MarketDetector.d.ts.map +1 -0
  321. package/dist/src/init/research/MarketDetector.js +247 -0
  322. package/dist/src/init/research/MarketDetector.js.map +1 -0
  323. package/dist/src/init/research/OpportunityScorer.d.ts +58 -0
  324. package/dist/src/init/research/OpportunityScorer.d.ts.map +1 -0
  325. package/dist/src/init/research/OpportunityScorer.js +194 -0
  326. package/dist/src/init/research/OpportunityScorer.js.map +1 -0
  327. package/dist/src/init/research/QuestionGenerator.d.ts +68 -0
  328. package/dist/src/init/research/QuestionGenerator.d.ts.map +1 -0
  329. package/dist/src/init/research/QuestionGenerator.js +244 -0
  330. package/dist/src/init/research/QuestionGenerator.js.map +1 -0
  331. package/dist/src/init/research/ReportGenerator.d.ts +36 -0
  332. package/dist/src/init/research/ReportGenerator.d.ts.map +1 -0
  333. package/dist/src/init/research/ReportGenerator.js +125 -0
  334. package/dist/src/init/research/ReportGenerator.js.map +1 -0
  335. package/dist/src/init/research/VisionAnalyzer.d.ts +129 -0
  336. package/dist/src/init/research/VisionAnalyzer.d.ts.map +1 -0
  337. package/dist/src/init/research/VisionAnalyzer.js +212 -0
  338. package/dist/src/init/research/VisionAnalyzer.js.map +1 -0
  339. package/dist/src/init/research/keyword-extractor.d.ts +78 -0
  340. package/dist/src/init/research/keyword-extractor.d.ts.map +1 -0
  341. package/dist/src/init/research/keyword-extractor.js +230 -0
  342. package/dist/src/init/research/keyword-extractor.js.map +1 -0
  343. package/dist/src/init/research/src/config/ConfigManager.d.ts +14 -0
  344. package/dist/src/init/research/src/config/ConfigManager.d.ts.map +1 -0
  345. package/dist/src/init/research/src/config/ConfigManager.js +45 -0
  346. package/dist/src/init/research/src/config/ConfigManager.js.map +1 -0
  347. package/dist/src/init/research/src/config/types.d.ts +102 -0
  348. package/dist/src/init/research/src/config/types.d.ts.map +1 -0
  349. package/dist/src/init/research/src/config/types.js +24 -0
  350. package/dist/src/init/research/src/config/types.js.map +1 -0
  351. package/dist/src/init/research/types.d.ts +183 -0
  352. package/dist/src/init/research/types.d.ts.map +1 -0
  353. package/dist/src/init/research/types.js +65 -0
  354. package/dist/src/init/research/types.js.map +1 -0
  355. package/dist/src/init/team/ServerlessSavingsCalculator.d.ts +136 -0
  356. package/dist/src/init/team/ServerlessSavingsCalculator.d.ts.map +1 -0
  357. package/dist/src/init/team/ServerlessSavingsCalculator.js +360 -0
  358. package/dist/src/init/team/ServerlessSavingsCalculator.js.map +1 -0
  359. package/dist/src/init/team/TeamRecommender.d.ts +122 -0
  360. package/dist/src/init/team/TeamRecommender.d.ts.map +1 -0
  361. package/dist/src/init/team/TeamRecommender.js +405 -0
  362. package/dist/src/init/team/TeamRecommender.js.map +1 -0
  363. package/dist/src/init/team/types.d.ts +95 -0
  364. package/dist/src/init/team/types.d.ts.map +1 -0
  365. package/dist/src/init/team/types.js +23 -0
  366. package/dist/src/init/team/types.js.map +1 -0
  367. package/dist/src/integrations/jira/jira-mapper.d.ts +1 -1
  368. package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
  369. package/dist/src/types/cost-tracking.d.ts +1 -1
  370. package/dist/src/types/cost-tracking.d.ts.map +1 -1
  371. package/dist/src/utils/cost-reporter.d.ts +2 -2
  372. package/dist/src/utils/cost-reporter.d.ts.map +1 -1
  373. package/dist/src/utils/docs-preview/config-generator.d.ts +1 -1
  374. package/dist/src/utils/docs-preview/config-generator.d.ts.map +1 -1
  375. package/dist/src/utils/docs-preview/config-generator.js +1 -1
  376. package/dist/src/utils/docs-preview/docusaurus-setup.d.ts +1 -1
  377. package/dist/src/utils/docs-preview/docusaurus-setup.d.ts.map +1 -1
  378. package/dist/src/utils/docs-preview/docusaurus-setup.js +4 -4
  379. package/dist/src/utils/docs-preview/docusaurus-setup.js.map +1 -1
  380. package/dist/src/utils/docs-preview/index.d.ts +6 -6
  381. package/dist/src/utils/docs-preview/index.d.ts.map +1 -1
  382. package/dist/src/utils/docs-preview/index.js +6 -6
  383. package/dist/src/utils/docs-preview/index.js.map +1 -1
  384. package/dist/src/utils/docs-preview/package-installer.d.ts +1 -1
  385. package/dist/src/utils/docs-preview/package-installer.d.ts.map +1 -1
  386. package/dist/src/utils/docs-preview/package-installer.js +1 -1
  387. package/dist/src/utils/docs-preview/package-installer.js.map +1 -1
  388. package/dist/src/utils/docs-preview/server-manager.d.ts +1 -1
  389. package/dist/src/utils/docs-preview/server-manager.d.ts.map +1 -1
  390. package/dist/src/utils/docs-preview/server-manager.js +1 -1
  391. package/dist/src/utils/docs-preview/server-manager.js.map +1 -1
  392. package/dist/src/utils/docs-preview/sidebar-builder.d.ts +1 -1
  393. package/dist/src/utils/docs-preview/sidebar-builder.d.ts.map +1 -1
  394. package/dist/src/utils/generate-skills-index.d.ts +1 -1
  395. package/dist/src/utils/generate-skills-index.js +1 -1
  396. package/dist/src/utils/project-detection.js +1 -1
  397. package/dist/src/utils/project-detection.js.map +1 -1
  398. package/package.json +9 -3
  399. package/plugins/specweave/agents/architect/AGENT.md +605 -0
  400. package/plugins/specweave/agents/infrastructure/AGENT.md +760 -0
  401. package/plugins/specweave/agents/pm/AGENT.md +14 -13
  402. package/plugins/specweave/commands/specweave-check-hooks.md +186 -0
  403. package/plugins/specweave/commands/specweave-plan.md +151 -0
  404. package/plugins/specweave/commands/specweave-sync-acs.md +342 -0
  405. package/plugins/specweave/commands/specweave-validate.md +60 -11
  406. package/plugins/specweave/hooks/lib/update-status-line.sh +8 -4
  407. package/plugins/specweave/hooks/post-increment-change.sh +4 -0
  408. package/plugins/specweave/hooks/post-increment-completion.sh +7 -1
  409. package/plugins/specweave/hooks/post-increment-planning.sh +4 -0
  410. package/plugins/specweave/hooks/post-increment-status-change.sh +4 -0
  411. package/plugins/specweave/hooks/user-prompt-submit.sh +78 -0
  412. package/plugins/specweave/iac-templates/aws-lambda/README.md.hbs +280 -0
  413. package/plugins/specweave/iac-templates/aws-lambda/defaults.json +118 -0
  414. package/plugins/specweave/iac-templates/aws-lambda/environments/dev.defaults.json +46 -0
  415. package/plugins/specweave/iac-templates/aws-lambda/environments/prod.defaults.json +67 -0
  416. package/plugins/specweave/iac-templates/aws-lambda/environments/staging.defaults.json +47 -0
  417. package/plugins/specweave/iac-templates/aws-lambda/main.tf.hbs +241 -0
  418. package/plugins/specweave/iac-templates/aws-lambda/outputs.tf.hbs +61 -0
  419. package/plugins/specweave/iac-templates/aws-lambda/provider.tf.hbs +15 -0
  420. package/plugins/specweave/iac-templates/aws-lambda/variables.tf.hbs +88 -0
  421. package/plugins/specweave/iac-templates/azure-functions/README.md.hbs +315 -0
  422. package/plugins/specweave/iac-templates/azure-functions/defaults.json +65 -0
  423. package/plugins/specweave/iac-templates/azure-functions/environments/dev.defaults.json +30 -0
  424. package/plugins/specweave/iac-templates/azure-functions/environments/prod.defaults.json +34 -0
  425. package/plugins/specweave/iac-templates/azure-functions/environments/staging.defaults.json +31 -0
  426. package/plugins/specweave/iac-templates/azure-functions/iam.tf.hbs +34 -0
  427. package/plugins/specweave/iac-templates/azure-functions/main.tf.hbs +247 -0
  428. package/plugins/specweave/iac-templates/azure-functions/outputs.tf.hbs +72 -0
  429. package/plugins/specweave/iac-templates/azure-functions/provider.tf.hbs +14 -0
  430. package/plugins/specweave/iac-templates/azure-functions/variables.tf.hbs +64 -0
  431. package/plugins/specweave/iac-templates/firebase/README.md.hbs +487 -0
  432. package/plugins/specweave/iac-templates/firebase/defaults.json +55 -0
  433. package/plugins/specweave/iac-templates/firebase/environments/dev.defaults.json +44 -0
  434. package/plugins/specweave/iac-templates/firebase/environments/prod.defaults.json +52 -0
  435. package/plugins/specweave/iac-templates/firebase/environments/staging.defaults.json +43 -0
  436. package/plugins/specweave/iac-templates/firebase/iam.tf.hbs +75 -0
  437. package/plugins/specweave/iac-templates/firebase/main.tf.hbs +297 -0
  438. package/plugins/specweave/iac-templates/firebase/outputs.tf.hbs +67 -0
  439. package/plugins/specweave/iac-templates/firebase/provider.tf.hbs +26 -0
  440. package/plugins/specweave/iac-templates/firebase/variables.tf.hbs +68 -0
  441. package/plugins/specweave/iac-templates/gcp-cloud-functions/README.md.hbs +330 -0
  442. package/plugins/specweave/iac-templates/gcp-cloud-functions/defaults.json +69 -0
  443. package/plugins/specweave/iac-templates/gcp-cloud-functions/environments/dev.defaults.json +33 -0
  444. package/plugins/specweave/iac-templates/gcp-cloud-functions/environments/prod.defaults.json +40 -0
  445. package/plugins/specweave/iac-templates/gcp-cloud-functions/environments/staging.defaults.json +33 -0
  446. package/plugins/specweave/iac-templates/gcp-cloud-functions/iam.tf.hbs +54 -0
  447. package/plugins/specweave/iac-templates/gcp-cloud-functions/main.tf.hbs +211 -0
  448. package/plugins/specweave/iac-templates/gcp-cloud-functions/outputs.tf.hbs +44 -0
  449. package/plugins/specweave/iac-templates/gcp-cloud-functions/provider.tf.hbs +14 -0
  450. package/plugins/specweave/iac-templates/gcp-cloud-functions/variables.tf.hbs +82 -0
  451. package/plugins/specweave/iac-templates/supabase/README.md.hbs +534 -0
  452. package/plugins/specweave/iac-templates/supabase/defaults.json +69 -0
  453. package/plugins/specweave/iac-templates/supabase/environments/dev.defaults.json +55 -0
  454. package/plugins/specweave/iac-templates/supabase/environments/prod.defaults.json +75 -0
  455. package/plugins/specweave/iac-templates/supabase/environments/staging.defaults.json +54 -0
  456. package/plugins/specweave/iac-templates/supabase/iam.tf.hbs +146 -0
  457. package/plugins/specweave/iac-templates/supabase/main.tf.hbs +310 -0
  458. package/plugins/specweave/iac-templates/supabase/outputs.tf.hbs +74 -0
  459. package/plugins/specweave/iac-templates/supabase/provider.tf.hbs +19 -0
  460. package/plugins/specweave/iac-templates/supabase/variables.tf.hbs +78 -0
  461. package/plugins/specweave/knowledge-base/serverless/FRESHNESS.md +69 -0
  462. package/plugins/specweave/knowledge-base/serverless/learning-paths.json +865 -0
  463. package/plugins/specweave/knowledge-base/serverless/platforms/aws-lambda.json +41 -0
  464. package/plugins/specweave/knowledge-base/serverless/platforms/azure-functions.json +41 -0
  465. package/plugins/specweave/knowledge-base/serverless/platforms/firebase.json +46 -0
  466. package/plugins/specweave/knowledge-base/serverless/platforms/gcp-cloud-functions.json +41 -0
  467. package/plugins/specweave/knowledge-base/serverless/platforms/supabase.json +41 -0
  468. package/plugins/specweave/knowledge-base/serverless/schema.json +155 -0
  469. package/plugins/specweave/lib/hooks/auto-transition.js +50 -0
  470. package/plugins/specweave/lib/hooks/auto-transition.ts +84 -0
  471. package/plugins/specweave/lib/hooks/invoke-translator-skill.js +1 -1
  472. package/plugins/specweave/lib/hooks/invoke-translator-skill.ts +1 -1
  473. package/plugins/specweave/lib/hooks/sync-living-docs.js +4 -31
  474. package/plugins/specweave/lib/hooks/{sync-living-docs.ts → sync-living-docs.ts.DISABLED} +9 -48
  475. package/plugins/specweave/lib/hooks/translate-file.js +1 -1
  476. package/plugins/specweave/lib/hooks/translate-file.ts +1 -1
  477. package/plugins/specweave/lib/hooks/update-ac-status.js +24 -75
  478. package/plugins/specweave/lib/hooks/update-ac-status.ts +46 -135
  479. package/plugins/specweave/lib/hooks/update-tasks-md.js +115 -3
  480. package/plugins/specweave/lib/hooks/update-tasks-md.ts +182 -10
  481. package/plugins/specweave/lib/utils/validate-dev-setup.sh +133 -0
  482. package/plugins/specweave/skills/increment-planner/SKILL.md +25 -15
  483. package/plugins/specweave/skills/serverless-recommender/SKILL.md +368 -0
  484. package/plugins/specweave/templates/iac/aws-lambda/templates/iam.tf.hbs +137 -0
  485. package/plugins/specweave/templates/iac/aws-lambda/templates/main.tf.hbs +216 -0
  486. package/plugins/specweave-github/lib/IssueStateManager.js +117 -0
  487. package/plugins/specweave-github/lib/IssueStateManager.ts +231 -0
  488. package/plugins/specweave-github/lib/user-story-issue-builder.js +7 -0
  489. package/plugins/specweave-github/lib/user-story-issue-builder.ts +11 -0
  490. package/plugins/specweave-ui/.mcp.json +0 -10
  491. package/plugins/specweave-ui/README.md +26 -26
  492. package/plugins/specweave-ui/skills/browser-automation/SKILL.md +31 -18
  493. package/src/templates/tasks.md.template +51 -33
  494. package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts +0 -89
  495. package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts.map +0 -1
  496. package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js +0 -226
  497. package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js.map +0 -1
  498. package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts +0 -60
  499. package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts.map +0 -1
  500. package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js +0 -201
  501. package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js.map +0 -1
  502. package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts +0 -42
  503. package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts.map +0 -1
  504. package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js +0 -123
  505. package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js.map +0 -1
  506. package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts +0 -45
  507. package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts.map +0 -1
  508. package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js +0 -132
  509. package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js.map +0 -1
  510. package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts +0 -33
  511. package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts.map +0 -1
  512. package/dist/plugins/specweave/lib/hooks/reflection-parser.js +0 -419
  513. package/dist/plugins/specweave/lib/hooks/reflection-parser.js.map +0 -1
  514. package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts +0 -56
  515. package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts.map +0 -1
  516. package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js +0 -239
  517. package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js.map +0 -1
  518. package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts +0 -64
  519. package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts.map +0 -1
  520. package/dist/plugins/specweave/lib/hooks/reflection-storage.js +0 -305
  521. package/dist/plugins/specweave/lib/hooks/reflection-storage.js.map +0 -1
  522. package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts +0 -43
  523. package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts.map +0 -1
  524. package/dist/plugins/specweave/lib/hooks/run-self-reflection.js +0 -203
  525. package/dist/plugins/specweave/lib/hooks/run-self-reflection.js.map +0 -1
  526. package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts +0 -32
  527. package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +0 -1
  528. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +0 -405
  529. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +0 -1
  530. package/dist/plugins/specweave/lib/hooks/translate-file.d.ts +0 -59
  531. package/dist/plugins/specweave/lib/hooks/translate-file.d.ts.map +0 -1
  532. package/dist/plugins/specweave/lib/hooks/translate-file.js +0 -350
  533. package/dist/plugins/specweave/lib/hooks/translate-file.js.map +0 -1
  534. package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts +0 -13
  535. package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts.map +0 -1
  536. package/dist/plugins/specweave/lib/hooks/translate-living-docs.js +0 -175
  537. package/dist/plugins/specweave/lib/hooks/translate-living-docs.js.map +0 -1
  538. package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts +0 -164
  539. package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts.map +0 -1
  540. package/dist/plugins/specweave/lib/hooks/types/reflection-types.js +0 -73
  541. package/dist/plugins/specweave/lib/hooks/types/reflection-types.js.map +0 -1
  542. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts +0 -21
  543. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts.map +0 -1
  544. package/dist/plugins/specweave/lib/hooks/update-ac-status.js +0 -162
  545. package/dist/plugins/specweave/lib/hooks/update-ac-status.js.map +0 -1
  546. package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts +0 -29
  547. package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts.map +0 -1
  548. package/dist/plugins/specweave/lib/hooks/update-tasks-md.js +0 -203
  549. package/dist/plugins/specweave/lib/hooks/update-tasks-md.js.map +0 -1
  550. package/dist/src/core/living-docs/spec-distributor.d.ts +0 -180
  551. package/dist/src/core/living-docs/spec-distributor.d.ts.map +0 -1
  552. package/dist/src/core/living-docs/spec-distributor.js +0 -1840
  553. package/dist/src/core/living-docs/spec-distributor.js.map +0 -1
@@ -0,0 +1,265 @@
1
+ /**
2
+ * Competitor Analyzer - Keyword Similarity Matching
3
+ *
4
+ * Identifies comparable products using keyword similarity matching against
5
+ * a known product database. No external API calls - all product knowledge
6
+ * is encoded at spec-time.
7
+ *
8
+ * **Approach**:
9
+ * 1. Maintain known product database with domain tags
10
+ * 2. Calculate keyword similarity (Jaccard index)
11
+ * 3. Return top 3-5 most similar products
12
+ * 4. Include strengths and weaknesses
13
+ *
14
+ * **Benefits**:
15
+ * - Zero external dependencies
16
+ * - Instant matching (no API latency)
17
+ * - 100% deterministic and testable
18
+ * - Works offline
19
+ */
20
+ /**
21
+ * Product database with known competitors across different domains
22
+ *
23
+ * This is where competitive intelligence lives - curated knowledge
24
+ * encoded at spec-time, not runtime LLM calls!
25
+ */
26
+ const KNOWN_PRODUCTS = [
27
+ // Productivity & Collaboration
28
+ {
29
+ name: 'Notion',
30
+ url: 'https://notion.so',
31
+ domains: ['productivity', 'collaboration', 'saas'],
32
+ strengths: ['All-in-one workspace', 'Flexible databases', 'Rich templates'],
33
+ weaknesses: ['Steep learning curve', 'Slow with large databases', 'Limited offline mode'],
34
+ category: 'productivity-saas'
35
+ },
36
+ {
37
+ name: 'Asana',
38
+ url: 'https://asana.com',
39
+ domains: ['productivity', 'project', 'team', 'saas'],
40
+ strengths: ['Task management', 'Team collaboration', 'Integrations'],
41
+ weaknesses: ['Complex for small teams', 'Expensive for large teams', 'Limited customization'],
42
+ category: 'productivity-saas'
43
+ },
44
+ {
45
+ name: 'Monday.com',
46
+ url: 'https://monday.com',
47
+ domains: ['productivity', 'project', 'workflow', 'saas'],
48
+ strengths: ['Visual workflows', 'Customizable', 'Automation'],
49
+ weaknesses: ['Expensive', 'Can be overwhelming', 'Limited free tier'],
50
+ category: 'productivity-saas'
51
+ },
52
+ {
53
+ name: 'Slack',
54
+ url: 'https://slack.com',
55
+ domains: ['collaboration', 'team', 'communication', 'saas'],
56
+ strengths: ['Real-time messaging', 'Integrations', 'Channels'],
57
+ weaknesses: ['Information overload', 'Can replace deep work', 'Search limitations'],
58
+ category: 'productivity-saas'
59
+ },
60
+ // Design Tools
61
+ {
62
+ name: 'Figma',
63
+ url: 'https://figma.com',
64
+ domains: ['design', 'collaboration', 'visual', 'saas'],
65
+ strengths: ['Real-time collaboration', 'Web-based', 'Plugin ecosystem'],
66
+ weaknesses: ['Requires internet', 'Learning curve', 'Performance with complex files'],
67
+ category: 'productivity-saas'
68
+ },
69
+ {
70
+ name: 'Canva',
71
+ url: 'https://canva.com',
72
+ domains: ['design', 'creative', 'visual'],
73
+ strengths: ['Easy to use', 'Templates', 'Free tier'],
74
+ weaknesses: ['Limited professional features', 'Template-heavy designs', 'Branding limitations'],
75
+ category: 'productivity-saas'
76
+ },
77
+ // Healthcare
78
+ {
79
+ name: 'Epic',
80
+ url: 'https://epic.com',
81
+ domains: ['healthcare', 'medical', 'enterprise'],
82
+ strengths: ['Comprehensive EHR', 'Integration', 'Market leader'],
83
+ weaknesses: ['Very expensive', 'Complex implementation', 'Poor UX'],
84
+ category: 'healthcare'
85
+ },
86
+ {
87
+ name: 'Cerner',
88
+ url: 'https://cerner.com',
89
+ domains: ['healthcare', 'medical', 'enterprise'],
90
+ strengths: ['Wide adoption', 'Interoperability', 'Data analytics'],
91
+ weaknesses: ['Expensive', 'Complex', 'Customer support issues'],
92
+ category: 'healthcare'
93
+ },
94
+ // Fintech
95
+ {
96
+ name: 'Stripe',
97
+ url: 'https://stripe.com',
98
+ domains: ['fintech', 'payment', 'saas'],
99
+ strengths: ['Developer-friendly', 'Global coverage', 'Comprehensive APIs'],
100
+ weaknesses: ['2.9% + $0.30 fees', 'Account freezes', 'Support delays'],
101
+ category: 'fintech'
102
+ },
103
+ {
104
+ name: 'Square',
105
+ url: 'https://squareup.com',
106
+ domains: ['fintech', 'payment', 'ecommerce'],
107
+ strengths: ['Easy setup', 'POS hardware', 'Small business focus'],
108
+ weaknesses: ['Higher fees', 'Account holds', 'Limited international'],
109
+ category: 'fintech'
110
+ },
111
+ // E-commerce
112
+ {
113
+ name: 'Shopify',
114
+ url: 'https://shopify.com',
115
+ domains: ['ecommerce', 'saas', 'marketplace'],
116
+ strengths: ['Easy setup', 'App ecosystem', 'Themes'],
117
+ weaknesses: ['Transaction fees', 'Customization limits', 'Expensive apps'],
118
+ category: 'e-commerce'
119
+ },
120
+ {
121
+ name: 'WooCommerce',
122
+ url: 'https://woocommerce.com',
123
+ domains: ['ecommerce', 'wordpress'],
124
+ strengths: ['Free and open-source', 'Flexible', 'Large community'],
125
+ weaknesses: ['Requires WordPress', 'Performance issues', 'Security concerns'],
126
+ category: 'e-commerce'
127
+ },
128
+ // Education
129
+ {
130
+ name: 'Coursera',
131
+ url: 'https://coursera.org',
132
+ domains: ['education', 'learning', 'online'],
133
+ strengths: ['University partnerships', 'Certifications', 'Wide range'],
134
+ weaknesses: ['Expensive certificates', 'Variable quality', 'Limited interactivity'],
135
+ category: 'education'
136
+ },
137
+ {
138
+ name: 'Udemy',
139
+ url: 'https://udemy.com',
140
+ domains: ['education', 'learning', 'online'],
141
+ strengths: ['Affordable', 'Variety', 'Lifetime access'],
142
+ weaknesses: ['No quality control', 'No certificates', 'Discount culture'],
143
+ category: 'education'
144
+ },
145
+ // Social
146
+ {
147
+ name: 'Discord',
148
+ url: 'https://discord.com',
149
+ domains: ['social', 'community', 'gaming'],
150
+ strengths: ['Voice chat', 'Communities', 'Free tier'],
151
+ weaknesses: ['Moderation challenges', 'Privacy concerns', 'Information overload'],
152
+ category: 'social-network'
153
+ },
154
+ {
155
+ name: 'Reddit',
156
+ url: 'https://reddit.com',
157
+ domains: ['social', 'community', 'content'],
158
+ strengths: ['Diverse communities', 'Free', 'User-driven'],
159
+ weaknesses: ['Toxicity', 'Moderation issues', 'UI/UX dated'],
160
+ category: 'social-network'
161
+ }
162
+ ];
163
+ /**
164
+ * Calculate Jaccard similarity between two keyword sets
165
+ *
166
+ * Jaccard similarity = |A ∩ B| / |A ∪ B|
167
+ *
168
+ * @param keywords1 - First keyword set
169
+ * @param keywords2 - Second keyword set
170
+ * @returns Similarity score (0-1)
171
+ */
172
+ function jaccardSimilarity(keywords1, keywords2) {
173
+ const set1 = new Set(keywords1.map(k => k.toLowerCase()));
174
+ const set2 = new Set(keywords2.map(k => k.toLowerCase()));
175
+ // Intersection
176
+ const intersection = new Set([...set1].filter(k => set2.has(k)));
177
+ // Union
178
+ const union = new Set([...set1, ...set2]);
179
+ if (union.size === 0) {
180
+ return 0;
181
+ }
182
+ return intersection.size / union.size;
183
+ }
184
+ /**
185
+ * Analyze competitor landscape based on keywords
186
+ *
187
+ * Identifies comparable products using keyword similarity matching.
188
+ *
189
+ * @param keywords - Keywords extracted from product vision
190
+ * @param maxCompetitors - Maximum number of competitors to return (default: 5)
191
+ * @returns Array of competitors sorted by similarity score
192
+ *
193
+ * @example
194
+ * ```typescript
195
+ * const competitors = analyzeCompetitors(['design', 'collaboration', 'team'], 3);
196
+ * // Returns top 3 competitors like Figma, Canva, etc.
197
+ * ```
198
+ */
199
+ export function analyzeCompetitors(keywords, maxCompetitors = 5) {
200
+ if (!keywords || keywords.length === 0) {
201
+ return [];
202
+ }
203
+ // Calculate similarity scores for all products
204
+ const scored = [];
205
+ for (const product of KNOWN_PRODUCTS) {
206
+ const similarity = jaccardSimilarity(keywords, product.domains);
207
+ scored.push({ product, similarity });
208
+ }
209
+ // Sort by similarity (descending) and take top N
210
+ scored.sort((a, b) => b.similarity - a.similarity);
211
+ // Convert to Competitor format
212
+ const competitors = scored
213
+ .slice(0, maxCompetitors)
214
+ .filter(s => s.similarity > 0) // Only include matches
215
+ .map(s => ({
216
+ name: s.product.name,
217
+ url: s.product.url,
218
+ strengths: s.product.strengths,
219
+ weaknesses: s.product.weaknesses
220
+ }));
221
+ return competitors;
222
+ }
223
+ /**
224
+ * Get detailed competitor analysis with similarity scores (useful for debugging)
225
+ *
226
+ * @param keywords - Keywords from vision
227
+ * @returns Array of products with similarity scores, sorted by score
228
+ */
229
+ export function getDetailedCompetitorAnalysis(keywords) {
230
+ if (!keywords || keywords.length === 0) {
231
+ return [];
232
+ }
233
+ const keywordSet = new Set(keywords.map(k => k.toLowerCase()));
234
+ const results = KNOWN_PRODUCTS.map(product => {
235
+ const productDomains = new Set(product.domains.map(d => d.toLowerCase()));
236
+ // Find matched keywords
237
+ const matchedKeywords = [...keywordSet].filter(k => productDomains.has(k));
238
+ const similarity = jaccardSimilarity(keywords, product.domains);
239
+ return {
240
+ name: product.name,
241
+ similarity,
242
+ matchedKeywords,
243
+ category: product.category
244
+ };
245
+ });
246
+ // Sort by similarity
247
+ return results.sort((a, b) => b.similarity - a.similarity);
248
+ }
249
+ /**
250
+ * Add a custom product to the database (for testing or extensibility)
251
+ *
252
+ * @param product - Known product to add
253
+ */
254
+ export function addKnownProduct(product) {
255
+ KNOWN_PRODUCTS.push(product);
256
+ }
257
+ /**
258
+ * Get all known products in the database
259
+ *
260
+ * @returns Array of all known products
261
+ */
262
+ export function getAllKnownProducts() {
263
+ return KNOWN_PRODUCTS;
264
+ }
265
+ //# sourceMappingURL=CompetitorAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompetitorAnalyzer.js","sourceRoot":"","sources":["../../../../src/init/research/CompetitorAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Market Category Detector - Rule-Based Classification
3
+ *
4
+ * Classifies product vision into market categories using intelligent
5
+ * rule-based matching against domain patterns. No external LLM calls -
6
+ * all classification logic is encoded at spec-time.
7
+ *
8
+ * **Approach**:
9
+ * 1. Match vision against domain patterns
10
+ * 2. Score each market category based on pattern matches
11
+ * 3. Calculate confidence score
12
+ * 4. Return best-fit category with confidence
13
+ *
14
+ * **Benefits**:
15
+ * - Zero external dependencies
16
+ * - Instant classification (no API latency)
17
+ * - 100% deterministic and testable
18
+ * - Works offline
19
+ */
20
+ import { MarketCategory } from './types.js';
21
+ /**
22
+ * Market category classification result
23
+ */
24
+ export interface MarketClassification {
25
+ /** Detected market category */
26
+ category: MarketCategory;
27
+ /** Confidence score (0-1) */
28
+ confidence: number;
29
+ /** Runner-up category (if close) */
30
+ runnerUp?: {
31
+ category: MarketCategory;
32
+ confidence: number;
33
+ };
34
+ }
35
+ /**
36
+ * Detect market category from vision text
37
+ *
38
+ * Uses rule-based classification against domain patterns to determine
39
+ * the best-fit market category with confidence score.
40
+ *
41
+ * @param vision - Product vision text
42
+ * @returns Market classification with category and confidence
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const result = detectMarketCategory('A project management tool for agile teams');
47
+ * // Returns: { category: 'productivity-saas', confidence: 0.85 }
48
+ * ```
49
+ */
50
+ export declare function detectMarketCategory(vision: string): MarketClassification;
51
+ /**
52
+ * Get all potential market categories with scores (useful for debugging)
53
+ *
54
+ * @param vision - Product vision text
55
+ * @returns Array of all categories with scores, sorted by confidence
56
+ */
57
+ export declare function analyzeMarketCategories(vision: string): Array<{
58
+ category: MarketCategory;
59
+ confidence: number;
60
+ matchedDomains: string[];
61
+ }>;
62
+ //# sourceMappingURL=MarketDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarketDetector.d.ts","sourceRoot":"","sources":["../../../../src/init/research/MarketDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAyB5C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,+BAA+B;IAC/B,QAAQ,EAAE,cAAc,CAAC;IAEzB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IAEnB,oCAAoC;IACpC,QAAQ,CAAC,EAAE;QACT,QAAQ,EAAE,cAAc,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAyFD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CA+FzE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7D,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC,CAsDD"}
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Market Category Detector - Rule-Based Classification
3
+ *
4
+ * Classifies product vision into market categories using intelligent
5
+ * rule-based matching against domain patterns. No external LLM calls -
6
+ * all classification logic is encoded at spec-time.
7
+ *
8
+ * **Approach**:
9
+ * 1. Match vision against domain patterns
10
+ * 2. Score each market category based on pattern matches
11
+ * 3. Calculate confidence score
12
+ * 4. Return best-fit category with confidence
13
+ *
14
+ * **Benefits**:
15
+ * - Zero external dependencies
16
+ * - Instant classification (no API latency)
17
+ * - 100% deterministic and testable
18
+ * - Works offline
19
+ */
20
+ import { DOMAIN_PATTERNS } from './keyword-extractor.js';
21
+ /**
22
+ * Market category mappings with intelligent rules
23
+ *
24
+ * This encodes business intelligence about what domains correlate
25
+ * with which market categories.
26
+ */
27
+ const MARKET_MAPPINGS = [
28
+ {
29
+ category: 'productivity-saas',
30
+ primaryDomains: ['productivity', 'saas', 'collaboration'],
31
+ secondaryDomains: ['enterprise', 'design'],
32
+ minConfidence: 0.6
33
+ },
34
+ {
35
+ category: 'healthcare',
36
+ primaryDomains: ['healthcare'],
37
+ secondaryDomains: ['ai-ml', 'saas', 'enterprise'],
38
+ minConfidence: 0.7
39
+ },
40
+ {
41
+ category: 'fintech',
42
+ primaryDomains: ['fintech'],
43
+ secondaryDomains: ['ecommerce', 'enterprise', 'blockchain'],
44
+ minConfidence: 0.7
45
+ },
46
+ {
47
+ category: 'e-commerce',
48
+ primaryDomains: ['ecommerce'],
49
+ secondaryDomains: ['fintech', 'ai-ml', 'social'],
50
+ minConfidence: 0.6
51
+ },
52
+ {
53
+ category: 'education',
54
+ primaryDomains: ['education'],
55
+ secondaryDomains: ['ai-ml', 'saas', 'collaboration'],
56
+ minConfidence: 0.6
57
+ },
58
+ {
59
+ category: 'gaming',
60
+ primaryDomains: ['gaming'],
61
+ secondaryDomains: ['social', 'ai-ml'],
62
+ minConfidence: 0.7
63
+ },
64
+ {
65
+ category: 'social-network',
66
+ primaryDomains: ['social'],
67
+ secondaryDomains: ['collaboration', 'ecommerce', 'gaming'],
68
+ minConfidence: 0.6
69
+ },
70
+ {
71
+ category: 'enterprise-b2b',
72
+ primaryDomains: ['enterprise'],
73
+ secondaryDomains: ['productivity', 'saas', 'collaboration'],
74
+ minConfidence: 0.6
75
+ },
76
+ {
77
+ category: 'consumer-b2c',
78
+ primaryDomains: ['social', 'ecommerce'],
79
+ secondaryDomains: ['gaming', 'education'],
80
+ minConfidence: 0.5
81
+ },
82
+ {
83
+ category: 'marketplace',
84
+ primaryDomains: ['ecommerce'],
85
+ secondaryDomains: ['social', 'fintech'],
86
+ minConfidence: 0.6
87
+ },
88
+ {
89
+ category: 'iot',
90
+ primaryDomains: ['iot'],
91
+ secondaryDomains: ['ai-ml', 'healthcare'],
92
+ minConfidence: 0.7
93
+ },
94
+ {
95
+ category: 'blockchain',
96
+ primaryDomains: ['blockchain'],
97
+ secondaryDomains: ['fintech', 'gaming'],
98
+ minConfidence: 0.7
99
+ },
100
+ {
101
+ category: 'ai-ml',
102
+ primaryDomains: ['ai-ml'],
103
+ secondaryDomains: ['healthcare', 'fintech', 'ecommerce'],
104
+ minConfidence: 0.7
105
+ }
106
+ ];
107
+ /**
108
+ * Detect market category from vision text
109
+ *
110
+ * Uses rule-based classification against domain patterns to determine
111
+ * the best-fit market category with confidence score.
112
+ *
113
+ * @param vision - Product vision text
114
+ * @returns Market classification with category and confidence
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * const result = detectMarketCategory('A project management tool for agile teams');
119
+ * // Returns: { category: 'productivity-saas', confidence: 0.85 }
120
+ * ```
121
+ */
122
+ export function detectMarketCategory(vision) {
123
+ if (!vision || vision.trim().length === 0) {
124
+ return {
125
+ category: 'unknown',
126
+ confidence: 0
127
+ };
128
+ }
129
+ const visionLower = vision.toLowerCase();
130
+ // Step 1: Detect which domains are present in the vision
131
+ const presentDomains = new Set();
132
+ for (const domainPattern of DOMAIN_PATTERNS) {
133
+ const regex = new RegExp(domainPattern.pattern);
134
+ if (regex.test(visionLower)) {
135
+ presentDomains.add(domainPattern.domain);
136
+ }
137
+ }
138
+ // If no domains detected, return unknown
139
+ if (presentDomains.size === 0) {
140
+ return {
141
+ category: 'unknown',
142
+ confidence: 0
143
+ };
144
+ }
145
+ // Step 2: Score each market category based on domain matches
146
+ const categoryScores = [];
147
+ for (const mapping of MARKET_MAPPINGS) {
148
+ let score = 0;
149
+ // Primary domains: weight 3.0
150
+ for (const primaryDomain of mapping.primaryDomains) {
151
+ if (presentDomains.has(primaryDomain)) {
152
+ score += 3.0;
153
+ }
154
+ }
155
+ // Secondary domains: weight 1.0
156
+ for (const secondaryDomain of mapping.secondaryDomains) {
157
+ if (presentDomains.has(secondaryDomain)) {
158
+ score += 1.0;
159
+ }
160
+ }
161
+ // Calculate confidence (normalize score)
162
+ const maxPossibleScore = mapping.primaryDomains.length * 3.0 +
163
+ mapping.secondaryDomains.length * 1.0;
164
+ const confidence = score / maxPossibleScore;
165
+ if (confidence >= mapping.minConfidence) {
166
+ categoryScores.push({
167
+ category: mapping.category,
168
+ score,
169
+ confidence
170
+ });
171
+ }
172
+ }
173
+ // Step 3: Sort by score (descending)
174
+ categoryScores.sort((a, b) => b.score - a.score);
175
+ // Step 4: Return best match (or unknown if no matches)
176
+ if (categoryScores.length === 0) {
177
+ return {
178
+ category: 'unknown',
179
+ confidence: 0
180
+ };
181
+ }
182
+ const best = categoryScores[0];
183
+ const result = {
184
+ category: best.category,
185
+ confidence: best.confidence
186
+ };
187
+ // Include runner-up if close (within 20% confidence)
188
+ if (categoryScores.length > 1) {
189
+ const runnerUp = categoryScores[1];
190
+ if (runnerUp.confidence >= best.confidence * 0.8) {
191
+ result.runnerUp = {
192
+ category: runnerUp.category,
193
+ confidence: runnerUp.confidence
194
+ };
195
+ }
196
+ }
197
+ return result;
198
+ }
199
+ /**
200
+ * Get all potential market categories with scores (useful for debugging)
201
+ *
202
+ * @param vision - Product vision text
203
+ * @returns Array of all categories with scores, sorted by confidence
204
+ */
205
+ export function analyzeMarketCategories(vision) {
206
+ if (!vision || vision.trim().length === 0) {
207
+ return [];
208
+ }
209
+ const visionLower = vision.toLowerCase();
210
+ // Detect domains
211
+ const presentDomains = new Set();
212
+ for (const domainPattern of DOMAIN_PATTERNS) {
213
+ const regex = new RegExp(domainPattern.pattern);
214
+ if (regex.test(visionLower)) {
215
+ presentDomains.add(domainPattern.domain);
216
+ }
217
+ }
218
+ // Score all categories
219
+ const results = [];
220
+ for (const mapping of MARKET_MAPPINGS) {
221
+ let score = 0;
222
+ const matchedDomains = [];
223
+ for (const primaryDomain of mapping.primaryDomains) {
224
+ if (presentDomains.has(primaryDomain)) {
225
+ score += 3.0;
226
+ matchedDomains.push(primaryDomain);
227
+ }
228
+ }
229
+ for (const secondaryDomain of mapping.secondaryDomains) {
230
+ if (presentDomains.has(secondaryDomain)) {
231
+ score += 1.0;
232
+ matchedDomains.push(secondaryDomain);
233
+ }
234
+ }
235
+ const maxPossibleScore = mapping.primaryDomains.length * 3.0 +
236
+ mapping.secondaryDomains.length * 1.0;
237
+ const confidence = score / maxPossibleScore;
238
+ results.push({
239
+ category: mapping.category,
240
+ confidence,
241
+ matchedDomains
242
+ });
243
+ }
244
+ // Sort by confidence
245
+ return results.sort((a, b) => b.confidence - a.confidence);
246
+ }
247
+ //# sourceMappingURL=MarketDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarketDetector.js","sourceRoot":"","sources":["../../../../src/init/research/MarketDetector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Opportunity Score Calculator
3
+ *
4
+ * Calculates market opportunity score (1-10 scale) based on:
5
+ * - Market size estimate
6
+ * - Competition density
7
+ * - Viral potential
8
+ * - Innovation factor
9
+ *
10
+ * **Formula**:
11
+ * score = (marketSize / 10) - (competitionDensity / 2) + viralBonus + innovationBonus
12
+ * Clamped to 1-10 range
13
+ *
14
+ * **Benefits**:
15
+ * - Algorithmic calculation (no LLM needed)
16
+ * - Transparent scoring logic
17
+ * - Deterministic and testable
18
+ */
19
+ import { MarketCategory } from './types.js';
20
+ /**
21
+ * Calculate market opportunity score
22
+ *
23
+ * @param marketCategory - Detected market category
24
+ * @param competitorCount - Number of direct competitors identified
25
+ * @param viralPotential - Whether product has viral growth potential
26
+ * @param innovationFactor - Innovation score (0-1) based on uniqueness
27
+ * @returns Opportunity score (1-10) with rationale
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const result = calculateOpportunityScore('productivity-saas', 5, true, 0.7);
32
+ * // Returns: { score: 7, rationale: '...' }
33
+ * ```
34
+ */
35
+ export declare function calculateOpportunityScore(marketCategory: MarketCategory, competitorCount: number, viralPotential: boolean, innovationFactor?: number): {
36
+ score: number;
37
+ rationale: string;
38
+ breakdown: {
39
+ marketSize: number;
40
+ competition: number;
41
+ viral: number;
42
+ innovation: number;
43
+ };
44
+ };
45
+ /**
46
+ * Estimate innovation factor from keywords and competitors
47
+ *
48
+ * Innovation factor is based on:
49
+ * - Unique keyword combinations
50
+ * - Number of competitors (fewer = more innovative)
51
+ * - Presence of emerging tech keywords
52
+ *
53
+ * @param keywords - Product keywords
54
+ * @param competitorCount - Number of competitors
55
+ * @returns Innovation score (0-1)
56
+ */
57
+ export declare function estimateInnovationFactor(keywords: string[], competitorCount: number): number;
58
+ //# sourceMappingURL=OpportunityScorer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpportunityScorer.d.ts","sourceRoot":"","sources":["../../../../src/init/research/OpportunityScorer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA8C5C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,OAAO,EACvB,gBAAgB,GAAE,MAAY,GAC7B;IACD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE;QACT,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CA+CA;AA4DD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAAE,EAClB,eAAe,EAAE,MAAM,GACtB,MAAM,CAwBR"}