@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,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Unified Start Service
|
|
4
|
+
*
|
|
5
|
+
* Smart command that detects project state and executes the appropriate workflow.
|
|
6
|
+
* Combines init + fill + workflow init into a single intelligent command.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.StartService = void 0;
|
|
10
|
+
const shared_1 = require("../shared");
|
|
11
|
+
const initService_1 = require("../init/initService");
|
|
12
|
+
const fillService_1 = require("../fill/fillService");
|
|
13
|
+
const workflow_1 = require("../workflow");
|
|
14
|
+
const state_1 = require("../state");
|
|
15
|
+
const stackDetector_1 = require("../stack/stackDetector");
|
|
16
|
+
const workflow_2 = require("../../workflow");
|
|
17
|
+
/**
|
|
18
|
+
* Template to scale mapping
|
|
19
|
+
*/
|
|
20
|
+
const TEMPLATE_TO_SCALE = {
|
|
21
|
+
hotfix: workflow_2.ProjectScale.QUICK,
|
|
22
|
+
feature: workflow_2.ProjectScale.MEDIUM,
|
|
23
|
+
mvp: workflow_2.ProjectScale.LARGE,
|
|
24
|
+
};
|
|
25
|
+
class StartService {
|
|
26
|
+
constructor(deps) {
|
|
27
|
+
this.deps = deps;
|
|
28
|
+
this.initService = new initService_1.InitService({
|
|
29
|
+
ui: deps.ui,
|
|
30
|
+
t: deps.t,
|
|
31
|
+
version: deps.version,
|
|
32
|
+
});
|
|
33
|
+
this.fillService = new fillService_1.FillService({
|
|
34
|
+
ui: deps.ui,
|
|
35
|
+
t: deps.t,
|
|
36
|
+
version: deps.version,
|
|
37
|
+
defaultModel: deps.defaultModel,
|
|
38
|
+
});
|
|
39
|
+
this.stackDetector = new stackDetector_1.StackDetector();
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Run the unified start command
|
|
43
|
+
*/
|
|
44
|
+
async run(repoPath, options = {}) {
|
|
45
|
+
const paths = (0, shared_1.resolveContextPaths)(repoPath);
|
|
46
|
+
const result = {
|
|
47
|
+
initialized: false,
|
|
48
|
+
filled: false,
|
|
49
|
+
workflowStarted: false,
|
|
50
|
+
};
|
|
51
|
+
// Step 1: Detect stack
|
|
52
|
+
const stackInfo = await this.detectStack(paths.absolutePath);
|
|
53
|
+
result.stackDetected = stackInfo;
|
|
54
|
+
// Step 2: Detect project state and initialize if needed
|
|
55
|
+
const detector = new state_1.StateDetector({ projectPath: paths.absolutePath });
|
|
56
|
+
const state = await detector.detect();
|
|
57
|
+
if (state.state === 'new') {
|
|
58
|
+
result.initialized = await this.initializeProject(paths.absolutePath, paths.contextPath, options);
|
|
59
|
+
}
|
|
60
|
+
// Step 3: Fill with LLM if needed
|
|
61
|
+
if (this.shouldFill(state.state, options)) {
|
|
62
|
+
result.filled = await this.fillDocs(paths.absolutePath, paths.contextPath, options);
|
|
63
|
+
}
|
|
64
|
+
// Step 4: Initialize workflow if feature name provided
|
|
65
|
+
if (!options.skipWorkflow && options.featureName) {
|
|
66
|
+
const workflowResult = await this.initializeWorkflow(paths.absolutePath, options.featureName, stackInfo, options);
|
|
67
|
+
result.workflowStarted = workflowResult.started;
|
|
68
|
+
result.scale = workflowResult.scale;
|
|
69
|
+
result.featureName = options.featureName;
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Detect technology stack
|
|
75
|
+
*/
|
|
76
|
+
async detectStack(repoPath) {
|
|
77
|
+
const { result } = await (0, shared_1.withSpinner)(this.deps.ui, this.deps.t('spinner.start.detectingStack'), () => this.stackDetector.detect(repoPath), {
|
|
78
|
+
successMessage: this.deps.t('spinner.start.stackDetected', {
|
|
79
|
+
stack: 'detected',
|
|
80
|
+
}),
|
|
81
|
+
});
|
|
82
|
+
return result || {
|
|
83
|
+
primaryLanguage: null,
|
|
84
|
+
languages: [],
|
|
85
|
+
frameworks: [],
|
|
86
|
+
testFrameworks: [],
|
|
87
|
+
buildTools: [],
|
|
88
|
+
files: [],
|
|
89
|
+
packageManager: null,
|
|
90
|
+
isMonorepo: false,
|
|
91
|
+
hasDocker: false,
|
|
92
|
+
hasCI: false,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Initialize project context
|
|
97
|
+
*/
|
|
98
|
+
async initializeProject(repoPath, contextPath, options) {
|
|
99
|
+
const { success } = await (0, shared_1.withSpinner)(this.deps.ui, this.deps.t('spinner.start.initializing'), () => this.initService.run(repoPath, 'both', {
|
|
100
|
+
output: contextPath,
|
|
101
|
+
semantic: true,
|
|
102
|
+
verbose: options.verbose,
|
|
103
|
+
}), {
|
|
104
|
+
successMessage: this.deps.t('spinner.start.initialized'),
|
|
105
|
+
failMessage: this.deps.t('spinner.start.initFailed'),
|
|
106
|
+
});
|
|
107
|
+
return success;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Check if we should fill docs
|
|
111
|
+
*/
|
|
112
|
+
shouldFill(state, options) {
|
|
113
|
+
if (options.skipFill)
|
|
114
|
+
return false;
|
|
115
|
+
if (!options.apiKey && !this.hasApiKeyInEnv())
|
|
116
|
+
return false;
|
|
117
|
+
return state === 'new' || state === 'unfilled';
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Fill documentation with AI
|
|
121
|
+
*/
|
|
122
|
+
async fillDocs(repoPath, contextPath, options) {
|
|
123
|
+
const { success } = await (0, shared_1.withSpinner)(this.deps.ui, this.deps.t('spinner.start.filling'), () => this.fillService.run(repoPath, {
|
|
124
|
+
output: contextPath,
|
|
125
|
+
model: options.model || this.deps.defaultModel,
|
|
126
|
+
provider: options.provider,
|
|
127
|
+
apiKey: options.apiKey,
|
|
128
|
+
verbose: options.verbose,
|
|
129
|
+
semantic: true,
|
|
130
|
+
}), {
|
|
131
|
+
successMessage: this.deps.t('spinner.start.filled'),
|
|
132
|
+
failMessage: this.deps.t('spinner.start.fillFailed'),
|
|
133
|
+
failStatus: 'warn',
|
|
134
|
+
});
|
|
135
|
+
return success;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Initialize workflow
|
|
139
|
+
*/
|
|
140
|
+
async initializeWorkflow(repoPath, featureName, stackInfo, options) {
|
|
141
|
+
const workflowService = new workflow_1.WorkflowService(repoPath, {
|
|
142
|
+
ui: {
|
|
143
|
+
displaySuccess: (msg) => this.deps.ui.displaySuccess(msg),
|
|
144
|
+
displayError: (msg, err) => this.deps.ui.displayError(msg, err),
|
|
145
|
+
displayInfo: (title, detail) => this.deps.ui.displayInfo(title, detail || ''),
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
// Determine scale from template or auto-detect
|
|
149
|
+
const scale = options.template && options.template !== 'auto'
|
|
150
|
+
? TEMPLATE_TO_SCALE[options.template]
|
|
151
|
+
: undefined;
|
|
152
|
+
try {
|
|
153
|
+
const status = await workflowService.init({
|
|
154
|
+
name: featureName,
|
|
155
|
+
description: `${featureName} - ${stackInfo.primaryLanguage || 'project'}`,
|
|
156
|
+
scale,
|
|
157
|
+
files: stackInfo.files,
|
|
158
|
+
});
|
|
159
|
+
return {
|
|
160
|
+
started: true,
|
|
161
|
+
scale: status.project.scale,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
this.deps.ui.displayError(this.deps.t('errors.start.workflowFailed'), error);
|
|
166
|
+
return { started: false };
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Check if any API key is available in environment
|
|
171
|
+
*/
|
|
172
|
+
hasApiKeyInEnv() {
|
|
173
|
+
return !!(process.env.OPENROUTER_API_KEY ||
|
|
174
|
+
process.env.OPENAI_API_KEY ||
|
|
175
|
+
process.env.ANTHROPIC_API_KEY ||
|
|
176
|
+
process.env.GOOGLE_API_KEY);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
exports.StartService = StartService;
|
|
180
|
+
//# sourceMappingURL=startService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startService.js","sourceRoot":"","sources":["../../../src/services/start/startService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../../src/services/sync/presets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAExD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../../src/services/sync/presets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAExD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,YAAY,CA+B3E,CAAC;AAEF,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,EAAE,CAOrE;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAa5E;AAED,wBAAgB,iBAAiB,IAAI,UAAU,EAAE,CAEhD"}
|
|
@@ -23,6 +23,21 @@ exports.TARGET_PRESETS = {
|
|
|
23
23
|
name: 'cursor',
|
|
24
24
|
path: '.cursor/agents',
|
|
25
25
|
description: 'Cursor AI agents directory'
|
|
26
|
+
},
|
|
27
|
+
windsurf: {
|
|
28
|
+
name: 'windsurf',
|
|
29
|
+
path: '.windsurf/agents',
|
|
30
|
+
description: 'Windsurf (Codeium) agents directory'
|
|
31
|
+
},
|
|
32
|
+
cline: {
|
|
33
|
+
name: 'cline',
|
|
34
|
+
path: '.cline/agents',
|
|
35
|
+
description: 'Cline VS Code extension agents directory'
|
|
36
|
+
},
|
|
37
|
+
continue: {
|
|
38
|
+
name: 'continue',
|
|
39
|
+
path: '.continue/agents',
|
|
40
|
+
description: 'Continue.dev agents directory'
|
|
26
41
|
}
|
|
27
42
|
};
|
|
28
43
|
function resolvePresets(presetName) {
|
|
@@ -44,6 +59,6 @@ function getPresetByPath(targetPath) {
|
|
|
44
59
|
return undefined;
|
|
45
60
|
}
|
|
46
61
|
function getAllPresetNames() {
|
|
47
|
-
return ['claude', 'github', 'cursor', 'all'];
|
|
62
|
+
return ['claude', 'github', 'cursor', 'windsurf', 'cline', 'continue', 'all'];
|
|
48
63
|
}
|
|
49
64
|
//# sourceMappingURL=presets.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../../src/services/sync/presets.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../../src/services/sync/presets.ts"],"names":[],"mappings":";;;;;;AAoCA,wCAOC;AAED,0CAaC;AAED,8CAEC;AA9DD,0DAA6B;AAGhB,QAAA,cAAc,GAAqD;IAC9E,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,8BAA8B;KAC5C;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,iCAAiC;KAC/C;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,4BAA4B;KAC1C;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,qCAAqC;KACnD;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,0CAA0C;KACxD;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,+BAA+B;KAC7C;CACF,CAAC;AAEF,SAAgB,cAAc,CAAC,UAAsB;IACnD,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,MAAM,CAAC,sBAAc,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,MAAM,GAAG,sBAAc,CAAC,UAAU,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC,CAAC;AAED,SAAgB,eAAe,CAAC,UAAkB;IAChD,MAAM,gBAAgB,GAAG,mBAAI,CAAC,SAAS,CAAC,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAElE,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,sBAAc,CAAC,EAAE,CAAC;QACnD,MAAM,gBAAgB,GAAG,mBAAI,CAAC,SAAS,CAAC,mBAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnE,IAAI,gBAAgB,KAAK,gBAAgB;YACrC,gBAAgB,CAAC,UAAU,CAAC,gBAAgB,GAAG,mBAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7D,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CLIInterface } from '../../utils/cliUI';
|
|
2
2
|
import type { TranslateFn } from '../../utils/i18n';
|
|
3
3
|
export type SyncMode = 'symlink' | 'markdown';
|
|
4
|
-
export type PresetName = 'claude' | 'github' | 'cursor' | 'all';
|
|
4
|
+
export type PresetName = 'claude' | 'github' | 'cursor' | 'windsurf' | 'cline' | 'continue' | 'all';
|
|
5
5
|
export interface TargetPreset {
|
|
6
6
|
name: PresetName;
|
|
7
7
|
path: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/sync/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/sync/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,KAAK,CAAC;AAEpG,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,YAAY,CAAC;IACjB,CAAC,EAAE,WAAW,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-Advance Service
|
|
3
|
+
*
|
|
4
|
+
* Automatically detects when phase outputs are complete and advances the workflow.
|
|
5
|
+
*/
|
|
6
|
+
import { PrevcPhase, PrevcStatus } from '../../workflow';
|
|
7
|
+
export interface AutoAdvanceResult {
|
|
8
|
+
shouldAdvance: boolean;
|
|
9
|
+
reason?: string;
|
|
10
|
+
detectedOutputs: string[];
|
|
11
|
+
missingOutputs: string[];
|
|
12
|
+
}
|
|
13
|
+
export declare class AutoAdvanceDetector {
|
|
14
|
+
private contextPath;
|
|
15
|
+
private repoPath;
|
|
16
|
+
constructor(repoPath: string);
|
|
17
|
+
/**
|
|
18
|
+
* Check if the current phase should auto-advance
|
|
19
|
+
*/
|
|
20
|
+
checkAutoAdvance(currentPhase: PrevcPhase, status: PrevcStatus): Promise<AutoAdvanceResult>;
|
|
21
|
+
/**
|
|
22
|
+
* Get human-readable expected output types for a phase
|
|
23
|
+
*/
|
|
24
|
+
private getExpectedOutputTypes;
|
|
25
|
+
/**
|
|
26
|
+
* Watch for file changes and trigger callback when outputs detected
|
|
27
|
+
*/
|
|
28
|
+
watchForOutputs(currentPhase: PrevcPhase, status: PrevcStatus, onOutputsDetected: (outputs: string[]) => void, intervalMs?: number): Promise<() => void>;
|
|
29
|
+
/**
|
|
30
|
+
* Validate outputs for a phase
|
|
31
|
+
*/
|
|
32
|
+
validatePhaseOutputs(phase: PrevcPhase, outputs: string[]): Promise<{
|
|
33
|
+
valid: boolean;
|
|
34
|
+
errors: string[];
|
|
35
|
+
}>;
|
|
36
|
+
}
|
|
37
|
+
export { AutoAdvanceDetector as default };
|
|
38
|
+
//# sourceMappingURL=autoAdvance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoAdvance.d.ts","sourceRoot":"","sources":["../../../src/services/workflow/autoAdvance.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EACL,UAAU,EACV,WAAW,EAEZ,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAyDD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAK5B;;OAEG;IACG,gBAAgB,CACpB,YAAY,EAAE,UAAU,EACxB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,iBAAiB,CAAC;IAwD7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;OAEG;IACG,eAAe,CACnB,YAAY,EAAE,UAAU,EACxB,MAAM,EAAE,WAAW,EACnB,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,EAC9C,UAAU,GAAE,MAAa,GACxB,OAAO,CAAC,MAAM,IAAI,CAAC;IAiCtB;;OAEG;IACG,oBAAoB,CACxB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAkBjD;AAED,OAAO,EAAE,mBAAmB,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Auto-Advance Service
|
|
4
|
+
*
|
|
5
|
+
* Automatically detects when phase outputs are complete and advances the workflow.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.default = exports.AutoAdvanceDetector = void 0;
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const fs = __importStar(require("fs-extra"));
|
|
44
|
+
const glob_1 = require("glob");
|
|
45
|
+
/**
|
|
46
|
+
* Expected outputs for each phase (file patterns)
|
|
47
|
+
*/
|
|
48
|
+
const PHASE_OUTPUT_PATTERNS = {
|
|
49
|
+
P: [
|
|
50
|
+
'**/PRD.md',
|
|
51
|
+
'**/requirements*.md',
|
|
52
|
+
'**/specs*.md',
|
|
53
|
+
'**/user-stories*.md',
|
|
54
|
+
'**/*planning*.md',
|
|
55
|
+
],
|
|
56
|
+
R: [
|
|
57
|
+
'**/architecture*.md',
|
|
58
|
+
'**/design*.md',
|
|
59
|
+
'**/ADR*.md',
|
|
60
|
+
'**/tech-spec*.md',
|
|
61
|
+
'**/*review*.md',
|
|
62
|
+
],
|
|
63
|
+
E: [
|
|
64
|
+
'**/*.ts',
|
|
65
|
+
'**/*.tsx',
|
|
66
|
+
'**/*.js',
|
|
67
|
+
'**/*.jsx',
|
|
68
|
+
'**/*.py',
|
|
69
|
+
'**/*.go',
|
|
70
|
+
'**/*.rs',
|
|
71
|
+
'**/*.java',
|
|
72
|
+
],
|
|
73
|
+
V: [
|
|
74
|
+
'**/*.test.*',
|
|
75
|
+
'**/*.spec.*',
|
|
76
|
+
'**/test_*.py',
|
|
77
|
+
'**/*_test.go',
|
|
78
|
+
'**/tests/**',
|
|
79
|
+
'**/__tests__/**',
|
|
80
|
+
],
|
|
81
|
+
C: [
|
|
82
|
+
'**/CHANGELOG*.md',
|
|
83
|
+
'**/RELEASE*.md',
|
|
84
|
+
'**/deployment*.md',
|
|
85
|
+
'**/*confirmation*.md',
|
|
86
|
+
],
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Minimum number of new files to consider phase complete
|
|
90
|
+
*/
|
|
91
|
+
const PHASE_MIN_FILES = {
|
|
92
|
+
P: 1,
|
|
93
|
+
R: 1,
|
|
94
|
+
E: 1,
|
|
95
|
+
V: 1,
|
|
96
|
+
C: 1,
|
|
97
|
+
};
|
|
98
|
+
class AutoAdvanceDetector {
|
|
99
|
+
constructor(repoPath) {
|
|
100
|
+
this.repoPath = path.resolve(repoPath);
|
|
101
|
+
this.contextPath = path.join(this.repoPath, '.context');
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Check if the current phase should auto-advance
|
|
105
|
+
*/
|
|
106
|
+
async checkAutoAdvance(currentPhase, status) {
|
|
107
|
+
const result = {
|
|
108
|
+
shouldAdvance: false,
|
|
109
|
+
detectedOutputs: [],
|
|
110
|
+
missingOutputs: [],
|
|
111
|
+
};
|
|
112
|
+
const patterns = PHASE_OUTPUT_PATTERNS[currentPhase];
|
|
113
|
+
const minFiles = PHASE_MIN_FILES[currentPhase];
|
|
114
|
+
// Get phase start time
|
|
115
|
+
const phaseStatus = status.phases[currentPhase];
|
|
116
|
+
const phaseStartTime = phaseStatus?.started_at
|
|
117
|
+
? new Date(phaseStatus.started_at)
|
|
118
|
+
: new Date(0);
|
|
119
|
+
// Search for new files matching the patterns
|
|
120
|
+
for (const pattern of patterns) {
|
|
121
|
+
try {
|
|
122
|
+
const matches = await (0, glob_1.glob)(pattern, {
|
|
123
|
+
cwd: this.repoPath,
|
|
124
|
+
ignore: ['node_modules/**', '.git/**', 'dist/**', 'build/**'],
|
|
125
|
+
absolute: true,
|
|
126
|
+
});
|
|
127
|
+
for (const match of matches) {
|
|
128
|
+
try {
|
|
129
|
+
const stats = await fs.stat(match);
|
|
130
|
+
// File was modified after phase started
|
|
131
|
+
if (stats.mtime > phaseStartTime) {
|
|
132
|
+
const relativePath = path.relative(this.repoPath, match);
|
|
133
|
+
if (!result.detectedOutputs.includes(relativePath)) {
|
|
134
|
+
result.detectedOutputs.push(relativePath);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
// File stat failed, skip
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Glob failed, skip pattern
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// Check if we have enough outputs
|
|
148
|
+
if (result.detectedOutputs.length >= minFiles) {
|
|
149
|
+
result.shouldAdvance = true;
|
|
150
|
+
result.reason = `Detected ${result.detectedOutputs.length} output(s) for phase ${currentPhase}`;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
result.missingOutputs = this.getExpectedOutputTypes(currentPhase);
|
|
154
|
+
result.reason = `Waiting for outputs: ${result.missingOutputs.join(', ')}`;
|
|
155
|
+
}
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get human-readable expected output types for a phase
|
|
160
|
+
*/
|
|
161
|
+
getExpectedOutputTypes(phase) {
|
|
162
|
+
const outputMap = {
|
|
163
|
+
P: ['PRD document', 'Requirements specification', 'User stories'],
|
|
164
|
+
R: ['Architecture document', 'Design decisions', 'Technical spec'],
|
|
165
|
+
E: ['Implementation code', 'Source files'],
|
|
166
|
+
V: ['Test files', 'Test results'],
|
|
167
|
+
C: ['Changelog', 'Release notes', 'Documentation updates'],
|
|
168
|
+
};
|
|
169
|
+
return outputMap[phase] || [];
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Watch for file changes and trigger callback when outputs detected
|
|
173
|
+
*/
|
|
174
|
+
async watchForOutputs(currentPhase, status, onOutputsDetected, intervalMs = 5000) {
|
|
175
|
+
let running = true;
|
|
176
|
+
let previousOutputs = new Set();
|
|
177
|
+
const check = async () => {
|
|
178
|
+
if (!running)
|
|
179
|
+
return;
|
|
180
|
+
const result = await this.checkAutoAdvance(currentPhase, status);
|
|
181
|
+
// Find new outputs
|
|
182
|
+
const newOutputs = result.detectedOutputs.filter((o) => !previousOutputs.has(o));
|
|
183
|
+
if (newOutputs.length > 0) {
|
|
184
|
+
newOutputs.forEach((o) => previousOutputs.add(o));
|
|
185
|
+
onOutputsDetected(newOutputs);
|
|
186
|
+
}
|
|
187
|
+
if (running) {
|
|
188
|
+
setTimeout(check, intervalMs);
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
// Start checking
|
|
192
|
+
check();
|
|
193
|
+
// Return stop function
|
|
194
|
+
return () => {
|
|
195
|
+
running = false;
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Validate outputs for a phase
|
|
200
|
+
*/
|
|
201
|
+
async validatePhaseOutputs(phase, outputs) {
|
|
202
|
+
const errors = [];
|
|
203
|
+
for (const output of outputs) {
|
|
204
|
+
const fullPath = path.isAbsolute(output)
|
|
205
|
+
? output
|
|
206
|
+
: path.join(this.repoPath, output);
|
|
207
|
+
if (!(await fs.pathExists(fullPath))) {
|
|
208
|
+
errors.push(`Output file not found: ${output}`);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
valid: errors.length === 0,
|
|
213
|
+
errors,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
exports.AutoAdvanceDetector = AutoAdvanceDetector;
|
|
218
|
+
exports.default = AutoAdvanceDetector;
|
|
219
|
+
//# sourceMappingURL=autoAdvance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoAdvance.js","sourceRoot":"","sources":["../../../src/services/workflow/autoAdvance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/workflow/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACtG,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Workflow Service Exports
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AutoAdvanceDetector = exports.WorkflowService = void 0;
|
|
7
|
+
var workflowService_1 = require("./workflowService");
|
|
8
|
+
Object.defineProperty(exports, "WorkflowService", { enumerable: true, get: function () { return workflowService_1.WorkflowService; } });
|
|
9
|
+
var autoAdvance_1 = require("./autoAdvance");
|
|
10
|
+
Object.defineProperty(exports, "AutoAdvanceDetector", { enumerable: true, get: function () { return autoAdvance_1.AutoAdvanceDetector; } });
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/workflow/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,qDAAsG;AAA7F,kHAAA,eAAe,OAAA;AACxB,6CAAuE;AAA9D,kHAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PREVC Workflow Service
|
|
3
|
+
*
|
|
4
|
+
* High-level service for managing PREVC workflows via CLI and MCP.
|
|
5
|
+
*/
|
|
6
|
+
import { WorkflowSummary, PrevcStatus, PrevcPhase, PrevcRole, ProjectScale, CollaborationSession, CollaborationSynthesis } from '../../workflow';
|
|
7
|
+
/**
|
|
8
|
+
* Workflow service dependencies
|
|
9
|
+
* Uses loose typing to be compatible with CLI and MCP contexts
|
|
10
|
+
*/
|
|
11
|
+
export interface WorkflowServiceDependencies {
|
|
12
|
+
ui?: {
|
|
13
|
+
displaySuccess: (message: string) => void;
|
|
14
|
+
displayError: (message: string, error?: Error) => void;
|
|
15
|
+
displayInfo: (message: string, detail?: string) => void;
|
|
16
|
+
};
|
|
17
|
+
t?: (key: string, params?: Record<string, unknown>) => string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Options for initializing a workflow
|
|
21
|
+
*/
|
|
22
|
+
export interface WorkflowInitOptions {
|
|
23
|
+
name: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
scale?: string | ProjectScale;
|
|
26
|
+
files?: string[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* PREVC Workflow Service
|
|
30
|
+
*/
|
|
31
|
+
export declare class WorkflowService {
|
|
32
|
+
private contextPath;
|
|
33
|
+
private orchestrator;
|
|
34
|
+
private collaborationManager;
|
|
35
|
+
private deps;
|
|
36
|
+
constructor(repoPath: string, deps?: WorkflowServiceDependencies);
|
|
37
|
+
/**
|
|
38
|
+
* Check if a workflow exists
|
|
39
|
+
*/
|
|
40
|
+
hasWorkflow(): Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* Initialize a new workflow
|
|
43
|
+
*/
|
|
44
|
+
init(options: WorkflowInitOptions): Promise<PrevcStatus>;
|
|
45
|
+
/**
|
|
46
|
+
* Get current workflow status
|
|
47
|
+
*/
|
|
48
|
+
getStatus(): Promise<PrevcStatus>;
|
|
49
|
+
/**
|
|
50
|
+
* Get workflow summary for display
|
|
51
|
+
*/
|
|
52
|
+
getSummary(): Promise<WorkflowSummary>;
|
|
53
|
+
/**
|
|
54
|
+
* Get formatted status for CLI display
|
|
55
|
+
*/
|
|
56
|
+
getFormattedStatus(): Promise<string>;
|
|
57
|
+
/**
|
|
58
|
+
* Advance to the next phase
|
|
59
|
+
*/
|
|
60
|
+
advance(outputs?: string[]): Promise<PrevcPhase | null>;
|
|
61
|
+
/**
|
|
62
|
+
* Perform a handoff between roles
|
|
63
|
+
*/
|
|
64
|
+
handoff(from: PrevcRole, to: PrevcRole, artifacts: string[]): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Start a collaboration session
|
|
67
|
+
*/
|
|
68
|
+
startCollaboration(topic: string, participants?: PrevcRole[]): Promise<CollaborationSession>;
|
|
69
|
+
/**
|
|
70
|
+
* Add a contribution to a collaboration session
|
|
71
|
+
*/
|
|
72
|
+
contributeToCollaboration(sessionId: string, role: PrevcRole, message: string): void;
|
|
73
|
+
/**
|
|
74
|
+
* End a collaboration session and get synthesis
|
|
75
|
+
*/
|
|
76
|
+
endCollaboration(sessionId: string): Promise<CollaborationSynthesis | null>;
|
|
77
|
+
/**
|
|
78
|
+
* Get recommended next actions
|
|
79
|
+
*/
|
|
80
|
+
getRecommendedActions(): Promise<string[]>;
|
|
81
|
+
/**
|
|
82
|
+
* Check if workflow is complete
|
|
83
|
+
*/
|
|
84
|
+
isComplete(): Promise<boolean>;
|
|
85
|
+
/**
|
|
86
|
+
* Update the current task
|
|
87
|
+
*/
|
|
88
|
+
updateTask(task: string): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* Start a role in the current phase
|
|
91
|
+
*/
|
|
92
|
+
startRole(role: PrevcRole): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Complete a role's work
|
|
95
|
+
*/
|
|
96
|
+
completeRole(role: PrevcRole, outputs: string[]): Promise<void>;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=workflowService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflowService.d.ts","sourceRoot":"","sources":["../../../src/services/workflow/workflowService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAEL,eAAe,EACf,WAAW,EACX,UAAU,EACV,SAAS,EACT,YAAY,EAEZ,oBAAoB,EAEpB,sBAAsB,EAKvB,MAAM,gBAAgB,CAAC;AAExB;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,EAAE,CAAC,EAAE;QACH,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QAC1C,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;QACvD,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;KACzD,CAAC;IACF,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;CAC/D;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,IAAI,CAA8B;gBAGxC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,2BAAgC;IAQxC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAmC9D;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;IAIvC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC;IAI5C;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IA6B3C;;OAEG;IACG,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAe7D;;OAEG;IACG,OAAO,CACX,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,SAAS,EACb,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC;IAQhB;;OAEG;IACG,kBAAkB,CACtB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,SAAS,EAAE,GACzB,OAAO,CAAC,oBAAoB,CAAC;IAchC;;OAEG;IACH,yBAAyB,CACvB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,GACd,IAAI;IASP;;OAEG;IACG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAIjF;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIhD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAIpC;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAMtE"}
|