specweave 0.21.1 → 0.21.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +232 -5
- 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/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/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 +205 -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 +55 -0
- package/dist/src/core/living-docs/SpecDistributor.d.ts.map +1 -0
- package/dist/src/core/living-docs/SpecDistributor.js +216 -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/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/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/InitFlow.d.ts +37 -0
- package/dist/src/init/InitFlow.d.ts.map +1 -0
- package/dist/src/init/InitFlow.js +209 -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/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 +9 -3
- 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-github/lib/IssueStateManager.js +117 -0
- package/plugins/specweave-github/lib/IssueStateManager.ts +231 -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-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/tasks.md.template +51 -33
- package/dist/locales/de/.gitkeep +0 -0
- package/dist/locales/de/cli.json +0 -108
- package/dist/locales/en/cli.json +0 -287
- package/dist/locales/en/errors.json +0 -7
- package/dist/locales/en/templates.json +0 -6
- package/dist/locales/es/.gitkeep +0 -0
- package/dist/locales/es/cli.json +0 -41
- package/dist/locales/fr/.gitkeep +0 -0
- package/dist/locales/fr/cli.json +0 -108
- package/dist/locales/ja/.gitkeep +0 -0
- package/dist/locales/ja/cli.json +0 -108
- package/dist/locales/ko/.gitkeep +0 -0
- package/dist/locales/ko/cli.json +0 -108
- package/dist/locales/pt/.gitkeep +0 -0
- package/dist/locales/pt/cli.json +0 -108
- package/dist/locales/ru/.gitkeep +0 -0
- package/dist/locales/ru/cli.json +0 -269
- package/dist/locales/zh/.gitkeep +0 -0
- package/dist/locales/zh/cli.json +0 -108
- 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/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts +0 -25
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -191
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts +0 -57
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +0 -248
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/cli/types.d.ts +0 -82
- package/dist/plugins/specweave-kafka/lib/cli/types.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/cli/types.js +0 -13
- package/dist/plugins/specweave-kafka/lib/cli/types.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts +0 -49
- package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/mcp/detector.js +0 -316
- package/dist/plugins/specweave-kafka/lib/mcp/detector.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts +0 -70
- package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/mcp/types.js +0 -23
- package/dist/plugins/specweave-kafka/lib/mcp/types.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts +0 -85
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.js +0 -281
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts +0 -75
- package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/utils/sizing.js +0 -238
- package/dist/plugins/specweave-kafka/lib/utils/sizing.js.map +0 -1
- package/dist/spec-parser.js +0 -629
- 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
- package/dist/src/core/sync/spec-content-sync.d.ts +0 -88
- package/dist/src/core/sync/spec-content-sync.d.ts.map +0 -1
- package/dist/src/core/sync/spec-content-sync.js +0 -5
- package/dist/src/core/sync/spec-content-sync.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -170
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opportunity Score Calculator
|
|
3
|
+
*
|
|
4
|
+
* Calculates market opportunity score (1-10 scale) based on:
|
|
5
|
+
* - Market size estimate
|
|
6
|
+
* - Competition density
|
|
7
|
+
* - Viral potential
|
|
8
|
+
* - Innovation factor
|
|
9
|
+
*
|
|
10
|
+
* **Formula**:
|
|
11
|
+
* score = (marketSize / 10) - (competitionDensity / 2) + viralBonus + innovationBonus
|
|
12
|
+
* Clamped to 1-10 range
|
|
13
|
+
*
|
|
14
|
+
* **Benefits**:
|
|
15
|
+
* - Algorithmic calculation (no LLM needed)
|
|
16
|
+
* - Transparent scoring logic
|
|
17
|
+
* - Deterministic and testable
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Market size estimates by category (1-10 scale)
|
|
21
|
+
*
|
|
22
|
+
* Based on general market research and industry reports
|
|
23
|
+
*/
|
|
24
|
+
const MARKET_SIZE_ESTIMATES = {
|
|
25
|
+
'productivity-saas': 8, // Large and growing
|
|
26
|
+
'healthcare': 10, // Massive market
|
|
27
|
+
'fintech': 9, // Very large market
|
|
28
|
+
'e-commerce': 9, // Huge market
|
|
29
|
+
'education': 8, // Large market
|
|
30
|
+
'gaming': 7, // Large but competitive
|
|
31
|
+
'social-network': 6, // Saturated market
|
|
32
|
+
'enterprise-b2b': 8, // Large market
|
|
33
|
+
'consumer-b2c': 7, // Moderate market
|
|
34
|
+
'marketplace': 7, // Good market
|
|
35
|
+
'iot': 6, // Growing market
|
|
36
|
+
'blockchain': 5, // Emerging market
|
|
37
|
+
'ai-ml': 9, // Very large market
|
|
38
|
+
'unknown': 5 // Default
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Competition density estimates by category (1-10 scale)
|
|
42
|
+
*
|
|
43
|
+
* Higher = more competitive
|
|
44
|
+
*/
|
|
45
|
+
const COMPETITION_DENSITY = {
|
|
46
|
+
'productivity-saas': 8, // Very competitive
|
|
47
|
+
'healthcare': 6, // Moderate (high barriers)
|
|
48
|
+
'fintech': 7, // High competition
|
|
49
|
+
'e-commerce': 9, // Extremely competitive
|
|
50
|
+
'education': 7, // High competition
|
|
51
|
+
'gaming': 8, // Very competitive
|
|
52
|
+
'social-network': 10, // Extremely competitive
|
|
53
|
+
'enterprise-b2b': 6, // Moderate
|
|
54
|
+
'consumer-b2c': 8, // Very competitive
|
|
55
|
+
'marketplace': 8, // Very competitive
|
|
56
|
+
'iot': 5, // Moderate
|
|
57
|
+
'blockchain': 6, // Moderate (niche)
|
|
58
|
+
'ai-ml': 7, // High competition
|
|
59
|
+
'unknown': 5 // Default
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Calculate market opportunity score
|
|
63
|
+
*
|
|
64
|
+
* @param marketCategory - Detected market category
|
|
65
|
+
* @param competitorCount - Number of direct competitors identified
|
|
66
|
+
* @param viralPotential - Whether product has viral growth potential
|
|
67
|
+
* @param innovationFactor - Innovation score (0-1) based on uniqueness
|
|
68
|
+
* @returns Opportunity score (1-10) with rationale
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const result = calculateOpportunityScore('productivity-saas', 5, true, 0.7);
|
|
73
|
+
* // Returns: { score: 7, rationale: '...' }
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export function calculateOpportunityScore(marketCategory, competitorCount, viralPotential, innovationFactor = 0.5) {
|
|
77
|
+
// Get market size and competition for this category
|
|
78
|
+
const marketSize = MARKET_SIZE_ESTIMATES[marketCategory] || 5;
|
|
79
|
+
const competitionBase = COMPETITION_DENSITY[marketCategory] || 5;
|
|
80
|
+
// Adjust competition based on competitor count
|
|
81
|
+
// More competitors = higher competition
|
|
82
|
+
const competitionAdjustment = Math.min(competitorCount * 0.5, 3);
|
|
83
|
+
const competition = Math.min(competitionBase + competitionAdjustment, 10);
|
|
84
|
+
// Calculate base score
|
|
85
|
+
let score = (marketSize / 10) * 10 - (competition / 2);
|
|
86
|
+
// Viral bonus (+2 points)
|
|
87
|
+
const viralBonus = viralPotential ? 2 : 0;
|
|
88
|
+
score += viralBonus;
|
|
89
|
+
// Innovation bonus (0-2 points based on innovation factor)
|
|
90
|
+
const innovationBonus = innovationFactor * 2;
|
|
91
|
+
score += innovationBonus;
|
|
92
|
+
// Clamp to 1-10 range
|
|
93
|
+
score = Math.max(1, Math.min(10, score));
|
|
94
|
+
// Round to 1 decimal place
|
|
95
|
+
score = Math.round(score * 10) / 10;
|
|
96
|
+
// Generate rationale
|
|
97
|
+
const rationale = generateRationale(marketCategory, marketSize, competition, viralPotential, innovationFactor, score);
|
|
98
|
+
return {
|
|
99
|
+
score,
|
|
100
|
+
rationale,
|
|
101
|
+
breakdown: {
|
|
102
|
+
marketSize,
|
|
103
|
+
competition,
|
|
104
|
+
viral: viralBonus,
|
|
105
|
+
innovation: innovationBonus
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Generate human-readable rationale for the score
|
|
111
|
+
*/
|
|
112
|
+
function generateRationale(category, marketSize, competition, viral, innovation, finalScore) {
|
|
113
|
+
const parts = [];
|
|
114
|
+
// Market size assessment
|
|
115
|
+
if (marketSize >= 8) {
|
|
116
|
+
parts.push('Large market size');
|
|
117
|
+
}
|
|
118
|
+
else if (marketSize >= 6) {
|
|
119
|
+
parts.push('Moderate market size');
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
parts.push('Emerging market');
|
|
123
|
+
}
|
|
124
|
+
// Competition assessment
|
|
125
|
+
if (competition >= 8) {
|
|
126
|
+
parts.push('highly competitive landscape');
|
|
127
|
+
}
|
|
128
|
+
else if (competition >= 6) {
|
|
129
|
+
parts.push('moderate competition');
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
parts.push('low competition');
|
|
133
|
+
}
|
|
134
|
+
// Viral potential
|
|
135
|
+
if (viral) {
|
|
136
|
+
parts.push('viral growth potential');
|
|
137
|
+
}
|
|
138
|
+
// Innovation
|
|
139
|
+
if (innovation >= 0.7) {
|
|
140
|
+
parts.push('high innovation factor');
|
|
141
|
+
}
|
|
142
|
+
else if (innovation >= 0.4) {
|
|
143
|
+
parts.push('moderate innovation');
|
|
144
|
+
}
|
|
145
|
+
// Overall assessment
|
|
146
|
+
let assessment;
|
|
147
|
+
if (finalScore >= 8) {
|
|
148
|
+
assessment = 'Strong opportunity';
|
|
149
|
+
}
|
|
150
|
+
else if (finalScore >= 6) {
|
|
151
|
+
assessment = 'Good opportunity';
|
|
152
|
+
}
|
|
153
|
+
else if (finalScore >= 4) {
|
|
154
|
+
assessment = 'Moderate opportunity';
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
assessment = 'Challenging opportunity';
|
|
158
|
+
}
|
|
159
|
+
return `${assessment}: ${parts.join(', ')}.`;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Estimate innovation factor from keywords and competitors
|
|
163
|
+
*
|
|
164
|
+
* Innovation factor is based on:
|
|
165
|
+
* - Unique keyword combinations
|
|
166
|
+
* - Number of competitors (fewer = more innovative)
|
|
167
|
+
* - Presence of emerging tech keywords
|
|
168
|
+
*
|
|
169
|
+
* @param keywords - Product keywords
|
|
170
|
+
* @param competitorCount - Number of competitors
|
|
171
|
+
* @returns Innovation score (0-1)
|
|
172
|
+
*/
|
|
173
|
+
export function estimateInnovationFactor(keywords, competitorCount) {
|
|
174
|
+
let score = 0.5; // Start at moderate
|
|
175
|
+
// Fewer competitors suggests more innovation
|
|
176
|
+
if (competitorCount === 0) {
|
|
177
|
+
score += 0.3;
|
|
178
|
+
}
|
|
179
|
+
else if (competitorCount <= 2) {
|
|
180
|
+
score += 0.2;
|
|
181
|
+
}
|
|
182
|
+
else if (competitorCount <= 5) {
|
|
183
|
+
score += 0.1;
|
|
184
|
+
}
|
|
185
|
+
// Emerging tech keywords boost innovation
|
|
186
|
+
const emergingTech = ['ai', 'machine-learning', 'blockchain', 'crypto', 'web3', 'ar', 'vr'];
|
|
187
|
+
const hasEmergingTech = keywords.some(k => emergingTech.some(tech => k.toLowerCase().includes(tech)));
|
|
188
|
+
if (hasEmergingTech) {
|
|
189
|
+
score += 0.2;
|
|
190
|
+
}
|
|
191
|
+
// Clamp to 0-1
|
|
192
|
+
return Math.max(0, Math.min(1, score));
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=OpportunityScorer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpportunityScorer.js","sourceRoot":"","sources":["../../../../src/init/research/OpportunityScorer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH;;;;GAIG;AACH,MAAM,qBAAqB,GAAmC;IAC5D,mBAAmB,EAAE,CAAC,EAAK,oBAAoB;IAC/C,YAAY,EAAE,EAAE,EAAW,iBAAiB;IAC5C,SAAS,EAAE,CAAC,EAAe,oBAAoB;IAC/C,YAAY,EAAE,CAAC,EAAY,cAAc;IACzC,WAAW,EAAE,CAAC,EAAa,eAAe;IAC1C,QAAQ,EAAE,CAAC,EAAgB,wBAAwB;IACnD,gBAAgB,EAAE,CAAC,EAAQ,mBAAmB;IAC9C,gBAAgB,EAAE,CAAC,EAAQ,eAAe;IAC1C,cAAc,EAAE,CAAC,EAAU,kBAAkB;IAC7C,aAAa,EAAE,CAAC,EAAW,cAAc;IACzC,KAAK,EAAE,CAAC,EAAmB,iBAAiB;IAC5C,YAAY,EAAE,CAAC,EAAY,kBAAkB;IAC7C,OAAO,EAAE,CAAC,EAAiB,oBAAoB;IAC/C,SAAS,EAAE,CAAC,CAAe,UAAU;CACtC,CAAC;AAEF;;;;GAIG;AACH,MAAM,mBAAmB,GAAmC;IAC1D,mBAAmB,EAAE,CAAC,EAAK,mBAAmB;IAC9C,YAAY,EAAE,CAAC,EAAY,2BAA2B;IACtD,SAAS,EAAE,CAAC,EAAe,mBAAmB;IAC9C,YAAY,EAAE,CAAC,EAAY,wBAAwB;IACnD,WAAW,EAAE,CAAC,EAAa,mBAAmB;IAC9C,QAAQ,EAAE,CAAC,EAAgB,mBAAmB;IAC9C,gBAAgB,EAAE,EAAE,EAAO,wBAAwB;IACnD,gBAAgB,EAAE,CAAC,EAAQ,WAAW;IACtC,cAAc,EAAE,CAAC,EAAU,mBAAmB;IAC9C,aAAa,EAAE,CAAC,EAAW,mBAAmB;IAC9C,KAAK,EAAE,CAAC,EAAmB,WAAW;IACtC,YAAY,EAAE,CAAC,EAAY,mBAAmB;IAC9C,OAAO,EAAE,CAAC,EAAiB,mBAAmB;IAC9C,SAAS,EAAE,CAAC,CAAe,UAAU;CACtC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,yBAAyB,CACvC,cAA8B,EAC9B,eAAuB,EACvB,cAAuB,EACvB,mBAA2B,GAAG;IAW9B,oDAAoD;IACpD,MAAM,UAAU,GAAG,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,eAAe,GAAG,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAEjE,+CAA+C;IAC/C,wCAAwC;IACxC,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,qBAAqB,EAAE,EAAE,CAAC,CAAC;IAE1E,uBAAuB;IACvB,IAAI,KAAK,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IAEvD,0BAA0B;IAC1B,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,KAAK,IAAI,UAAU,CAAC;IAEpB,2DAA2D;IAC3D,MAAM,eAAe,GAAG,gBAAgB,GAAG,CAAC,CAAC;IAC7C,KAAK,IAAI,eAAe,CAAC;IAEzB,sBAAsB;IACtB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAEzC,2BAA2B;IAC3B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IAEpC,qBAAqB;IACrB,MAAM,SAAS,GAAG,iBAAiB,CACjC,cAAc,EACd,UAAU,EACV,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,KAAK,CACN,CAAC;IAEF,OAAO;QACL,KAAK;QACL,SAAS;QACT,SAAS,EAAE;YACT,UAAU;YACV,WAAW;YACX,KAAK,EAAE,UAAU;YACjB,UAAU,EAAE,eAAe;SAC5B;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACxB,QAAwB,EACxB,UAAkB,EAClB,WAAmB,EACnB,KAAc,EACd,UAAkB,EAClB,UAAkB;IAElB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,yBAAyB;IACzB,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAClC,CAAC;SAAM,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChC,CAAC;IAED,yBAAyB;IACzB,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC7C,CAAC;SAAM,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChC,CAAC;IAED,kBAAkB;IAClB,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACvC,CAAC;IAED,aAAa;IACb,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACvC,CAAC;SAAM,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACpC,CAAC;IAED,qBAAqB;IACrB,IAAI,UAAkB,CAAC;IACvB,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,UAAU,GAAG,oBAAoB,CAAC;IACpC,CAAC;SAAM,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QAC3B,UAAU,GAAG,kBAAkB,CAAC;IAClC,CAAC;SAAM,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QAC3B,UAAU,GAAG,sBAAsB,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,yBAAyB,CAAC;IACzC,CAAC;IAED,OAAO,GAAG,UAAU,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAAkB,EAClB,eAAuB;IAEvB,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,oBAAoB;IAErC,6CAA6C;IAC7C,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;QAC1B,KAAK,IAAI,GAAG,CAAC;IACf,CAAC;SAAM,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;QAChC,KAAK,IAAI,GAAG,CAAC;IACf,CAAC;SAAM,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;QAChC,KAAK,IAAI,GAAG,CAAC;IACf,CAAC;IAED,0CAA0C;IAC1C,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,kBAAkB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5F,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACxC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAC1D,CAAC;IAEF,IAAI,eAAe,EAAE,CAAC;QACpB,KAAK,IAAI,GAAG,CAAC;IACf,CAAC;IAED,eAAe;IACf,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adaptive Question Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates context-aware follow-up questions based on product vision,
|
|
5
|
+
* market category, and detected patterns.
|
|
6
|
+
*
|
|
7
|
+
* **Approach**:
|
|
8
|
+
* 1. Analyze vision insights (market, viral potential, etc.)
|
|
9
|
+
* 2. Select relevant question templates
|
|
10
|
+
* 3. Return 2-3 adaptive questions max
|
|
11
|
+
* 4. Prioritize most impactful questions
|
|
12
|
+
*
|
|
13
|
+
* **Benefits**:
|
|
14
|
+
* - Context-aware questioning
|
|
15
|
+
* - Progressive disclosure (not overwhelming)
|
|
16
|
+
* - Deterministic and testable
|
|
17
|
+
*/
|
|
18
|
+
import { MarketCategory, Question } from './types.js';
|
|
19
|
+
/**
|
|
20
|
+
* Context for generating questions
|
|
21
|
+
*/
|
|
22
|
+
export interface QuestionContext {
|
|
23
|
+
/** Detected market category */
|
|
24
|
+
marketCategory: MarketCategory;
|
|
25
|
+
/** Viral growth potential */
|
|
26
|
+
viralPotential: boolean;
|
|
27
|
+
/** Opportunity score (1-10) */
|
|
28
|
+
opportunityScore: number;
|
|
29
|
+
/** Extracted keywords */
|
|
30
|
+
keywords: string[];
|
|
31
|
+
/** Number of competitors */
|
|
32
|
+
competitorCount: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Generate adaptive follow-up questions based on vision insights
|
|
36
|
+
*
|
|
37
|
+
* Selects the most relevant 2-3 questions based on context,
|
|
38
|
+
* sorted by priority.
|
|
39
|
+
*
|
|
40
|
+
* @param context - Question generation context
|
|
41
|
+
* @param maxQuestions - Maximum questions to return (default: 3)
|
|
42
|
+
* @returns Array of adaptive questions
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const questions = generateFollowUpQuestions({
|
|
47
|
+
* marketCategory: 'healthcare',
|
|
48
|
+
* viralPotential: false,
|
|
49
|
+
* opportunityScore: 7,
|
|
50
|
+
* keywords: ['health', 'medical', 'patient'],
|
|
51
|
+
* competitorCount: 3
|
|
52
|
+
* });
|
|
53
|
+
* // Returns healthcare-specific compliance and region questions
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function generateFollowUpQuestions(context: QuestionContext, maxQuestions?: number): Question[];
|
|
57
|
+
/**
|
|
58
|
+
* Get all potential questions with their priorities (useful for debugging)
|
|
59
|
+
*
|
|
60
|
+
* @param context - Question generation context
|
|
61
|
+
* @returns Array of questions with priorities and conditions
|
|
62
|
+
*/
|
|
63
|
+
export declare function analyzeQuestions(context: QuestionContext): Array<{
|
|
64
|
+
question: Question;
|
|
65
|
+
priority: number;
|
|
66
|
+
applicable: boolean;
|
|
67
|
+
}>;
|
|
68
|
+
//# sourceMappingURL=QuestionGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuestionGenerator.d.ts","sourceRoot":"","sources":["../../../../src/init/research/QuestionGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAgBtD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,cAAc,EAAE,cAAc,CAAC;IAE/B,6BAA6B;IAC7B,cAAc,EAAE,OAAO,CAAC;IAExB,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IAEzB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,4BAA4B;IAC5B,eAAe,EAAE,MAAM,CAAC;CACzB;AAmMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,eAAe,EACxB,YAAY,GAAE,MAAU,GACvB,QAAQ,EAAE,CAeZ;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,KAAK,CAAC;IAChE,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC,CAMD"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adaptive Question Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates context-aware follow-up questions based on product vision,
|
|
5
|
+
* market category, and detected patterns.
|
|
6
|
+
*
|
|
7
|
+
* **Approach**:
|
|
8
|
+
* 1. Analyze vision insights (market, viral potential, etc.)
|
|
9
|
+
* 2. Select relevant question templates
|
|
10
|
+
* 3. Return 2-3 adaptive questions max
|
|
11
|
+
* 4. Prioritize most impactful questions
|
|
12
|
+
*
|
|
13
|
+
* **Benefits**:
|
|
14
|
+
* - Context-aware questioning
|
|
15
|
+
* - Progressive disclosure (not overwhelming)
|
|
16
|
+
* - Deterministic and testable
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Question templates organized by context
|
|
20
|
+
*
|
|
21
|
+
* Each template has:
|
|
22
|
+
* - Condition: When to ask this question
|
|
23
|
+
* - Generator: How to build the question
|
|
24
|
+
* - Priority: How important this question is
|
|
25
|
+
*/
|
|
26
|
+
const QUESTION_TEMPLATES = [
|
|
27
|
+
// Viral Potential → Ask about scaling and growth
|
|
28
|
+
{
|
|
29
|
+
condition: (ctx) => ctx.viralPotential,
|
|
30
|
+
priority: 10,
|
|
31
|
+
generate: () => ({
|
|
32
|
+
question: 'What are your expected user growth targets in the first 6 months?',
|
|
33
|
+
type: 'multiple-choice',
|
|
34
|
+
options: [
|
|
35
|
+
'< 1,000 users (slow growth)',
|
|
36
|
+
'1K - 10K users (moderate growth)',
|
|
37
|
+
'10K - 100K users (viral growth)',
|
|
38
|
+
'100K+ users (explosive growth)'
|
|
39
|
+
],
|
|
40
|
+
rationale: 'Understanding growth expectations helps recommend scalable architecture (serverless vs traditional).'
|
|
41
|
+
})
|
|
42
|
+
},
|
|
43
|
+
// Viral Potential → Ask about viral mechanisms
|
|
44
|
+
{
|
|
45
|
+
condition: (ctx) => ctx.viralPotential,
|
|
46
|
+
priority: 9,
|
|
47
|
+
generate: () => ({
|
|
48
|
+
question: 'How will users discover and share your product?',
|
|
49
|
+
type: 'multiple-choice',
|
|
50
|
+
options: [
|
|
51
|
+
'Social sharing (built-in share features)',
|
|
52
|
+
'Network effects (more users = more value)',
|
|
53
|
+
'User-generated content',
|
|
54
|
+
'Referral program',
|
|
55
|
+
'Paid advertising'
|
|
56
|
+
],
|
|
57
|
+
rationale: 'Viral mechanisms influence product architecture and feature priorities.'
|
|
58
|
+
})
|
|
59
|
+
},
|
|
60
|
+
// Enterprise/Healthcare → Ask about compliance
|
|
61
|
+
{
|
|
62
|
+
condition: (ctx) => ctx.marketCategory === 'enterprise-b2b' ||
|
|
63
|
+
ctx.marketCategory === 'healthcare',
|
|
64
|
+
priority: 10,
|
|
65
|
+
generate: (ctx) => ({
|
|
66
|
+
question: `Will you handle sensitive data? (${ctx.marketCategory === 'healthcare' ? 'PHI, medical records' : 'confidential business data'})`,
|
|
67
|
+
type: 'multiple-choice',
|
|
68
|
+
options: [
|
|
69
|
+
'Yes - Healthcare data (PHI)',
|
|
70
|
+
'Yes - Payment data (PCI)',
|
|
71
|
+
'Yes - Personal data (GDPR/CCPA)',
|
|
72
|
+
'Yes - Government data (FedRAMP)',
|
|
73
|
+
'No sensitive data'
|
|
74
|
+
],
|
|
75
|
+
rationale: 'Compliance requirements determine architecture, team structure, and costs.'
|
|
76
|
+
})
|
|
77
|
+
},
|
|
78
|
+
// Healthcare specific
|
|
79
|
+
{
|
|
80
|
+
condition: (ctx) => ctx.marketCategory === 'healthcare',
|
|
81
|
+
priority: 9,
|
|
82
|
+
generate: () => ({
|
|
83
|
+
question: 'What regions will your healthcare product operate in?',
|
|
84
|
+
type: 'multiple-choice',
|
|
85
|
+
options: [
|
|
86
|
+
'United States only (HIPAA)',
|
|
87
|
+
'European Union (GDPR + local)',
|
|
88
|
+
'Global (multiple compliance standards)',
|
|
89
|
+
'Not decided yet'
|
|
90
|
+
],
|
|
91
|
+
rationale: 'Regional compliance affects team requirements and infrastructure choices.'
|
|
92
|
+
})
|
|
93
|
+
},
|
|
94
|
+
// Fintech specific
|
|
95
|
+
{
|
|
96
|
+
condition: (ctx) => ctx.marketCategory === 'fintech',
|
|
97
|
+
priority: 10,
|
|
98
|
+
generate: () => ({
|
|
99
|
+
question: 'How will you handle payments and financial data?',
|
|
100
|
+
type: 'multiple-choice',
|
|
101
|
+
options: [
|
|
102
|
+
'Use Stripe/PayPal (outsource PCI compliance)',
|
|
103
|
+
'Build in-house (full PCI-DSS compliance)',
|
|
104
|
+
'Hybrid (some in-house, some third-party)',
|
|
105
|
+
'Not decided yet'
|
|
106
|
+
],
|
|
107
|
+
rationale: 'Payment handling determines compliance overhead and team requirements.'
|
|
108
|
+
})
|
|
109
|
+
},
|
|
110
|
+
// High competition → Ask about differentiation
|
|
111
|
+
{
|
|
112
|
+
condition: (ctx) => ctx.competitorCount >= 5,
|
|
113
|
+
priority: 8,
|
|
114
|
+
generate: () => ({
|
|
115
|
+
question: 'What makes your product different from existing competitors?',
|
|
116
|
+
type: 'open',
|
|
117
|
+
rationale: 'Understanding differentiation helps identify unique technical requirements.'
|
|
118
|
+
})
|
|
119
|
+
},
|
|
120
|
+
// Low competition → Ask about barriers
|
|
121
|
+
{
|
|
122
|
+
condition: (ctx) => ctx.competitorCount <= 2,
|
|
123
|
+
priority: 7,
|
|
124
|
+
generate: () => ({
|
|
125
|
+
question: 'Why do you think this market is underserved?',
|
|
126
|
+
type: 'open',
|
|
127
|
+
rationale: 'Understanding market gaps helps validate opportunity and identify technical challenges.'
|
|
128
|
+
})
|
|
129
|
+
},
|
|
130
|
+
// B2C/Consumer → Ask about monetization
|
|
131
|
+
{
|
|
132
|
+
condition: (ctx) => ctx.marketCategory === 'consumer-b2c' ||
|
|
133
|
+
ctx.marketCategory === 'social-network',
|
|
134
|
+
priority: 7,
|
|
135
|
+
generate: () => ({
|
|
136
|
+
question: 'How will you monetize your product?',
|
|
137
|
+
type: 'multiple-choice',
|
|
138
|
+
options: [
|
|
139
|
+
'Freemium (free tier + paid upgrades)',
|
|
140
|
+
'Subscription (monthly/annual)',
|
|
141
|
+
'Advertising',
|
|
142
|
+
'Transaction fees',
|
|
143
|
+
'Not decided yet'
|
|
144
|
+
],
|
|
145
|
+
rationale: 'Monetization strategy affects feature priorities and infrastructure needs.'
|
|
146
|
+
})
|
|
147
|
+
},
|
|
148
|
+
// Enterprise → Ask about team size
|
|
149
|
+
{
|
|
150
|
+
condition: (ctx) => ctx.marketCategory === 'enterprise-b2b',
|
|
151
|
+
priority: 8,
|
|
152
|
+
generate: () => ({
|
|
153
|
+
question: 'How large is your target customer organization?',
|
|
154
|
+
type: 'multiple-choice',
|
|
155
|
+
options: [
|
|
156
|
+
'Small businesses (< 50 employees)',
|
|
157
|
+
'Mid-market (50-500 employees)',
|
|
158
|
+
'Enterprise (500-5000 employees)',
|
|
159
|
+
'Large enterprise (5000+ employees)'
|
|
160
|
+
],
|
|
161
|
+
rationale: 'Customer size affects feature complexity, compliance needs, and support requirements.'
|
|
162
|
+
})
|
|
163
|
+
},
|
|
164
|
+
// Default → Ask about timeline
|
|
165
|
+
{
|
|
166
|
+
condition: () => true, // Always applicable
|
|
167
|
+
priority: 5,
|
|
168
|
+
generate: () => ({
|
|
169
|
+
question: 'What is your target launch timeline?',
|
|
170
|
+
type: 'multiple-choice',
|
|
171
|
+
options: [
|
|
172
|
+
'MVP in 1-3 months',
|
|
173
|
+
'Beta in 3-6 months',
|
|
174
|
+
'Full launch in 6-12 months',
|
|
175
|
+
'Longer than 1 year'
|
|
176
|
+
],
|
|
177
|
+
rationale: 'Timeline affects technology choices and architectural decisions (YAGNI vs future-proof).'
|
|
178
|
+
})
|
|
179
|
+
},
|
|
180
|
+
// Default → Ask about budget
|
|
181
|
+
{
|
|
182
|
+
condition: () => true,
|
|
183
|
+
priority: 6,
|
|
184
|
+
generate: () => ({
|
|
185
|
+
question: 'What is your development approach?',
|
|
186
|
+
type: 'multiple-choice',
|
|
187
|
+
options: [
|
|
188
|
+
'Bootstrapped (self-funded)',
|
|
189
|
+
'Pre-seed / Angel funded',
|
|
190
|
+
'Seed / Series A funded',
|
|
191
|
+
'Series B+ funded',
|
|
192
|
+
'Learning project (non-commercial)'
|
|
193
|
+
],
|
|
194
|
+
rationale: 'Funding stage affects architecture recommendations and cloud credit eligibility.'
|
|
195
|
+
})
|
|
196
|
+
}
|
|
197
|
+
];
|
|
198
|
+
/**
|
|
199
|
+
* Generate adaptive follow-up questions based on vision insights
|
|
200
|
+
*
|
|
201
|
+
* Selects the most relevant 2-3 questions based on context,
|
|
202
|
+
* sorted by priority.
|
|
203
|
+
*
|
|
204
|
+
* @param context - Question generation context
|
|
205
|
+
* @param maxQuestions - Maximum questions to return (default: 3)
|
|
206
|
+
* @returns Array of adaptive questions
|
|
207
|
+
*
|
|
208
|
+
* @example
|
|
209
|
+
* ```typescript
|
|
210
|
+
* const questions = generateFollowUpQuestions({
|
|
211
|
+
* marketCategory: 'healthcare',
|
|
212
|
+
* viralPotential: false,
|
|
213
|
+
* opportunityScore: 7,
|
|
214
|
+
* keywords: ['health', 'medical', 'patient'],
|
|
215
|
+
* competitorCount: 3
|
|
216
|
+
* });
|
|
217
|
+
* // Returns healthcare-specific compliance and region questions
|
|
218
|
+
* ```
|
|
219
|
+
*/
|
|
220
|
+
export function generateFollowUpQuestions(context, maxQuestions = 3) {
|
|
221
|
+
// Filter templates based on conditions
|
|
222
|
+
const applicable = QUESTION_TEMPLATES.filter(template => template.condition(context));
|
|
223
|
+
// Sort by priority (descending)
|
|
224
|
+
applicable.sort((a, b) => b.priority - a.priority);
|
|
225
|
+
// Take top N and generate questions
|
|
226
|
+
const questions = applicable
|
|
227
|
+
.slice(0, maxQuestions)
|
|
228
|
+
.map(template => template.generate(context));
|
|
229
|
+
return questions;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Get all potential questions with their priorities (useful for debugging)
|
|
233
|
+
*
|
|
234
|
+
* @param context - Question generation context
|
|
235
|
+
* @returns Array of questions with priorities and conditions
|
|
236
|
+
*/
|
|
237
|
+
export function analyzeQuestions(context) {
|
|
238
|
+
return QUESTION_TEMPLATES.map(template => ({
|
|
239
|
+
question: template.generate(context),
|
|
240
|
+
priority: template.priority,
|
|
241
|
+
applicable: template.condition(context)
|
|
242
|
+
})).sort((a, b) => b.priority - a.priority);
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=QuestionGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuestionGenerator.js","sourceRoot":"","sources":["../../../../src/init/research/QuestionGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Market Research Report Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates markdown reports summarizing vision analysis results.
|
|
5
|
+
*/
|
|
6
|
+
import type { VisionInsights } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* ReportGenerator - Generates market research reports
|
|
9
|
+
*
|
|
10
|
+
* **Usage**:
|
|
11
|
+
* ```typescript
|
|
12
|
+
* await ReportGenerator.generate(insights);
|
|
13
|
+
* // Creates .specweave/reports/market-research.md
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare class ReportGenerator {
|
|
17
|
+
/**
|
|
18
|
+
* Default report path
|
|
19
|
+
*/
|
|
20
|
+
private static readonly REPORT_PATH;
|
|
21
|
+
/**
|
|
22
|
+
* Generate market research report
|
|
23
|
+
*
|
|
24
|
+
* @param insights - Vision insights to include in report
|
|
25
|
+
* @param reportPath - Optional custom report path
|
|
26
|
+
*/
|
|
27
|
+
static generate(insights: VisionInsights, reportPath?: string): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Create markdown content from insights
|
|
30
|
+
*
|
|
31
|
+
* @param insights - Vision insights
|
|
32
|
+
* @returns Markdown string
|
|
33
|
+
*/
|
|
34
|
+
private static createMarkdown;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=ReportGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportGenerator.d.ts","sourceRoot":"","sources":["../../../../src/init/research/ReportGenerator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAA2C;IAE9E;;;;;OAKG;WACU,QAAQ,CACnB,QAAQ,EAAE,cAAc,EACxB,UAAU,GAAE,MAAoC,GAC/C,OAAO,CAAC,IAAI,CAAC;IAWhB;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CA+F9B"}
|