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,75 @@
1
+ {
2
+ "environment": "prod",
3
+ "region": "us-east-1",
4
+ "plan": "pro",
5
+ "selfHosted": false,
6
+ "database": {
7
+ "maxConnections": 200,
8
+ "extensions": ["uuid-ossp", "pgcrypto"],
9
+ "pointInTimeRecovery": true,
10
+ "backupRetention": 30
11
+ },
12
+ "auth": {
13
+ "providers": ["email", "google", "github"],
14
+ "emailConfirmRequired": true,
15
+ "passwordMinLength": 12,
16
+ "jwtExpiry": 3600,
17
+ "enableSignup": true,
18
+ "doubleConfirmChanges": true,
19
+ "customSmtp": true,
20
+ "mfaEnabled": true
21
+ },
22
+ "storage": {
23
+ "publicBucket": {
24
+ "fileSizeLimit": 10485760,
25
+ "allowedMimeTypes": ["image/jpeg", "image/png", "image/webp", "application/pdf"]
26
+ },
27
+ "privateBucket": {
28
+ "fileSizeLimit": 10485760,
29
+ "allowedMimeTypes": ["image/jpeg", "image/png", "application/pdf", "application/json"]
30
+ }
31
+ },
32
+ "api": {
33
+ "maxRows": 1000,
34
+ "rateLimit": true
35
+ },
36
+ "rls": {
37
+ "strictMode": true,
38
+ "defaultDeny": true,
39
+ "auditLogging": true
40
+ },
41
+ "network": {
42
+ "ipWhitelist": [],
43
+ "corsOrigins": ["https://*.example.com"]
44
+ },
45
+ "security": {
46
+ "networkRestrictions": true,
47
+ "auditLog": true,
48
+ "soc2Compliant": true
49
+ },
50
+ "costOptimization": {
51
+ "description": "Production-ready - Pro plan with optimal settings",
52
+ "estimatedMonthlyCost": "$45-100",
53
+ "freeTierEligible": false,
54
+ "plan": "Pro",
55
+ "included": {
56
+ "database": "8 GB",
57
+ "storage": "100 GB",
58
+ "edgeFunctions": "2M invocations/month",
59
+ "bandwidth": "50 GB",
60
+ "realtime": "500 concurrent connections",
61
+ "backups": "Daily (30-day retention)",
62
+ "support": "Priority email support"
63
+ },
64
+ "notes": [
65
+ "Pro plan required for production ($25/month base)",
66
+ "Point-in-time recovery enabled",
67
+ "Email confirmation required",
68
+ "Strict RLS policies (default deny)",
69
+ "MFA recommended",
70
+ "Custom SMTP for transactional emails",
71
+ "Network restrictions for security",
72
+ "Audit logging enabled"
73
+ ]
74
+ }
75
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "environment": "staging",
3
+ "region": "us-east-1",
4
+ "plan": "free",
5
+ "selfHosted": false,
6
+ "database": {
7
+ "maxConnections": 100,
8
+ "extensions": ["uuid-ossp", "pgcrypto"]
9
+ },
10
+ "auth": {
11
+ "providers": ["email", "google"],
12
+ "emailConfirmRequired": false,
13
+ "passwordMinLength": 10,
14
+ "jwtExpiry": 7200,
15
+ "enableSignup": true,
16
+ "doubleConfirmChanges": false
17
+ },
18
+ "storage": {
19
+ "publicBucket": {
20
+ "fileSizeLimit": 20971520,
21
+ "allowedMimeTypes": ["image/*", "application/pdf"]
22
+ },
23
+ "privateBucket": {
24
+ "fileSizeLimit": 20971520,
25
+ "allowedMimeTypes": ["image/*", "application/pdf", "application/json"]
26
+ }
27
+ },
28
+ "api": {
29
+ "maxRows": 10000
30
+ },
31
+ "rls": {
32
+ "strictMode": true,
33
+ "defaultDeny": false
34
+ },
35
+ "costOptimization": {
36
+ "description": "Free or Pro tier - Upgrade if exceeding limits",
37
+ "estimatedMonthlyCost": "$0-32",
38
+ "freeTierEligible": true,
39
+ "plan": "Free (upgrade to Pro if needed)",
40
+ "limits": {
41
+ "database": "500 MB (8 GB on Pro)",
42
+ "storage": "1 GB (100 GB on Pro)",
43
+ "edgeFunctions": "500K invocations/month (2M on Pro)",
44
+ "bandwidth": "2 GB (50 GB on Pro)",
45
+ "realtime": "200 concurrent (500 on Pro)"
46
+ },
47
+ "notes": [
48
+ "Start with Free tier",
49
+ "Upgrade to Pro if needed ($25/month base)",
50
+ "Stricter RLS policies",
51
+ "OAuth providers enabled"
52
+ ]
53
+ }
54
+ }
@@ -0,0 +1,146 @@
1
+ # IAM and Security Configuration for Supabase
2
+ # Project: {{projectName}}
3
+
4
+ {{#unless selfHosted}}
5
+ ###############################
6
+ # Row Level Security (RLS) Policies
7
+ ###############################
8
+
9
+ # RLS policies are defined in the migration SQL (main.tf)
10
+ # This file contains additional security configurations
11
+
12
+ ###############################
13
+ # API Key Management
14
+ ###############################
15
+
16
+ # Anonymous key (public) - For client-side access
17
+ # Generated automatically by Supabase
18
+
19
+ # Service role key (private) - For server-side access
20
+ # Generated automatically by Supabase
21
+
22
+ # Custom API keys can be created via Supabase Dashboard
23
+
24
+ ###############################
25
+ # Database Roles
26
+ ###############################
27
+
28
+ # Default roles created by Supabase:
29
+ # - postgres: Superuser
30
+ # - authenticator: Used by PostgREST
31
+ # - authenticated: For logged-in users
32
+ # - anon: For anonymous users
33
+ # - service_role: For backend services
34
+
35
+ # Additional custom roles can be created via migrations
36
+
37
+ resource "supabase_migration" "custom_roles" {
38
+ project_ref = supabase_project.{{snakeCase projectName}}.id
39
+ version = "20240101000001"
40
+ name = "custom_roles"
41
+
42
+ statements = [
43
+ <<-SQL
44
+ -- Create custom role for read-only access
45
+ DO $$
46
+ BEGIN
47
+ IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'readonly') THEN
48
+ CREATE ROLE readonly;
49
+ END IF;
50
+ END
51
+ $$;
52
+
53
+ GRANT USAGE ON SCHEMA public TO readonly;
54
+ GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;
55
+ ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly;
56
+
57
+ {{#if (eq environment "prod")}}
58
+ -- Production: Create audit role
59
+ DO $$
60
+ BEGIN
61
+ IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'auditor') THEN
62
+ CREATE ROLE auditor;
63
+ END IF;
64
+ END
65
+ $$;
66
+
67
+ GRANT USAGE ON SCHEMA public TO auditor;
68
+ GRANT SELECT ON ALL TABLES IN SCHEMA public TO auditor;
69
+ {{/if}}
70
+ SQL
71
+ ]
72
+ }
73
+
74
+ ###############################
75
+ # Storage Security
76
+ ###############################
77
+
78
+ # Storage policies are defined in main.tf
79
+ # Additional security configurations:
80
+
81
+ {{#if (eq environment "prod")}}
82
+ # Production: Enable strict CORS
83
+ resource "supabase_settings" "{{snakeCase projectName}}_storage" {
84
+ project_ref = supabase_project.{{snakeCase projectName}}.id
85
+
86
+ storage = {
87
+ cors_allowed_origins = ["https://{{projectName}}.com"]
88
+ }
89
+ }
90
+ {{/if}}
91
+
92
+ ###############################
93
+ # Network Security
94
+ ###############################
95
+
96
+ {{#if (eq environment "prod")}}
97
+ # Production: Configure network restrictions
98
+ resource "supabase_network_restrictions" "{{snakeCase projectName}}" {
99
+ project_ref = supabase_project.{{snakeCase projectName}}.id
100
+
101
+ # Restrict database access to specific IP ranges
102
+ # Example: Only allow from your backend servers
103
+ # allowed_cidrs = ["10.0.0.0/8", "172.16.0.0/12"]
104
+
105
+ # Enable IPv6 restrictions
106
+ apply_to_ipv6 = true
107
+ }
108
+ {{/if}}
109
+
110
+ {{else}}
111
+ ###############################
112
+ # Self-Hosted Security Configuration
113
+ ###############################
114
+
115
+ # For self-hosted deployments:
116
+ # 1. Configure Kong API Gateway security
117
+ # 2. Set up SSL/TLS certificates
118
+ # 3. Configure firewall rules
119
+ # 4. Set strong database passwords
120
+ # 5. Restrict network access
121
+
122
+ # Example: Docker network isolation is handled in main.tf
123
+ {{/unless}}
124
+
125
+ ###############################
126
+ # Authentication Security
127
+ ###############################
128
+
129
+ # Auth settings are configured in main.tf
130
+ # Additional recommendations:
131
+
132
+ # {{#if (eq environment "prod")}}
133
+ # Production checklist:
134
+ # - Enable email confirmation
135
+ # - Set strong password requirements (12+ chars)
136
+ # - Enable double confirmation for email changes
137
+ # - Configure rate limiting
138
+ # - Enable MFA (configure in Supabase Dashboard)
139
+ # - Set up custom SMTP for transactional emails
140
+ # - Configure OAuth providers with proper scopes
141
+ # {{else}}
142
+ # Development notes:
143
+ # - Email confirmation disabled for easier testing
144
+ # - Weaker password requirements (8+ chars)
145
+ # - No rate limiting
146
+ # {{/if}}
@@ -0,0 +1,310 @@
1
+ # Supabase with PostgreSQL, Auth, Storage, and Edge Functions
2
+ # Generated by SpecWeave Serverless Intelligence
3
+ # Platform: Supabase
4
+ # Project: {{projectName}}
5
+ # Environment: {{environment}}
6
+
7
+ terraform {
8
+ required_version = ">= 1.0"
9
+ required_providers {
10
+ supabase = {
11
+ source = "supabase/supabase"
12
+ version = "~> 1.0"
13
+ }
14
+ {{#if selfHosted}}
15
+ docker = {
16
+ source = "kreuzwerker/docker"
17
+ version = "~> 3.0"
18
+ }
19
+ {{/if}}
20
+ }
21
+ }
22
+
23
+ {{#unless selfHosted}}
24
+ ###############################
25
+ # Supabase Cloud Project
26
+ ###############################
27
+
28
+ resource "supabase_project" "{{snakeCase projectName}}" {
29
+ organization_id = var.organization_id
30
+ name = "{{projectName}}-{{environment}}"
31
+ database_password = var.database_password
32
+ region = var.region
33
+
34
+ {{#if (eq environment "prod")}}
35
+ # Production settings
36
+ plan = "pro"
37
+ {{else}}
38
+ # Development/Staging settings
39
+ plan = "free"
40
+ {{/if}}
41
+ }
42
+
43
+ ###############################
44
+ # Database Configuration
45
+ ###############################
46
+
47
+ # Database URL is automatically generated by Supabase
48
+ # Access via: supabase_project.{{snakeCase projectName}}.database.host
49
+
50
+ # Enable required extensions
51
+ resource "supabase_settings" "{{snakeCase projectName}}_db" {
52
+ project_ref = supabase_project.{{snakeCase projectName}}.id
53
+
54
+ database = {
55
+ extensions = [
56
+ "uuid-ossp",
57
+ "pgcrypto",
58
+ {{#if enablePostgis}}"postgis",{{/if}}
59
+ {{#if enableVectors}}"vector",{{/if}}
60
+ ]
61
+ }
62
+ }
63
+
64
+ {{#if databaseName}}
65
+ # SQL Migration for initial schema
66
+ resource "supabase_migration" "{{snakeCase databaseName}}_schema" {
67
+ project_ref = supabase_project.{{snakeCase projectName}}.id
68
+ version = "20240101000000"
69
+ name = "initial_schema"
70
+
71
+ statements = [
72
+ <<-SQL
73
+ -- Create items table
74
+ CREATE TABLE IF NOT EXISTS items (
75
+ id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
76
+ user_id UUID REFERENCES auth.users(id) ON DELETE CASCADE,
77
+ title TEXT NOT NULL,
78
+ description TEXT,
79
+ status TEXT DEFAULT 'active',
80
+ created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
81
+ updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
82
+ );
83
+
84
+ -- Enable Row Level Security
85
+ ALTER TABLE items ENABLE ROW LEVEL SECURITY;
86
+
87
+ -- Create RLS policies
88
+ CREATE POLICY "Users can view their own items"
89
+ ON items FOR SELECT
90
+ USING (auth.uid() = user_id);
91
+
92
+ CREATE POLICY "Users can insert their own items"
93
+ ON items FOR INSERT
94
+ WITH CHECK (auth.uid() = user_id);
95
+
96
+ CREATE POLICY "Users can update their own items"
97
+ ON items FOR UPDATE
98
+ USING (auth.uid() = user_id);
99
+
100
+ CREATE POLICY "Users can delete their own items"
101
+ ON items FOR DELETE
102
+ USING (auth.uid() = user_id);
103
+
104
+ -- Create indexes
105
+ CREATE INDEX IF NOT EXISTS items_user_id_idx ON items(user_id);
106
+ CREATE INDEX IF NOT EXISTS items_status_idx ON items(status);
107
+ CREATE INDEX IF NOT EXISTS items_created_at_idx ON items(created_at DESC);
108
+
109
+ -- Create updated_at trigger
110
+ CREATE OR REPLACE FUNCTION update_updated_at_column()
111
+ RETURNS TRIGGER AS $$
112
+ BEGIN
113
+ NEW.updated_at = NOW();
114
+ RETURN NEW;
115
+ END;
116
+ $$ language 'plpgsql';
117
+
118
+ CREATE TRIGGER update_items_updated_at
119
+ BEFORE UPDATE ON items
120
+ FOR EACH ROW
121
+ EXECUTE FUNCTION update_updated_at_column();
122
+ SQL
123
+ ]
124
+ }
125
+ {{/if}}
126
+
127
+ ###############################
128
+ # Authentication Configuration
129
+ ###############################
130
+
131
+ resource "supabase_settings" "{{snakeCase projectName}}_auth" {
132
+ project_ref = supabase_project.{{snakeCase projectName}}.id
133
+
134
+ auth = {
135
+ site_url = {{#if (eq environment "prod")}}"https://{{projectName}}.com"{{else}}"http://localhost:3000"{{/if}}
136
+
137
+ external_email_enabled = true
138
+ external_phone_enabled = false
139
+ email_confirm_required = {{#if (eq environment "prod")}}true{{else}}false{{/if}}
140
+ enable_signup = true
141
+ double_confirm_changes_enabled = {{#if (eq environment "prod")}}true{{else}}false{{/if}}
142
+
143
+ # JWT settings
144
+ jwt_expiry = {{#if (eq environment "prod")}}3600{{else}}86400{{/if}}
145
+
146
+ # Password settings
147
+ password_min_length = {{#if (eq environment "prod")}}12{{else}}8{{/if}}
148
+
149
+ {{#if enableOAuth}}
150
+ # OAuth providers (configure secrets separately)
151
+ external_google_enabled = true
152
+ external_github_enabled = true
153
+ {{/if}}
154
+ }
155
+ }
156
+
157
+ ###############################
158
+ # Storage Buckets
159
+ ###############################
160
+
161
+ resource "supabase_bucket" "{{snakeCase projectName}}_public" {
162
+ project_ref = supabase_project.{{snakeCase projectName}}.id
163
+ name = "public"
164
+ public = true
165
+ file_size_limit = {{#if (eq environment "prod")}}10485760{{else}}52428800{{/if}} # {{#if (eq environment "prod")}}10MB{{else}}50MB{{/if}}
166
+ allowed_mime_types = [
167
+ "image/jpeg",
168
+ "image/png",
169
+ "image/gif",
170
+ "image/webp",
171
+ "application/pdf"
172
+ ]
173
+ }
174
+
175
+ resource "supabase_bucket" "{{snakeCase projectName}}_private" {
176
+ project_ref = supabase_project.{{snakeCase projectName}}.id
177
+ name = "private"
178
+ public = false
179
+ file_size_limit = {{#if (eq environment "prod")}}10485760{{else}}52428800{{/if}}
180
+ allowed_mime_types = [
181
+ "image/jpeg",
182
+ "image/png",
183
+ "application/pdf",
184
+ "application/json"
185
+ ]
186
+ }
187
+
188
+ # Storage policies
189
+ resource "supabase_storage_policy" "{{snakeCase projectName}}_private_read" {
190
+ project_ref = supabase_project.{{snakeCase projectName}}.id
191
+ bucket_name = supabase_bucket.{{snakeCase projectName}}_private.name
192
+ name = "Users can read their own files"
193
+ operation = "SELECT"
194
+ definition = "(bucket_id = 'private' AND auth.uid()::text = (storage.foldername(name))[1])"
195
+ }
196
+
197
+ resource "supabase_storage_policy" "{{snakeCase projectName}}_private_write" {
198
+ project_ref = supabase_project.{{snakeCase projectName}}.id
199
+ bucket_name = supabase_bucket.{{snakeCase projectName}}_private.name
200
+ name = "Users can upload to their own folder"
201
+ operation = "INSERT"
202
+ definition = "(bucket_id = 'private' AND auth.uid()::text = (storage.foldername(name))[1])"
203
+ }
204
+
205
+ ###############################
206
+ # Edge Functions (Deno)
207
+ ###############################
208
+
209
+ # Edge Functions are deployed via Supabase CLI
210
+ # supabase functions deploy {{functionName}}
211
+
212
+ # Example function configuration
213
+ resource "supabase_function" "{{snakeCase functionName}}" {
214
+ project_ref = supabase_project.{{snakeCase projectName}}.id
215
+ name = "{{functionName}}"
216
+ verify_jwt = true
217
+
218
+ # Deploy source code via CLI
219
+ # Source: supabase/functions/{{functionName}}/index.ts
220
+ }
221
+
222
+ ###############################
223
+ # API Configuration
224
+ ###############################
225
+
226
+ resource "supabase_settings" "{{snakeCase projectName}}_api" {
227
+ project_ref = supabase_project.{{snakeCase projectName}}.id
228
+
229
+ api = {
230
+ max_rows = {{#if (eq environment "prod")}}1000{{else}}100000{{/if}}
231
+ extra_search_path = "public,extensions"
232
+ }
233
+ }
234
+
235
+ {{else}}
236
+ ###############################
237
+ # Self-Hosted Supabase (Docker)
238
+ ###############################
239
+
240
+ # Docker network
241
+ resource "docker_network" "supabase" {
242
+ name = "supabase-{{environment}}"
243
+ }
244
+
245
+ # PostgreSQL
246
+ resource "docker_container" "postgres" {
247
+ name = "supabase-db-{{environment}}"
248
+ image = "supabase/postgres:15.1.0.117"
249
+
250
+ networks_advanced {
251
+ name = docker_network.supabase.name
252
+ }
253
+
254
+ ports {
255
+ internal = 5432
256
+ external = {{#if (eq environment "prod")}}5432{{else}}54322{{/if}}
257
+ }
258
+
259
+ env = [
260
+ "POSTGRES_PASSWORD=${var.database_password}",
261
+ "POSTGRES_DB=postgres",
262
+ ]
263
+
264
+ volumes {
265
+ container_path = "/var/lib/postgresql/data"
266
+ host_path = "${var.data_path}/db"
267
+ }
268
+
269
+ restart = "unless-stopped"
270
+ }
271
+
272
+ # Supabase Studio (Admin UI)
273
+ resource "docker_container" "studio" {
274
+ name = "supabase-studio-{{environment}}"
275
+ image = "supabase/studio:latest"
276
+
277
+ networks_advanced {
278
+ name = docker_network.supabase.name
279
+ }
280
+
281
+ ports {
282
+ internal = 3000
283
+ external = {{#if (eq environment "prod")}}3000{{else}}54323{{/if}}
284
+ }
285
+
286
+ env = [
287
+ "SUPABASE_URL=http://kong:8000",
288
+ "STUDIO_PG_META_URL=http://meta:8080",
289
+ ]
290
+
291
+ restart = "unless-stopped"
292
+ }
293
+
294
+ # Kong API Gateway
295
+ resource "docker_container" "kong" {
296
+ name = "supabase-kong-{{environment}}"
297
+ image = "supabase/kong:latest"
298
+
299
+ networks_advanced {
300
+ name = docker_network.supabase.name
301
+ }
302
+
303
+ ports {
304
+ internal = 8000
305
+ external = {{#if (eq environment "prod")}}8000{{else}}54321{{/if}}
306
+ }
307
+
308
+ restart = "unless-stopped"
309
+ }
310
+ {{/unless}}
@@ -0,0 +1,74 @@
1
+ # Terraform Outputs for Supabase
2
+ # Project: {{projectName}}
3
+
4
+ {{#unless selfHosted}}
5
+ output "project_id" {
6
+ description = "Supabase project ID"
7
+ value = supabase_project.{{snakeCase projectName}}.id
8
+ }
9
+
10
+ output "project_ref" {
11
+ description = "Supabase project reference"
12
+ value = supabase_project.{{snakeCase projectName}}.id
13
+ }
14
+
15
+ output "api_url" {
16
+ description = "Supabase API URL"
17
+ value = "https://${supabase_project.{{snakeCase projectName}}.id}.supabase.co"
18
+ }
19
+
20
+ output "anon_key" {
21
+ description = "Supabase anonymous (public) key"
22
+ value = supabase_project.{{snakeCase projectName}}.anon_key
23
+ sensitive = true
24
+ }
25
+
26
+ output "service_role_key" {
27
+ description = "Supabase service role (private) key"
28
+ value = supabase_project.{{snakeCase projectName}}.service_role_key
29
+ sensitive = true
30
+ }
31
+
32
+ output "database_url" {
33
+ description = "PostgreSQL database URL"
34
+ value = "postgresql://postgres:${var.database_password}@db.${supabase_project.{{snakeCase projectName}}.id}.supabase.co:5432/postgres"
35
+ sensitive = true
36
+ }
37
+
38
+ output "database_host" {
39
+ description = "PostgreSQL database host"
40
+ value = "db.${supabase_project.{{snakeCase projectName}}.id}.supabase.co"
41
+ }
42
+
43
+ output "studio_url" {
44
+ description = "Supabase Studio URL"
45
+ value = "https://app.supabase.com/project/${supabase_project.{{snakeCase projectName}}.id}"
46
+ }
47
+
48
+ output "public_bucket_url" {
49
+ description = "Public storage bucket URL"
50
+ value = "https://${supabase_project.{{snakeCase projectName}}.id}.supabase.co/storage/v1/object/public/public"
51
+ }
52
+
53
+ {{else}}
54
+ output "api_url" {
55
+ description = "Self-hosted Supabase API URL"
56
+ value = "http://localhost:{{#if (eq environment "prod")}}8000{{else}}54321{{/if}}"
57
+ }
58
+
59
+ output "studio_url" {
60
+ description = "Self-hosted Supabase Studio URL"
61
+ value = "http://localhost:{{#if (eq environment "prod")}}3000{{else}}54323{{/if}}"
62
+ }
63
+
64
+ output "database_url" {
65
+ description = "PostgreSQL database URL"
66
+ value = "postgresql://postgres:${var.database_password}@localhost:{{#if (eq environment "prod")}}5432{{else}}54322{{/if}}/postgres"
67
+ sensitive = true
68
+ }
69
+
70
+ output "database_port" {
71
+ description = "PostgreSQL database port"
72
+ value = {{#if (eq environment "prod")}}5432{{else}}54322{{/if}}
73
+ }
74
+ {{/unless}}
@@ -0,0 +1,19 @@
1
+ # Supabase Provider Configuration
2
+ # Project: {{projectName}}
3
+
4
+ {{#unless selfHosted}}
5
+ provider "supabase" {
6
+ access_token = var.supabase_access_token
7
+ # Get token from: https://app.supabase.com/account/tokens
8
+ }
9
+
10
+ variable "supabase_access_token" {
11
+ description = "Supabase personal access token"
12
+ type = string
13
+ sensitive = true
14
+ }
15
+ {{else}}
16
+ provider "docker" {
17
+ host = "unix:///var/run/docker.sock"
18
+ }
19
+ {{/unless}}