specweave 0.6.7 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/.claude-plugin/README.md +1 -1
  2. package/CLAUDE.md +920 -107
  3. package/README.md +143 -207
  4. package/bin/specweave.js +67 -0
  5. package/dist/adapters/adapter-interface.d.ts +11 -11
  6. package/dist/adapters/adapter-interface.d.ts.map +1 -1
  7. package/dist/adapters/adapter-interface.js +1 -1
  8. package/dist/adapters/adapter-loader.d.ts +1 -2
  9. package/dist/adapters/adapter-loader.d.ts.map +1 -1
  10. package/dist/adapters/adapter-loader.js +3 -6
  11. package/dist/adapters/adapter-loader.js.map +1 -1
  12. package/dist/adapters/agents-md-generator.d.ts +3 -3
  13. package/dist/adapters/agents-md-generator.js +3 -3
  14. package/dist/adapters/generic/adapter.d.ts +2 -2
  15. package/dist/adapters/generic/adapter.d.ts.map +1 -1
  16. package/dist/adapters/generic/adapter.js +28 -9
  17. package/dist/adapters/generic/adapter.js.map +1 -1
  18. package/dist/cli/commands/abandon.d.ts +13 -0
  19. package/dist/cli/commands/abandon.d.ts.map +1 -0
  20. package/dist/cli/commands/abandon.js +15 -0
  21. package/dist/cli/commands/abandon.js.map +1 -0
  22. package/dist/cli/commands/init.d.ts.map +1 -1
  23. package/dist/cli/commands/init.js +141 -40
  24. package/dist/cli/commands/init.js.map +1 -1
  25. package/dist/cli/commands/pause.d.ts +13 -0
  26. package/dist/cli/commands/pause.d.ts.map +1 -0
  27. package/dist/cli/commands/pause.js +15 -0
  28. package/dist/cli/commands/pause.js.map +1 -0
  29. package/dist/cli/commands/qa.d.ts +54 -0
  30. package/dist/cli/commands/qa.d.ts.map +1 -0
  31. package/dist/cli/commands/qa.js +98 -0
  32. package/dist/cli/commands/qa.js.map +1 -0
  33. package/dist/cli/commands/resume.d.ts +12 -0
  34. package/dist/cli/commands/resume.d.ts.map +1 -0
  35. package/dist/cli/commands/resume.js +14 -0
  36. package/dist/cli/commands/resume.js.map +1 -0
  37. package/dist/cli/commands/status.d.ts +12 -0
  38. package/dist/cli/commands/status.d.ts.map +1 -0
  39. package/dist/cli/commands/status.js +23 -0
  40. package/dist/cli/commands/status.js.map +1 -0
  41. package/dist/cli/helpers/issue-tracker/ado.d.ts +57 -0
  42. package/dist/cli/helpers/issue-tracker/ado.d.ts.map +1 -0
  43. package/dist/cli/helpers/issue-tracker/ado.js +223 -0
  44. package/dist/cli/helpers/issue-tracker/ado.js.map +1 -0
  45. package/dist/cli/helpers/issue-tracker/github.d.ts +65 -0
  46. package/dist/cli/helpers/issue-tracker/github.d.ts.map +1 -0
  47. package/dist/cli/helpers/issue-tracker/github.js +284 -0
  48. package/dist/cli/helpers/issue-tracker/github.js.map +1 -0
  49. package/dist/cli/helpers/issue-tracker/index.d.ts +22 -0
  50. package/dist/cli/helpers/issue-tracker/index.d.ts.map +1 -0
  51. package/dist/cli/helpers/issue-tracker/index.js +270 -0
  52. package/dist/cli/helpers/issue-tracker/index.js.map +1 -0
  53. package/dist/cli/helpers/issue-tracker/jira.d.ts +61 -0
  54. package/dist/cli/helpers/issue-tracker/jira.d.ts.map +1 -0
  55. package/dist/cli/helpers/issue-tracker/jira.js +265 -0
  56. package/dist/cli/helpers/issue-tracker/jira.js.map +1 -0
  57. package/dist/cli/helpers/issue-tracker/types.d.ts +86 -0
  58. package/dist/cli/helpers/issue-tracker/types.d.ts.map +1 -0
  59. package/dist/cli/helpers/issue-tracker/types.js +16 -0
  60. package/dist/cli/helpers/issue-tracker/types.js.map +1 -0
  61. package/dist/cli/helpers/issue-tracker/utils.d.ts +103 -0
  62. package/dist/cli/helpers/issue-tracker/utils.d.ts.map +1 -0
  63. package/dist/cli/helpers/issue-tracker/utils.js +240 -0
  64. package/dist/cli/helpers/issue-tracker/utils.js.map +1 -0
  65. package/dist/core/increment/limits.d.ts +68 -0
  66. package/dist/core/increment/limits.d.ts.map +1 -0
  67. package/dist/core/increment/limits.js +224 -0
  68. package/dist/core/increment/limits.js.map +1 -0
  69. package/dist/core/increment/metadata-manager.d.ts +114 -0
  70. package/dist/core/increment/metadata-manager.d.ts.map +1 -0
  71. package/dist/core/increment/metadata-manager.js +320 -0
  72. package/dist/core/increment/metadata-manager.js.map +1 -0
  73. package/dist/core/increment/status-commands.d.ts +43 -0
  74. package/dist/core/increment/status-commands.d.ts.map +1 -0
  75. package/dist/core/increment/status-commands.js +277 -0
  76. package/dist/core/increment/status-commands.js.map +1 -0
  77. package/dist/core/plugin-detector.d.ts +1 -0
  78. package/dist/core/plugin-detector.d.ts.map +1 -1
  79. package/dist/core/plugin-detector.js +25 -0
  80. package/dist/core/plugin-detector.js.map +1 -1
  81. package/dist/core/qa/qa-runner.d.ts +16 -0
  82. package/dist/core/qa/qa-runner.d.ts.map +1 -0
  83. package/dist/core/qa/qa-runner.js +404 -0
  84. package/dist/core/qa/qa-runner.js.map +1 -0
  85. package/dist/core/qa/quality-gate-decider.d.ts +53 -0
  86. package/dist/core/qa/quality-gate-decider.d.ts.map +1 -0
  87. package/dist/core/qa/quality-gate-decider.js +268 -0
  88. package/dist/core/qa/quality-gate-decider.js.map +1 -0
  89. package/dist/core/qa/risk-calculator.d.ts +126 -0
  90. package/dist/core/qa/risk-calculator.d.ts.map +1 -0
  91. package/dist/core/qa/risk-calculator.js +247 -0
  92. package/dist/core/qa/risk-calculator.js.map +1 -0
  93. package/dist/core/qa/types.d.ts +315 -0
  94. package/dist/core/qa/types.d.ts.map +1 -0
  95. package/dist/core/qa/types.js +8 -0
  96. package/dist/core/qa/types.js.map +1 -0
  97. package/dist/core/types/config.d.ts +37 -2
  98. package/dist/core/types/config.d.ts.map +1 -1
  99. package/dist/core/types/config.js +16 -0
  100. package/dist/core/types/config.js.map +1 -1
  101. package/dist/core/types/increment-metadata.d.ts +120 -0
  102. package/dist/core/types/increment-metadata.d.ts.map +1 -0
  103. package/dist/core/types/increment-metadata.js +138 -0
  104. package/dist/core/types/increment-metadata.js.map +1 -0
  105. package/dist/hooks/lib/invoke-translator-skill.d.ts +60 -0
  106. package/dist/hooks/lib/invoke-translator-skill.d.ts.map +1 -0
  107. package/dist/hooks/lib/invoke-translator-skill.js +201 -0
  108. package/dist/hooks/lib/invoke-translator-skill.js.map +1 -0
  109. package/dist/hooks/lib/translate-file.d.ts +59 -0
  110. package/dist/hooks/lib/translate-file.d.ts.map +1 -0
  111. package/dist/hooks/lib/translate-file.js +350 -0
  112. package/dist/hooks/lib/translate-file.js.map +1 -0
  113. package/dist/locales/en/cli.json +3 -1
  114. package/dist/metrics/calculators/change-failure-rate.d.ts +22 -0
  115. package/dist/metrics/calculators/change-failure-rate.d.ts.map +1 -0
  116. package/dist/metrics/calculators/change-failure-rate.js +70 -0
  117. package/dist/metrics/calculators/change-failure-rate.js.map +1 -0
  118. package/dist/metrics/calculators/deployment-frequency.d.ts +20 -0
  119. package/dist/metrics/calculators/deployment-frequency.d.ts.map +1 -0
  120. package/dist/metrics/calculators/deployment-frequency.js +61 -0
  121. package/dist/metrics/calculators/deployment-frequency.js.map +1 -0
  122. package/dist/metrics/calculators/lead-time.d.ts +22 -0
  123. package/dist/metrics/calculators/lead-time.d.ts.map +1 -0
  124. package/dist/metrics/calculators/lead-time.js +82 -0
  125. package/dist/metrics/calculators/lead-time.js.map +1 -0
  126. package/dist/metrics/calculators/mttr.d.ts +21 -0
  127. package/dist/metrics/calculators/mttr.d.ts.map +1 -0
  128. package/dist/metrics/calculators/mttr.js +60 -0
  129. package/dist/metrics/calculators/mttr.js.map +1 -0
  130. package/dist/metrics/dora-calculator.d.ts +24 -0
  131. package/dist/metrics/dora-calculator.d.ts.map +1 -0
  132. package/dist/metrics/dora-calculator.js +104 -0
  133. package/dist/metrics/dora-calculator.js.map +1 -0
  134. package/dist/metrics/github-client.d.ts +51 -0
  135. package/dist/metrics/github-client.d.ts.map +1 -0
  136. package/dist/metrics/github-client.js +133 -0
  137. package/dist/metrics/github-client.js.map +1 -0
  138. package/dist/metrics/types.d.ts +112 -0
  139. package/dist/metrics/types.d.ts.map +1 -0
  140. package/dist/metrics/types.js +10 -0
  141. package/dist/metrics/types.js.map +1 -0
  142. package/dist/metrics/utils/percentile.d.ts +25 -0
  143. package/dist/metrics/utils/percentile.d.ts.map +1 -0
  144. package/dist/metrics/utils/percentile.js +46 -0
  145. package/dist/metrics/utils/percentile.js.map +1 -0
  146. package/dist/metrics/utils/tier-classifier.d.ts +61 -0
  147. package/dist/metrics/utils/tier-classifier.d.ts.map +1 -0
  148. package/dist/metrics/utils/tier-classifier.js +100 -0
  149. package/dist/metrics/utils/tier-classifier.js.map +1 -0
  150. package/dist/utils/auth-helpers.d.ts +58 -0
  151. package/dist/utils/auth-helpers.d.ts.map +1 -0
  152. package/dist/utils/auth-helpers.js +108 -0
  153. package/dist/utils/auth-helpers.js.map +1 -0
  154. package/dist/utils/env-file.d.ts +88 -0
  155. package/dist/utils/env-file.d.ts.map +1 -0
  156. package/dist/utils/env-file.js +180 -0
  157. package/dist/utils/env-file.js.map +1 -0
  158. package/dist/utils/plugin-detection.d.ts +50 -0
  159. package/dist/utils/plugin-detection.d.ts.map +1 -0
  160. package/dist/utils/plugin-detection.js +229 -0
  161. package/dist/utils/plugin-detection.js.map +1 -0
  162. package/dist/utils/secrets-loader.d.ts +88 -0
  163. package/dist/utils/secrets-loader.d.ts.map +1 -0
  164. package/dist/utils/secrets-loader.js +271 -0
  165. package/dist/utils/secrets-loader.js.map +1 -0
  166. package/dist/utils/translation.d.ts +187 -0
  167. package/dist/utils/translation.d.ts.map +1 -0
  168. package/dist/utils/translation.js +414 -0
  169. package/dist/utils/translation.js.map +1 -0
  170. package/package.json +28 -44
  171. package/plugins/specweave/.claude-plugin/plugin.json +3 -3
  172. package/plugins/specweave/agents/pm/AGENT.md +330 -54
  173. package/plugins/specweave/agents/test-aware-planner/AGENT.md +1035 -0
  174. package/plugins/specweave/agents/test-aware-planner/templates/README.md +118 -0
  175. package/plugins/specweave/agents/test-aware-planner/templates/task-non-testable.md.template +24 -0
  176. package/plugins/specweave/agents/test-aware-planner/templates/task-testable.md.template +53 -0
  177. package/plugins/specweave/agents/test-aware-planner/templates/tasks-frontmatter.md.template +11 -0
  178. package/plugins/specweave/commands/README.md +88 -163
  179. package/plugins/specweave/commands/specweave-abandon.md +314 -0
  180. package/plugins/specweave/commands/specweave-check-tests.md +546 -0
  181. package/plugins/specweave/commands/{do.md → specweave-do.md} +5 -5
  182. package/plugins/specweave/commands/{done.md → specweave-done.md} +2 -0
  183. package/plugins/specweave/commands/{increment.md → specweave-increment.md} +231 -4
  184. package/plugins/specweave/commands/specweave-pause.md +189 -0
  185. package/plugins/specweave/commands/specweave-qa.md +245 -0
  186. package/plugins/specweave/commands/specweave-resume.md +216 -0
  187. package/plugins/specweave/commands/specweave-status.md +397 -0
  188. package/plugins/specweave/commands/specweave-sync-tasks.md +256 -0
  189. package/plugins/specweave/commands/{translate.md → specweave-translate.md} +3 -3
  190. package/plugins/specweave/commands/specweave-update-scope.md +351 -0
  191. package/plugins/specweave/commands/{validate.md → specweave-validate.md} +2 -0
  192. package/plugins/specweave/commands/specweave.md +21 -21
  193. package/plugins/specweave/hooks/docs-changed.sh +23 -3
  194. package/plugins/specweave/hooks/human-input-required.sh +23 -3
  195. package/plugins/specweave/hooks/post-increment-planning.sh +335 -0
  196. package/plugins/specweave/hooks/post-task-completion.sh +161 -1
  197. package/plugins/specweave/hooks/pre-implementation.sh +23 -3
  198. package/plugins/specweave/skills/SKILLS-INDEX.md +1 -1
  199. package/plugins/specweave/skills/brownfield-analyzer/SKILL.md +9 -9
  200. package/plugins/specweave/skills/increment-planner/SKILL.md +400 -212
  201. package/plugins/specweave/skills/increment-quality-judge-v2/SKILL.md +499 -0
  202. package/plugins/specweave/skills/plugin-detector/SKILL.md +114 -1
  203. package/plugins/specweave/skills/project-kickstarter/SKILL.md +74 -1
  204. package/plugins/specweave/skills/{rfc-generator → spec-generator}/SKILL.md +22 -29
  205. package/plugins/specweave/skills/specweave-detector/SKILL.md +3 -3
  206. package/plugins/specweave/skills/specweave-framework/SKILL.md +2 -2
  207. package/plugins/specweave-ado/.claude-plugin/plugin.json +18 -4
  208. package/plugins/specweave-ado/agents/ado-manager/AGENT.md +426 -0
  209. package/plugins/specweave-ado/commands/close-workitem.md +52 -0
  210. package/plugins/specweave-ado/commands/create-workitem.md +53 -0
  211. package/plugins/specweave-ado/commands/status.md +53 -0
  212. package/plugins/specweave-ado/commands/sync.md +55 -0
  213. package/plugins/specweave-ado/lib/ado-client.ts +361 -0
  214. package/plugins/specweave-ado/reference/ado-specweave-mapping.md +552 -0
  215. package/plugins/specweave-ado/skills/ado-sync/SKILL.md +344 -193
  216. package/plugins/specweave-docs/skills/docusaurus/SKILL.md +73 -0
  217. package/plugins/specweave-github/agents/github-manager/AGENT.md +49 -0
  218. package/plugins/specweave-github/commands/{github-close-issue.md → close-issue.md} +1 -1
  219. package/plugins/specweave-github/commands/{github-create-issue.md → create-issue.md} +1 -1
  220. package/plugins/specweave-github/commands/{github-status.md → status.md} +1 -1
  221. package/plugins/specweave-github/commands/{github-sync-tasks.md → sync-tasks.md} +1 -1
  222. package/plugins/specweave-github/commands/{github-sync.md → sync.md} +1 -1
  223. package/plugins/specweave-github/reference/github-specweave-mapping.md +377 -0
  224. package/plugins/specweave-github/skills/github-sync/SKILL.md +11 -3
  225. package/plugins/specweave-infrastructure/commands/{specweave.monitor-setup.md → monitor-setup.md} +5 -0
  226. package/plugins/specweave-infrastructure/commands/{specweave.slo-implement.md → slo-implement.md} +5 -0
  227. package/plugins/specweave-jira/agents/jira-manager/AGENT.md +380 -0
  228. package/plugins/specweave-jira/commands/{specweave.sync-jira.md → sync.md} +1 -1
  229. package/plugins/specweave-jira/reference/jira-specweave-mapping.md +508 -0
  230. package/plugins/specweave-ml/commands/ml-deploy.md +1 -1
  231. package/plugins/specweave-ml/commands/ml-evaluate.md +1 -1
  232. package/plugins/specweave-ml/commands/ml-explain.md +1 -1
  233. package/plugins/specweave-ml/commands/{specweave.ml-pipeline.md → ml-pipeline.md} +5 -0
  234. package/src/templates/AGENTS.md.template +652 -1
  235. package/src/templates/CLAUDE.md.template +36 -21
  236. package/src/templates/COMPLETION-REPORT.template.md +128 -0
  237. package/src/templates/README.md.template +17 -16
  238. package/src/templates/docs/README.md +11 -9
  239. package/src/templates/docs/spec-template.md +229 -0
  240. package/dist/adapters/copilot/adapter.d.ts +0 -86
  241. package/dist/adapters/copilot/adapter.d.ts.map +0 -1
  242. package/dist/adapters/copilot/adapter.js +0 -396
  243. package/dist/adapters/copilot/adapter.js.map +0 -1
  244. package/plugins/.specweave/logs/hooks-debug.log +0 -24
  245. package/plugins/.specweave/logs/last-hook-fire +0 -1
  246. package/plugins/.specweave/logs/last-todowrite-time +0 -1
  247. package/plugins/.specweave/logs/tasks.log +0 -6
  248. package/plugins/specweave/commands/inc.md +0 -85
  249. package/plugins/specweave/commands/list-increments.md +0 -180
  250. package/src/adapters/README.md +0 -311
  251. package/src/adapters/adapter-base.ts +0 -182
  252. package/src/adapters/adapter-interface.ts +0 -166
  253. package/src/adapters/adapter-loader.ts +0 -259
  254. package/src/adapters/agents-md-generator.ts +0 -228
  255. package/src/adapters/claude/README.md +0 -233
  256. package/src/adapters/claude/adapter.ts +0 -468
  257. package/src/adapters/claude-md-generator.ts +0 -377
  258. package/src/adapters/codex/README.md +0 -105
  259. package/src/adapters/codex/adapter.ts +0 -333
  260. package/src/adapters/copilot/README.md +0 -240
  261. package/src/adapters/copilot/adapter.ts +0 -444
  262. package/src/adapters/cursor/.cursor/context/docs-context.md +0 -62
  263. package/src/adapters/cursor/.cursor/context/increments-context.md +0 -71
  264. package/src/adapters/cursor/.cursor/context/strategy-context.md +0 -73
  265. package/src/adapters/cursor/.cursor/context/tests-context.md +0 -89
  266. package/src/adapters/cursor/README.md +0 -283
  267. package/src/adapters/cursor/adapter.ts +0 -451
  268. package/src/adapters/doc-generator.ts +0 -331
  269. package/src/adapters/gemini/README.md +0 -97
  270. package/src/adapters/gemini/adapter.ts +0 -298
  271. package/src/adapters/generic/README.md +0 -277
  272. package/src/adapters/generic/adapter.ts +0 -359
  273. package/src/adapters/registry.yaml +0 -187
  274. /package/plugins/specweave/commands/{costs.md → specweave-costs.md} +0 -0
  275. /package/plugins/specweave/commands/{next.md → specweave-next.md} +0 -0
  276. /package/plugins/specweave/commands/{progress.md → specweave-progress.md} +0 -0
  277. /package/plugins/specweave/commands/{sync-docs.md → specweave-sync-docs.md} +0 -0
  278. /package/plugins/specweave/commands/{tdd-cycle.md → specweave-tdd-cycle.md} +0 -0
  279. /package/plugins/specweave/commands/{tdd-green.md → specweave-tdd-green.md} +0 -0
  280. /package/plugins/specweave/commands/{tdd-red.md → specweave-tdd-red.md} +0 -0
  281. /package/plugins/specweave/commands/{tdd-refactor.md → specweave-tdd-refactor.md} +0 -0
@@ -0,0 +1,315 @@
1
+ /**
2
+ * TypeScript types and interfaces for SpecWeave QA system
3
+ *
4
+ * @module qa/types
5
+ * @since v0.8.0
6
+ */
7
+ export type RiskCategory = 'security' | 'technical' | 'implementation' | 'operational';
8
+ export type RiskSeverity = 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
9
+ export interface Risk {
10
+ id: string;
11
+ category: RiskCategory;
12
+ title: string;
13
+ description: string;
14
+ probability: number;
15
+ impact: number;
16
+ score: number;
17
+ severity: RiskSeverity;
18
+ mitigation: string;
19
+ location: string;
20
+ acceptance_criteria?: string;
21
+ }
22
+ export interface RiskAssessmentResult {
23
+ risks: Risk[];
24
+ overall_risk_score: number;
25
+ risk_by_category: Record<RiskCategory, number>;
26
+ }
27
+ export type IssueSeverity = 'critical' | 'major' | 'minor';
28
+ export type SuggestionPriority = 'high' | 'medium' | 'low';
29
+ export interface Issue {
30
+ dimension: string;
31
+ severity: IssueSeverity;
32
+ description: string;
33
+ location: string;
34
+ impact: string;
35
+ }
36
+ export interface Suggestion {
37
+ dimension: string;
38
+ priority: SuggestionPriority;
39
+ description: string;
40
+ example: string;
41
+ }
42
+ export interface DimensionScore {
43
+ score: number;
44
+ issues: Issue[];
45
+ suggestions: Suggestion[];
46
+ confidence: number;
47
+ }
48
+ export interface QualityAssessment {
49
+ overall_score: number;
50
+ dimension_scores: {
51
+ clarity: number;
52
+ testability: number;
53
+ completeness: number;
54
+ feasibility: number;
55
+ maintainability: number;
56
+ edge_cases: number;
57
+ risk: number;
58
+ };
59
+ issues: Issue[];
60
+ suggestions: Suggestion[];
61
+ confidence: number;
62
+ risk_assessment?: RiskAssessmentResult;
63
+ }
64
+ export type QualityGateDecision = 'PASS' | 'CONCERNS' | 'FAIL';
65
+ export interface QualityGateIssue {
66
+ type: string;
67
+ severity: 'critical' | 'high' | 'medium' | 'low';
68
+ title: string;
69
+ description: string;
70
+ mitigation?: string;
71
+ location?: string;
72
+ }
73
+ export interface QualityGateResult {
74
+ decision: QualityGateDecision;
75
+ blockers: QualityGateIssue[];
76
+ concerns: QualityGateIssue[];
77
+ recommendations: QualityGateIssue[];
78
+ reasoning: string;
79
+ }
80
+ export interface QualityGateThresholds {
81
+ fail: {
82
+ riskScore: number;
83
+ testCoverage: number;
84
+ specQuality: number;
85
+ criticalVulnerabilities: number;
86
+ };
87
+ concerns: {
88
+ riskScore: number;
89
+ testCoverage: number;
90
+ specQuality: number;
91
+ highVulnerabilities: number;
92
+ };
93
+ }
94
+ export interface ACCoverage {
95
+ covered: boolean;
96
+ tests: string[];
97
+ gap?: string;
98
+ }
99
+ export interface TestCoverageResult {
100
+ coverage_percentage: number;
101
+ ac_coverage: Record<string, ACCoverage>;
102
+ test_types: {
103
+ unit: {
104
+ count: number;
105
+ coverage: number;
106
+ };
107
+ integration: {
108
+ count: number;
109
+ coverage: number;
110
+ };
111
+ e2e: {
112
+ count: number;
113
+ coverage: number;
114
+ };
115
+ };
116
+ gaps: TestGap[];
117
+ }
118
+ export interface TestGap {
119
+ acceptance_criteria: string;
120
+ description: string;
121
+ missing_test_type: 'unit' | 'integration' | 'e2e';
122
+ recommendation: string;
123
+ }
124
+ export interface RuleError {
125
+ rule: string;
126
+ severity: 'error' | 'warning';
127
+ message: string;
128
+ file?: string;
129
+ line?: number;
130
+ }
131
+ export interface RuleBasedResult {
132
+ passed: boolean;
133
+ totalCount: number;
134
+ passedCount: number;
135
+ failedCount: number;
136
+ errors: RuleError[];
137
+ breakdown: {
138
+ consistency: {
139
+ passed: number;
140
+ total: number;
141
+ };
142
+ completeness: {
143
+ passed: number;
144
+ total: number;
145
+ };
146
+ quality: {
147
+ passed: number;
148
+ total: number;
149
+ };
150
+ traceability: {
151
+ passed: number;
152
+ total: number;
153
+ };
154
+ };
155
+ }
156
+ export type VulnerabilitySeverity = 'critical' | 'high' | 'medium' | 'low';
157
+ export interface Vulnerability {
158
+ package: string;
159
+ version: string;
160
+ vulnerability: string;
161
+ severity: VulnerabilitySeverity;
162
+ fix: string;
163
+ }
164
+ export interface OWASPCheck {
165
+ category: string;
166
+ status: 'PASS' | 'FAIL' | 'WARNING';
167
+ details: string;
168
+ recommendation?: string;
169
+ }
170
+ export interface SecurityAuditResult {
171
+ owasp_checks: OWASPCheck[];
172
+ dependency_vulnerabilities: {
173
+ critical: number;
174
+ high: number;
175
+ medium: number;
176
+ low: number;
177
+ issues: Vulnerability[];
178
+ };
179
+ }
180
+ export interface PerformanceAssessment {
181
+ target?: string;
182
+ specified: boolean;
183
+ assessment?: string;
184
+ status?: 'PASS' | 'FAIL' | 'WARNING';
185
+ recommendation?: string;
186
+ }
187
+ export interface PerformanceReviewResult {
188
+ response_time: PerformanceAssessment;
189
+ concurrency: PerformanceAssessment;
190
+ database_queries: {
191
+ n_plus_1_detected: boolean;
192
+ missing_indexes: Array<{
193
+ table: string;
194
+ column: string;
195
+ reason: string;
196
+ }>;
197
+ };
198
+ }
199
+ export interface CodeReviewResult {
200
+ requirements_coverage: {
201
+ score: number;
202
+ issues: Array<{
203
+ type: string;
204
+ file: string;
205
+ description: string;
206
+ }>;
207
+ };
208
+ test_coverage: {
209
+ score: number;
210
+ issues: Array<{
211
+ type: string;
212
+ file: string;
213
+ description: string;
214
+ }>;
215
+ };
216
+ code_quality: {
217
+ score: number;
218
+ issues: Array<{
219
+ type: string;
220
+ file: string;
221
+ line?: number;
222
+ description: string;
223
+ }>;
224
+ };
225
+ security: {
226
+ score: number;
227
+ issues: Array<{
228
+ type: string;
229
+ severity: VulnerabilitySeverity;
230
+ file: string;
231
+ description: string;
232
+ }>;
233
+ };
234
+ }
235
+ export type QAMode = 'quick' | 'full' | 'pre' | 'gate';
236
+ export interface QAReport {
237
+ increment_id: string;
238
+ mode: QAMode;
239
+ timestamp: string;
240
+ rule_based: RuleBasedResult;
241
+ spec_quality?: QualityAssessment;
242
+ risk_assessment?: RiskAssessmentResult;
243
+ test_coverage?: TestCoverageResult;
244
+ code_review?: CodeReviewResult;
245
+ security_audit?: SecurityAuditResult;
246
+ performance?: PerformanceReviewResult;
247
+ quality_gate: QualityGateResult;
248
+ duration_ms?: number;
249
+ token_usage?: number;
250
+ cost_usd?: number;
251
+ }
252
+ export interface QAConfig {
253
+ enableAutoQAGate: boolean;
254
+ autoQAGateOnDone: boolean;
255
+ autoQACheckOnHook: boolean;
256
+ defaultMode: QAMode;
257
+ qualityGateThresholds: QualityGateThresholds;
258
+ subagents: {
259
+ specQuality: {
260
+ enabled: boolean;
261
+ weight: number;
262
+ };
263
+ riskAssessment: {
264
+ enabled: boolean;
265
+ weight: number;
266
+ };
267
+ testCoverage: {
268
+ enabled: boolean;
269
+ weight: number;
270
+ };
271
+ codeReview: {
272
+ enabled: boolean;
273
+ weight: number;
274
+ };
275
+ securityAudit: {
276
+ enabled: boolean;
277
+ weight: number;
278
+ };
279
+ performanceReview: {
280
+ enabled: boolean;
281
+ weight: number;
282
+ };
283
+ };
284
+ costOptimization: {
285
+ cacheResults: boolean;
286
+ cacheDuration: number;
287
+ skipUnchangedFiles: boolean;
288
+ };
289
+ integrations: {
290
+ cicd: {
291
+ enabled: boolean;
292
+ exitOnFail: boolean;
293
+ jsonOutput: boolean;
294
+ };
295
+ hooks: {
296
+ postTaskCompletion: boolean;
297
+ preDone: boolean;
298
+ postInc: boolean;
299
+ };
300
+ };
301
+ }
302
+ export interface QAOptions {
303
+ quick?: boolean;
304
+ full?: boolean;
305
+ pre?: boolean;
306
+ gate?: boolean;
307
+ ci?: boolean;
308
+ noAi?: boolean;
309
+ silent?: boolean;
310
+ export?: boolean;
311
+ skipQa?: boolean;
312
+ force?: boolean;
313
+ verbose?: boolean;
314
+ }
315
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/qa/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * TypeScript types and interfaces for SpecWeave QA system
3
+ *
4
+ * @module qa/types
5
+ * @since v0.8.0
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/qa/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -5,6 +5,39 @@
5
5
  */
6
6
  import { SupportedLanguage, TranslationConfig } from '../i18n/types.js';
7
7
  import { PluginConfig } from './plugin.js';
8
+ import { IncrementType } from './increment-metadata.js';
9
+ /**
10
+ * WIP Limits Configuration (v0.7.0+ Simplified)
11
+ *
12
+ * Philosophy: Default to 1 active increment (maximum focus)
13
+ * Allow 2 only for emergencies (hotfix interrupt)
14
+ * Never >2 (hard cap enforced)
15
+ */
16
+ export interface LimitsConfig {
17
+ /** Maximum active increments at any time (default: 1 for focus) */
18
+ maxActiveIncrements?: number;
19
+ /** Absolute maximum active increments, never exceeded (default: 2) */
20
+ hardCap?: number;
21
+ /** Allow 2nd active increment for hotfix/bug emergencies (default: true) */
22
+ allowEmergencyInterrupt?: boolean;
23
+ /** Increment type-specific behaviors */
24
+ typeBehaviors?: {
25
+ /** Types that can interrupt existing work (emergency scenarios) */
26
+ canInterrupt?: (IncrementType | string)[];
27
+ /** Auto-abandon increments after N days of inactivity */
28
+ autoAbandonDays?: {
29
+ /** Days before experiment auto-abandons (default: 14) */
30
+ experiment?: number;
31
+ };
32
+ };
33
+ /** Staleness warning thresholds */
34
+ staleness?: {
35
+ /** Warn if paused for more than N days */
36
+ paused?: number;
37
+ /** Warn if active for more than N days */
38
+ active?: number;
39
+ };
40
+ }
8
41
  /**
9
42
  * Project metadata
10
43
  */
@@ -20,8 +53,8 @@ export interface ProjectMetadata {
20
53
  * Adapter configuration
21
54
  */
22
55
  export interface AdapterConfig {
23
- /** Default adapter to use (claude, cursor, copilot, generic) */
24
- default?: 'claude' | 'cursor' | 'copilot' | 'generic';
56
+ /** Default adapter to use (claude, cursor, generic) */
57
+ default?: 'claude' | 'cursor' | 'generic';
25
58
  /** Additional adapter settings */
26
59
  [key: string]: any;
27
60
  }
@@ -41,6 +74,8 @@ export interface SpecweaveConfig {
41
74
  language?: SupportedLanguage;
42
75
  /** Translation settings for multilingual support */
43
76
  translation?: TranslationConfig;
77
+ /** WIP limits configuration */
78
+ limits?: LimitsConfig;
44
79
  /** Allow additional properties */
45
80
  [key: string]: any;
46
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/core/types/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,gEAAgE;IAChE,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAEtD,kCAAkC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,uBAAuB;IACvB,OAAO,CAAC,EAAE,eAAe,CAAC;IAE1B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEzB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAE7B,oDAAoD;IACpD,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC,kCAAkC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,eAAe,CAWnD,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/core/types/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,4EAA4E;IAC5E,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC,wCAAwC;IACxC,aAAa,CAAC,EAAE;QACd,mEAAmE;QACnE,YAAY,CAAC,EAAE,CAAC,aAAa,GAAG,MAAM,CAAC,EAAE,CAAC;QAE1C,yDAAyD;QACzD,eAAe,CAAC,EAAE;YAChB,yDAAyD;YACzD,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,CAAC;IAEF,mCAAmC;IACnC,SAAS,CAAC,EAAE;QACV,0CAA0C;QAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,0CAA0C;QAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAE1C,kCAAkC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,uBAAuB;IACvB,OAAO,CAAC,EAAE,eAAe,CAAC;IAE1B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEzB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAE7B,oDAAoD;IACpD,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC,+BAA+B;IAC/B,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,kCAAkC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,eAAe,CA0BnD,CAAC"}
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * Type definitions for .specweave/config.json configuration file.
5
5
  */
6
+ import { IncrementType } from './increment-metadata.js';
6
7
  /**
7
8
  * Default configuration values
8
9
  */
@@ -17,5 +18,20 @@ export const DEFAULT_CONFIG = {
17
18
  adapters: {
18
19
  default: 'claude',
19
20
  },
21
+ limits: {
22
+ maxActiveIncrements: 1, // v0.7.0+: 1 active increment (maximum focus)
23
+ hardCap: 2, // Emergency ceiling (never >2)
24
+ allowEmergencyInterrupt: true, // Allow hotfix/bug to interrupt
25
+ typeBehaviors: {
26
+ canInterrupt: [IncrementType.HOTFIX, IncrementType.BUG], // Only emergencies can interrupt
27
+ autoAbandonDays: {
28
+ experiment: 14, // Auto-abandon stale experiments
29
+ },
30
+ },
31
+ staleness: {
32
+ paused: 7, // Warn if paused >7 days
33
+ active: 30, // Warn if active >30 days
34
+ },
35
+ },
20
36
  };
21
37
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/core/types/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAuDH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE;QACX,SAAS,EAAE,CAAC,IAAI,CAAC;QACjB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,MAAM;QACd,sBAAsB,EAAE,IAAI;KAC7B;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,QAAQ;KAClB;CACF,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/core/types/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AA8FxD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE;QACX,SAAS,EAAE,CAAC,IAAI,CAAC;QACjB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,MAAM;QACd,sBAAsB,EAAE,IAAI;KAC7B;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,QAAQ;KAClB;IACD,MAAM,EAAE;QACN,mBAAmB,EAAE,CAAC,EAAS,8CAA8C;QAC7E,OAAO,EAAE,CAAC,EAAqB,+BAA+B;QAC9D,uBAAuB,EAAE,IAAI,EAAE,gCAAgC;QAC/D,aAAa,EAAE;YACb,YAAY,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,iCAAiC;YAC1F,eAAe,EAAE;gBACf,UAAU,EAAE,EAAE,EAAa,iCAAiC;aAC7D;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,CAAC,EAAoB,yBAAyB;YACtD,MAAM,EAAE,EAAE,EAAmB,0BAA0B;SACxD;KACF;CACF,CAAC"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Increment Metadata Types
3
+ *
4
+ * Defines the schema for increment metadata tracking (status, type, timestamps).
5
+ * Part of increment 0007: Smart Status Management
6
+ */
7
+ /**
8
+ * Increment status enum
9
+ * Tracks the lifecycle state of an increment
10
+ */
11
+ export declare enum IncrementStatus {
12
+ /** Currently being worked on */
13
+ ACTIVE = "active",
14
+ /** Temporarily stopped (blocked by external dependency, deprioritized) */
15
+ PAUSED = "paused",
16
+ /** All tasks complete, increment finished */
17
+ COMPLETED = "completed",
18
+ /** Work abandoned (requirements changed, obsolete, etc.) */
19
+ ABANDONED = "abandoned"
20
+ }
21
+ /**
22
+ * Increment type enum
23
+ * Determines rules and limits applied to the increment
24
+ */
25
+ export declare enum IncrementType {
26
+ /** Critical production fix (bypasses all limits) */
27
+ HOTFIX = "hotfix",
28
+ /** Standard feature development (limit: 2 active) */
29
+ FEATURE = "feature",
30
+ /** Production bug fix with SRE investigation (unlimited, urgent) */
31
+ BUG = "bug",
32
+ /** Change request from stakeholders (limit: 2 active) */
33
+ CHANGE_REQUEST = "change-request",
34
+ /** Code improvement (limit: 1 active) */
35
+ REFACTOR = "refactor",
36
+ /** POC/spike work (unlimited, auto-abandon after 14 days) */
37
+ EXPERIMENT = "experiment"
38
+ }
39
+ /**
40
+ * Increment metadata schema
41
+ * Stored in .specweave/increments/{id}/metadata.json
42
+ */
43
+ export interface IncrementMetadata {
44
+ /** Increment ID (e.g., "0007-smart-increment-discipline") */
45
+ id: string;
46
+ /** Current status */
47
+ status: IncrementStatus;
48
+ /** Increment type */
49
+ type: IncrementType;
50
+ /** Creation timestamp (ISO 8601) */
51
+ created: string;
52
+ /** Last activity timestamp (ISO 8601) */
53
+ lastActivity: string;
54
+ /** Reason for pausing (only if status = paused) */
55
+ pausedReason?: string;
56
+ /** Timestamp when paused (ISO 8601) */
57
+ pausedAt?: string;
58
+ /** Reason for abandoning (only if status = abandoned) */
59
+ abandonedReason?: string;
60
+ /** Timestamp when abandoned (ISO 8601) */
61
+ abandonedAt?: string;
62
+ }
63
+ /**
64
+ * Increment metadata with additional computed fields
65
+ * Used for rich status displays
66
+ */
67
+ export interface IncrementMetadataExtended extends IncrementMetadata {
68
+ /** Progress percentage (0-100) */
69
+ progress?: number;
70
+ /** Number of completed tasks */
71
+ completedTasks?: number;
72
+ /** Total number of tasks */
73
+ totalTasks?: number;
74
+ /** Age in days since creation */
75
+ ageInDays?: number;
76
+ /** Days since paused (if paused) */
77
+ daysPaused?: number;
78
+ }
79
+ /**
80
+ * Valid status transitions
81
+ * Enforces increment lifecycle rules
82
+ */
83
+ export declare const VALID_TRANSITIONS: Record<IncrementStatus, IncrementStatus[]>;
84
+ /**
85
+ * Type-based limits
86
+ * Maximum active increments per type
87
+ *
88
+ * null = unlimited (no limit enforcement)
89
+ * User can configure per-project in .specweave/config.json
90
+ */
91
+ export declare const TYPE_LIMITS: Record<IncrementType, number | null>;
92
+ /**
93
+ * Staleness thresholds (days)
94
+ * When to warn about stale increments
95
+ */
96
+ export declare const STALENESS_THRESHOLDS: {
97
+ /** Warn if paused for more than this many days */
98
+ PAUSED: number;
99
+ /** Warn if active for more than this many days */
100
+ ACTIVE: number;
101
+ /** Auto-abandon experiments after this many days */
102
+ EXPERIMENT: number;
103
+ };
104
+ /**
105
+ * Default metadata for new increments
106
+ */
107
+ export declare function createDefaultMetadata(id: string, type?: IncrementType): IncrementMetadata;
108
+ /**
109
+ * Check if status transition is valid
110
+ */
111
+ export declare function isValidTransition(from: IncrementStatus, to: IncrementStatus): boolean;
112
+ /**
113
+ * Check if increment is stale (paused too long or active too long)
114
+ */
115
+ export declare function isStale(metadata: IncrementMetadata): boolean;
116
+ /**
117
+ * Check if increment should be auto-abandoned (experiments only)
118
+ */
119
+ export declare function shouldAutoAbandon(metadata: IncrementMetadata): boolean;
120
+ //# sourceMappingURL=increment-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"increment-metadata.d.ts","sourceRoot":"","sources":["../../../src/core/types/increment-metadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,oBAAY,eAAe;IACzB,gCAAgC;IAChC,MAAM,WAAW;IAEjB,0EAA0E;IAC1E,MAAM,WAAW;IAEjB,6CAA6C;IAC7C,SAAS,cAAc;IAEvB,4DAA4D;IAC5D,SAAS,cAAc;CACxB;AAED;;;GAGG;AACH,oBAAY,aAAa;IACvB,oDAAoD;IACpD,MAAM,WAAW;IAEjB,qDAAqD;IACrD,OAAO,YAAY;IAEnB,oEAAoE;IACpE,GAAG,QAAQ;IAEX,yDAAyD;IACzD,cAAc,mBAAmB;IAEjC,yCAAyC;IACzC,QAAQ,aAAa;IAErB,6DAA6D;IAC7D,UAAU,eAAe;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,6DAA6D;IAC7D,EAAE,EAAE,MAAM,CAAC;IAEX,qBAAqB;IACrB,MAAM,EAAE,eAAe,CAAC;IAExB,qBAAqB;IACrB,IAAI,EAAE,aAAa,CAAC;IAEpB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAEhB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IAErB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,eAAe,EAAE,eAAe,EAAE,CAgBxE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAO5D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB;IAC/B,kDAAkD;;IAGlD,kDAAkD;;IAGlD,oDAAoD;;CAErD,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE,aAAqC,GAAG,iBAAiB,CAUhH;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,eAAe,GAAG,OAAO,CAGrF;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAgB5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAUtE"}