@ai-coders/context 0.5.2 → 0.6.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/README.md +244 -12
- package/dist/generators/agents/agentGenerator.d.ts +3 -0
- package/dist/generators/agents/agentGenerator.d.ts.map +1 -1
- package/dist/generators/agents/agentGenerator.js +13 -7
- package/dist/generators/agents/agentGenerator.js.map +1 -1
- package/dist/generators/agents/templates/playbookTemplate.d.ts.map +1 -1
- package/dist/generators/agents/templates/playbookTemplate.js +3 -1
- package/dist/generators/agents/templates/playbookTemplate.js.map +1 -1
- package/dist/generators/documentation/codebaseMapGenerator.d.ts +98 -0
- package/dist/generators/documentation/codebaseMapGenerator.d.ts.map +1 -0
- package/dist/generators/documentation/codebaseMapGenerator.js +247 -0
- package/dist/generators/documentation/codebaseMapGenerator.js.map +1 -0
- package/dist/generators/documentation/documentationGenerator.d.ts +2 -0
- package/dist/generators/documentation/documentationGenerator.d.ts.map +1 -1
- package/dist/generators/documentation/documentationGenerator.js +20 -1
- package/dist/generators/documentation/documentationGenerator.js.map +1 -1
- package/dist/generators/documentation/index.d.ts +2 -0
- package/dist/generators/documentation/index.d.ts.map +1 -1
- package/dist/generators/documentation/index.js +3 -1
- package/dist/generators/documentation/index.js.map +1 -1
- package/dist/generators/documentation/templates/architectureTemplate.d.ts.map +1 -1
- package/dist/generators/documentation/templates/architectureTemplate.js +2 -31
- package/dist/generators/documentation/templates/architectureTemplate.js.map +1 -1
- package/dist/generators/documentation/templates/common.d.ts +4 -1
- package/dist/generators/documentation/templates/common.d.ts.map +1 -1
- package/dist/generators/documentation/templates/common.js +4 -2
- package/dist/generators/documentation/templates/common.js.map +1 -1
- package/dist/generators/plans/templates/planTemplate.d.ts.map +1 -1
- package/dist/generators/plans/templates/planTemplate.js +46 -2
- package/dist/generators/plans/templates/planTemplate.js.map +1 -1
- package/dist/generators/skills/index.d.ts +7 -0
- package/dist/generators/skills/index.d.ts.map +1 -0
- package/dist/generators/skills/index.js +15 -0
- package/dist/generators/skills/index.js.map +1 -0
- package/dist/generators/skills/skillGenerator.d.ts +53 -0
- package/dist/generators/skills/skillGenerator.d.ts.map +1 -0
- package/dist/generators/skills/skillGenerator.js +149 -0
- package/dist/generators/skills/skillGenerator.js.map +1 -0
- package/dist/generators/skills/templates/indexTemplate.d.ts +13 -0
- package/dist/generators/skills/templates/indexTemplate.d.ts.map +1 -0
- package/dist/generators/skills/templates/indexTemplate.js +102 -0
- package/dist/generators/skills/templates/indexTemplate.js.map +1 -0
- package/dist/generators/skills/templates/skillTemplate.d.ts +20 -0
- package/dist/generators/skills/templates/skillTemplate.d.ts.map +1 -0
- package/dist/generators/skills/templates/skillTemplate.js +85 -0
- package/dist/generators/skills/templates/skillTemplate.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1315 -43
- package/dist/index.js.map +1 -1
- package/dist/services/ai/agentEvents.d.ts +1 -1
- package/dist/services/ai/agentEvents.d.ts.map +1 -1
- package/dist/services/ai/agents/index.d.ts +2 -0
- package/dist/services/ai/agents/index.d.ts.map +1 -1
- package/dist/services/ai/agents/index.js +3 -1
- package/dist/services/ai/agents/index.js.map +1 -1
- package/dist/services/ai/agents/skillAgent.d.ts +49 -0
- package/dist/services/ai/agents/skillAgent.d.ts.map +1 -0
- package/dist/services/ai/agents/skillAgent.js +179 -0
- package/dist/services/ai/agents/skillAgent.js.map +1 -0
- package/dist/services/ai/prompts/index.d.ts +1 -1
- package/dist/services/ai/prompts/index.d.ts.map +1 -1
- package/dist/services/ai/prompts/index.js +2 -1
- package/dist/services/ai/prompts/index.js.map +1 -1
- package/dist/services/ai/prompts/sharedPrompts.d.ts +4 -0
- package/dist/services/ai/prompts/sharedPrompts.d.ts.map +1 -1
- package/dist/services/ai/prompts/sharedPrompts.js +33 -0
- package/dist/services/ai/prompts/sharedPrompts.js.map +1 -1
- package/dist/services/ai/schemas.d.ts +96 -1
- package/dist/services/ai/schemas.d.ts.map +1 -1
- package/dist/services/ai/schemas.js +56 -2
- package/dist/services/ai/schemas.js.map +1 -1
- package/dist/services/ai/toolRegistry.d.ts.map +1 -1
- package/dist/services/ai/toolRegistry.js +17 -0
- package/dist/services/ai/toolRegistry.js.map +1 -1
- package/dist/services/ai/tools/fillScaffoldingTool.d.ts +4 -4
- package/dist/services/ai/tools/getCodebaseMapTool.d.ts +17 -0
- package/dist/services/ai/tools/getCodebaseMapTool.d.ts.map +1 -0
- package/dist/services/ai/tools/getCodebaseMapTool.js +115 -0
- package/dist/services/ai/tools/getCodebaseMapTool.js.map +1 -0
- package/dist/services/ai/tools/index.d.ts +2 -1
- package/dist/services/ai/tools/index.d.ts.map +1 -1
- package/dist/services/ai/tools/index.js +8 -3
- package/dist/services/ai/tools/index.js.map +1 -1
- package/dist/services/ai/tools/initializeContextTool.d.ts +9 -1
- package/dist/services/ai/tools/initializeContextTool.d.ts.map +1 -1
- package/dist/services/ai/tools/initializeContextTool.js +33 -3
- package/dist/services/ai/tools/initializeContextTool.js.map +1 -1
- package/dist/services/ai/tools/scaffoldPlanTool.d.ts +6 -0
- package/dist/services/ai/tools/scaffoldPlanTool.d.ts.map +1 -1
- package/dist/services/ai/tools/scaffoldPlanTool.js +16 -3
- package/dist/services/ai/tools/scaffoldPlanTool.js.map +1 -1
- package/dist/services/export/exportRulesService.d.ts +62 -0
- package/dist/services/export/exportRulesService.d.ts.map +1 -0
- package/dist/services/export/exportRulesService.js +242 -0
- package/dist/services/export/exportRulesService.js.map +1 -0
- package/dist/services/export/index.d.ts +5 -0
- package/dist/services/export/index.d.ts.map +1 -0
- package/dist/services/export/index.js +10 -0
- package/dist/services/export/index.js.map +1 -0
- package/dist/services/export/skillExportService.d.ts +64 -0
- package/dist/services/export/skillExportService.d.ts.map +1 -0
- package/dist/services/export/skillExportService.js +238 -0
- package/dist/services/export/skillExportService.js.map +1 -0
- package/dist/services/fill/skillFillService.d.ts +50 -0
- package/dist/services/fill/skillFillService.d.ts.map +1 -0
- package/dist/services/fill/skillFillService.js +254 -0
- package/dist/services/fill/skillFillService.js.map +1 -0
- package/dist/services/import/agentsDetector.d.ts +12 -0
- package/dist/services/import/agentsDetector.d.ts.map +1 -0
- package/dist/services/import/agentsDetector.js +183 -0
- package/dist/services/import/agentsDetector.js.map +1 -0
- package/dist/services/import/importAgentsService.d.ts +14 -0
- package/dist/services/import/importAgentsService.d.ts.map +1 -0
- package/dist/services/import/importAgentsService.js +195 -0
- package/dist/services/import/importAgentsService.js.map +1 -0
- package/dist/services/import/importRulesService.d.ts +17 -0
- package/dist/services/import/importRulesService.d.ts.map +1 -0
- package/dist/services/import/importRulesService.js +222 -0
- package/dist/services/import/importRulesService.js.map +1 -0
- package/dist/services/import/index.d.ts +7 -0
- package/dist/services/import/index.d.ts.map +1 -0
- package/dist/services/import/index.js +28 -0
- package/dist/services/import/index.js.map +1 -0
- package/dist/services/import/presets.d.ts +8 -0
- package/dist/services/import/presets.d.ts.map +1 -0
- package/dist/services/import/presets.js +176 -0
- package/dist/services/import/presets.js.map +1 -0
- package/dist/services/import/rulesDetector.d.ts +16 -0
- package/dist/services/import/rulesDetector.d.ts.map +1 -0
- package/dist/services/import/rulesDetector.js +278 -0
- package/dist/services/import/rulesDetector.js.map +1 -0
- package/dist/services/import/types.d.ts +72 -0
- package/dist/services/import/types.d.ts.map +1 -0
- package/dist/services/import/types.js +3 -0
- package/dist/services/import/types.js.map +1 -0
- package/dist/services/mcp/mcpServer.d.ts +24 -0
- package/dist/services/mcp/mcpServer.d.ts.map +1 -1
- package/dist/services/mcp/mcpServer.js +1451 -1
- package/dist/services/mcp/mcpServer.js.map +1 -1
- package/dist/services/quickSync/index.d.ts +3 -0
- package/dist/services/quickSync/index.d.ts.map +1 -0
- package/dist/services/quickSync/index.js +7 -0
- package/dist/services/quickSync/index.js.map +1 -0
- package/dist/services/quickSync/quickSyncService.d.ts +72 -0
- package/dist/services/quickSync/quickSyncService.d.ts.map +1 -0
- package/dist/services/quickSync/quickSyncService.js +268 -0
- package/dist/services/quickSync/quickSyncService.js.map +1 -0
- package/dist/services/report/index.d.ts +3 -0
- package/dist/services/report/index.d.ts.map +1 -0
- package/dist/services/report/index.js +6 -0
- package/dist/services/report/index.js.map +1 -0
- package/dist/services/report/reportService.d.ts +131 -0
- package/dist/services/report/reportService.d.ts.map +1 -0
- package/dist/services/report/reportService.js +372 -0
- package/dist/services/report/reportService.js.map +1 -0
- package/dist/services/semantic/contextBuilder.d.ts +8 -1
- package/dist/services/semantic/contextBuilder.d.ts.map +1 -1
- package/dist/services/semantic/contextBuilder.js +107 -20
- package/dist/services/semantic/contextBuilder.js.map +1 -1
- package/dist/services/shared/globPatterns.d.ts +48 -0
- package/dist/services/shared/globPatterns.d.ts.map +1 -0
- package/dist/services/shared/globPatterns.js +110 -0
- package/dist/services/shared/globPatterns.js.map +1 -0
- package/dist/services/shared/index.d.ts +10 -0
- package/dist/services/shared/index.d.ts.map +1 -0
- package/dist/services/shared/index.js +46 -0
- package/dist/services/shared/index.js.map +1 -0
- package/dist/services/shared/pathHelpers.d.ts +71 -0
- package/dist/services/shared/pathHelpers.d.ts.map +1 -0
- package/dist/services/shared/pathHelpers.js +162 -0
- package/dist/services/shared/pathHelpers.js.map +1 -0
- package/dist/services/shared/types.d.ts +74 -0
- package/dist/services/shared/types.d.ts.map +1 -0
- package/dist/services/shared/types.js +44 -0
- package/dist/services/shared/types.js.map +1 -0
- package/dist/services/shared/uiHelpers.d.ts +70 -0
- package/dist/services/shared/uiHelpers.d.ts.map +1 -0
- package/dist/services/shared/uiHelpers.js +131 -0
- package/dist/services/shared/uiHelpers.js.map +1 -0
- package/dist/services/stack/index.d.ts +6 -0
- package/dist/services/stack/index.d.ts.map +1 -0
- package/dist/services/stack/index.js +25 -0
- package/dist/services/stack/index.js.map +1 -0
- package/dist/services/stack/projectTypeClassifier.d.ts +59 -0
- package/dist/services/stack/projectTypeClassifier.d.ts.map +1 -0
- package/dist/services/stack/projectTypeClassifier.js +242 -0
- package/dist/services/stack/projectTypeClassifier.js.map +1 -0
- package/dist/services/stack/scaffoldFilter.d.ts +75 -0
- package/dist/services/stack/scaffoldFilter.d.ts.map +1 -0
- package/dist/services/stack/scaffoldFilter.js +222 -0
- package/dist/services/stack/scaffoldFilter.js.map +1 -0
- package/dist/services/stack/stackDetector.d.ts +43 -0
- package/dist/services/stack/stackDetector.d.ts.map +1 -0
- package/dist/services/stack/stackDetector.js +406 -0
- package/dist/services/stack/stackDetector.js.map +1 -0
- package/dist/services/start/index.d.ts +3 -0
- package/dist/services/start/index.d.ts.map +1 -0
- package/dist/services/start/index.js +6 -0
- package/dist/services/start/index.js.map +1 -0
- package/dist/services/start/startService.d.ts +64 -0
- package/dist/services/start/startService.d.ts.map +1 -0
- package/dist/services/start/startService.js +180 -0
- package/dist/services/start/startService.js.map +1 -0
- package/dist/services/sync/presets.d.ts.map +1 -1
- package/dist/services/sync/presets.js +16 -1
- package/dist/services/sync/presets.js.map +1 -1
- package/dist/services/sync/types.d.ts +1 -1
- package/dist/services/sync/types.d.ts.map +1 -1
- package/dist/services/workflow/autoAdvance.d.ts +38 -0
- package/dist/services/workflow/autoAdvance.d.ts.map +1 -0
- package/dist/services/workflow/autoAdvance.js +219 -0
- package/dist/services/workflow/autoAdvance.js.map +1 -0
- package/dist/services/workflow/index.d.ts +6 -0
- package/dist/services/workflow/index.d.ts.map +1 -0
- package/dist/services/workflow/index.js +11 -0
- package/dist/services/workflow/index.js.map +1 -0
- package/dist/services/workflow/workflowService.d.ts +98 -0
- package/dist/services/workflow/workflowService.d.ts.map +1 -0
- package/dist/services/workflow/workflowService.js +210 -0
- package/dist/services/workflow/workflowService.js.map +1 -0
- package/dist/utils/cliUI.d.ts +4 -0
- package/dist/utils/cliUI.d.ts.map +1 -1
- package/dist/utils/cliUI.js +31 -1
- package/dist/utils/cliUI.js.map +1 -1
- package/dist/utils/i18n.d.ts +202 -0
- package/dist/utils/i18n.d.ts.map +1 -1
- package/dist/utils/i18n.js +438 -2
- package/dist/utils/i18n.js.map +1 -1
- package/dist/utils/theme.d.ts +1 -0
- package/dist/utils/theme.d.ts.map +1 -1
- package/dist/utils/theme.js +1 -0
- package/dist/utils/theme.js.map +1 -1
- package/dist/workflow/agents/agentRegistry.d.ts +82 -0
- package/dist/workflow/agents/agentRegistry.d.ts.map +1 -0
- package/dist/workflow/agents/agentRegistry.js +205 -0
- package/dist/workflow/agents/agentRegistry.js.map +1 -0
- package/dist/workflow/agents/index.d.ts +7 -0
- package/dist/workflow/agents/index.d.ts.map +1 -0
- package/dist/workflow/agents/index.js +14 -0
- package/dist/workflow/agents/index.js.map +1 -0
- package/dist/workflow/collaboration.d.ts +110 -0
- package/dist/workflow/collaboration.d.ts.map +1 -0
- package/dist/workflow/collaboration.js +301 -0
- package/dist/workflow/collaboration.js.map +1 -0
- package/dist/workflow/index.d.ts +25 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +124 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/orchestration/agentOrchestrator.d.ts +68 -0
- package/dist/workflow/orchestration/agentOrchestrator.d.ts.map +1 -0
- package/dist/workflow/orchestration/agentOrchestrator.js +280 -0
- package/dist/workflow/orchestration/agentOrchestrator.js.map +1 -0
- package/dist/workflow/orchestration/documentLinker.d.ts +100 -0
- package/dist/workflow/orchestration/documentLinker.d.ts.map +1 -0
- package/dist/workflow/orchestration/documentLinker.js +266 -0
- package/dist/workflow/orchestration/documentLinker.js.map +1 -0
- package/dist/workflow/orchestration/index.d.ts +9 -0
- package/dist/workflow/orchestration/index.d.ts.map +1 -0
- package/dist/workflow/orchestration/index.js +25 -0
- package/dist/workflow/orchestration/index.js.map +1 -0
- package/dist/workflow/orchestrator.d.ts +99 -0
- package/dist/workflow/orchestrator.d.ts.map +1 -0
- package/dist/workflow/orchestrator.js +217 -0
- package/dist/workflow/orchestrator.js.map +1 -0
- package/dist/workflow/phases.d.ts +64 -0
- package/dist/workflow/phases.d.ts.map +1 -0
- package/dist/workflow/phases.js +151 -0
- package/dist/workflow/phases.js.map +1 -0
- package/dist/workflow/plans/index.d.ts +8 -0
- package/dist/workflow/plans/index.d.ts.map +1 -0
- package/dist/workflow/plans/index.js +27 -0
- package/dist/workflow/plans/index.js.map +1 -0
- package/dist/workflow/plans/planLinker.d.ts +119 -0
- package/dist/workflow/plans/planLinker.d.ts.map +1 -0
- package/dist/workflow/plans/planLinker.js +499 -0
- package/dist/workflow/plans/planLinker.js.map +1 -0
- package/dist/workflow/plans/types.d.ts +167 -0
- package/dist/workflow/plans/types.d.ts.map +1 -0
- package/dist/workflow/plans/types.js +25 -0
- package/dist/workflow/plans/types.js.map +1 -0
- package/dist/workflow/prevcConfig.d.ts +27 -0
- package/dist/workflow/prevcConfig.d.ts.map +1 -0
- package/dist/workflow/prevcConfig.js +153 -0
- package/dist/workflow/prevcConfig.js.map +1 -0
- package/dist/workflow/roles.d.ts +44 -0
- package/dist/workflow/roles.d.ts.map +1 -0
- package/dist/workflow/roles.js +112 -0
- package/dist/workflow/roles.js.map +1 -0
- package/dist/workflow/scaling.d.ts +44 -0
- package/dist/workflow/scaling.d.ts.map +1 -0
- package/dist/workflow/scaling.js +224 -0
- package/dist/workflow/scaling.js.map +1 -0
- package/dist/workflow/skills/frontmatter.d.ts +23 -0
- package/dist/workflow/skills/frontmatter.d.ts.map +1 -0
- package/dist/workflow/skills/frontmatter.js +100 -0
- package/dist/workflow/skills/frontmatter.js.map +1 -0
- package/dist/workflow/skills/index.d.ts +10 -0
- package/dist/workflow/skills/index.d.ts.map +1 -0
- package/dist/workflow/skills/index.js +22 -0
- package/dist/workflow/skills/index.js.map +1 -0
- package/dist/workflow/skills/skillRegistry.d.ts +60 -0
- package/dist/workflow/skills/skillRegistry.d.ts.map +1 -0
- package/dist/workflow/skills/skillRegistry.js +257 -0
- package/dist/workflow/skills/skillRegistry.js.map +1 -0
- package/dist/workflow/skills/skillTemplates.d.ts +16 -0
- package/dist/workflow/skills/skillTemplates.d.ts.map +1 -0
- package/dist/workflow/skills/skillTemplates.js +610 -0
- package/dist/workflow/skills/skillTemplates.js.map +1 -0
- package/dist/workflow/skills/types.d.ts +72 -0
- package/dist/workflow/skills/types.d.ts.map +1 -0
- package/dist/workflow/skills/types.js +48 -0
- package/dist/workflow/skills/types.js.map +1 -0
- package/dist/workflow/status/statusManager.d.ts +84 -0
- package/dist/workflow/status/statusManager.d.ts.map +1 -0
- package/dist/workflow/status/statusManager.js +402 -0
- package/dist/workflow/status/statusManager.js.map +1 -0
- package/dist/workflow/status/templates.d.ts +40 -0
- package/dist/workflow/status/templates.d.ts.map +1 -0
- package/dist/workflow/status/templates.js +148 -0
- package/dist/workflow/status/templates.js.map +1 -0
- package/dist/workflow/types.d.ts +178 -0
- package/dist/workflow/types.d.ts.map +1 -0
- package/dist/workflow/types.js +25 -0
- package/dist/workflow/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Project Type Classifier
|
|
4
|
+
*
|
|
5
|
+
* Classifies projects into categories based on detected stack information.
|
|
6
|
+
* Used to filter which agents, skills, and documentation are relevant.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.FRAMEWORK_CATEGORIES = exports.PROJECT_TYPES = void 0;
|
|
10
|
+
exports.classifyProject = classifyProject;
|
|
11
|
+
exports.detectCLILibraries = detectCLILibraries;
|
|
12
|
+
exports.isLibraryPackage = isLibraryPackage;
|
|
13
|
+
exports.PROJECT_TYPES = [
|
|
14
|
+
'cli',
|
|
15
|
+
'web-frontend',
|
|
16
|
+
'web-backend',
|
|
17
|
+
'full-stack',
|
|
18
|
+
'mobile',
|
|
19
|
+
'library',
|
|
20
|
+
'monorepo',
|
|
21
|
+
'desktop',
|
|
22
|
+
'unknown',
|
|
23
|
+
];
|
|
24
|
+
/**
|
|
25
|
+
* Framework categories for project type detection.
|
|
26
|
+
* Exported for testing and extensibility.
|
|
27
|
+
*/
|
|
28
|
+
exports.FRAMEWORK_CATEGORIES = {
|
|
29
|
+
frontend: [
|
|
30
|
+
'react',
|
|
31
|
+
'vue',
|
|
32
|
+
'angular',
|
|
33
|
+
'svelte',
|
|
34
|
+
'nextjs',
|
|
35
|
+
'nuxt',
|
|
36
|
+
'gatsby',
|
|
37
|
+
'remix',
|
|
38
|
+
'astro',
|
|
39
|
+
'solid',
|
|
40
|
+
'qwik',
|
|
41
|
+
],
|
|
42
|
+
backend: [
|
|
43
|
+
'express',
|
|
44
|
+
'nestjs',
|
|
45
|
+
'fastify',
|
|
46
|
+
'koa',
|
|
47
|
+
'hapi',
|
|
48
|
+
'django',
|
|
49
|
+
'flask',
|
|
50
|
+
'fastapi',
|
|
51
|
+
'rails',
|
|
52
|
+
'laravel',
|
|
53
|
+
'spring',
|
|
54
|
+
'phoenix',
|
|
55
|
+
'gin',
|
|
56
|
+
'echo',
|
|
57
|
+
'fiber',
|
|
58
|
+
],
|
|
59
|
+
mobile: ['react-native', 'flutter', 'ionic', 'capacitor', 'expo'],
|
|
60
|
+
desktop: ['electron', 'tauri', 'neutralino'],
|
|
61
|
+
cli: [
|
|
62
|
+
'commander',
|
|
63
|
+
'yargs',
|
|
64
|
+
'meow',
|
|
65
|
+
'inquirer',
|
|
66
|
+
'prompts',
|
|
67
|
+
'chalk',
|
|
68
|
+
'ora',
|
|
69
|
+
'listr',
|
|
70
|
+
'oclif',
|
|
71
|
+
'clipanion',
|
|
72
|
+
'cac',
|
|
73
|
+
'arg',
|
|
74
|
+
],
|
|
75
|
+
monorepo: ['lerna', 'nx', 'turborepo', 'pnpm-workspace', 'rush'],
|
|
76
|
+
};
|
|
77
|
+
/** Confidence thresholds for classification */
|
|
78
|
+
const CONFIDENCE_THRESHOLDS = {
|
|
79
|
+
high: 3, // 3+ reasons = high confidence
|
|
80
|
+
medium: 1, // 1-2 reasons = medium confidence
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Helper to check if any framework matches a category (case-insensitive)
|
|
84
|
+
*/
|
|
85
|
+
function matchesCategory(frameworks, category) {
|
|
86
|
+
return frameworks.some((f) => category.some((c) => f.toLowerCase().includes(c)));
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Helper to get matching frameworks from a category
|
|
90
|
+
*/
|
|
91
|
+
function getMatchingFrameworks(frameworks, category) {
|
|
92
|
+
return frameworks.filter((f) => category.some((c) => f.toLowerCase().includes(c)));
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Classify a project based on its detected stack
|
|
96
|
+
*/
|
|
97
|
+
function classifyProject(stack) {
|
|
98
|
+
const reasoning = [];
|
|
99
|
+
const detectedTypes = [];
|
|
100
|
+
const extStack = stack;
|
|
101
|
+
// Check for monorepo first (can contain other types)
|
|
102
|
+
const hasMonorepoTools = stack.isMonorepo ||
|
|
103
|
+
stack.buildTools.some((t) => exports.FRAMEWORK_CATEGORIES.monorepo.includes(t));
|
|
104
|
+
if (hasMonorepoTools) {
|
|
105
|
+
detectedTypes.push('monorepo');
|
|
106
|
+
reasoning.push('Monorepo tools detected (lerna, nx, turborepo, or pnpm-workspace)');
|
|
107
|
+
}
|
|
108
|
+
// Check for mobile project
|
|
109
|
+
const hasMobileFramework = matchesCategory(stack.frameworks, exports.FRAMEWORK_CATEGORIES.mobile);
|
|
110
|
+
if (hasMobileFramework) {
|
|
111
|
+
detectedTypes.push('mobile');
|
|
112
|
+
const matched = getMatchingFrameworks(stack.frameworks, exports.FRAMEWORK_CATEGORIES.mobile);
|
|
113
|
+
reasoning.push(`Mobile framework detected: ${matched.join(', ')}`);
|
|
114
|
+
}
|
|
115
|
+
// Check for desktop project
|
|
116
|
+
const hasDesktopFramework = matchesCategory(stack.frameworks, exports.FRAMEWORK_CATEGORIES.desktop);
|
|
117
|
+
if (hasDesktopFramework) {
|
|
118
|
+
detectedTypes.push('desktop');
|
|
119
|
+
const matched = getMatchingFrameworks(stack.frameworks, exports.FRAMEWORK_CATEGORIES.desktop);
|
|
120
|
+
reasoning.push(`Desktop framework detected: ${matched.join(', ')}`);
|
|
121
|
+
}
|
|
122
|
+
// Check for frontend and backend frameworks
|
|
123
|
+
const hasFrontendFramework = matchesCategory(stack.frameworks, exports.FRAMEWORK_CATEGORIES.frontend);
|
|
124
|
+
const hasBackendFramework = matchesCategory(stack.frameworks, exports.FRAMEWORK_CATEGORIES.backend);
|
|
125
|
+
// Determine web project type
|
|
126
|
+
if (hasFrontendFramework && hasBackendFramework) {
|
|
127
|
+
detectedTypes.push('full-stack');
|
|
128
|
+
reasoning.push('Both frontend and backend frameworks detected');
|
|
129
|
+
}
|
|
130
|
+
else if (hasFrontendFramework) {
|
|
131
|
+
detectedTypes.push('web-frontend');
|
|
132
|
+
const matched = getMatchingFrameworks(stack.frameworks, exports.FRAMEWORK_CATEGORIES.frontend);
|
|
133
|
+
reasoning.push(`Frontend framework detected: ${matched.join(', ')}`);
|
|
134
|
+
}
|
|
135
|
+
else if (hasBackendFramework) {
|
|
136
|
+
detectedTypes.push('web-backend');
|
|
137
|
+
const matched = getMatchingFrameworks(stack.frameworks, exports.FRAMEWORK_CATEGORIES.backend);
|
|
138
|
+
reasoning.push(`Backend framework detected: ${matched.join(', ')}`);
|
|
139
|
+
}
|
|
140
|
+
// Check for CLI project
|
|
141
|
+
const hasCLIIndicators = extStack.hasBinField ||
|
|
142
|
+
(extStack.cliLibraries && extStack.cliLibraries.length > 0) ||
|
|
143
|
+
stack.files.some((f) => f.match(/^(bin\/|cli\.(js|ts)$)/));
|
|
144
|
+
if (hasCLIIndicators && !hasFrontendFramework && !hasMobileFramework) {
|
|
145
|
+
detectedTypes.push('cli');
|
|
146
|
+
if (extStack.hasBinField) {
|
|
147
|
+
reasoning.push('package.json has bin field');
|
|
148
|
+
}
|
|
149
|
+
if (extStack.cliLibraries && extStack.cliLibraries.length > 0) {
|
|
150
|
+
reasoning.push(`CLI libraries detected: ${extStack.cliLibraries.join(', ')}`);
|
|
151
|
+
}
|
|
152
|
+
if (stack.files.some((f) => f.match(/^(bin\/|cli\.(js|ts)$)/))) {
|
|
153
|
+
reasoning.push('CLI entry files detected (bin/ or cli.js/ts)');
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Check for library/package
|
|
157
|
+
const isLibrary = extStack.hasMainExport &&
|
|
158
|
+
!extStack.hasBinField &&
|
|
159
|
+
!hasFrontendFramework &&
|
|
160
|
+
!hasBackendFramework &&
|
|
161
|
+
!hasMobileFramework;
|
|
162
|
+
if (isLibrary) {
|
|
163
|
+
detectedTypes.push('library');
|
|
164
|
+
reasoning.push('Has main/exports field without bin, frontend, or backend indicators');
|
|
165
|
+
if (extStack.hasTypesField) {
|
|
166
|
+
reasoning.push('Has types/typings field (TypeScript library)');
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Determine primary and secondary types based on priority
|
|
170
|
+
const { primaryType, secondaryTypes } = prioritizeTypes(detectedTypes);
|
|
171
|
+
// Determine confidence based on reasoning count
|
|
172
|
+
const confidence = calculateConfidence(reasoning.length);
|
|
173
|
+
// Add fallback reasoning if nothing detected
|
|
174
|
+
if (primaryType === 'unknown') {
|
|
175
|
+
reasoning.push('Unable to determine project type from detected stack');
|
|
176
|
+
if (stack.primaryLanguage) {
|
|
177
|
+
reasoning.push(`Primary language: ${stack.primaryLanguage}`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return { primaryType, secondaryTypes, confidence, reasoning };
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Type priority order for classification.
|
|
184
|
+
* Higher priority types take precedence when multiple are detected.
|
|
185
|
+
*/
|
|
186
|
+
const TYPE_PRIORITY = [
|
|
187
|
+
'monorepo',
|
|
188
|
+
'full-stack',
|
|
189
|
+
'mobile',
|
|
190
|
+
'desktop',
|
|
191
|
+
'web-frontend',
|
|
192
|
+
'web-backend',
|
|
193
|
+
'cli',
|
|
194
|
+
'library',
|
|
195
|
+
];
|
|
196
|
+
/**
|
|
197
|
+
* Prioritize detected types and return primary + secondary
|
|
198
|
+
*/
|
|
199
|
+
function prioritizeTypes(detectedTypes) {
|
|
200
|
+
let primaryType = 'unknown';
|
|
201
|
+
const secondaryTypes = [];
|
|
202
|
+
for (const type of TYPE_PRIORITY) {
|
|
203
|
+
if (detectedTypes.includes(type)) {
|
|
204
|
+
if (primaryType === 'unknown') {
|
|
205
|
+
primaryType = type;
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
secondaryTypes.push(type);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return { primaryType, secondaryTypes };
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Calculate confidence level based on reasoning count
|
|
216
|
+
*/
|
|
217
|
+
function calculateConfidence(reasoningCount) {
|
|
218
|
+
if (reasoningCount >= CONFIDENCE_THRESHOLDS.high) {
|
|
219
|
+
return 'high';
|
|
220
|
+
}
|
|
221
|
+
if (reasoningCount >= CONFIDENCE_THRESHOLDS.medium) {
|
|
222
|
+
return 'medium';
|
|
223
|
+
}
|
|
224
|
+
return 'low';
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Get CLI libraries from dependencies
|
|
228
|
+
*/
|
|
229
|
+
function detectCLILibraries(dependencies) {
|
|
230
|
+
return exports.FRAMEWORK_CATEGORIES.cli.filter((lib) => lib in dependencies);
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Check if package.json indicates a library
|
|
234
|
+
*/
|
|
235
|
+
function isLibraryPackage(packageJson) {
|
|
236
|
+
return {
|
|
237
|
+
hasMain: !!(packageJson.main || packageJson.exports),
|
|
238
|
+
hasBin: !!packageJson.bin,
|
|
239
|
+
hasTypes: !!(packageJson.types || packageJson.typings),
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=projectTypeClassifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectTypeClassifier.js","sourceRoot":"","sources":["../../../src/services/stack/projectTypeClassifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold Filter
|
|
3
|
+
*
|
|
4
|
+
* Provides filtering logic to determine which agents, docs, and skills
|
|
5
|
+
* are relevant for each project type.
|
|
6
|
+
*
|
|
7
|
+
* Design: Uses a "core + extras" pattern for maintainability.
|
|
8
|
+
* Core items are always included; extras are added per project type.
|
|
9
|
+
*/
|
|
10
|
+
import { ProjectType } from './projectTypeClassifier';
|
|
11
|
+
import { AgentType } from '../../generators/agents/agentTypes';
|
|
12
|
+
import { BuiltInSkillType } from '../../workflow/skills/types';
|
|
13
|
+
/**
|
|
14
|
+
* Core agents that are always included regardless of project type
|
|
15
|
+
*/
|
|
16
|
+
export declare const CORE_AGENTS: readonly AgentType[];
|
|
17
|
+
/**
|
|
18
|
+
* Core documentation that is always included
|
|
19
|
+
*/
|
|
20
|
+
export declare const CORE_DOCS: readonly string[];
|
|
21
|
+
/**
|
|
22
|
+
* Core skills that are always included
|
|
23
|
+
*/
|
|
24
|
+
export declare const CORE_SKILLS: readonly BuiltInSkillType[];
|
|
25
|
+
/**
|
|
26
|
+
* Agent filtering matrix - which agents are relevant for each project type
|
|
27
|
+
* Built from CORE_AGENTS + EXTRA_AGENTS_BY_TYPE for maintainability
|
|
28
|
+
*/
|
|
29
|
+
export declare const AGENT_FILTER_MATRIX: Record<"unknown" | "cli" | "web-frontend" | "web-backend" | "full-stack" | "mobile" | "library" | "monorepo" | "desktop", Record<"code-reviewer" | "bug-fixer" | "feature-developer" | "refactoring-specialist" | "test-writer" | "documentation-writer" | "performance-optimizer" | "security-auditor" | "backend-specialist" | "frontend-specialist" | "architect-specialist" | "devops-specialist" | "database-specialist" | "mobile-specialist", boolean>>;
|
|
30
|
+
/**
|
|
31
|
+
* Documentation filtering matrix - which docs are relevant for each project type
|
|
32
|
+
* Built from CORE_DOCS + EXTRA_DOCS_BY_TYPE for maintainability
|
|
33
|
+
*/
|
|
34
|
+
export declare const DOCS_FILTER_MATRIX: Record<"unknown" | "cli" | "web-frontend" | "web-backend" | "full-stack" | "mobile" | "library" | "monorepo" | "desktop", Record<string, boolean>>;
|
|
35
|
+
/**
|
|
36
|
+
* Skills filtering matrix - which skills are relevant for each project type
|
|
37
|
+
* Built from CORE_SKILLS + EXTRA_SKILLS_BY_TYPE for maintainability
|
|
38
|
+
*/
|
|
39
|
+
export declare const SKILLS_FILTER_MATRIX: Record<"unknown" | "cli" | "web-frontend" | "web-backend" | "full-stack" | "mobile" | "library" | "monorepo" | "desktop", Record<"documentation" | "commit-message" | "pr-review" | "code-review" | "test-generation" | "refactoring" | "bug-investigation" | "feature-breakdown" | "api-design" | "security-audit", boolean>>;
|
|
40
|
+
/**
|
|
41
|
+
* Get filtered list of agents for a project type
|
|
42
|
+
* Uses core + extras pattern for efficiency
|
|
43
|
+
*/
|
|
44
|
+
export declare function getAgentsForProjectType(projectType: ProjectType): AgentType[];
|
|
45
|
+
/**
|
|
46
|
+
* Get filtered list of documentation keys for a project type
|
|
47
|
+
* Uses core + extras pattern for efficiency
|
|
48
|
+
*/
|
|
49
|
+
export declare function getDocsForProjectType(projectType: ProjectType): string[];
|
|
50
|
+
/**
|
|
51
|
+
* Get filtered list of skills for a project type
|
|
52
|
+
* Uses core + extras pattern for efficiency
|
|
53
|
+
*/
|
|
54
|
+
export declare function getSkillsForProjectType(projectType: ProjectType): BuiltInSkillType[];
|
|
55
|
+
/**
|
|
56
|
+
* Get all scaffolds filtered by project type
|
|
57
|
+
*/
|
|
58
|
+
export declare function getFilteredScaffolds(projectType: ProjectType): {
|
|
59
|
+
agents: AgentType[];
|
|
60
|
+
docs: string[];
|
|
61
|
+
skills: BuiltInSkillType[];
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Check if a specific agent should be included for a project type
|
|
65
|
+
*/
|
|
66
|
+
export declare function shouldIncludeAgent(projectType: ProjectType, agent: AgentType): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Check if a specific doc should be included for a project type
|
|
69
|
+
*/
|
|
70
|
+
export declare function shouldIncludeDoc(projectType: ProjectType, doc: string): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Check if a specific skill should be included for a project type
|
|
73
|
+
*/
|
|
74
|
+
export declare function shouldIncludeSkill(projectType: ProjectType, skill: BuiltInSkillType): boolean;
|
|
75
|
+
//# sourceMappingURL=scaffoldFilter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffoldFilter.d.ts","sourceRoot":"","sources":["../../../src/services/stack/scaffoldFilter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAiB,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAe,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAAE,gBAAgB,EAAmB,MAAM,6BAA6B,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAQlC,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,SAAS,MAAM,EAK7B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,gBAAgB,EAQzC,CAAC;AA6FX;;;GAGG;AACH,eAAO,MAAM,mBAAmB,gcAAqB,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,oJAAoB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,gUAAsB,CAAC;AAExD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,EAAE,CAG7E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,EAAE,CAGxE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,WAAW,GAAG,gBAAgB,EAAE,CAGpF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG;IAC9D,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B,CAMA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAGtF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAG/E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAG7F"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Scaffold Filter
|
|
4
|
+
*
|
|
5
|
+
* Provides filtering logic to determine which agents, docs, and skills
|
|
6
|
+
* are relevant for each project type.
|
|
7
|
+
*
|
|
8
|
+
* Design: Uses a "core + extras" pattern for maintainability.
|
|
9
|
+
* Core items are always included; extras are added per project type.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.SKILLS_FILTER_MATRIX = exports.DOCS_FILTER_MATRIX = exports.AGENT_FILTER_MATRIX = exports.CORE_SKILLS = exports.CORE_DOCS = exports.CORE_AGENTS = void 0;
|
|
13
|
+
exports.getAgentsForProjectType = getAgentsForProjectType;
|
|
14
|
+
exports.getDocsForProjectType = getDocsForProjectType;
|
|
15
|
+
exports.getSkillsForProjectType = getSkillsForProjectType;
|
|
16
|
+
exports.getFilteredScaffolds = getFilteredScaffolds;
|
|
17
|
+
exports.shouldIncludeAgent = shouldIncludeAgent;
|
|
18
|
+
exports.shouldIncludeDoc = shouldIncludeDoc;
|
|
19
|
+
exports.shouldIncludeSkill = shouldIncludeSkill;
|
|
20
|
+
const projectTypeClassifier_1 = require("./projectTypeClassifier");
|
|
21
|
+
const agentTypes_1 = require("../../generators/agents/agentTypes");
|
|
22
|
+
const guideRegistry_1 = require("../../generators/documentation/guideRegistry");
|
|
23
|
+
const types_1 = require("../../workflow/skills/types");
|
|
24
|
+
/**
|
|
25
|
+
* Core agents that are always included regardless of project type
|
|
26
|
+
*/
|
|
27
|
+
exports.CORE_AGENTS = [
|
|
28
|
+
'code-reviewer',
|
|
29
|
+
'bug-fixer',
|
|
30
|
+
'feature-developer',
|
|
31
|
+
'refactoring-specialist',
|
|
32
|
+
'test-writer',
|
|
33
|
+
'documentation-writer',
|
|
34
|
+
'performance-optimizer',
|
|
35
|
+
];
|
|
36
|
+
/**
|
|
37
|
+
* Core documentation that is always included
|
|
38
|
+
*/
|
|
39
|
+
exports.CORE_DOCS = [
|
|
40
|
+
'project-overview',
|
|
41
|
+
'development-workflow',
|
|
42
|
+
'testing-strategy',
|
|
43
|
+
'tooling',
|
|
44
|
+
];
|
|
45
|
+
/**
|
|
46
|
+
* Core skills that are always included
|
|
47
|
+
*/
|
|
48
|
+
exports.CORE_SKILLS = [
|
|
49
|
+
'commit-message',
|
|
50
|
+
'pr-review',
|
|
51
|
+
'code-review',
|
|
52
|
+
'test-generation',
|
|
53
|
+
'documentation',
|
|
54
|
+
'refactoring',
|
|
55
|
+
'bug-investigation',
|
|
56
|
+
];
|
|
57
|
+
/**
|
|
58
|
+
* Extra agents to include for specific project types (beyond core)
|
|
59
|
+
*/
|
|
60
|
+
const EXTRA_AGENTS_BY_TYPE = {
|
|
61
|
+
cli: [],
|
|
62
|
+
'web-frontend': ['security-auditor', 'frontend-specialist', 'architect-specialist', 'devops-specialist'],
|
|
63
|
+
'web-backend': ['security-auditor', 'backend-specialist', 'architect-specialist', 'devops-specialist', 'database-specialist'],
|
|
64
|
+
'full-stack': ['security-auditor', 'backend-specialist', 'frontend-specialist', 'architect-specialist', 'devops-specialist', 'database-specialist'],
|
|
65
|
+
mobile: ['security-auditor', 'architect-specialist', 'devops-specialist', 'mobile-specialist'],
|
|
66
|
+
library: [],
|
|
67
|
+
monorepo: ['security-auditor', 'backend-specialist', 'frontend-specialist', 'architect-specialist', 'devops-specialist', 'database-specialist', 'mobile-specialist'],
|
|
68
|
+
desktop: ['security-auditor', 'frontend-specialist', 'architect-specialist', 'devops-specialist'],
|
|
69
|
+
unknown: ['security-auditor', 'backend-specialist', 'frontend-specialist', 'architect-specialist', 'devops-specialist', 'database-specialist', 'mobile-specialist'],
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Extra docs to include for specific project types (beyond core)
|
|
73
|
+
*/
|
|
74
|
+
const EXTRA_DOCS_BY_TYPE = {
|
|
75
|
+
cli: [],
|
|
76
|
+
'web-frontend': ['architecture', 'glossary', 'security'],
|
|
77
|
+
'web-backend': ['architecture', 'glossary', 'data-flow', 'security'],
|
|
78
|
+
'full-stack': ['architecture', 'glossary', 'data-flow', 'security'],
|
|
79
|
+
mobile: ['architecture', 'glossary', 'security'],
|
|
80
|
+
library: [],
|
|
81
|
+
monorepo: ['architecture', 'glossary', 'data-flow', 'security'],
|
|
82
|
+
desktop: ['architecture', 'glossary', 'security'],
|
|
83
|
+
unknown: ['architecture', 'glossary', 'data-flow', 'security'],
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Extra skills to include for specific project types (beyond core)
|
|
87
|
+
*/
|
|
88
|
+
const EXTRA_SKILLS_BY_TYPE = {
|
|
89
|
+
cli: [],
|
|
90
|
+
'web-frontend': ['feature-breakdown', 'security-audit'],
|
|
91
|
+
'web-backend': ['feature-breakdown', 'api-design', 'security-audit'],
|
|
92
|
+
'full-stack': ['feature-breakdown', 'api-design', 'security-audit'],
|
|
93
|
+
mobile: ['feature-breakdown', 'security-audit'],
|
|
94
|
+
library: ['api-design'],
|
|
95
|
+
monorepo: ['feature-breakdown', 'api-design', 'security-audit'],
|
|
96
|
+
desktop: ['feature-breakdown', 'security-audit'],
|
|
97
|
+
unknown: ['feature-breakdown', 'api-design', 'security-audit'],
|
|
98
|
+
};
|
|
99
|
+
// Build filter matrices from core + extras (for backward compatibility with existing exports)
|
|
100
|
+
function buildAgentMatrix() {
|
|
101
|
+
const matrix = {};
|
|
102
|
+
for (const projectType of projectTypeClassifier_1.PROJECT_TYPES) {
|
|
103
|
+
const included = new Set([...exports.CORE_AGENTS, ...EXTRA_AGENTS_BY_TYPE[projectType]]);
|
|
104
|
+
matrix[projectType] = {};
|
|
105
|
+
for (const agent of agentTypes_1.AGENT_TYPES) {
|
|
106
|
+
matrix[projectType][agent] = included.has(agent);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return matrix;
|
|
110
|
+
}
|
|
111
|
+
function buildDocsMatrix() {
|
|
112
|
+
const matrix = {};
|
|
113
|
+
for (const projectType of projectTypeClassifier_1.PROJECT_TYPES) {
|
|
114
|
+
const included = new Set([...exports.CORE_DOCS, ...EXTRA_DOCS_BY_TYPE[projectType]]);
|
|
115
|
+
matrix[projectType] = {};
|
|
116
|
+
for (const doc of guideRegistry_1.DOCUMENT_GUIDE_KEYS) {
|
|
117
|
+
matrix[projectType][doc] = included.has(doc);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return matrix;
|
|
121
|
+
}
|
|
122
|
+
function buildSkillsMatrix() {
|
|
123
|
+
const matrix = {};
|
|
124
|
+
for (const projectType of projectTypeClassifier_1.PROJECT_TYPES) {
|
|
125
|
+
const included = new Set([...exports.CORE_SKILLS, ...EXTRA_SKILLS_BY_TYPE[projectType]]);
|
|
126
|
+
matrix[projectType] = {};
|
|
127
|
+
for (const skill of types_1.BUILT_IN_SKILLS) {
|
|
128
|
+
matrix[projectType][skill] = included.has(skill);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return matrix;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Agent filtering matrix - which agents are relevant for each project type
|
|
135
|
+
* Built from CORE_AGENTS + EXTRA_AGENTS_BY_TYPE for maintainability
|
|
136
|
+
*/
|
|
137
|
+
exports.AGENT_FILTER_MATRIX = buildAgentMatrix();
|
|
138
|
+
/**
|
|
139
|
+
* Documentation filtering matrix - which docs are relevant for each project type
|
|
140
|
+
* Built from CORE_DOCS + EXTRA_DOCS_BY_TYPE for maintainability
|
|
141
|
+
*/
|
|
142
|
+
exports.DOCS_FILTER_MATRIX = buildDocsMatrix();
|
|
143
|
+
/**
|
|
144
|
+
* Skills filtering matrix - which skills are relevant for each project type
|
|
145
|
+
* Built from CORE_SKILLS + EXTRA_SKILLS_BY_TYPE for maintainability
|
|
146
|
+
*/
|
|
147
|
+
exports.SKILLS_FILTER_MATRIX = buildSkillsMatrix();
|
|
148
|
+
/**
|
|
149
|
+
* Get filtered list of agents for a project type
|
|
150
|
+
* Uses core + extras pattern for efficiency
|
|
151
|
+
*/
|
|
152
|
+
function getAgentsForProjectType(projectType) {
|
|
153
|
+
const extras = EXTRA_AGENTS_BY_TYPE[projectType] ?? [];
|
|
154
|
+
return [...exports.CORE_AGENTS, ...extras];
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get filtered list of documentation keys for a project type
|
|
158
|
+
* Uses core + extras pattern for efficiency
|
|
159
|
+
*/
|
|
160
|
+
function getDocsForProjectType(projectType) {
|
|
161
|
+
const extras = EXTRA_DOCS_BY_TYPE[projectType] ?? [];
|
|
162
|
+
return [...exports.CORE_DOCS, ...extras];
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get filtered list of skills for a project type
|
|
166
|
+
* Uses core + extras pattern for efficiency
|
|
167
|
+
*/
|
|
168
|
+
function getSkillsForProjectType(projectType) {
|
|
169
|
+
const extras = EXTRA_SKILLS_BY_TYPE[projectType] ?? [];
|
|
170
|
+
return [...exports.CORE_SKILLS, ...extras];
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Get all scaffolds filtered by project type
|
|
174
|
+
*/
|
|
175
|
+
function getFilteredScaffolds(projectType) {
|
|
176
|
+
return {
|
|
177
|
+
agents: getAgentsForProjectType(projectType),
|
|
178
|
+
docs: getDocsForProjectType(projectType),
|
|
179
|
+
skills: getSkillsForProjectType(projectType),
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Check if a specific agent should be included for a project type
|
|
184
|
+
*/
|
|
185
|
+
function shouldIncludeAgent(projectType, agent) {
|
|
186
|
+
const included = new Set(getAgentsForProjectType(projectType));
|
|
187
|
+
return included.has(agent);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Check if a specific doc should be included for a project type
|
|
191
|
+
*/
|
|
192
|
+
function shouldIncludeDoc(projectType, doc) {
|
|
193
|
+
const included = new Set(getDocsForProjectType(projectType));
|
|
194
|
+
return included.has(doc);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Check if a specific skill should be included for a project type
|
|
198
|
+
*/
|
|
199
|
+
function shouldIncludeSkill(projectType, skill) {
|
|
200
|
+
const included = new Set(getSkillsForProjectType(projectType));
|
|
201
|
+
return included.has(skill);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Validation: Ensure all project types have entries in extras maps.
|
|
205
|
+
* Called at module load time to catch configuration errors early.
|
|
206
|
+
*/
|
|
207
|
+
function validateConfiguration() {
|
|
208
|
+
for (const projectType of projectTypeClassifier_1.PROJECT_TYPES) {
|
|
209
|
+
if (!(projectType in EXTRA_AGENTS_BY_TYPE)) {
|
|
210
|
+
throw new Error(`Missing EXTRA_AGENTS_BY_TYPE entry for project type: ${projectType}`);
|
|
211
|
+
}
|
|
212
|
+
if (!(projectType in EXTRA_DOCS_BY_TYPE)) {
|
|
213
|
+
throw new Error(`Missing EXTRA_DOCS_BY_TYPE entry for project type: ${projectType}`);
|
|
214
|
+
}
|
|
215
|
+
if (!(projectType in EXTRA_SKILLS_BY_TYPE)) {
|
|
216
|
+
throw new Error(`Missing EXTRA_SKILLS_BY_TYPE entry for project type: ${projectType}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// Validate configuration at module load time
|
|
221
|
+
validateConfiguration();
|
|
222
|
+
//# sourceMappingURL=scaffoldFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffoldFilter.js","sourceRoot":"","sources":["../../../src/services/stack/scaffoldFilter.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AA4JH,0DAGC;AAMD,sDAGC;AAMD,0DAGC;AAKD,oDAUC;AAKD,gDAGC;AAKD,4CAGC;AAKD,gDAGC;AAtND,mEAAqE;AACrE,mEAA4E;AAC5E,gFAAmF;AACnF,uDAAgF;AAEhF;;GAEG;AACU,QAAA,WAAW,GAAyB;IAC/C,eAAe;IACf,WAAW;IACX,mBAAmB;IACnB,wBAAwB;IACxB,aAAa;IACb,sBAAsB;IACtB,uBAAuB;CACf,CAAC;AAEX;;GAEG;AACU,QAAA,SAAS,GAAsB;IAC1C,kBAAkB;IAClB,sBAAsB;IACtB,kBAAkB;IAClB,SAAS;CACD,CAAC;AAEX;;GAEG;AACU,QAAA,WAAW,GAAgC;IACtD,gBAAgB;IAChB,WAAW;IACX,aAAa;IACb,iBAAiB;IACjB,eAAe;IACf,aAAa;IACb,mBAAmB;CACX,CAAC;AAEX;;GAEG;AACH,MAAM,oBAAoB,GAA8C;IACtE,GAAG,EAAE,EAAE;IACP,cAAc,EAAE,CAAC,kBAAkB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB,CAAC;IACxG,aAAa,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,qBAAqB,CAAC;IAC7H,YAAY,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,qBAAqB,CAAC;IACnJ,MAAM,EAAE,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,mBAAmB,CAAC;IAC9F,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,mBAAmB,CAAC;IACpK,OAAO,EAAE,CAAC,kBAAkB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB,CAAC;IACjG,OAAO,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,mBAAmB,CAAC;CACpK,CAAC;AAEF;;GAEG;AACH,MAAM,kBAAkB,GAA2C;IACjE,GAAG,EAAE,EAAE;IACP,cAAc,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC;IACxD,aAAa,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC;IACpE,YAAY,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC;IACnE,MAAM,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC;IAChD,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC;IAC/D,OAAO,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC;IACjD,OAAO,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC;CAC/D,CAAC;AAEF;;GAEG;AACH,MAAM,oBAAoB,GAAqD;IAC7E,GAAG,EAAE,EAAE;IACP,cAAc,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;IACvD,aAAa,EAAE,CAAC,mBAAmB,EAAE,YAAY,EAAE,gBAAgB,CAAC;IACpE,YAAY,EAAE,CAAC,mBAAmB,EAAE,YAAY,EAAE,gBAAgB,CAAC;IACnE,MAAM,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;IAC/C,OAAO,EAAE,CAAC,YAAY,CAAC;IACvB,QAAQ,EAAE,CAAC,mBAAmB,EAAE,YAAY,EAAE,gBAAgB,CAAC;IAC/D,OAAO,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;IAChD,OAAO,EAAE,CAAC,mBAAmB,EAAE,YAAY,EAAE,gBAAgB,CAAC;CAC/D,CAAC;AAEF,8FAA8F;AAC9F,SAAS,gBAAgB;IACvB,MAAM,MAAM,GAAG,EAAqD,CAAC;IAErE,KAAK,MAAM,WAAW,IAAI,qCAAa,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,mBAAW,EAAE,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,CAAC,WAAW,CAAC,GAAG,EAAgC,CAAC;QAEvD,KAAK,MAAM,KAAK,IAAI,wBAAW,EAAE,CAAC;YAChC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,MAAM,GAAG,EAAkD,CAAC;IAElE,KAAK,MAAM,WAAW,IAAI,qCAAa,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,iBAAS,EAAE,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,CAAC,WAAW,CAAC,GAAG,EAA6B,CAAC;QAEpD,KAAK,MAAM,GAAG,IAAI,mCAAmB,EAAE,CAAC;YACtC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,MAAM,GAAG,EAA4D,CAAC;IAE5E,KAAK,MAAM,WAAW,IAAI,qCAAa,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,mBAAW,EAAE,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,CAAC,WAAW,CAAC,GAAG,EAAuC,CAAC;QAE9D,KAAK,MAAM,KAAK,IAAI,uBAAe,EAAE,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACU,QAAA,mBAAmB,GAAG,gBAAgB,EAAE,CAAC;AAEtD;;;GAGG;AACU,QAAA,kBAAkB,GAAG,eAAe,EAAE,CAAC;AAEpD;;;GAGG;AACU,QAAA,oBAAoB,GAAG,iBAAiB,EAAE,CAAC;AAExD;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,WAAwB;IAC9D,MAAM,MAAM,GAAG,oBAAoB,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACvD,OAAO,CAAC,GAAG,mBAAW,EAAE,GAAG,MAAM,CAAgB,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,WAAwB;IAC5D,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACrD,OAAO,CAAC,GAAG,iBAAS,EAAE,GAAG,MAAM,CAAC,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,WAAwB;IAC9D,MAAM,MAAM,GAAG,oBAAoB,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACvD,OAAO,CAAC,GAAG,mBAAW,EAAE,GAAG,MAAM,CAAuB,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,WAAwB;IAK3D,OAAO;QACL,MAAM,EAAE,uBAAuB,CAAC,WAAW,CAAC;QAC5C,IAAI,EAAE,qBAAqB,CAAC,WAAW,CAAC;QACxC,MAAM,EAAE,uBAAuB,CAAC,WAAW,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,WAAwB,EAAE,KAAgB;IAC3E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/D,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,WAAwB,EAAE,GAAW;IACpE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7D,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,WAAwB,EAAE,KAAuB;IAClF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/D,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB;IAC5B,KAAK,MAAM,WAAW,IAAI,qCAAa,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,WAAW,IAAI,oBAAoB,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,wDAAwD,WAAW,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,CAAC,WAAW,IAAI,kBAAkB,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,sDAAsD,WAAW,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,CAAC,CAAC,WAAW,IAAI,oBAAoB,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,wDAAwD,WAAW,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;AACH,CAAC;AAED,6CAA6C;AAC7C,qBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stack Detector Service
|
|
3
|
+
*
|
|
4
|
+
* Detects the technology stack of a project for intelligent defaults.
|
|
5
|
+
*/
|
|
6
|
+
export interface StackInfo {
|
|
7
|
+
primaryLanguage: string | null;
|
|
8
|
+
languages: string[];
|
|
9
|
+
frameworks: string[];
|
|
10
|
+
buildTools: string[];
|
|
11
|
+
testFrameworks: string[];
|
|
12
|
+
files: string[];
|
|
13
|
+
packageManager: string | null;
|
|
14
|
+
isMonorepo: boolean;
|
|
15
|
+
hasDocker: boolean;
|
|
16
|
+
hasCI: boolean;
|
|
17
|
+
hasBinField?: boolean;
|
|
18
|
+
hasMainExport?: boolean;
|
|
19
|
+
hasTypesField?: boolean;
|
|
20
|
+
cliLibraries?: string[];
|
|
21
|
+
}
|
|
22
|
+
export declare class StackDetector {
|
|
23
|
+
/**
|
|
24
|
+
* Detect the technology stack of a project
|
|
25
|
+
*/
|
|
26
|
+
detect(repoPath: string): Promise<StackInfo>;
|
|
27
|
+
/**
|
|
28
|
+
* Get recommended agents based on stack
|
|
29
|
+
*/
|
|
30
|
+
getRecommendedAgents(stack: StackInfo): string[];
|
|
31
|
+
/**
|
|
32
|
+
* Get recommended rules based on stack
|
|
33
|
+
*/
|
|
34
|
+
getRecommendedRules(stack: StackInfo): string[];
|
|
35
|
+
private checkFileExists;
|
|
36
|
+
private countLanguagesByExtension;
|
|
37
|
+
private hasCI;
|
|
38
|
+
/**
|
|
39
|
+
* Analyze package.json for CLI, library, and other indicators
|
|
40
|
+
*/
|
|
41
|
+
private analyzePackageJson;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=stackDetector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stackDetector.d.ts","sourceRoot":"","sources":["../../../src/services/stack/stackDetector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IAEf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAyJD,qBAAa,aAAa;IACxB;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAsFlD;;OAEG;IACH,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE;IAiChD;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE;YAsBjC,eAAe;YAoBf,yBAAyB;YAwBzB,KAAK;IAqBnB;;OAEG;YACW,kBAAkB;CA6DjC"}
|