specweave 0.21.3 → 0.22.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 (59) hide show
  1. package/CLAUDE.md +198 -6
  2. package/README.md +33 -3
  3. package/dist/plugins/specweave-github/lib/CodeValidator.d.ts +101 -0
  4. package/dist/plugins/specweave-github/lib/CodeValidator.d.ts.map +1 -0
  5. package/dist/plugins/specweave-github/lib/CodeValidator.js +219 -0
  6. package/dist/plugins/specweave-github/lib/CodeValidator.js.map +1 -0
  7. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts +182 -0
  8. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts.map +1 -0
  9. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js +603 -0
  10. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js.map +1 -0
  11. package/dist/plugins/specweave-github/lib/types.d.ts +34 -0
  12. package/dist/plugins/specweave-github/lib/types.d.ts.map +1 -1
  13. package/dist/src/cli/commands/init.d.ts.map +1 -1
  14. package/dist/src/cli/commands/init.js +60 -5
  15. package/dist/src/cli/commands/init.js.map +1 -1
  16. package/dist/src/config/types.d.ts +8 -8
  17. package/dist/src/core/living-docs/CompletionPropagator.d.ts.map +1 -1
  18. package/dist/src/core/living-docs/CompletionPropagator.js +4 -3
  19. package/dist/src/core/living-docs/CompletionPropagator.js.map +1 -1
  20. package/dist/src/core/living-docs/SpecDistributor.d.ts +5 -0
  21. package/dist/src/core/living-docs/SpecDistributor.d.ts.map +1 -1
  22. package/dist/src/core/living-docs/SpecDistributor.js +12 -0
  23. package/dist/src/core/living-docs/SpecDistributor.js.map +1 -1
  24. package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
  25. package/dist/src/core/living-docs/project-detector.js +38 -0
  26. package/dist/src/core/living-docs/project-detector.js.map +1 -1
  27. package/dist/src/core/types/config.d.ts +23 -0
  28. package/dist/src/core/types/config.d.ts.map +1 -1
  29. package/dist/src/core/types/config.js +10 -0
  30. package/dist/src/core/types/config.js.map +1 -1
  31. package/dist/src/init/ArchitecturePresenter.d.ts +47 -0
  32. package/dist/src/init/ArchitecturePresenter.d.ts.map +1 -0
  33. package/dist/src/init/ArchitecturePresenter.js +180 -0
  34. package/dist/src/init/ArchitecturePresenter.js.map +1 -0
  35. package/dist/src/init/InitFlow.d.ts.map +1 -1
  36. package/dist/src/init/InitFlow.js +30 -1
  37. package/dist/src/init/InitFlow.js.map +1 -1
  38. package/dist/src/init/architecture/CostEstimator.d.ts +52 -0
  39. package/dist/src/init/architecture/CostEstimator.d.ts.map +1 -0
  40. package/dist/src/init/architecture/CostEstimator.js +107 -0
  41. package/dist/src/init/architecture/CostEstimator.js.map +1 -0
  42. package/dist/src/init/architecture/InfrastructureMapper.d.ts +41 -0
  43. package/dist/src/init/architecture/InfrastructureMapper.d.ts.map +1 -0
  44. package/dist/src/init/architecture/InfrastructureMapper.js +140 -0
  45. package/dist/src/init/architecture/InfrastructureMapper.js.map +1 -0
  46. package/dist/src/init/architecture/ProjectGenerator.d.ts +44 -0
  47. package/dist/src/init/architecture/ProjectGenerator.d.ts.map +1 -0
  48. package/dist/src/init/architecture/ProjectGenerator.js +216 -0
  49. package/dist/src/init/architecture/ProjectGenerator.js.map +1 -0
  50. package/dist/src/init/research/src/config/types.d.ts +8 -8
  51. package/package.json +9 -8
  52. package/plugins/specweave-ado/lib/enhanced-ado-sync.js +170 -0
  53. package/plugins/specweave-github/lib/CodeValidator.js +195 -0
  54. package/plugins/specweave-github/lib/CodeValidator.ts +284 -0
  55. package/plugins/specweave-github/lib/ThreeLayerSyncManager.js +545 -0
  56. package/plugins/specweave-github/lib/ThreeLayerSyncManager.ts +809 -0
  57. package/plugins/specweave-github/lib/types.ts +38 -0
  58. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +1200 -0
  59. package/src/templates/AGENTS.md.template +22 -1
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Cost Estimation Calculator (T-040)
3
+ *
4
+ * Calculates infrastructure costs at different user scales
5
+ * for each architecture type.
6
+ */
7
+ /**
8
+ * Cost models for all architecture types
9
+ */
10
+ const COST_MODELS = {
11
+ serverless: {
12
+ fixedCosts: 0,
13
+ variableCostPer1KUsers: 0.85, // $0.85 per 1K users
14
+ complianceOverhead: 0,
15
+ freeBreakpoint: 5000 // AWS free tier covers ~5K users
16
+ },
17
+ 'traditional-monolith': {
18
+ fixedCosts: 300, // ECS + RDS base
19
+ variableCostPer1KUsers: 1.5,
20
+ complianceOverhead: 2500, // HIPAA/PCI baseline
21
+ freeBreakpoint: undefined
22
+ },
23
+ microservices: {
24
+ fixedCosts: 5000, // Kubernetes cluster + infrastructure
25
+ variableCostPer1KUsers: 10,
26
+ complianceOverhead: 0,
27
+ freeBreakpoint: undefined
28
+ },
29
+ 'modular-monolith': {
30
+ fixedCosts: 100, // ECS + RDS
31
+ variableCostPer1KUsers: 2,
32
+ complianceOverhead: 0,
33
+ freeBreakpoint: undefined
34
+ },
35
+ jamstack: {
36
+ fixedCosts: 0,
37
+ variableCostPer1KUsers: 0.5,
38
+ complianceOverhead: 0,
39
+ freeBreakpoint: 10000 // Vercel free tier
40
+ },
41
+ hybrid: {
42
+ fixedCosts: 500,
43
+ variableCostPer1KUsers: 5,
44
+ complianceOverhead: 0,
45
+ freeBreakpoint: undefined
46
+ }
47
+ };
48
+ /**
49
+ * Cost Estimator Class
50
+ */
51
+ export class CostEstimator {
52
+ /**
53
+ * Estimate cost for specific architecture and user count
54
+ *
55
+ * @param architecture - Architecture type
56
+ * @param users - Number of users
57
+ * @param hasCompliance - Whether compliance standards apply (HIPAA/PCI)
58
+ * @returns Formatted cost string
59
+ */
60
+ estimateCost(architecture, users, hasCompliance = false) {
61
+ const model = COST_MODELS[architecture];
62
+ // Check free tier breakpoint
63
+ if (model.freeBreakpoint && users <= model.freeBreakpoint) {
64
+ return '$0/month (free tier)';
65
+ }
66
+ // Calculate base cost
67
+ let cost = model.fixedCosts;
68
+ // Calculate variable cost (subtract free tier if applicable)
69
+ const chargeableUsers = model.freeBreakpoint
70
+ ? Math.max(0, users - model.freeBreakpoint)
71
+ : users;
72
+ cost += (chargeableUsers / 1000) * model.variableCostPer1KUsers;
73
+ // Add compliance overhead
74
+ if (hasCompliance) {
75
+ cost += model.complianceOverhead;
76
+ }
77
+ // Round to nearest $5
78
+ cost = Math.round(cost / 5) * 5;
79
+ return `$${cost.toLocaleString()}/month`;
80
+ }
81
+ /**
82
+ * Generate complete cost estimate at 4 scales
83
+ *
84
+ * @param architecture - Architecture type
85
+ * @param hasCompliance - Whether compliance standards apply
86
+ * @returns Cost estimate object
87
+ */
88
+ generateCostEstimate(architecture, hasCompliance = false) {
89
+ return {
90
+ at1K: this.estimateCost(architecture, 1000, hasCompliance),
91
+ at10K: this.estimateCost(architecture, 10000, hasCompliance),
92
+ at100K: this.estimateCost(architecture, 100000, hasCompliance),
93
+ at1M: this.estimateCost(architecture, 1000000, hasCompliance)
94
+ };
95
+ }
96
+ /**
97
+ * Get cost model for architecture (for testing/debugging)
98
+ */
99
+ getCostModel(architecture) {
100
+ return COST_MODELS[architecture];
101
+ }
102
+ }
103
+ /**
104
+ * Singleton instance
105
+ */
106
+ export const costEstimator = new CostEstimator();
107
+ //# sourceMappingURL=CostEstimator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CostEstimator.js","sourceRoot":"","sources":["../../../../src/init/architecture/CostEstimator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Infrastructure Mapper (T-039)
3
+ *
4
+ * Maps architecture types to specific infrastructure components
5
+ * based on requirements (compliance, scale, budget).
6
+ */
7
+ import type { ArchitectureType } from './types.js';
8
+ import type { ComplianceStandard } from '../compliance/types.js';
9
+ /**
10
+ * Infrastructure Mapper Class
11
+ */
12
+ export declare class InfrastructureMapper {
13
+ /**
14
+ * Get infrastructure components for architecture type
15
+ *
16
+ * @param architecture - Architecture type
17
+ * @param complianceStandards - Detected compliance standards
18
+ * @returns Infrastructure component list
19
+ */
20
+ mapInfrastructure(architecture: ArchitectureType, complianceStandards?: ComplianceStandard[]): string[];
21
+ /**
22
+ * Get compliance-specific infrastructure modifications
23
+ *
24
+ * @param complianceStandards - Detected compliance standards
25
+ * @returns Compliance infrastructure requirements
26
+ */
27
+ getComplianceRequirements(complianceStandards: ComplianceStandard[]): string[];
28
+ /**
29
+ * Check if architecture supports compliance standard
30
+ *
31
+ * @param architecture - Architecture type
32
+ * @param complianceId - Compliance standard ID
33
+ * @returns True if architecture can support compliance
34
+ */
35
+ supportsCompliance(architecture: ArchitectureType, complianceId: string): boolean;
36
+ }
37
+ /**
38
+ * Singleton instance
39
+ */
40
+ export declare const infrastructureMapper: InfrastructureMapper;
41
+ //# sourceMappingURL=InfrastructureMapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InfrastructureMapper.d.ts","sourceRoot":"","sources":["../../../../src/init/architecture/InfrastructureMapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAqEjE;;GAEG;AACH,qBAAa,oBAAoB;IAC/B;;;;;;OAMG;IACI,iBAAiB,CACtB,YAAY,EAAE,gBAAgB,EAC9B,mBAAmB,GAAE,kBAAkB,EAAO,GAC7C,MAAM,EAAE;IAiBX;;;;;OAKG;IACI,yBAAyB,CAC9B,mBAAmB,EAAE,kBAAkB,EAAE,GACxC,MAAM,EAAE;IAYX;;;;;;OAMG;IACI,kBAAkB,CACvB,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,MAAM,GACnB,OAAO;CAsBX;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Infrastructure Mapper (T-039)
3
+ *
4
+ * Maps architecture types to specific infrastructure components
5
+ * based on requirements (compliance, scale, budget).
6
+ */
7
+ /**
8
+ * Infrastructure mapping for each architecture type
9
+ */
10
+ const INFRASTRUCTURE_MATRIX = {
11
+ serverless: [
12
+ 'AWS Lambda',
13
+ 'Supabase (PostgreSQL)',
14
+ 'Vercel',
15
+ 'S3',
16
+ 'CloudFront CDN',
17
+ 'API Gateway'
18
+ ],
19
+ 'traditional-monolith': [
20
+ 'AWS ECS',
21
+ 'RDS (PostgreSQL)',
22
+ 'ElastiCache',
23
+ 'S3',
24
+ 'CloudFront'
25
+ ],
26
+ microservices: [
27
+ 'AWS EKS (Kubernetes)',
28
+ 'RDS',
29
+ 'DynamoDB',
30
+ 'S3',
31
+ 'CloudFront',
32
+ 'API Gateway',
33
+ 'Service Mesh (Istio)'
34
+ ],
35
+ 'modular-monolith': ['AWS ECS', 'RDS', 'S3', 'CloudFront'],
36
+ jamstack: ['Vercel/Netlify', 'Supabase', 'Cloudflare CDN', 'Vercel Storage'],
37
+ hybrid: [
38
+ 'AWS ECS (monolith)',
39
+ 'AWS Lambda (services)',
40
+ 'RDS',
41
+ 'S3',
42
+ 'CloudFront',
43
+ 'API Gateway'
44
+ ]
45
+ };
46
+ /**
47
+ * Compliance-specific infrastructure additions
48
+ */
49
+ const COMPLIANCE_INFRASTRUCTURE = {
50
+ HIPAA: [
51
+ 'RDS (encrypted at rest + in transit)',
52
+ 'CloudTrail (audit logs)',
53
+ 'VPC (network isolation)',
54
+ 'AWS WAF (DDoS protection)',
55
+ 'S3 (encryption + versioning)'
56
+ ],
57
+ 'PCI-DSS': [
58
+ 'Isolated VPC segment',
59
+ 'RDS (encrypted + quarterly scans)',
60
+ 'CloudTrail (all access logged)',
61
+ 'Security Groups (firewall rules)',
62
+ 'Quarterly vulnerability scans'
63
+ ],
64
+ FedRAMP: [
65
+ 'AWS GovCloud (FedRAMP-certified region)',
66
+ 'RDS (FedRAMP-certified)',
67
+ 'S3 (FedRAMP-certified)',
68
+ 'CloudTrail + SIEM (continuous monitoring)',
69
+ 'FIPS 140-2 encryption'
70
+ ]
71
+ };
72
+ /**
73
+ * Infrastructure Mapper Class
74
+ */
75
+ export class InfrastructureMapper {
76
+ /**
77
+ * Get infrastructure components for architecture type
78
+ *
79
+ * @param architecture - Architecture type
80
+ * @param complianceStandards - Detected compliance standards
81
+ * @returns Infrastructure component list
82
+ */
83
+ mapInfrastructure(architecture, complianceStandards = []) {
84
+ // Get base infrastructure for architecture
85
+ const baseInfra = [...INFRASTRUCTURE_MATRIX[architecture]];
86
+ // Add compliance-specific infrastructure
87
+ const complianceInfra = [];
88
+ for (const standard of complianceStandards) {
89
+ if (COMPLIANCE_INFRASTRUCTURE[standard.id]) {
90
+ complianceInfra.push(...COMPLIANCE_INFRASTRUCTURE[standard.id]);
91
+ }
92
+ }
93
+ // Combine and deduplicate
94
+ const allInfra = [...baseInfra, ...complianceInfra];
95
+ return Array.from(new Set(allInfra));
96
+ }
97
+ /**
98
+ * Get compliance-specific infrastructure modifications
99
+ *
100
+ * @param complianceStandards - Detected compliance standards
101
+ * @returns Compliance infrastructure requirements
102
+ */
103
+ getComplianceRequirements(complianceStandards) {
104
+ const requirements = [];
105
+ for (const standard of complianceStandards) {
106
+ if (COMPLIANCE_INFRASTRUCTURE[standard.id]) {
107
+ requirements.push(...COMPLIANCE_INFRASTRUCTURE[standard.id]);
108
+ }
109
+ }
110
+ return Array.from(new Set(requirements));
111
+ }
112
+ /**
113
+ * Check if architecture supports compliance standard
114
+ *
115
+ * @param architecture - Architecture type
116
+ * @param complianceId - Compliance standard ID
117
+ * @returns True if architecture can support compliance
118
+ */
119
+ supportsCompliance(architecture, complianceId) {
120
+ // Serverless struggles with HIPAA/PCI (complex audit trails)
121
+ if (architecture === 'serverless' &&
122
+ (complianceId === 'HIPAA' || complianceId === 'PCI-DSS')) {
123
+ return false;
124
+ }
125
+ // JAMstack not suitable for heavy compliance
126
+ if (architecture === 'jamstack' &&
127
+ (complianceId === 'HIPAA' ||
128
+ complianceId === 'PCI-DSS' ||
129
+ complianceId === 'FedRAMP')) {
130
+ return false;
131
+ }
132
+ // Traditional and hybrid support all compliance
133
+ return true;
134
+ }
135
+ }
136
+ /**
137
+ * Singleton instance
138
+ */
139
+ export const infrastructureMapper = new InfrastructureMapper();
140
+ //# sourceMappingURL=InfrastructureMapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InfrastructureMapper.js","sourceRoot":"","sources":["../../../../src/init/architecture/InfrastructureMapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;GAEG;AACH,MAAM,qBAAqB,GAAuC;IAChE,UAAU,EAAE;QACV,YAAY;QACZ,uBAAuB;QACvB,QAAQ;QACR,IAAI;QACJ,gBAAgB;QAChB,aAAa;KACd;IACD,sBAAsB,EAAE;QACtB,SAAS;QACT,kBAAkB;QAClB,aAAa;QACb,IAAI;QACJ,YAAY;KACb;IACD,aAAa,EAAE;QACb,sBAAsB;QACtB,KAAK;QACL,UAAU;QACV,IAAI;QACJ,YAAY;QACZ,aAAa;QACb,sBAAsB;KACvB;IACD,kBAAkB,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC;IAC1D,QAAQ,EAAE,CAAC,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;IAC5E,MAAM,EAAE;QACN,oBAAoB;QACpB,uBAAuB;QACvB,KAAK;QACL,IAAI;QACJ,YAAY;QACZ,aAAa;KACd;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,yBAAyB,GAA6B;IAC1D,KAAK,EAAE;QACL,sCAAsC;QACtC,yBAAyB;QACzB,yBAAyB;QACzB,2BAA2B;QAC3B,8BAA8B;KAC/B;IACD,SAAS,EAAE;QACT,sBAAsB;QACtB,mCAAmC;QACnC,gCAAgC;QAChC,kCAAkC;QAClC,+BAA+B;KAChC;IACD,OAAO,EAAE;QACP,yCAAyC;QACzC,yBAAyB;QACzB,wBAAwB;QACxB,2CAA2C;QAC3C,uBAAuB;KACxB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAC/B;;;;;;OAMG;IACI,iBAAiB,CACtB,YAA8B,EAC9B,sBAA4C,EAAE;QAE9C,2CAA2C;QAC3C,MAAM,SAAS,GAAG,CAAC,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;QAE3D,yCAAyC;QACzC,MAAM,eAAe,GAAa,EAAE,CAAC;QACrC,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;YAC3C,IAAI,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3C,eAAe,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,eAAe,CAAC,CAAC;QACpD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACI,yBAAyB,CAC9B,mBAAyC;QAEzC,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;YAC3C,IAAI,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3C,YAAY,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;OAMG;IACI,kBAAkB,CACvB,YAA8B,EAC9B,YAAoB;QAEpB,6DAA6D;QAC7D,IACE,YAAY,KAAK,YAAY;YAC7B,CAAC,YAAY,KAAK,OAAO,IAAI,YAAY,KAAK,SAAS,CAAC,EACxD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,6CAA6C;QAC7C,IACE,YAAY,KAAK,UAAU;YAC3B,CAAC,YAAY,KAAK,OAAO;gBACvB,YAAY,KAAK,SAAS;gBAC1B,YAAY,KAAK,SAAS,CAAC,EAC7B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,gDAAgD;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Project Generator (T-042)
3
+ *
4
+ * Generates project list based on architecture type,
5
+ * compliance requirements, and vision keywords.
6
+ */
7
+ import type { ArchitectureType, ProjectDefinition } from './types.js';
8
+ import type { ComplianceStandard } from '../compliance/types.js';
9
+ import type { VisionInsights } from '../research/types.js';
10
+ /**
11
+ * Project Generator Class
12
+ */
13
+ export declare class ProjectGenerator {
14
+ /**
15
+ * Generate projects based on architecture and context
16
+ *
17
+ * @param architecture - Architecture type
18
+ * @param compliance - Compliance standards
19
+ * @param vision - Vision insights (optional)
20
+ * @returns Project definition list
21
+ */
22
+ generateProjects(architecture: ArchitectureType, compliance?: ComplianceStandard[], vision?: VisionInsights): ProjectDefinition[];
23
+ /**
24
+ * Get projects for architecture type
25
+ */
26
+ private getArchitectureProjects;
27
+ /**
28
+ * Get compliance-driven projects
29
+ */
30
+ private getComplianceProjects;
31
+ /**
32
+ * Get vision-specific projects
33
+ */
34
+ private getVisionProjects;
35
+ /**
36
+ * Deduplicate projects by name (keep first occurrence)
37
+ */
38
+ private deduplicateProjects;
39
+ }
40
+ /**
41
+ * Singleton instance
42
+ */
43
+ export declare const projectGenerator: ProjectGenerator;
44
+ //# sourceMappingURL=ProjectGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectGenerator.d.ts","sourceRoot":"","sources":["../../../../src/init/architecture/ProjectGenerator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;;;;;;OAOG;IACI,gBAAgB,CACrB,YAAY,EAAE,gBAAgB,EAC9B,UAAU,GAAE,kBAAkB,EAAO,EACrC,MAAM,CAAC,EAAE,cAAc,GACtB,iBAAiB,EAAE;IAgCtB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA8E/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoC7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA2DzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAU5B;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
@@ -0,0 +1,216 @@
1
+ /**
2
+ * Project Generator (T-042)
3
+ *
4
+ * Generates project list based on architecture type,
5
+ * compliance requirements, and vision keywords.
6
+ */
7
+ /**
8
+ * Project Generator Class
9
+ */
10
+ export class ProjectGenerator {
11
+ /**
12
+ * Generate projects based on architecture and context
13
+ *
14
+ * @param architecture - Architecture type
15
+ * @param compliance - Compliance standards
16
+ * @param vision - Vision insights (optional)
17
+ * @returns Project definition list
18
+ */
19
+ generateProjects(architecture, compliance = [], vision) {
20
+ const projects = [];
21
+ // Always add frontend (unless pure API)
22
+ if (!vision?.keywords.includes('api-only')) {
23
+ projects.push({
24
+ name: 'frontend',
25
+ description: 'Web application frontend',
26
+ stack: architecture === 'jamstack' ? ['Next.js', 'React'] : ['React', 'TypeScript']
27
+ });
28
+ }
29
+ // Add architecture-specific projects
30
+ const archProjects = this.getArchitectureProjects(architecture);
31
+ projects.push(...archProjects);
32
+ // Add compliance-driven projects
33
+ const complianceProjects = this.getComplianceProjects(compliance);
34
+ projects.push(...complianceProjects);
35
+ // Add vision-specific projects
36
+ if (vision) {
37
+ const visionProjects = this.getVisionProjects(vision);
38
+ projects.push(...visionProjects);
39
+ }
40
+ // Deduplicate by name
41
+ const uniqueProjects = this.deduplicateProjects(projects);
42
+ return uniqueProjects;
43
+ }
44
+ /**
45
+ * Get projects for architecture type
46
+ */
47
+ getArchitectureProjects(architecture) {
48
+ switch (architecture) {
49
+ case 'serverless':
50
+ return [
51
+ {
52
+ name: 'backend-functions',
53
+ description: 'Serverless backend functions',
54
+ stack: ['AWS Lambda', 'Node.js', 'TypeScript']
55
+ },
56
+ {
57
+ name: 'api-gateway',
58
+ description: 'API Gateway configuration',
59
+ stack: ['AWS API Gateway']
60
+ }
61
+ ];
62
+ case 'traditional-monolith':
63
+ case 'modular-monolith':
64
+ return [
65
+ {
66
+ name: 'backend',
67
+ description: 'Monolithic backend application',
68
+ stack: ['Node.js', 'Express', 'PostgreSQL']
69
+ }
70
+ ];
71
+ case 'microservices':
72
+ return [
73
+ {
74
+ name: 'api-gateway',
75
+ description: 'API Gateway service',
76
+ stack: ['Kong', 'Nginx']
77
+ },
78
+ {
79
+ name: 'user-service',
80
+ description: 'User management service',
81
+ stack: ['Node.js', 'PostgreSQL']
82
+ },
83
+ {
84
+ name: 'auth-service',
85
+ description: 'Authentication service',
86
+ stack: ['Node.js', 'JWT', 'Redis']
87
+ }
88
+ ];
89
+ case 'jamstack':
90
+ return [
91
+ {
92
+ name: 'cms',
93
+ description: 'Headless CMS',
94
+ stack: ['Contentful', 'Sanity']
95
+ },
96
+ {
97
+ name: 'backend-functions',
98
+ description: 'Serverless backend functions',
99
+ stack: ['Vercel Functions', 'Node.js']
100
+ }
101
+ ];
102
+ case 'hybrid':
103
+ return [
104
+ {
105
+ name: 'backend-monolith',
106
+ description: 'Core backend monolith',
107
+ stack: ['Node.js', 'Express', 'PostgreSQL']
108
+ },
109
+ {
110
+ name: 'backend-functions',
111
+ description: 'Serverless functions for specific services',
112
+ stack: ['AWS Lambda', 'Node.js']
113
+ }
114
+ ];
115
+ default:
116
+ return [];
117
+ }
118
+ }
119
+ /**
120
+ * Get compliance-driven projects
121
+ */
122
+ getComplianceProjects(compliance) {
123
+ const projects = [];
124
+ // HIPAA requires separate auth and data services
125
+ if (compliance.some((c) => c.id === 'HIPAA' || c.id === 'HITRUST')) {
126
+ projects.push({
127
+ name: 'auth-service',
128
+ description: 'HIPAA-compliant authentication service',
129
+ stack: ['Node.js', 'OAuth2', 'MFA', 'Audit Logging']
130
+ }, {
131
+ name: 'data-service',
132
+ description: 'HIPAA-compliant data encryption and access control',
133
+ stack: ['Node.js', 'PostgreSQL (encrypted)', 'Access Control']
134
+ }, {
135
+ name: 'audit-logs',
136
+ description: 'HIPAA audit trail and logging',
137
+ stack: ['CloudTrail', 'ELK Stack', 'Log Retention']
138
+ });
139
+ }
140
+ // PCI-DSS: Isolated payment service
141
+ if (compliance.some((c) => c.id === 'PCI-DSS')) {
142
+ projects.push({
143
+ name: 'payment-service',
144
+ description: 'PCI-DSS compliant payment processing (or use Stripe)',
145
+ stack: ['Node.js (PCI scope)', 'Stripe API', 'Tokenization']
146
+ });
147
+ }
148
+ return projects;
149
+ }
150
+ /**
151
+ * Get vision-specific projects
152
+ */
153
+ getVisionProjects(vision) {
154
+ const projects = [];
155
+ // Mobile app
156
+ if (vision.keywords.includes('mobile') ||
157
+ vision.keywords.includes('app') ||
158
+ vision.keywords.includes('ios') ||
159
+ vision.keywords.includes('android')) {
160
+ projects.push({
161
+ name: 'mobile',
162
+ description: 'Mobile application',
163
+ stack: ['React Native', 'TypeScript']
164
+ });
165
+ }
166
+ // Payment/ecommerce
167
+ if (vision.keywords.includes('payment') ||
168
+ vision.keywords.includes('ecommerce') ||
169
+ vision.keywords.includes('shopping')) {
170
+ projects.push({
171
+ name: 'payment-service',
172
+ description: 'Payment processing service',
173
+ stack: ['Stripe', 'PayPal', 'Node.js']
174
+ });
175
+ }
176
+ // Notifications
177
+ if (vision.keywords.includes('notification') ||
178
+ vision.keywords.includes('messaging') ||
179
+ vision.keywords.includes('email')) {
180
+ projects.push({
181
+ name: 'notification-service',
182
+ description: 'Notification and messaging service',
183
+ stack: ['SendGrid', 'AWS SES', 'Node.js']
184
+ });
185
+ }
186
+ // Analytics/ML
187
+ if (vision.keywords.includes('analytics') ||
188
+ vision.keywords.includes('ml') ||
189
+ vision.keywords.includes('ai')) {
190
+ projects.push({
191
+ name: 'analytics-service',
192
+ description: 'Analytics and ML service',
193
+ stack: ['Python', 'TensorFlow', 'BigQuery']
194
+ });
195
+ }
196
+ return projects;
197
+ }
198
+ /**
199
+ * Deduplicate projects by name (keep first occurrence)
200
+ */
201
+ deduplicateProjects(projects) {
202
+ const seen = new Set();
203
+ return projects.filter((project) => {
204
+ if (seen.has(project.name)) {
205
+ return false;
206
+ }
207
+ seen.add(project.name);
208
+ return true;
209
+ });
210
+ }
211
+ }
212
+ /**
213
+ * Singleton instance
214
+ */
215
+ export const projectGenerator = new ProjectGenerator();
216
+ //# sourceMappingURL=ProjectGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectGenerator.js","sourceRoot":"","sources":["../../../../src/init/architecture/ProjectGenerator.ts"],"names":[],"mappings":"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"}
@@ -68,6 +68,10 @@ export declare const SpecWeaveConfigSchema: z.ZodObject<{
68
68
  name?: string;
69
69
  type?: "single" | "multi";
70
70
  };
71
+ livingDocs?: {
72
+ enabled?: boolean;
73
+ baseDir?: string;
74
+ };
71
75
  research?: {
72
76
  architecture?: any;
73
77
  repositories?: string[];
@@ -75,16 +79,16 @@ export declare const SpecWeaveConfigSchema: z.ZodObject<{
75
79
  vision?: any;
76
80
  compliance?: any[];
77
81
  };
78
- livingDocs?: {
79
- enabled?: boolean;
80
- baseDir?: string;
81
- };
82
82
  }, {
83
83
  version?: string;
84
84
  project?: {
85
85
  name?: string;
86
86
  type?: "single" | "multi";
87
87
  };
88
+ livingDocs?: {
89
+ enabled?: boolean;
90
+ baseDir?: string;
91
+ };
88
92
  research?: {
89
93
  architecture?: any;
90
94
  repositories?: string[];
@@ -92,10 +96,6 @@ export declare const SpecWeaveConfigSchema: z.ZodObject<{
92
96
  vision?: any;
93
97
  compliance?: any[];
94
98
  };
95
- livingDocs?: {
96
- enabled?: boolean;
97
- baseDir?: string;
98
- };
99
99
  }>;
100
100
  export type ResearchConfig = z.infer<typeof ResearchConfigSchema>;
101
101
  export type SpecWeaveConfig = z.infer<typeof SpecWeaveConfigSchema>;