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.
- package/CLAUDE.md +198 -6
- package/README.md +33 -3
- package/dist/plugins/specweave-github/lib/CodeValidator.d.ts +101 -0
- package/dist/plugins/specweave-github/lib/CodeValidator.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/CodeValidator.js +219 -0
- package/dist/plugins/specweave-github/lib/CodeValidator.js.map +1 -0
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts +182 -0
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js +603 -0
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js.map +1 -0
- package/dist/plugins/specweave-github/lib/types.d.ts +34 -0
- package/dist/plugins/specweave-github/lib/types.d.ts.map +1 -1
- package/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +60 -5
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/config/types.d.ts +8 -8
- package/dist/src/core/living-docs/CompletionPropagator.d.ts.map +1 -1
- package/dist/src/core/living-docs/CompletionPropagator.js +4 -3
- package/dist/src/core/living-docs/CompletionPropagator.js.map +1 -1
- package/dist/src/core/living-docs/SpecDistributor.d.ts +5 -0
- package/dist/src/core/living-docs/SpecDistributor.d.ts.map +1 -1
- package/dist/src/core/living-docs/SpecDistributor.js +12 -0
- package/dist/src/core/living-docs/SpecDistributor.js.map +1 -1
- package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
- package/dist/src/core/living-docs/project-detector.js +38 -0
- package/dist/src/core/living-docs/project-detector.js.map +1 -1
- package/dist/src/core/types/config.d.ts +23 -0
- package/dist/src/core/types/config.d.ts.map +1 -1
- package/dist/src/core/types/config.js +10 -0
- package/dist/src/core/types/config.js.map +1 -1
- package/dist/src/init/ArchitecturePresenter.d.ts +47 -0
- package/dist/src/init/ArchitecturePresenter.d.ts.map +1 -0
- package/dist/src/init/ArchitecturePresenter.js +180 -0
- package/dist/src/init/ArchitecturePresenter.js.map +1 -0
- package/dist/src/init/InitFlow.d.ts.map +1 -1
- package/dist/src/init/InitFlow.js +30 -1
- package/dist/src/init/InitFlow.js.map +1 -1
- package/dist/src/init/architecture/CostEstimator.d.ts +52 -0
- package/dist/src/init/architecture/CostEstimator.d.ts.map +1 -0
- package/dist/src/init/architecture/CostEstimator.js +107 -0
- package/dist/src/init/architecture/CostEstimator.js.map +1 -0
- package/dist/src/init/architecture/InfrastructureMapper.d.ts +41 -0
- package/dist/src/init/architecture/InfrastructureMapper.d.ts.map +1 -0
- package/dist/src/init/architecture/InfrastructureMapper.js +140 -0
- package/dist/src/init/architecture/InfrastructureMapper.js.map +1 -0
- package/dist/src/init/architecture/ProjectGenerator.d.ts +44 -0
- package/dist/src/init/architecture/ProjectGenerator.d.ts.map +1 -0
- package/dist/src/init/architecture/ProjectGenerator.js +216 -0
- package/dist/src/init/architecture/ProjectGenerator.js.map +1 -0
- package/dist/src/init/research/src/config/types.d.ts +8 -8
- package/package.json +9 -8
- package/plugins/specweave-ado/lib/enhanced-ado-sync.js +170 -0
- package/plugins/specweave-github/lib/CodeValidator.js +195 -0
- package/plugins/specweave-github/lib/CodeValidator.ts +284 -0
- package/plugins/specweave-github/lib/ThreeLayerSyncManager.js +545 -0
- package/plugins/specweave-github/lib/ThreeLayerSyncManager.ts +809 -0
- package/plugins/specweave-github/lib/types.ts +38 -0
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +1200 -0
- 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":"AAAA;;;;;GAKG;AAqBH;;GAEG;AACH,MAAM,WAAW,GAAwC;IACvD,UAAU,EAAE;QACV,UAAU,EAAE,CAAC;QACb,sBAAsB,EAAE,IAAI,EAAE,qBAAqB;QACnD,kBAAkB,EAAE,CAAC;QACrB,cAAc,EAAE,IAAI,CAAC,iCAAiC;KACvD;IACD,sBAAsB,EAAE;QACtB,UAAU,EAAE,GAAG,EAAE,iBAAiB;QAClC,sBAAsB,EAAE,GAAG;QAC3B,kBAAkB,EAAE,IAAI,EAAE,qBAAqB;QAC/C,cAAc,EAAE,SAAS;KAC1B;IACD,aAAa,EAAE;QACb,UAAU,EAAE,IAAI,EAAE,sCAAsC;QACxD,sBAAsB,EAAE,EAAE;QAC1B,kBAAkB,EAAE,CAAC;QACrB,cAAc,EAAE,SAAS;KAC1B;IACD,kBAAkB,EAAE;QAClB,UAAU,EAAE,GAAG,EAAE,YAAY;QAC7B,sBAAsB,EAAE,CAAC;QACzB,kBAAkB,EAAE,CAAC;QACrB,cAAc,EAAE,SAAS;KAC1B;IACD,QAAQ,EAAE;QACR,UAAU,EAAE,CAAC;QACb,sBAAsB,EAAE,GAAG;QAC3B,kBAAkB,EAAE,CAAC;QACrB,cAAc,EAAE,KAAK,CAAC,mBAAmB;KAC1C;IACD,MAAM,EAAE;QACN,UAAU,EAAE,GAAG;QACf,sBAAsB,EAAE,CAAC;QACzB,kBAAkB,EAAE,CAAC;QACrB,cAAc,EAAE,SAAS;KAC1B;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,aAAa;IACxB;;;;;;;OAOG;IACI,YAAY,CACjB,YAA8B,EAC9B,KAAa,EACb,aAAa,GAAG,KAAK;QAErB,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;QAExC,6BAA6B;QAC7B,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YAC1D,OAAO,sBAAsB,CAAC;QAChC,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC;QAE5B,6DAA6D;QAC7D,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc;YAC1C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC;YAC3C,CAAC,CAAC,KAAK,CAAC;QACV,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,sBAAsB,CAAC;QAEhE,0BAA0B;QAC1B,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,IAAI,KAAK,CAAC,kBAAkB,CAAC;QACnC,CAAC;QAED,sBAAsB;QACtB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAEhC,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC;IAC3C,CAAC;IAED;;;;;;OAMG;IACI,oBAAoB,CACzB,YAA8B,EAC9B,aAAa,GAAG,KAAK;QAErB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,aAAa,CAAC;YAC1D,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,aAAa,CAAC;YAC5D,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,CAAC;YAC9D,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,EAAE,aAAa,CAAC;SAC9D,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,YAA8B;QAChD,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
|
|
@@ -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":"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"}
|
|
@@ -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>;
|