specweave 0.21.2 → 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 +429 -10
- 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/IssueStateManager.d.ts +98 -0
- package/dist/plugins/specweave-github/lib/IssueStateManager.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/IssueStateManager.js +146 -0
- package/dist/plugins/specweave-github/lib/IssueStateManager.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/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +6 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -1
- package/dist/src/cli/commands/check-hooks.d.ts +11 -0
- package/dist/src/cli/commands/check-hooks.d.ts.map +1 -0
- package/dist/src/cli/commands/check-hooks.js +144 -0
- package/dist/src/cli/commands/check-hooks.js.map +1 -0
- package/dist/src/cli/commands/cicd-monitor.js +3 -3
- package/dist/src/cli/commands/cicd-monitor.js.map +1 -1
- package/dist/src/cli/commands/import-docs.js +2 -2
- package/dist/src/cli/commands/import-docs.js.map +1 -1
- package/dist/src/cli/commands/init-multiproject.js +4 -4
- package/dist/src/cli/commands/init-multiproject.js.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/cli/commands/migrate-to-multiproject.js +3 -3
- package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
- package/dist/src/cli/commands/plan/agent-invoker.d.ts +79 -0
- package/dist/src/cli/commands/plan/agent-invoker.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/agent-invoker.js +383 -0
- package/dist/src/cli/commands/plan/agent-invoker.js.map +1 -0
- package/dist/src/cli/commands/plan/increment-detector.d.ts +27 -0
- package/dist/src/cli/commands/plan/increment-detector.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/increment-detector.js +159 -0
- package/dist/src/cli/commands/plan/increment-detector.js.map +1 -0
- package/dist/src/cli/commands/plan/plan-orchestrator.d.ts +45 -0
- package/dist/src/cli/commands/plan/plan-orchestrator.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/plan-orchestrator.js +229 -0
- package/dist/src/cli/commands/plan/plan-orchestrator.js.map +1 -0
- package/dist/src/cli/commands/plan/plan-validator.d.ts +36 -0
- package/dist/src/cli/commands/plan/plan-validator.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/plan-validator.js +174 -0
- package/dist/src/cli/commands/plan/plan-validator.js.map +1 -0
- package/dist/src/cli/commands/plan/types.d.ts +170 -0
- package/dist/src/cli/commands/plan/types.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/types.js +42 -0
- package/dist/src/cli/commands/plan/types.js.map +1 -0
- package/dist/src/cli/commands/plan-command.d.ts +16 -0
- package/dist/src/cli/commands/plan-command.d.ts.map +1 -0
- package/dist/src/cli/commands/plan-command.js +127 -0
- package/dist/src/cli/commands/plan-command.js.map +1 -0
- package/dist/src/cli/commands/switch-project.js +3 -3
- package/dist/src/cli/commands/switch-project.js.map +1 -1
- package/dist/src/cli/commands/validate-parent-repo.js +1 -1
- package/dist/src/cli/commands/validate-parent-repo.js.map +1 -1
- package/dist/src/config/ConfigManager.d.ts +69 -0
- package/dist/src/config/ConfigManager.d.ts.map +1 -0
- package/dist/src/config/ConfigManager.js +130 -0
- package/dist/src/config/ConfigManager.js.map +1 -0
- package/dist/src/config/types.d.ts +1357 -0
- package/dist/src/config/types.d.ts.map +1 -0
- package/dist/src/config/types.js +67 -0
- package/dist/src/config/types.js.map +1 -0
- package/dist/src/core/brownfield/importer.d.ts +1 -1
- package/dist/src/core/brownfield/importer.d.ts.map +1 -1
- package/dist/src/core/brownfield/importer.js +3 -3
- package/dist/src/core/brownfield/importer.js.map +1 -1
- package/dist/src/core/cicd/config-loader.d.ts +1 -1
- package/dist/src/core/cicd/config-loader.d.ts.map +1 -1
- package/dist/src/core/cicd/index.d.ts +6 -6
- package/dist/src/core/cicd/index.d.ts.map +1 -1
- package/dist/src/core/cicd/index.js +6 -6
- package/dist/src/core/cicd/index.js.map +1 -1
- package/dist/src/core/cicd/monitor-service.d.ts +3 -3
- package/dist/src/core/cicd/monitor-service.d.ts.map +1 -1
- package/dist/src/core/cicd/monitor-service.js +3 -3
- package/dist/src/core/cicd/monitor-service.js.map +1 -1
- package/dist/src/core/cicd/notifier.d.ts +1 -1
- package/dist/src/core/cicd/notifier.d.ts.map +1 -1
- package/dist/src/core/cicd/state-manager.d.ts +1 -1
- package/dist/src/core/cicd/state-manager.d.ts.map +1 -1
- package/dist/src/core/cicd/state-manager.js +1 -1
- package/dist/src/core/cicd/state-manager.js.map +1 -1
- package/dist/src/core/cicd/workflow-monitor.d.ts +1 -1
- package/dist/src/core/cicd/workflow-monitor.d.ts.map +1 -1
- package/dist/src/core/cicd/workflow-monitor.js +1 -1
- package/dist/src/core/cicd/workflow-monitor.js.map +1 -1
- package/dist/src/core/cost-tracker.d.ts +2 -2
- package/dist/src/core/cost-tracker.d.ts.map +1 -1
- package/dist/src/core/cost-tracker.js +1 -1
- package/dist/src/core/cost-tracker.js.map +1 -1
- package/dist/src/core/hooks/HealthReporter.d.ts +55 -0
- package/dist/src/core/hooks/HealthReporter.d.ts.map +1 -0
- package/dist/src/core/hooks/HealthReporter.js +268 -0
- package/dist/src/core/hooks/HealthReporter.js.map +1 -0
- package/dist/src/core/hooks/HookAutoFixer.d.ts +41 -0
- package/dist/src/core/hooks/HookAutoFixer.d.ts.map +1 -0
- package/dist/src/core/hooks/HookAutoFixer.js +222 -0
- package/dist/src/core/hooks/HookAutoFixer.js.map +1 -0
- package/dist/src/core/hooks/HookExecutor.d.ts +57 -0
- package/dist/src/core/hooks/HookExecutor.d.ts.map +1 -0
- package/dist/src/core/hooks/HookExecutor.js +287 -0
- package/dist/src/core/hooks/HookExecutor.js.map +1 -0
- package/dist/src/core/hooks/HookHealthChecker.d.ts +51 -0
- package/dist/src/core/hooks/HookHealthChecker.d.ts.map +1 -0
- package/dist/src/core/hooks/HookHealthChecker.js +212 -0
- package/dist/src/core/hooks/HookHealthChecker.js.map +1 -0
- package/dist/src/core/hooks/HookScanner.d.ts +65 -0
- package/dist/src/core/hooks/HookScanner.d.ts.map +1 -0
- package/dist/src/core/hooks/HookScanner.js +214 -0
- package/dist/src/core/hooks/HookScanner.js.map +1 -0
- package/dist/src/core/hooks/types.d.ts +281 -0
- package/dist/src/core/hooks/types.d.ts.map +1 -0
- package/dist/src/core/hooks/types.js +10 -0
- package/dist/src/core/hooks/types.js.map +1 -0
- package/dist/src/core/iac/index.d.ts +10 -0
- package/dist/src/core/iac/index.d.ts.map +1 -0
- package/dist/src/core/iac/index.js +11 -0
- package/dist/src/core/iac/index.js.map +1 -0
- package/dist/src/core/iac/template-engine.d.ts +77 -0
- package/dist/src/core/iac/template-engine.d.ts.map +1 -0
- package/dist/src/core/iac/template-engine.js +182 -0
- package/dist/src/core/iac/template-engine.js.map +1 -0
- package/dist/src/core/increment/ac-status-manager.d.ts +115 -0
- package/dist/src/core/increment/ac-status-manager.d.ts.map +1 -0
- package/dist/src/core/increment/ac-status-manager.js +343 -0
- package/dist/src/core/increment/ac-status-manager.js.map +1 -0
- package/dist/src/core/increment/auto-transition-manager.d.ts +60 -0
- package/dist/src/core/increment/auto-transition-manager.d.ts.map +1 -0
- package/dist/src/core/increment/auto-transition-manager.js +192 -0
- package/dist/src/core/increment/auto-transition-manager.js.map +1 -0
- package/dist/src/core/increment/limits.d.ts +1 -1
- package/dist/src/core/increment/limits.d.ts.map +1 -1
- package/dist/src/core/increment/limits.js +2 -2
- package/dist/src/core/increment/limits.js.map +1 -1
- package/dist/src/core/increment/spec-sync-manager.d.ts +177 -0
- package/dist/src/core/increment/spec-sync-manager.d.ts.map +1 -0
- package/dist/src/core/increment/spec-sync-manager.js +496 -0
- package/dist/src/core/increment/spec-sync-manager.js.map +1 -0
- package/dist/src/core/increment/status-auto-transition.d.ts +46 -0
- package/dist/src/core/increment/status-auto-transition.d.ts.map +1 -0
- package/dist/src/core/increment/status-auto-transition.js +178 -0
- package/dist/src/core/increment/status-auto-transition.js.map +1 -0
- package/dist/src/core/increment/task-state-manager.d.ts +75 -0
- package/dist/src/core/increment/task-state-manager.d.ts.map +1 -0
- package/dist/src/core/increment/task-state-manager.js +117 -0
- package/dist/src/core/increment/task-state-manager.js.map +1 -0
- package/dist/src/core/living-docs/CodeValidator.d.ts +68 -0
- package/dist/src/core/living-docs/CodeValidator.d.ts.map +1 -0
- package/dist/src/core/living-docs/CodeValidator.js +160 -0
- package/dist/src/core/living-docs/CodeValidator.js.map +1 -0
- package/dist/src/core/living-docs/CompletionPropagator.d.ts +84 -0
- package/dist/src/core/living-docs/CompletionPropagator.d.ts.map +1 -0
- package/dist/src/core/living-docs/CompletionPropagator.js +206 -0
- package/dist/src/core/living-docs/CompletionPropagator.js.map +1 -0
- package/dist/src/core/living-docs/ProjectDetector.d.ts +29 -0
- package/dist/src/core/living-docs/ProjectDetector.d.ts.map +1 -0
- package/dist/src/core/living-docs/ProjectDetector.js +94 -0
- package/dist/src/core/living-docs/ProjectDetector.js.map +1 -0
- package/dist/src/core/living-docs/SpecDistributor.d.ts +60 -0
- package/dist/src/core/living-docs/SpecDistributor.d.ts.map +1 -0
- package/dist/src/core/living-docs/SpecDistributor.js +228 -0
- package/dist/src/core/living-docs/SpecDistributor.js.map +1 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts +116 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts.map +1 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.js +356 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.js.map +1 -0
- package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
- package/dist/src/core/living-docs/hierarchy-mapper.js +2 -1
- package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
- package/dist/src/core/living-docs/index.d.ts +1 -1
- package/dist/src/core/living-docs/index.d.ts.map +1 -1
- package/dist/src/core/living-docs/index.js +5 -1
- package/dist/src/core/living-docs/index.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/living-docs/types.d.ts +70 -300
- package/dist/src/core/living-docs/types.d.ts.map +1 -1
- package/dist/src/core/living-docs/types.js +2 -10
- package/dist/src/core/living-docs/types.js.map +1 -1
- package/dist/src/core/project-manager.d.ts +1 -1
- package/dist/src/core/project-manager.d.ts.map +1 -1
- package/dist/src/core/project-manager.js +2 -2
- package/dist/src/core/project-manager.js.map +1 -1
- package/dist/src/core/qa/quality-gate-decider.d.ts +1 -1
- package/dist/src/core/qa/quality-gate-decider.d.ts.map +1 -1
- package/dist/src/core/qa/risk-calculator.d.ts +1 -1
- package/dist/src/core/qa/risk-calculator.d.ts.map +1 -1
- package/dist/src/core/repo-structure/setup-summary.d.ts +1 -1
- package/dist/src/core/repo-structure/setup-summary.d.ts.map +1 -1
- package/dist/src/core/rfc-generator-v2.d.ts +1 -1
- package/dist/src/core/rfc-generator-v2.d.ts.map +1 -1
- package/dist/src/core/rfc-generator-v2.js +1 -1
- package/dist/src/core/rfc-generator-v2.js.map +1 -1
- package/dist/src/core/serverless/context-detector.d.ts +12 -0
- package/dist/src/core/serverless/context-detector.d.ts.map +1 -0
- package/dist/src/core/serverless/context-detector.js +213 -0
- package/dist/src/core/serverless/context-detector.js.map +1 -0
- package/dist/src/core/serverless/cost-comparison.d.ts +73 -0
- package/dist/src/core/serverless/cost-comparison.d.ts.map +1 -0
- package/dist/src/core/serverless/cost-comparison.js +198 -0
- package/dist/src/core/serverless/cost-comparison.js.map +1 -0
- package/dist/src/core/serverless/cost-estimator.d.ts +69 -0
- package/dist/src/core/serverless/cost-estimator.d.ts.map +1 -0
- package/dist/src/core/serverless/cost-estimator.js +127 -0
- package/dist/src/core/serverless/cost-estimator.js.map +1 -0
- package/dist/src/core/serverless/cost-optimizer.d.ts +57 -0
- package/dist/src/core/serverless/cost-optimizer.d.ts.map +1 -0
- package/dist/src/core/serverless/cost-optimizer.js +221 -0
- package/dist/src/core/serverless/cost-optimizer.js.map +1 -0
- package/dist/src/core/serverless/index.d.ts +20 -0
- package/dist/src/core/serverless/index.d.ts.map +1 -0
- package/dist/src/core/serverless/index.js +26 -0
- package/dist/src/core/serverless/index.js.map +1 -0
- package/dist/src/core/serverless/learning-path-recommender.d.ts +152 -0
- package/dist/src/core/serverless/learning-path-recommender.d.ts.map +1 -0
- package/dist/src/core/serverless/learning-path-recommender.js +389 -0
- package/dist/src/core/serverless/learning-path-recommender.js.map +1 -0
- package/dist/src/core/serverless/platform-data-loader.d.ts +22 -0
- package/dist/src/core/serverless/platform-data-loader.d.ts.map +1 -0
- package/dist/src/core/serverless/platform-data-loader.js +49 -0
- package/dist/src/core/serverless/platform-data-loader.js.map +1 -0
- package/dist/src/core/serverless/platform-selector.d.ts +20 -0
- package/dist/src/core/serverless/platform-selector.d.ts.map +1 -0
- package/dist/src/core/serverless/platform-selector.js +279 -0
- package/dist/src/core/serverless/platform-selector.js.map +1 -0
- package/dist/src/core/serverless/recommendation-formatter.d.ts +24 -0
- package/dist/src/core/serverless/recommendation-formatter.d.ts.map +1 -0
- package/dist/src/core/serverless/recommendation-formatter.js +70 -0
- package/dist/src/core/serverless/recommendation-formatter.js.map +1 -0
- package/dist/src/core/serverless/suitability-analyzer.d.ts +22 -0
- package/dist/src/core/serverless/suitability-analyzer.d.ts.map +1 -0
- package/dist/src/core/serverless/suitability-analyzer.js +262 -0
- package/dist/src/core/serverless/suitability-analyzer.js.map +1 -0
- package/dist/src/core/serverless/types.d.ts +96 -0
- package/dist/src/core/serverless/types.d.ts.map +1 -0
- package/dist/src/core/serverless/types.js +5 -0
- package/dist/src/core/serverless/types.js.map +1 -0
- package/dist/src/core/sync/bidirectional-engine.d.ts +1 -1
- package/dist/src/core/sync/bidirectional-engine.d.ts.map +1 -1
- package/dist/src/core/sync/enhanced-content-builder.d.ts +1 -1
- package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
- package/dist/src/core/sync/profile-manager.d.ts +1 -1
- package/dist/src/core/sync/profile-manager.d.ts.map +1 -1
- package/dist/src/core/sync/profile-selector.d.ts +1 -1
- package/dist/src/core/sync/profile-selector.d.ts.map +1 -1
- package/dist/src/core/sync/profile-selector.js +1 -1
- package/dist/src/core/sync/profile-selector.js.map +1 -1
- package/dist/src/core/sync/project-context.d.ts +1 -1
- package/dist/src/core/sync/project-context.d.ts.map +1 -1
- package/dist/src/core/sync/rate-limiter.d.ts +1 -1
- package/dist/src/core/sync/rate-limiter.d.ts.map +1 -1
- package/dist/src/core/sync/status-sync-engine.d.ts +2 -2
- package/dist/src/core/sync/status-sync-engine.d.ts.map +1 -1
- package/dist/src/core/sync/status-sync-engine.js +2 -2
- package/dist/src/core/sync/status-sync-engine.js.map +1 -1
- package/dist/src/core/sync/time-range-selector.d.ts +1 -1
- package/dist/src/core/sync/time-range-selector.d.ts.map +1 -1
- package/dist/src/core/sync/time-range-selector.js +1 -1
- package/dist/src/core/sync/time-range-selector.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/core/types/increment-metadata.d.ts +27 -0
- package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
- package/dist/src/core/types/increment-metadata.js +45 -1
- package/dist/src/core/types/increment-metadata.js.map +1 -1
- package/dist/src/core/types/sync-profile.d.ts +2 -0
- package/dist/src/core/types/sync-profile.d.ts.map +1 -1
- package/dist/src/core/types/sync-profile.js.map +1 -1
- package/dist/src/core/validation/increment-structure-validator.d.ts +47 -0
- package/dist/src/core/validation/increment-structure-validator.d.ts.map +1 -0
- package/dist/src/core/validation/increment-structure-validator.js +187 -0
- package/dist/src/core/validation/increment-structure-validator.js.map +1 -0
- package/dist/src/core/validation/three-file-validator.d.ts +82 -0
- package/dist/src/core/validation/three-file-validator.d.ts.map +1 -0
- package/dist/src/core/validation/three-file-validator.js +320 -0
- package/dist/src/core/validation/three-file-validator.js.map +1 -0
- package/dist/src/core/workflow/phase-detector.d.ts +103 -0
- package/dist/src/core/workflow/phase-detector.d.ts.map +1 -0
- package/dist/src/core/workflow/phase-detector.js +704 -0
- package/dist/src/core/workflow/phase-detector.js.map +1 -0
- package/dist/src/core/workflow/types.d.ts +153 -0
- package/dist/src/core/workflow/types.d.ts.map +1 -0
- package/dist/src/core/workflow/types.js +47 -0
- package/dist/src/core/workflow/types.js.map +1 -0
- 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 +37 -0
- package/dist/src/init/InitFlow.d.ts.map +1 -0
- package/dist/src/init/InitFlow.js +238 -0
- package/dist/src/init/InitFlow.js.map +1 -0
- package/dist/src/init/architecture/ArchitectureDecisionEngine.d.ts +107 -0
- package/dist/src/init/architecture/ArchitectureDecisionEngine.d.ts.map +1 -0
- package/dist/src/init/architecture/ArchitectureDecisionEngine.js +405 -0
- package/dist/src/init/architecture/ArchitectureDecisionEngine.js.map +1 -0
- package/dist/src/init/architecture/CloudCreditsDatabase.d.ts +11 -0
- package/dist/src/init/architecture/CloudCreditsDatabase.d.ts.map +1 -0
- package/dist/src/init/architecture/CloudCreditsDatabase.js +92 -0
- package/dist/src/init/architecture/CloudCreditsDatabase.js.map +1 -0
- 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/architecture/types.d.ts +251 -0
- package/dist/src/init/architecture/types.d.ts.map +1 -0
- package/dist/src/init/architecture/types.js +54 -0
- package/dist/src/init/architecture/types.js.map +1 -0
- package/dist/src/init/compliance/ComplianceDetector.d.ts +17 -0
- package/dist/src/init/compliance/ComplianceDetector.d.ts.map +1 -0
- package/dist/src/init/compliance/ComplianceDetector.js +64 -0
- package/dist/src/init/compliance/ComplianceDetector.js.map +1 -0
- package/dist/src/init/compliance/standards-database.d.ts +48 -0
- package/dist/src/init/compliance/standards-database.d.ts.map +1 -0
- package/dist/src/init/compliance/standards-database.js +506 -0
- package/dist/src/init/compliance/standards-database.js.map +1 -0
- package/dist/src/init/compliance/types.d.ts +91 -0
- package/dist/src/init/compliance/types.d.ts.map +1 -0
- package/dist/src/init/compliance/types.js +43 -0
- package/dist/src/init/compliance/types.js.map +1 -0
- package/dist/src/init/repo/GitHubAPIClient.d.ts +51 -0
- package/dist/src/init/repo/GitHubAPIClient.d.ts.map +1 -0
- package/dist/src/init/repo/GitHubAPIClient.js +144 -0
- package/dist/src/init/repo/GitHubAPIClient.js.map +1 -0
- package/dist/src/init/repo/RepositorySelector.d.ts +45 -0
- package/dist/src/init/repo/RepositorySelector.d.ts.map +1 -0
- package/dist/src/init/repo/RepositorySelector.js +106 -0
- package/dist/src/init/repo/RepositorySelector.js.map +1 -0
- package/dist/src/init/repo/types.d.ts +95 -0
- package/dist/src/init/repo/types.d.ts.map +1 -0
- package/dist/src/init/repo/types.js +25 -0
- package/dist/src/init/repo/types.js.map +1 -0
- package/dist/src/init/research/CompetitorAnalyzer.d.ts +79 -0
- package/dist/src/init/research/CompetitorAnalyzer.d.ts.map +1 -0
- package/dist/src/init/research/CompetitorAnalyzer.js +265 -0
- package/dist/src/init/research/CompetitorAnalyzer.js.map +1 -0
- package/dist/src/init/research/MarketDetector.d.ts +62 -0
- package/dist/src/init/research/MarketDetector.d.ts.map +1 -0
- package/dist/src/init/research/MarketDetector.js +247 -0
- package/dist/src/init/research/MarketDetector.js.map +1 -0
- package/dist/src/init/research/OpportunityScorer.d.ts +58 -0
- package/dist/src/init/research/OpportunityScorer.d.ts.map +1 -0
- package/dist/src/init/research/OpportunityScorer.js +194 -0
- package/dist/src/init/research/OpportunityScorer.js.map +1 -0
- package/dist/src/init/research/QuestionGenerator.d.ts +68 -0
- package/dist/src/init/research/QuestionGenerator.d.ts.map +1 -0
- package/dist/src/init/research/QuestionGenerator.js +244 -0
- package/dist/src/init/research/QuestionGenerator.js.map +1 -0
- package/dist/src/init/research/ReportGenerator.d.ts +36 -0
- package/dist/src/init/research/ReportGenerator.d.ts.map +1 -0
- package/dist/src/init/research/ReportGenerator.js +125 -0
- package/dist/src/init/research/ReportGenerator.js.map +1 -0
- package/dist/src/init/research/VisionAnalyzer.d.ts +129 -0
- package/dist/src/init/research/VisionAnalyzer.d.ts.map +1 -0
- package/dist/src/init/research/VisionAnalyzer.js +212 -0
- package/dist/src/init/research/VisionAnalyzer.js.map +1 -0
- package/dist/src/init/research/keyword-extractor.d.ts +78 -0
- package/dist/src/init/research/keyword-extractor.d.ts.map +1 -0
- package/dist/src/init/research/keyword-extractor.js +230 -0
- package/dist/src/init/research/keyword-extractor.js.map +1 -0
- package/dist/src/init/research/src/config/ConfigManager.d.ts +14 -0
- package/dist/src/init/research/src/config/ConfigManager.d.ts.map +1 -0
- package/dist/src/init/research/src/config/ConfigManager.js +45 -0
- package/dist/src/init/research/src/config/ConfigManager.js.map +1 -0
- package/dist/src/init/research/src/config/types.d.ts +102 -0
- package/dist/src/init/research/src/config/types.d.ts.map +1 -0
- package/dist/src/init/research/src/config/types.js +24 -0
- package/dist/src/init/research/src/config/types.js.map +1 -0
- package/dist/src/init/research/types.d.ts +183 -0
- package/dist/src/init/research/types.d.ts.map +1 -0
- package/dist/src/init/research/types.js +65 -0
- package/dist/src/init/research/types.js.map +1 -0
- package/dist/src/init/team/ServerlessSavingsCalculator.d.ts +136 -0
- package/dist/src/init/team/ServerlessSavingsCalculator.d.ts.map +1 -0
- package/dist/src/init/team/ServerlessSavingsCalculator.js +360 -0
- package/dist/src/init/team/ServerlessSavingsCalculator.js.map +1 -0
- package/dist/src/init/team/TeamRecommender.d.ts +122 -0
- package/dist/src/init/team/TeamRecommender.d.ts.map +1 -0
- package/dist/src/init/team/TeamRecommender.js +405 -0
- package/dist/src/init/team/TeamRecommender.js.map +1 -0
- package/dist/src/init/team/types.d.ts +95 -0
- package/dist/src/init/team/types.d.ts.map +1 -0
- package/dist/src/init/team/types.js +23 -0
- package/dist/src/init/team/types.js.map +1 -0
- package/dist/src/integrations/jira/jira-mapper.d.ts +1 -1
- package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
- package/dist/src/types/cost-tracking.d.ts +1 -1
- package/dist/src/types/cost-tracking.d.ts.map +1 -1
- package/dist/src/utils/cost-reporter.d.ts +2 -2
- package/dist/src/utils/cost-reporter.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/config-generator.d.ts +1 -1
- package/dist/src/utils/docs-preview/config-generator.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/config-generator.js +1 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.d.ts +1 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.js +4 -4
- package/dist/src/utils/docs-preview/docusaurus-setup.js.map +1 -1
- package/dist/src/utils/docs-preview/index.d.ts +6 -6
- package/dist/src/utils/docs-preview/index.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/index.js +6 -6
- package/dist/src/utils/docs-preview/index.js.map +1 -1
- package/dist/src/utils/docs-preview/package-installer.d.ts +1 -1
- package/dist/src/utils/docs-preview/package-installer.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/package-installer.js +1 -1
- package/dist/src/utils/docs-preview/package-installer.js.map +1 -1
- package/dist/src/utils/docs-preview/server-manager.d.ts +1 -1
- package/dist/src/utils/docs-preview/server-manager.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/server-manager.js +1 -1
- package/dist/src/utils/docs-preview/server-manager.js.map +1 -1
- package/dist/src/utils/docs-preview/sidebar-builder.d.ts +1 -1
- package/dist/src/utils/docs-preview/sidebar-builder.d.ts.map +1 -1
- package/dist/src/utils/generate-skills-index.d.ts +1 -1
- package/dist/src/utils/generate-skills-index.js +1 -1
- package/dist/src/utils/project-detection.js +1 -1
- package/dist/src/utils/project-detection.js.map +1 -1
- package/package.json +17 -10
- package/plugins/specweave/agents/architect/AGENT.md +605 -0
- package/plugins/specweave/agents/infrastructure/AGENT.md +760 -0
- package/plugins/specweave/agents/pm/AGENT.md +14 -13
- package/plugins/specweave/commands/specweave-check-hooks.md +186 -0
- package/plugins/specweave/commands/specweave-plan.md +151 -0
- package/plugins/specweave/commands/specweave-sync-acs.md +342 -0
- package/plugins/specweave/commands/specweave-validate.md +60 -11
- package/plugins/specweave/hooks/lib/update-status-line.sh +8 -4
- package/plugins/specweave/hooks/post-increment-change.sh +4 -0
- package/plugins/specweave/hooks/post-increment-completion.sh +7 -1
- package/plugins/specweave/hooks/post-increment-planning.sh +4 -0
- package/plugins/specweave/hooks/post-increment-status-change.sh +4 -0
- package/plugins/specweave/hooks/user-prompt-submit.sh +78 -0
- package/plugins/specweave/iac-templates/aws-lambda/README.md.hbs +280 -0
- package/plugins/specweave/iac-templates/aws-lambda/defaults.json +118 -0
- package/plugins/specweave/iac-templates/aws-lambda/environments/dev.defaults.json +46 -0
- package/plugins/specweave/iac-templates/aws-lambda/environments/prod.defaults.json +67 -0
- package/plugins/specweave/iac-templates/aws-lambda/environments/staging.defaults.json +47 -0
- package/plugins/specweave/iac-templates/aws-lambda/main.tf.hbs +241 -0
- package/plugins/specweave/iac-templates/aws-lambda/outputs.tf.hbs +61 -0
- package/plugins/specweave/iac-templates/aws-lambda/provider.tf.hbs +15 -0
- package/plugins/specweave/iac-templates/aws-lambda/variables.tf.hbs +88 -0
- package/plugins/specweave/iac-templates/azure-functions/README.md.hbs +315 -0
- package/plugins/specweave/iac-templates/azure-functions/defaults.json +65 -0
- package/plugins/specweave/iac-templates/azure-functions/environments/dev.defaults.json +30 -0
- package/plugins/specweave/iac-templates/azure-functions/environments/prod.defaults.json +34 -0
- package/plugins/specweave/iac-templates/azure-functions/environments/staging.defaults.json +31 -0
- package/plugins/specweave/iac-templates/azure-functions/iam.tf.hbs +34 -0
- package/plugins/specweave/iac-templates/azure-functions/main.tf.hbs +247 -0
- package/plugins/specweave/iac-templates/azure-functions/outputs.tf.hbs +72 -0
- package/plugins/specweave/iac-templates/azure-functions/provider.tf.hbs +14 -0
- package/plugins/specweave/iac-templates/azure-functions/variables.tf.hbs +64 -0
- package/plugins/specweave/iac-templates/firebase/README.md.hbs +487 -0
- package/plugins/specweave/iac-templates/firebase/defaults.json +55 -0
- package/plugins/specweave/iac-templates/firebase/environments/dev.defaults.json +44 -0
- package/plugins/specweave/iac-templates/firebase/environments/prod.defaults.json +52 -0
- package/plugins/specweave/iac-templates/firebase/environments/staging.defaults.json +43 -0
- package/plugins/specweave/iac-templates/firebase/iam.tf.hbs +75 -0
- package/plugins/specweave/iac-templates/firebase/main.tf.hbs +297 -0
- package/plugins/specweave/iac-templates/firebase/outputs.tf.hbs +67 -0
- package/plugins/specweave/iac-templates/firebase/provider.tf.hbs +26 -0
- package/plugins/specweave/iac-templates/firebase/variables.tf.hbs +68 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/README.md.hbs +330 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/defaults.json +69 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/environments/dev.defaults.json +33 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/environments/prod.defaults.json +40 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/environments/staging.defaults.json +33 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/iam.tf.hbs +54 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/main.tf.hbs +211 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/outputs.tf.hbs +44 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/provider.tf.hbs +14 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/variables.tf.hbs +82 -0
- package/plugins/specweave/iac-templates/supabase/README.md.hbs +534 -0
- package/plugins/specweave/iac-templates/supabase/defaults.json +69 -0
- package/plugins/specweave/iac-templates/supabase/environments/dev.defaults.json +55 -0
- package/plugins/specweave/iac-templates/supabase/environments/prod.defaults.json +75 -0
- package/plugins/specweave/iac-templates/supabase/environments/staging.defaults.json +54 -0
- package/plugins/specweave/iac-templates/supabase/iam.tf.hbs +146 -0
- package/plugins/specweave/iac-templates/supabase/main.tf.hbs +310 -0
- package/plugins/specweave/iac-templates/supabase/outputs.tf.hbs +74 -0
- package/plugins/specweave/iac-templates/supabase/provider.tf.hbs +19 -0
- package/plugins/specweave/iac-templates/supabase/variables.tf.hbs +78 -0
- package/plugins/specweave/knowledge-base/serverless/FRESHNESS.md +69 -0
- package/plugins/specweave/knowledge-base/serverless/learning-paths.json +865 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/aws-lambda.json +41 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/azure-functions.json +41 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/firebase.json +46 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/gcp-cloud-functions.json +41 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/supabase.json +41 -0
- package/plugins/specweave/knowledge-base/serverless/schema.json +155 -0
- package/plugins/specweave/lib/hooks/auto-transition.js +50 -0
- package/plugins/specweave/lib/hooks/auto-transition.ts +84 -0
- package/plugins/specweave/lib/hooks/invoke-translator-skill.js +1 -1
- package/plugins/specweave/lib/hooks/invoke-translator-skill.ts +1 -1
- package/plugins/specweave/lib/hooks/sync-living-docs.js +4 -31
- package/plugins/specweave/lib/hooks/{sync-living-docs.ts → sync-living-docs.ts.DISABLED} +9 -48
- package/plugins/specweave/lib/hooks/translate-file.js +1 -1
- package/plugins/specweave/lib/hooks/translate-file.ts +1 -1
- package/plugins/specweave/lib/hooks/update-ac-status.js +24 -75
- package/plugins/specweave/lib/hooks/update-ac-status.ts +46 -135
- package/plugins/specweave/lib/hooks/update-tasks-md.js +115 -3
- package/plugins/specweave/lib/hooks/update-tasks-md.ts +182 -10
- package/plugins/specweave/lib/utils/validate-dev-setup.sh +133 -0
- package/plugins/specweave/skills/increment-planner/SKILL.md +25 -15
- package/plugins/specweave/skills/serverless-recommender/SKILL.md +368 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/iam.tf.hbs +137 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/main.tf.hbs +216 -0
- 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/IssueStateManager.js +117 -0
- package/plugins/specweave-github/lib/IssueStateManager.ts +231 -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-github/lib/user-story-issue-builder.js +7 -0
- package/plugins/specweave-github/lib/user-story-issue-builder.ts +11 -0
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +1200 -0
- package/plugins/specweave-ui/.mcp.json +0 -10
- package/plugins/specweave-ui/README.md +26 -26
- package/plugins/specweave-ui/skills/browser-automation/SKILL.md +31 -18
- package/src/templates/AGENTS.md.template +22 -1
- package/src/templates/tasks.md.template +51 -33
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts +0 -89
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js +0 -226
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts +0 -60
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js +0 -201
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts +0 -42
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js +0 -123
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts +0 -45
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js +0 -132
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts +0 -33
- package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-parser.js +0 -419
- package/dist/plugins/specweave/lib/hooks/reflection-parser.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts +0 -56
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js +0 -239
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts +0 -64
- package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-storage.js +0 -305
- package/dist/plugins/specweave/lib/hooks/reflection-storage.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts +0 -43
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.js +0 -203
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts +0 -32
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +0 -405
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-file.d.ts +0 -59
- package/dist/plugins/specweave/lib/hooks/translate-file.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-file.js +0 -350
- package/dist/plugins/specweave/lib/hooks/translate-file.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts +0 -13
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.js +0 -175
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts +0 -164
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.js +0 -73
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts +0 -21
- package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-ac-status.js +0 -162
- package/dist/plugins/specweave/lib/hooks/update-ac-status.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts +0 -29
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.js +0 -203
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.js.map +0 -1
- package/dist/src/core/living-docs/spec-distributor.d.ts +0 -180
- package/dist/src/core/living-docs/spec-distributor.d.ts.map +0 -1
- package/dist/src/core/living-docs/spec-distributor.js +0 -1840
- package/dist/src/core/living-docs/spec-distributor.js.map +0 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serverless Cost Estimator
|
|
3
|
+
*
|
|
4
|
+
* Calculates accurate costs for serverless platforms including:
|
|
5
|
+
* - Compute costs (GB-seconds)
|
|
6
|
+
* - Request costs
|
|
7
|
+
* - Data transfer costs
|
|
8
|
+
* - Free tier deductions
|
|
9
|
+
*/
|
|
10
|
+
import type { ServerlessPlatform } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Input parameters for cost estimation
|
|
13
|
+
*/
|
|
14
|
+
export interface CostEstimationInput {
|
|
15
|
+
requestsPerMonth: number;
|
|
16
|
+
avgExecutionTimeMs: number;
|
|
17
|
+
memoryMb: number;
|
|
18
|
+
dataTransferGb: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Detailed cost breakdown by category
|
|
22
|
+
*/
|
|
23
|
+
export interface CostBreakdown {
|
|
24
|
+
compute: number;
|
|
25
|
+
requests: number;
|
|
26
|
+
dataTransfer: number;
|
|
27
|
+
total: number;
|
|
28
|
+
freeTierDeduction: number;
|
|
29
|
+
billableAmount: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Complete cost estimation result for a platform
|
|
33
|
+
*/
|
|
34
|
+
export interface CostEstimationResult {
|
|
35
|
+
platform: ServerlessPlatform;
|
|
36
|
+
input: CostEstimationInput;
|
|
37
|
+
breakdown: CostBreakdown;
|
|
38
|
+
withinFreeTier: boolean;
|
|
39
|
+
monthlyEstimate: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Estimate costs for a serverless platform
|
|
43
|
+
*
|
|
44
|
+
* @param platform - The serverless platform to estimate costs for
|
|
45
|
+
* @param input - Usage parameters
|
|
46
|
+
* @returns Detailed cost estimation with breakdown
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* const input = {
|
|
51
|
+
* requestsPerMonth: 1000000,
|
|
52
|
+
* avgExecutionTimeMs: 200,
|
|
53
|
+
* memoryMb: 512,
|
|
54
|
+
* dataTransferGb: 5
|
|
55
|
+
* };
|
|
56
|
+
* const result = estimateCost(platform, input);
|
|
57
|
+
* console.log(`Monthly cost: $${result.monthlyEstimate}`);
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function estimateCost(platform: ServerlessPlatform, input: CostEstimationInput): CostEstimationResult;
|
|
61
|
+
/**
|
|
62
|
+
* Estimate costs by platform ID
|
|
63
|
+
*
|
|
64
|
+
* @param platformId - Platform identifier (e.g., 'aws-lambda', 'firebase')
|
|
65
|
+
* @param input - Usage parameters
|
|
66
|
+
* @returns Cost estimation result
|
|
67
|
+
*/
|
|
68
|
+
export declare function estimateCostById(platformId: string, input: CostEstimationInput): Promise<CostEstimationResult>;
|
|
69
|
+
//# sourceMappingURL=cost-estimator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-estimator.d.ts","sourceRoot":"","sources":["../../../../src/core/serverless/cost-estimator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGrD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,SAAS,EAAE,aAAa,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,mBAAmB,GACzB,oBAAoB,CAyDtB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,oBAAoB,CAAC,CAS/B"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serverless Cost Estimator
|
|
3
|
+
*
|
|
4
|
+
* Calculates accurate costs for serverless platforms including:
|
|
5
|
+
* - Compute costs (GB-seconds)
|
|
6
|
+
* - Request costs
|
|
7
|
+
* - Data transfer costs
|
|
8
|
+
* - Free tier deductions
|
|
9
|
+
*/
|
|
10
|
+
import { PlatformDataLoader } from './platform-data-loader.js';
|
|
11
|
+
/**
|
|
12
|
+
* Estimate costs for a serverless platform
|
|
13
|
+
*
|
|
14
|
+
* @param platform - The serverless platform to estimate costs for
|
|
15
|
+
* @param input - Usage parameters
|
|
16
|
+
* @returns Detailed cost estimation with breakdown
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const input = {
|
|
21
|
+
* requestsPerMonth: 1000000,
|
|
22
|
+
* avgExecutionTimeMs: 200,
|
|
23
|
+
* memoryMb: 512,
|
|
24
|
+
* dataTransferGb: 5
|
|
25
|
+
* };
|
|
26
|
+
* const result = estimateCost(platform, input);
|
|
27
|
+
* console.log(`Monthly cost: $${result.monthlyEstimate}`);
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export function estimateCost(platform, input) {
|
|
31
|
+
// Validate input
|
|
32
|
+
validateInput(input);
|
|
33
|
+
const { pricing } = platform;
|
|
34
|
+
// Calculate GB-seconds
|
|
35
|
+
// Formula: (requests × execution_time_ms × memory_MB) / (1000 × 1024)
|
|
36
|
+
const gbSeconds = (input.requestsPerMonth * input.avgExecutionTimeMs * input.memoryMb) / (1000 * 1024);
|
|
37
|
+
// Calculate raw costs before free tier
|
|
38
|
+
const computeCostRaw = gbSeconds * pricing.payAsYouGo.computePerGbSecond;
|
|
39
|
+
const requestCostRaw = (input.requestsPerMonth / 1000000) * pricing.payAsYouGo.requestsPer1M;
|
|
40
|
+
const dataTransferCostRaw = input.dataTransferGb * pricing.payAsYouGo.dataTransferPerGb;
|
|
41
|
+
// Calculate free tier deductions
|
|
42
|
+
const freeTierDeduction = calculateFreeTierDeduction({
|
|
43
|
+
compute: computeCostRaw,
|
|
44
|
+
requests: requestCostRaw,
|
|
45
|
+
dataTransfer: dataTransferCostRaw,
|
|
46
|
+
}, {
|
|
47
|
+
gbSeconds,
|
|
48
|
+
requests: input.requestsPerMonth,
|
|
49
|
+
dataTransferGb: input.dataTransferGb,
|
|
50
|
+
}, platform);
|
|
51
|
+
// Calculate billable amounts
|
|
52
|
+
const computeCost = Math.max(0, computeCostRaw - freeTierDeduction.compute);
|
|
53
|
+
const requestCost = Math.max(0, requestCostRaw - freeTierDeduction.requests);
|
|
54
|
+
const dataTransferCost = Math.max(0, dataTransferCostRaw - freeTierDeduction.dataTransfer);
|
|
55
|
+
const total = computeCostRaw + requestCostRaw + dataTransferCostRaw;
|
|
56
|
+
const totalFreeTierDeduction = freeTierDeduction.compute + freeTierDeduction.requests + freeTierDeduction.dataTransfer;
|
|
57
|
+
const billableAmount = computeCost + requestCost + dataTransferCost;
|
|
58
|
+
const breakdown = {
|
|
59
|
+
compute: computeCost,
|
|
60
|
+
requests: requestCost,
|
|
61
|
+
dataTransfer: dataTransferCost,
|
|
62
|
+
total,
|
|
63
|
+
freeTierDeduction: totalFreeTierDeduction,
|
|
64
|
+
billableAmount,
|
|
65
|
+
};
|
|
66
|
+
return {
|
|
67
|
+
platform,
|
|
68
|
+
input,
|
|
69
|
+
breakdown,
|
|
70
|
+
withinFreeTier: billableAmount === 0,
|
|
71
|
+
monthlyEstimate: billableAmount,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Estimate costs by platform ID
|
|
76
|
+
*
|
|
77
|
+
* @param platformId - Platform identifier (e.g., 'aws-lambda', 'firebase')
|
|
78
|
+
* @param input - Usage parameters
|
|
79
|
+
* @returns Cost estimation result
|
|
80
|
+
*/
|
|
81
|
+
export async function estimateCostById(platformId, input) {
|
|
82
|
+
const loader = new PlatformDataLoader();
|
|
83
|
+
const platform = await loader.loadById(platformId);
|
|
84
|
+
if (!platform) {
|
|
85
|
+
throw new Error(`Platform not found: ${platformId}`);
|
|
86
|
+
}
|
|
87
|
+
return estimateCost(platform, input);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Calculate free tier deductions
|
|
91
|
+
*/
|
|
92
|
+
function calculateFreeTierDeduction(costs, usage, platform) {
|
|
93
|
+
const { freeTier, payAsYouGo } = platform.pricing;
|
|
94
|
+
// Calculate how much of each resource is covered by free tier
|
|
95
|
+
const freeComputeGbSeconds = Math.min(usage.gbSeconds, freeTier.computeGbSeconds);
|
|
96
|
+
const freeRequests = Math.min(usage.requests, freeTier.requests);
|
|
97
|
+
const freeDataTransferGb = Math.min(usage.dataTransferGb, freeTier.dataTransferGb);
|
|
98
|
+
// Calculate the monetary value of free tier coverage
|
|
99
|
+
const computeDeduction = freeComputeGbSeconds * payAsYouGo.computePerGbSecond;
|
|
100
|
+
const requestsDeduction = (freeRequests / 1000000) * payAsYouGo.requestsPer1M;
|
|
101
|
+
const dataTransferDeduction = freeDataTransferGb * payAsYouGo.dataTransferPerGb;
|
|
102
|
+
return {
|
|
103
|
+
compute: Math.min(computeDeduction, costs.compute),
|
|
104
|
+
requests: Math.min(requestsDeduction, costs.requests),
|
|
105
|
+
dataTransfer: Math.min(dataTransferDeduction, costs.dataTransfer),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Validate cost estimation input
|
|
110
|
+
*/
|
|
111
|
+
function validateInput(input) {
|
|
112
|
+
if (input.requestsPerMonth < 0) {
|
|
113
|
+
throw new Error('Requests per month cannot be negative');
|
|
114
|
+
}
|
|
115
|
+
if (input.avgExecutionTimeMs < 0) {
|
|
116
|
+
throw new Error('Average execution time cannot be negative');
|
|
117
|
+
}
|
|
118
|
+
if (input.memoryMb < 0) {
|
|
119
|
+
throw new Error('Memory cannot be negative');
|
|
120
|
+
}
|
|
121
|
+
if (input.dataTransferGb < 0) {
|
|
122
|
+
throw new Error('Data transfer cannot be negative');
|
|
123
|
+
}
|
|
124
|
+
// Zero requests is valid (e.g., for testing or estimation purposes)
|
|
125
|
+
// No warning needed as it's a valid scenario
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=cost-estimator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-estimator.js","sourceRoot":"","sources":["../../../../src/core/serverless/cost-estimator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serverless Cost Optimizer
|
|
3
|
+
*
|
|
4
|
+
* Analyzes usage patterns and provides optimization recommendations to reduce costs:
|
|
5
|
+
* - Memory right-sizing
|
|
6
|
+
* - Caching strategies
|
|
7
|
+
* - Batching recommendations
|
|
8
|
+
* - Reserved capacity
|
|
9
|
+
* - Compression
|
|
10
|
+
* - CDN usage
|
|
11
|
+
*/
|
|
12
|
+
import type { ServerlessPlatform } from './types.js';
|
|
13
|
+
import type { CostEstimationInput } from './cost-estimator.js';
|
|
14
|
+
/**
|
|
15
|
+
* Types of optimization recommendations
|
|
16
|
+
*/
|
|
17
|
+
export type OptimizationType = 'memory' | 'caching' | 'batching' | 'reserved-capacity' | 'compression' | 'cdn';
|
|
18
|
+
/**
|
|
19
|
+
* Individual optimization recommendation
|
|
20
|
+
*/
|
|
21
|
+
export interface OptimizationRecommendation {
|
|
22
|
+
type: OptimizationType;
|
|
23
|
+
description: string;
|
|
24
|
+
estimatedSavings: number;
|
|
25
|
+
implementationComplexity: 'low' | 'medium' | 'high';
|
|
26
|
+
priority: 'high' | 'medium' | 'low';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Complete cost optimization analysis result
|
|
30
|
+
*/
|
|
31
|
+
export interface CostOptimizationResult {
|
|
32
|
+
currentCost: number;
|
|
33
|
+
optimizedCost: number;
|
|
34
|
+
potentialSavings: number;
|
|
35
|
+
recommendations: OptimizationRecommendation[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Analyze usage and generate cost optimization recommendations
|
|
39
|
+
*
|
|
40
|
+
* @param platform - The serverless platform
|
|
41
|
+
* @param input - Current usage parameters
|
|
42
|
+
* @returns Optimization analysis with recommendations
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const input = {
|
|
47
|
+
* requestsPerMonth: 5000000,
|
|
48
|
+
* avgExecutionTimeMs: 500,
|
|
49
|
+
* memoryMb: 1024,
|
|
50
|
+
* dataTransferGb: 50
|
|
51
|
+
* };
|
|
52
|
+
* const result = optimizeCost(platform, input);
|
|
53
|
+
* console.log(`Potential savings: $${result.potentialSavings}/month`);
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function optimizeCost(platform: ServerlessPlatform, input: CostEstimationInput): CostOptimizationResult;
|
|
57
|
+
//# sourceMappingURL=cost-optimizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-optimizer.d.ts","sourceRoot":"","sources":["../../../../src/core/serverless/cost-optimizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG/D;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,SAAS,GACT,UAAU,GACV,mBAAmB,GACnB,aAAa,GACb,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,wBAAwB,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpD,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,0BAA0B,EAAE,CAAC;CAC/C;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,mBAAmB,GACzB,sBAAsB,CA+DxB"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serverless Cost Optimizer
|
|
3
|
+
*
|
|
4
|
+
* Analyzes usage patterns and provides optimization recommendations to reduce costs:
|
|
5
|
+
* - Memory right-sizing
|
|
6
|
+
* - Caching strategies
|
|
7
|
+
* - Batching recommendations
|
|
8
|
+
* - Reserved capacity
|
|
9
|
+
* - Compression
|
|
10
|
+
* - CDN usage
|
|
11
|
+
*/
|
|
12
|
+
import { estimateCost } from './cost-estimator.js';
|
|
13
|
+
/**
|
|
14
|
+
* Analyze usage and generate cost optimization recommendations
|
|
15
|
+
*
|
|
16
|
+
* @param platform - The serverless platform
|
|
17
|
+
* @param input - Current usage parameters
|
|
18
|
+
* @returns Optimization analysis with recommendations
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const input = {
|
|
23
|
+
* requestsPerMonth: 5000000,
|
|
24
|
+
* avgExecutionTimeMs: 500,
|
|
25
|
+
* memoryMb: 1024,
|
|
26
|
+
* dataTransferGb: 50
|
|
27
|
+
* };
|
|
28
|
+
* const result = optimizeCost(platform, input);
|
|
29
|
+
* console.log(`Potential savings: $${result.potentialSavings}/month`);
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function optimizeCost(platform, input) {
|
|
33
|
+
const currentEstimation = estimateCost(platform, input);
|
|
34
|
+
const currentCost = currentEstimation.monthlyEstimate;
|
|
35
|
+
const recommendations = [];
|
|
36
|
+
let optimizedCost = currentCost;
|
|
37
|
+
// 1. Memory right-sizing
|
|
38
|
+
const memoryOptimization = analyzeMemoryOptimization(platform, input, currentCost);
|
|
39
|
+
if (memoryOptimization) {
|
|
40
|
+
recommendations.push(memoryOptimization);
|
|
41
|
+
optimizedCost -= memoryOptimization.estimatedSavings;
|
|
42
|
+
}
|
|
43
|
+
// 2. Caching recommendations
|
|
44
|
+
const cachingOptimization = analyzeCachingOpportunity(input, currentCost);
|
|
45
|
+
if (cachingOptimization) {
|
|
46
|
+
recommendations.push(cachingOptimization);
|
|
47
|
+
optimizedCost -= cachingOptimization.estimatedSavings;
|
|
48
|
+
}
|
|
49
|
+
// 3. Batching recommendations
|
|
50
|
+
const batchingOptimization = analyzeBatchingOpportunity(input, currentCost);
|
|
51
|
+
if (batchingOptimization) {
|
|
52
|
+
recommendations.push(batchingOptimization);
|
|
53
|
+
optimizedCost -= batchingOptimization.estimatedSavings;
|
|
54
|
+
}
|
|
55
|
+
// 4. Reserved capacity
|
|
56
|
+
const reservedCapacityOptimization = analyzeReservedCapacity(input, currentCost);
|
|
57
|
+
if (reservedCapacityOptimization) {
|
|
58
|
+
recommendations.push(reservedCapacityOptimization);
|
|
59
|
+
optimizedCost -= reservedCapacityOptimization.estimatedSavings;
|
|
60
|
+
}
|
|
61
|
+
// 5. Compression
|
|
62
|
+
const compressionOptimization = analyzeCompression(input, currentCost);
|
|
63
|
+
if (compressionOptimization) {
|
|
64
|
+
recommendations.push(compressionOptimization);
|
|
65
|
+
optimizedCost -= compressionOptimization.estimatedSavings;
|
|
66
|
+
}
|
|
67
|
+
// 6. CDN recommendations
|
|
68
|
+
const cdnOptimization = analyzeCdnOpportunity(input, currentCost);
|
|
69
|
+
if (cdnOptimization) {
|
|
70
|
+
recommendations.push(cdnOptimization);
|
|
71
|
+
optimizedCost -= cdnOptimization.estimatedSavings;
|
|
72
|
+
}
|
|
73
|
+
// Sort recommendations by priority and savings
|
|
74
|
+
recommendations.sort((a, b) => {
|
|
75
|
+
const priorityOrder = { high: 3, medium: 2, low: 1 };
|
|
76
|
+
const priorityDiff = priorityOrder[b.priority] - priorityOrder[a.priority];
|
|
77
|
+
if (priorityDiff !== 0)
|
|
78
|
+
return priorityDiff;
|
|
79
|
+
return b.estimatedSavings - a.estimatedSavings;
|
|
80
|
+
});
|
|
81
|
+
return {
|
|
82
|
+
currentCost,
|
|
83
|
+
optimizedCost: Math.max(0, optimizedCost),
|
|
84
|
+
potentialSavings: currentCost - Math.max(0, optimizedCost),
|
|
85
|
+
recommendations,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Analyze memory right-sizing opportunities
|
|
90
|
+
*/
|
|
91
|
+
function analyzeMemoryOptimization(platform, input, currentCost) {
|
|
92
|
+
// Test different memory configurations
|
|
93
|
+
const memoryOptions = [128, 256, 512, 1024, 2048];
|
|
94
|
+
const currentMemory = input.memoryMb;
|
|
95
|
+
// Only recommend if current memory is not already minimal
|
|
96
|
+
if (currentMemory <= 128) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
// Find optimal memory (assuming execution time might improve with more memory)
|
|
100
|
+
let bestMemory = currentMemory;
|
|
101
|
+
let bestCost = currentCost;
|
|
102
|
+
for (const memory of memoryOptions) {
|
|
103
|
+
if (memory >= currentMemory)
|
|
104
|
+
continue; // Only test smaller sizes
|
|
105
|
+
const testInput = { ...input, memoryMb: memory };
|
|
106
|
+
const estimation = estimateCost(platform, testInput);
|
|
107
|
+
if (estimation.monthlyEstimate < bestCost) {
|
|
108
|
+
bestCost = estimation.monthlyEstimate;
|
|
109
|
+
bestMemory = memory;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (bestMemory < currentMemory) {
|
|
113
|
+
const savings = currentCost - bestCost;
|
|
114
|
+
const savingsPercent = ((savings / currentCost) * 100).toFixed(1);
|
|
115
|
+
return {
|
|
116
|
+
type: 'memory',
|
|
117
|
+
description: `Reduce memory from ${currentMemory}MB to ${bestMemory}MB. This could save ${savingsPercent}% on compute costs. Test thoroughly to ensure performance is acceptable.`,
|
|
118
|
+
estimatedSavings: savings,
|
|
119
|
+
implementationComplexity: 'low',
|
|
120
|
+
priority: savings > currentCost * 0.2 ? 'high' : 'medium',
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Analyze caching opportunities
|
|
127
|
+
*/
|
|
128
|
+
function analyzeCachingOpportunity(input, currentCost) {
|
|
129
|
+
// High request rate with potential for repetitive queries
|
|
130
|
+
const requestsPerSecond = input.requestsPerMonth / (30 * 24 * 60 * 60);
|
|
131
|
+
if (requestsPerSecond > 10) {
|
|
132
|
+
// Assume 30-50% of requests could be cached
|
|
133
|
+
const cacheHitRate = 0.4;
|
|
134
|
+
const estimatedSavings = currentCost * cacheHitRate * 0.9; // 90% reduction for cached requests
|
|
135
|
+
return {
|
|
136
|
+
type: 'caching',
|
|
137
|
+
description: `Implement caching (Redis, CloudFront, or API Gateway caching) to reduce function invocations. With ~${requestsPerSecond.toFixed(1)} requests/second, caching could eliminate 30-50% of function calls.`,
|
|
138
|
+
estimatedSavings,
|
|
139
|
+
implementationComplexity: 'medium',
|
|
140
|
+
priority: estimatedSavings > currentCost * 0.2 ? 'high' : 'medium',
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Analyze batching opportunities
|
|
147
|
+
*/
|
|
148
|
+
function analyzeBatchingOpportunity(input, currentCost) {
|
|
149
|
+
// Many small invocations that could be batched
|
|
150
|
+
if (input.requestsPerMonth > 1000000 && input.avgExecutionTimeMs < 100) {
|
|
151
|
+
// Batching could reduce invocations by 80%
|
|
152
|
+
const estimatedSavings = currentCost * 0.5; // Conservative 50% savings
|
|
153
|
+
return {
|
|
154
|
+
type: 'batching',
|
|
155
|
+
description: `Batch multiple operations together to reduce invocation count. With ${(input.requestsPerMonth / 1000000).toFixed(1)}M short invocations, batching could significantly reduce request costs.`,
|
|
156
|
+
estimatedSavings,
|
|
157
|
+
implementationComplexity: 'high',
|
|
158
|
+
priority: estimatedSavings > currentCost * 0.3 ? 'high' : 'medium',
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Analyze reserved capacity opportunities
|
|
165
|
+
*/
|
|
166
|
+
function analyzeReservedCapacity(input, currentCost) {
|
|
167
|
+
// High consistent traffic (AWS Lambda offers provisioned concurrency)
|
|
168
|
+
const requestsPerSecond = input.requestsPerMonth / (30 * 24 * 60 * 60);
|
|
169
|
+
if (requestsPerSecond > 100 && currentCost > 500) {
|
|
170
|
+
// Reserved capacity typically saves 20-40%
|
|
171
|
+
const estimatedSavings = currentCost * 0.3;
|
|
172
|
+
return {
|
|
173
|
+
type: 'reserved-capacity',
|
|
174
|
+
description: `Consider provisioned concurrency (AWS Lambda) or reserved capacity. With high consistent traffic (~${requestsPerSecond.toFixed(0)} req/s), reserved capacity could save 20-40% and eliminate cold starts.`,
|
|
175
|
+
estimatedSavings,
|
|
176
|
+
implementationComplexity: 'low',
|
|
177
|
+
priority: 'high',
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Analyze compression opportunities
|
|
184
|
+
*/
|
|
185
|
+
function analyzeCompression(input, currentCost) {
|
|
186
|
+
// High data transfer
|
|
187
|
+
if (input.dataTransferGb > 100) {
|
|
188
|
+
// Compression can reduce transfer by 60-80%
|
|
189
|
+
const compressionRatio = 0.7;
|
|
190
|
+
const dataTransferCostRatio = 0.2; // Assume ~20% of total cost is data transfer
|
|
191
|
+
const estimatedSavings = currentCost * dataTransferCostRatio * compressionRatio;
|
|
192
|
+
return {
|
|
193
|
+
type: 'compression',
|
|
194
|
+
description: `Enable response compression (gzip/brotli) to reduce data transfer costs. With ${input.dataTransferGb.toFixed(0)}GB/month, compression could reduce transfer by 60-80%.`,
|
|
195
|
+
estimatedSavings,
|
|
196
|
+
implementationComplexity: 'low',
|
|
197
|
+
priority: estimatedSavings > 50 ? 'high' : 'medium',
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Analyze CDN opportunities
|
|
204
|
+
*/
|
|
205
|
+
function analyzeCdnOpportunity(input, currentCost) {
|
|
206
|
+
// High read traffic that could benefit from edge caching
|
|
207
|
+
if (input.requestsPerMonth > 10000000 && input.dataTransferGb > 50) {
|
|
208
|
+
// CDN can reduce origin requests by 70-90%
|
|
209
|
+
const cdnCacheRate = 0.8;
|
|
210
|
+
const estimatedSavings = currentCost * cdnCacheRate * 0.6;
|
|
211
|
+
return {
|
|
212
|
+
type: 'cdn',
|
|
213
|
+
description: `Use a CDN (CloudFront, Cloudflare, Fastly) to cache static content and reduce origin requests. With ${(input.requestsPerMonth / 1000000).toFixed(1)}M requests, a CDN could cache 70-90% of traffic.`,
|
|
214
|
+
estimatedSavings,
|
|
215
|
+
implementationComplexity: 'medium',
|
|
216
|
+
priority: estimatedSavings > currentCost * 0.4 ? 'high' : 'medium',
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=cost-optimizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-optimizer.js","sourceRoot":"","sources":["../../../../src/core/serverless/cost-optimizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAkCnD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,YAAY,CAC1B,QAA4B,EAC5B,KAA0B;IAE1B,MAAM,iBAAiB,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,iBAAiB,CAAC,eAAe,CAAC;IAEtD,MAAM,eAAe,GAAiC,EAAE,CAAC;IACzD,IAAI,aAAa,GAAG,WAAW,CAAC;IAEhC,yBAAyB;IACzB,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACnF,IAAI,kBAAkB,EAAE,CAAC;QACvB,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACzC,aAAa,IAAI,kBAAkB,CAAC,gBAAgB,CAAC;IACvD,CAAC;IAED,6BAA6B;IAC7B,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC1E,IAAI,mBAAmB,EAAE,CAAC;QACxB,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC1C,aAAa,IAAI,mBAAmB,CAAC,gBAAgB,CAAC;IACxD,CAAC;IAED,8BAA8B;IAC9B,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC5E,IAAI,oBAAoB,EAAE,CAAC;QACzB,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC3C,aAAa,IAAI,oBAAoB,CAAC,gBAAgB,CAAC;IACzD,CAAC;IAED,uBAAuB;IACvB,MAAM,4BAA4B,GAAG,uBAAuB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACjF,IAAI,4BAA4B,EAAE,CAAC;QACjC,eAAe,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACnD,aAAa,IAAI,4BAA4B,CAAC,gBAAgB,CAAC;IACjE,CAAC;IAED,iBAAiB;IACjB,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACvE,IAAI,uBAAuB,EAAE,CAAC;QAC5B,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC9C,aAAa,IAAI,uBAAuB,CAAC,gBAAgB,CAAC;IAC5D,CAAC;IAED,yBAAyB;IACzB,MAAM,eAAe,GAAG,qBAAqB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAClE,IAAI,eAAe,EAAE,CAAC;QACpB,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACtC,aAAa,IAAI,eAAe,CAAC,gBAAgB,CAAC;IACpD,CAAC;IAED,+CAA+C;IAC/C,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5B,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QACrD,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC3E,IAAI,YAAY,KAAK,CAAC;YAAE,OAAO,YAAY,CAAC;QAC5C,OAAO,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,WAAW;QACX,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC;QACzC,gBAAgB,EAAE,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC;QAC1D,eAAe;KAChB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAChC,QAA4B,EAC5B,KAA0B,EAC1B,WAAmB;IAEnB,uCAAuC;IACvC,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC;IAErC,0DAA0D;IAC1D,IAAI,aAAa,IAAI,GAAG,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+EAA+E;IAC/E,IAAI,UAAU,GAAG,aAAa,CAAC;IAC/B,IAAI,QAAQ,GAAG,WAAW,CAAC;IAE3B,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,IAAI,MAAM,IAAI,aAAa;YAAE,SAAS,CAAC,0BAA0B;QAEjE,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAErD,IAAI,UAAU,CAAC,eAAe,GAAG,QAAQ,EAAE,CAAC;YAC1C,QAAQ,GAAG,UAAU,CAAC,eAAe,CAAC;YACtC,UAAU,GAAG,MAAM,CAAC;QACtB,CAAC;IACH,CAAC;IAED,IAAI,UAAU,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC;QACvC,MAAM,cAAc,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAElE,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,sBAAsB,aAAa,SAAS,UAAU,uBAAuB,cAAc,0EAA0E;YAClL,gBAAgB,EAAE,OAAO;YACzB,wBAAwB,EAAE,KAAK;YAC/B,QAAQ,EAAE,OAAO,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SAC1D,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAChC,KAA0B,EAC1B,WAAmB;IAEnB,0DAA0D;IAC1D,MAAM,iBAAiB,GAAG,KAAK,CAAC,gBAAgB,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAEvE,IAAI,iBAAiB,GAAG,EAAE,EAAE,CAAC;QAC3B,4CAA4C;QAC5C,MAAM,YAAY,GAAG,GAAG,CAAC;QACzB,MAAM,gBAAgB,GAAG,WAAW,GAAG,YAAY,GAAG,GAAG,CAAC,CAAC,oCAAoC;QAE/F,OAAO;YACL,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,uGAAuG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,qEAAqE;YACrN,gBAAgB;YAChB,wBAAwB,EAAE,QAAQ;YAClC,QAAQ,EAAE,gBAAgB,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SACnE,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B,CACjC,KAA0B,EAC1B,WAAmB;IAEnB,+CAA+C;IAC/C,IAAI,KAAK,CAAC,gBAAgB,GAAG,OAAS,IAAI,KAAK,CAAC,kBAAkB,GAAG,GAAG,EAAE,CAAC;QACzE,2CAA2C;QAC3C,MAAM,gBAAgB,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC,2BAA2B;QAEvE,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,uEAAuE,CAAC,KAAK,CAAC,gBAAgB,GAAG,OAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,yEAAyE;YAC5M,gBAAgB;YAChB,wBAAwB,EAAE,MAAM;YAChC,QAAQ,EAAE,gBAAgB,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SACnE,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,KAA0B,EAC1B,WAAmB;IAEnB,sEAAsE;IACtE,MAAM,iBAAiB,GAAG,KAAK,CAAC,gBAAgB,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAEvE,IAAI,iBAAiB,GAAG,GAAG,IAAI,WAAW,GAAG,GAAG,EAAE,CAAC;QACjD,2CAA2C;QAC3C,MAAM,gBAAgB,GAAG,WAAW,GAAG,GAAG,CAAC;QAE3C,OAAO;YACL,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,sGAAsG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,yEAAyE;YACxN,gBAAgB;YAChB,wBAAwB,EAAE,KAAK;YAC/B,QAAQ,EAAE,MAAM;SACjB,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,KAA0B,EAC1B,WAAmB;IAEnB,qBAAqB;IACrB,IAAI,KAAK,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC;QAC/B,4CAA4C;QAC5C,MAAM,gBAAgB,GAAG,GAAG,CAAC;QAC7B,MAAM,qBAAqB,GAAG,GAAG,CAAC,CAAC,6CAA6C;QAChF,MAAM,gBAAgB,GAAG,WAAW,GAAG,qBAAqB,GAAG,gBAAgB,CAAC;QAEhF,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,iFAAiF,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,wDAAwD;YACrL,gBAAgB;YAChB,wBAAwB,EAAE,KAAK;YAC/B,QAAQ,EAAE,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SACpD,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAC5B,KAA0B,EAC1B,WAAmB;IAEnB,yDAAyD;IACzD,IAAI,KAAK,CAAC,gBAAgB,GAAG,QAAU,IAAI,KAAK,CAAC,cAAc,GAAG,EAAE,EAAE,CAAC;QACrE,2CAA2C;QAC3C,MAAM,YAAY,GAAG,GAAG,CAAC;QACzB,MAAM,gBAAgB,GAAG,WAAW,GAAG,YAAY,GAAG,GAAG,CAAC;QAE1D,OAAO;YACL,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,uGAAuG,CAAC,KAAK,CAAC,gBAAgB,GAAG,OAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kDAAkD;YACrN,gBAAgB;YAChB,wBAAwB,EAAE,QAAQ;YAClC,QAAQ,EAAE,gBAAgB,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SACnE,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serverless Architecture Intelligence - Barrel Exports
|
|
3
|
+
*
|
|
4
|
+
* This module provides comprehensive serverless platform intelligence including:
|
|
5
|
+
* - Context detection (pet-project, startup, enterprise)
|
|
6
|
+
* - Workload suitability analysis
|
|
7
|
+
* - Platform selection and ranking
|
|
8
|
+
* - Cost estimation and optimization
|
|
9
|
+
* - Learning path recommendations
|
|
10
|
+
*/
|
|
11
|
+
export * from './types.js';
|
|
12
|
+
export * from './platform-data-loader.js';
|
|
13
|
+
export * from './context-detector.js';
|
|
14
|
+
export * from './suitability-analyzer.js';
|
|
15
|
+
export * from './platform-selector.js';
|
|
16
|
+
export * from './cost-estimator.js';
|
|
17
|
+
export * from './cost-optimizer.js';
|
|
18
|
+
export * from './cost-comparison.js';
|
|
19
|
+
export * from './learning-path-recommender.js';
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/serverless/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,cAAc,YAAY,CAAC;AAG3B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,wBAAwB,CAAC;AAGvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serverless Architecture Intelligence - Barrel Exports
|
|
3
|
+
*
|
|
4
|
+
* This module provides comprehensive serverless platform intelligence including:
|
|
5
|
+
* - Context detection (pet-project, startup, enterprise)
|
|
6
|
+
* - Workload suitability analysis
|
|
7
|
+
* - Platform selection and ranking
|
|
8
|
+
* - Cost estimation and optimization
|
|
9
|
+
* - Learning path recommendations
|
|
10
|
+
*/
|
|
11
|
+
// Core types and interfaces
|
|
12
|
+
export * from './types.js';
|
|
13
|
+
// Platform data and loading
|
|
14
|
+
export * from './platform-data-loader.js';
|
|
15
|
+
// Context and suitability analysis
|
|
16
|
+
export * from './context-detector.js';
|
|
17
|
+
export * from './suitability-analyzer.js';
|
|
18
|
+
// Platform selection
|
|
19
|
+
export * from './platform-selector.js';
|
|
20
|
+
// Cost analysis modules
|
|
21
|
+
export * from './cost-estimator.js';
|
|
22
|
+
export * from './cost-optimizer.js';
|
|
23
|
+
export * from './cost-comparison.js';
|
|
24
|
+
// Learning and education
|
|
25
|
+
export * from './learning-path-recommender.js';
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/serverless/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,4BAA4B;AAC5B,cAAc,YAAY,CAAC;AAE3B,4BAA4B;AAC5B,cAAc,2BAA2B,CAAC;AAE1C,mCAAmC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAE1C,qBAAqB;AACrB,cAAc,wBAAwB,CAAC;AAEvC,wBAAwB;AACxB,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AAErC,yBAAyB;AACzB,cAAc,gCAAgC,CAAC"}
|