@planu/cli 0.90.2 → 0.91.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/dist/config/license-plans.json +3 -1
- package/dist/engine/batch-script-generator/index.d.ts +6 -0
- package/dist/engine/batch-script-generator/index.d.ts.map +1 -0
- package/dist/engine/batch-script-generator/index.js +126 -0
- package/dist/engine/batch-script-generator/index.js.map +1 -0
- package/dist/engine/ci-generator/index.d.ts.map +1 -1
- package/dist/engine/ci-generator/index.js +32 -1
- package/dist/engine/ci-generator/index.js.map +1 -1
- package/dist/engine/ci-generator/output-formats.d.ts +15 -0
- package/dist/engine/ci-generator/output-formats.d.ts.map +1 -0
- package/dist/engine/ci-generator/output-formats.js +52 -0
- package/dist/engine/ci-generator/output-formats.js.map +1 -0
- package/dist/engine/claude-config-auditor/claudemd-auditor.d.ts.map +1 -1
- package/dist/engine/claude-config-auditor/claudemd-auditor.js +139 -31
- package/dist/engine/claude-config-auditor/claudemd-auditor.js.map +1 -1
- package/dist/engine/claude-config-auditor/rules-auditor.d.ts.map +1 -1
- package/dist/engine/claude-config-auditor/rules-auditor.js +87 -49
- package/dist/engine/claude-config-auditor/rules-auditor.js.map +1 -1
- package/dist/engine/claude-config-auditor/scoring.d.ts.map +1 -1
- package/dist/engine/claude-config-auditor/scoring.js +37 -1
- package/dist/engine/claude-config-auditor/scoring.js.map +1 -1
- package/dist/engine/claude-config-auditor/settings-auditor.d.ts.map +1 -1
- package/dist/engine/claude-config-auditor/settings-auditor.js +55 -40
- package/dist/engine/claude-config-auditor/settings-auditor.js.map +1 -1
- package/dist/engine/config-schemas.d.ts.map +1 -1
- package/dist/engine/config-schemas.js +1 -0
- package/dist/engine/config-schemas.js.map +1 -1
- package/dist/engine/context-advisor/btw-advisor.d.ts +11 -0
- package/dist/engine/context-advisor/btw-advisor.d.ts.map +1 -0
- package/dist/engine/context-advisor/btw-advisor.js +29 -0
- package/dist/engine/context-advisor/btw-advisor.js.map +1 -0
- package/dist/engine/facilitate/context-loader.d.ts +12 -0
- package/dist/engine/facilitate/context-loader.d.ts.map +1 -0
- package/dist/engine/facilitate/context-loader.js +156 -0
- package/dist/engine/facilitate/context-loader.js.map +1 -0
- package/dist/engine/facilitate/intent-classifier.d.ts +6 -0
- package/dist/engine/facilitate/intent-classifier.d.ts.map +1 -0
- package/dist/engine/facilitate/intent-classifier.js +153 -0
- package/dist/engine/facilitate/intent-classifier.js.map +1 -0
- package/dist/engine/facilitate/plan-parser.d.ts +7 -0
- package/dist/engine/facilitate/plan-parser.d.ts.map +1 -0
- package/dist/engine/facilitate/plan-parser.js +115 -0
- package/dist/engine/facilitate/plan-parser.js.map +1 -0
- package/dist/engine/facilitate/router.d.ts +6 -0
- package/dist/engine/facilitate/router.d.ts.map +1 -0
- package/dist/engine/facilitate/router.js +71 -0
- package/dist/engine/facilitate/router.js.map +1 -0
- package/dist/engine/hooks/context-injector.d.ts +11 -0
- package/dist/engine/hooks/context-injector.d.ts.map +1 -0
- package/dist/engine/hooks/context-injector.js +163 -0
- package/dist/engine/hooks/context-injector.js.map +1 -0
- package/dist/engine/hooks/hook-templates.d.ts +16 -0
- package/dist/engine/hooks/hook-templates.d.ts.map +1 -0
- package/dist/engine/hooks/hook-templates.js +148 -0
- package/dist/engine/hooks/hook-templates.js.map +1 -0
- package/dist/engine/hooks/plan-mode-detector.d.ts +27 -0
- package/dist/engine/hooks/plan-mode-detector.d.ts.map +1 -0
- package/dist/engine/hooks/plan-mode-detector.js +68 -0
- package/dist/engine/hooks/plan-mode-detector.js.map +1 -0
- package/dist/engine/hooks/plan-mode-scripts.d.ts +10 -0
- package/dist/engine/hooks/plan-mode-scripts.d.ts.map +1 -0
- package/dist/engine/hooks/plan-mode-scripts.js +45 -0
- package/dist/engine/hooks/plan-mode-scripts.js.map +1 -0
- package/dist/engine/model-router/complexity-analyzer.d.ts +9 -1
- package/dist/engine/model-router/complexity-analyzer.d.ts.map +1 -1
- package/dist/engine/model-router/complexity-analyzer.js +44 -1
- package/dist/engine/model-router/complexity-analyzer.js.map +1 -1
- package/dist/engine/model-router/rules-engine.d.ts.map +1 -1
- package/dist/engine/model-router/rules-engine.js +14 -1
- package/dist/engine/model-router/rules-engine.js.map +1 -1
- package/dist/engine/nfr-profile-detector.d.ts.map +1 -1
- package/dist/engine/nfr-profile-detector.js +2 -1
- package/dist/engine/nfr-profile-detector.js.map +1 -1
- package/dist/engine/spec-coverage/core.js.map +1 -1
- package/dist/engine/team-planner/writer-reviewer.d.ts +12 -0
- package/dist/engine/team-planner/writer-reviewer.d.ts.map +1 -0
- package/dist/engine/team-planner/writer-reviewer.js +48 -0
- package/dist/engine/team-planner/writer-reviewer.js.map +1 -0
- package/dist/engine/tool-groups/group-manager.js.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/storage/drift-cache-store.js.map +1 -1
- package/dist/storage/error-telemetry-store.js.map +1 -1
- package/dist/storage/federation-store.js.map +1 -1
- package/dist/storage/global-store.js.map +1 -1
- package/dist/storage/living-dashboard-store.js.map +1 -1
- package/dist/storage/metrics-store.js.map +1 -1
- package/dist/storage/rbac-store.js.map +1 -1
- package/dist/storage/spec-observability-store.js.map +1 -1
- package/dist/storage/worker-metrics-store.js.map +1 -1
- package/dist/storage/worker-store.js.map +1 -1
- package/dist/tools/checkpoint-handler.d.ts.map +1 -1
- package/dist/tools/checkpoint-handler.js +11 -0
- package/dist/tools/checkpoint-handler.js.map +1 -1
- package/dist/tools/clarify-requirements/interview-mode.d.ts +42 -0
- package/dist/tools/clarify-requirements/interview-mode.d.ts.map +1 -0
- package/dist/tools/clarify-requirements/interview-mode.js +342 -0
- package/dist/tools/clarify-requirements/interview-mode.js.map +1 -0
- package/dist/tools/configure-workers-handler.d.ts.map +1 -1
- package/dist/tools/configure-workers-handler.js +81 -0
- package/dist/tools/configure-workers-handler.js.map +1 -1
- package/dist/tools/facilitate.d.ts +1 -5
- package/dist/tools/facilitate.d.ts.map +1 -1
- package/dist/tools/facilitate.js +100 -23
- package/dist/tools/facilitate.js.map +1 -1
- package/dist/tools/generate-automation-guide.d.ts +10 -0
- package/dist/tools/generate-automation-guide.d.ts.map +1 -0
- package/dist/tools/generate-automation-guide.js +222 -0
- package/dist/tools/generate-automation-guide.js.map +1 -0
- package/dist/tools/generate-batch-script.d.ts +27 -0
- package/dist/tools/generate-batch-script.d.ts.map +1 -0
- package/dist/tools/generate-batch-script.js +77 -0
- package/dist/tools/generate-batch-script.js.map +1 -0
- package/dist/tools/generate-sub-agent.d.ts.map +1 -1
- package/dist/tools/generate-sub-agent.js +16 -2
- package/dist/tools/generate-sub-agent.js.map +1 -1
- package/dist/tools/git/branch-ops.d.ts +18 -0
- package/dist/tools/git/branch-ops.d.ts.map +1 -1
- package/dist/tools/git/branch-ops.js +121 -0
- package/dist/tools/git/branch-ops.js.map +1 -1
- package/dist/tools/git/pr-ops.d.ts.map +1 -1
- package/dist/tools/git/pr-ops.js +7 -0
- package/dist/tools/git/pr-ops.js.map +1 -1
- package/dist/tools/init-project/handler.d.ts.map +1 -1
- package/dist/tools/init-project/handler.js +4 -1
- package/dist/tools/init-project/handler.js.map +1 -1
- package/dist/tools/init-project/hooks-configurator.d.ts +17 -0
- package/dist/tools/init-project/hooks-configurator.d.ts.map +1 -0
- package/dist/tools/init-project/hooks-configurator.js +102 -0
- package/dist/tools/init-project/hooks-configurator.js.map +1 -0
- package/dist/tools/init-project/planu-workflow-generator.d.ts +21 -0
- package/dist/tools/init-project/planu-workflow-generator.d.ts.map +1 -0
- package/dist/tools/init-project/planu-workflow-generator.js +73 -0
- package/dist/tools/init-project/planu-workflow-generator.js.map +1 -0
- package/dist/tools/init-project/rules-generator.d.ts +15 -0
- package/dist/tools/init-project/rules-generator.d.ts.map +1 -0
- package/dist/tools/init-project/rules-generator.js +110 -0
- package/dist/tools/init-project/rules-generator.js.map +1 -0
- package/dist/tools/init-project/scaffold-writer.d.ts +3 -0
- package/dist/tools/init-project/scaffold-writer.d.ts.map +1 -1
- package/dist/tools/init-project/scaffold-writer.js +33 -0
- package/dist/tools/init-project/scaffold-writer.js.map +1 -1
- package/dist/tools/integrate-pm.js.map +1 -1
- package/dist/tools/list-sessions.d.ts.map +1 -1
- package/dist/tools/list-sessions.js +8 -0
- package/dist/tools/list-sessions.js.map +1 -1
- package/dist/tools/manage-git.d.ts.map +1 -1
- package/dist/tools/manage-git.js +15 -1
- package/dist/tools/manage-git.js.map +1 -1
- package/dist/tools/orchestrate/state.js.map +1 -1
- package/dist/tools/recommend-model-handler.d.ts.map +1 -1
- package/dist/tools/recommend-model-handler.js +7 -0
- package/dist/tools/recommend-model-handler.js.map +1 -1
- package/dist/tools/register-facilitator-tools.d.ts.map +1 -1
- package/dist/tools/register-facilitator-tools.js +12 -7
- package/dist/tools/register-facilitator-tools.js.map +1 -1
- package/dist/tools/register-generate-automation-guide.d.ts +3 -0
- package/dist/tools/register-generate-automation-guide.d.ts.map +1 -0
- package/dist/tools/register-generate-automation-guide.js +10 -0
- package/dist/tools/register-generate-automation-guide.js.map +1 -0
- package/dist/tools/register-generate-batch-script.d.ts +3 -0
- package/dist/tools/register-generate-batch-script.d.ts.map +1 -0
- package/dist/tools/register-generate-batch-script.js +10 -0
- package/dist/tools/register-generate-batch-script.js.map +1 -0
- package/dist/tools/register-hooks-tools.d.ts.map +1 -1
- package/dist/tools/register-hooks-tools.js +27 -0
- package/dist/tools/register-hooks-tools.js.map +1 -1
- package/dist/tools/register-platform-tools/design-stack-tools.d.ts.map +1 -1
- package/dist/tools/register-platform-tools/design-stack-tools.js +4 -0
- package/dist/tools/register-platform-tools/design-stack-tools.js.map +1 -1
- package/dist/tools/restore-session.d.ts.map +1 -1
- package/dist/tools/restore-session.js +10 -0
- package/dist/tools/restore-session.js.map +1 -1
- package/dist/tools/schemas/ide-config.d.ts +2 -2
- package/dist/tools/schemas/workers-schema.d.ts +1 -0
- package/dist/tools/schemas/workers-schema.d.ts.map +1 -1
- package/dist/tools/schemas/workers-schema.js +10 -2
- package/dist/tools/schemas/workers-schema.js.map +1 -1
- package/dist/tools/start-hooks.d.ts.map +1 -1
- package/dist/tools/start-hooks.js +104 -1
- package/dist/tools/start-hooks.js.map +1 -1
- package/dist/tools/status-handler.d.ts.map +1 -1
- package/dist/tools/status-handler.js +9 -0
- package/dist/tools/status-handler.js.map +1 -1
- package/dist/types/analysis.d.ts +8 -0
- package/dist/types/analysis.d.ts.map +1 -1
- package/dist/types/batch-script.d.ts +36 -0
- package/dist/types/batch-script.d.ts.map +1 -0
- package/dist/types/batch-script.js +3 -0
- package/dist/types/batch-script.js.map +1 -0
- package/dist/types/ci.d.ts +4 -0
- package/dist/types/ci.d.ts.map +1 -1
- package/dist/types/common/tech-enums.d.ts +1 -1
- package/dist/types/common/tech-enums.d.ts.map +1 -1
- package/dist/types/execution.d.ts +9 -0
- package/dist/types/execution.d.ts.map +1 -1
- package/dist/types/facilitator.d.ts +67 -0
- package/dist/types/facilitator.d.ts.map +1 -1
- package/dist/types/file-hooks.d.ts +7 -0
- package/dist/types/file-hooks.d.ts.map +1 -1
- package/dist/types/file-hooks.js +0 -1
- package/dist/types/file-hooks.js.map +1 -1
- package/dist/types/git.d.ts +12 -0
- package/dist/types/git.d.ts.map +1 -1
- package/dist/types/hooks.d.ts +77 -0
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/model-routing.d.ts +16 -0
- package/dist/types/model-routing.d.ts.map +1 -1
- package/dist/types/project/planu-config.d.ts +6 -0
- package/dist/types/project/planu-config.d.ts.map +1 -1
- package/dist/types/session.d.ts +2 -0
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/stack/recommend.d.ts +1 -0
- package/dist/types/stack/recommend.d.ts.map +1 -1
- package/dist/types/status.d.ts +7 -0
- package/dist/types/status.d.ts.map +1 -1
- package/dist/types/team-planner.d.ts +18 -0
- package/dist/types/team-planner.d.ts.map +1 -1
- package/dist/types/workers.d.ts +1 -1
- package/dist/types/workers.d.ts.map +1 -1
- package/package.json +10 -10
- package/src/config/license-plans.json +3 -1
package/dist/tools/facilitate.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { scoreAmbiguity, shouldBlock } from '../engine/ambiguity-detector.js';
|
|
2
2
|
import { setFocus, getFocus, checkFocusDrift, parseChangeFocusDirective, } from '../engine/focus-tracker.js';
|
|
3
3
|
import { getParadigmRecommendations, formatParadigmObservations, } from '../engine/paradigm-advisor.js';
|
|
4
|
+
import { classifyIntent } from '../engine/facilitate/intent-classifier.js';
|
|
5
|
+
import { loadContext } from '../engine/facilitate/context-loader.js';
|
|
6
|
+
import { route } from '../engine/facilitate/router.js';
|
|
7
|
+
import { parsePlanContent } from '../engine/facilitate/plan-parser.js';
|
|
4
8
|
// ---------------------------------------------------------------------------
|
|
5
|
-
// Scenario detection
|
|
9
|
+
// Scenario detection (SPEC-037 legacy — kept for backward compatibility)
|
|
6
10
|
// ---------------------------------------------------------------------------
|
|
7
11
|
function detectScenario(description) {
|
|
8
12
|
const lower = description.toLowerCase();
|
|
9
|
-
// Concrete problem indicators — check before existing_project to avoid
|
|
10
|
-
// false positives with phrases like "existing spec"
|
|
11
13
|
if (lower.includes('how to') ||
|
|
12
14
|
lower.includes('how do i') ||
|
|
13
15
|
lower.includes('what tool') ||
|
|
@@ -17,13 +19,11 @@ function detectScenario(description) {
|
|
|
17
19
|
lower.includes('problem')) {
|
|
18
20
|
return 'concrete_problem';
|
|
19
21
|
}
|
|
20
|
-
// Existing project indicators
|
|
21
22
|
if (lower.includes('already have') ||
|
|
22
23
|
lower.includes('my project') ||
|
|
23
24
|
lower.includes('our project') ||
|
|
24
25
|
/existing project/i.test(description) ||
|
|
25
|
-
lower.includes('/')
|
|
26
|
-
) {
|
|
26
|
+
lower.includes('/')) {
|
|
27
27
|
return 'existing_project';
|
|
28
28
|
}
|
|
29
29
|
return 'new_project';
|
|
@@ -44,7 +44,6 @@ function buildNewProjectResponse(step, collectedInfo) {
|
|
|
44
44
|
: `Got it! ${Object.values(collectedInfo).join(', ')}\n\n`;
|
|
45
45
|
return `${intro}Step ${step + 1}/3: ${question}`;
|
|
46
46
|
}
|
|
47
|
-
// All 3 steps complete — suggest create_spec
|
|
48
47
|
const info = Object.values(collectedInfo).join(' | ');
|
|
49
48
|
return (`Great — I have enough context to generate your spec.\n\n` +
|
|
50
49
|
`Summary: ${info}\n\n` +
|
|
@@ -97,10 +96,6 @@ function buildConcreteProblemResponse(description) {
|
|
|
97
96
|
// ---------------------------------------------------------------------------
|
|
98
97
|
// Paradigm observations (SPEC-035b)
|
|
99
98
|
// ---------------------------------------------------------------------------
|
|
100
|
-
/**
|
|
101
|
-
* Builds paradigm expert voice observations from a pre-computed ParadigmReport.
|
|
102
|
-
* Degrades gracefully when no detection data is available.
|
|
103
|
-
*/
|
|
104
99
|
export function buildParadigmObservations(paradigmReport) {
|
|
105
100
|
if (!paradigmReport) {
|
|
106
101
|
return '';
|
|
@@ -145,11 +140,97 @@ function generateExpertObservations(description) {
|
|
|
145
140
|
return observations;
|
|
146
141
|
}
|
|
147
142
|
// ---------------------------------------------------------------------------
|
|
143
|
+
// SPEC-264: Routing suggestion text
|
|
144
|
+
// ---------------------------------------------------------------------------
|
|
145
|
+
function buildRoutingSuggestion(decision) {
|
|
146
|
+
switch (decision.action) {
|
|
147
|
+
case 'resume':
|
|
148
|
+
return `Resume work on spec ${decision.specId} — it matches your request and is in progress.`;
|
|
149
|
+
case 'create-spec':
|
|
150
|
+
return `Create a new spec for this ${decision.type} request using \`create_spec\`.`;
|
|
151
|
+
case 'direct':
|
|
152
|
+
return decision.reason;
|
|
153
|
+
case 'clarify':
|
|
154
|
+
return decision.question;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// ---------------------------------------------------------------------------
|
|
158
|
+
// SPEC-264: Smart orchestrator path
|
|
159
|
+
// ---------------------------------------------------------------------------
|
|
160
|
+
async function runSmartOrchestrator(description, projectId, planContent) {
|
|
161
|
+
// 1. Classify intent
|
|
162
|
+
const intent = classifyIntent(description);
|
|
163
|
+
// 2. Load context from project data
|
|
164
|
+
const projectPath = projectId ?? process.cwd();
|
|
165
|
+
const ctx = await loadContext(projectPath, intent.keywords);
|
|
166
|
+
// 3. Handle Plan Mode content
|
|
167
|
+
let parsedPlan = null;
|
|
168
|
+
let effectiveDescription = description;
|
|
169
|
+
if (planContent) {
|
|
170
|
+
parsedPlan = parsePlanContent(planContent);
|
|
171
|
+
if (parsedPlan) {
|
|
172
|
+
effectiveDescription =
|
|
173
|
+
`${parsedPlan.title}: ` + parsedPlan.acceptanceCriteria.slice(0, 3).join('; ');
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// 4. Route
|
|
177
|
+
const decision = route(intent, ctx, effectiveDescription);
|
|
178
|
+
// 5. Build compact response (≤150 tokens main content)
|
|
179
|
+
const result = {
|
|
180
|
+
action: 'facilitate',
|
|
181
|
+
routing: decision,
|
|
182
|
+
context: {
|
|
183
|
+
activeCount: ctx.activeSpecs.length,
|
|
184
|
+
relatedFound: ctx.relatedSpecs.map((s) => s.id),
|
|
185
|
+
},
|
|
186
|
+
intent: {
|
|
187
|
+
type: intent.type,
|
|
188
|
+
complexity: intent.complexity,
|
|
189
|
+
confidence: intent.confidence,
|
|
190
|
+
},
|
|
191
|
+
suggestion: buildRoutingSuggestion(decision),
|
|
192
|
+
};
|
|
193
|
+
if (parsedPlan) {
|
|
194
|
+
result.parsedPlan = {
|
|
195
|
+
title: parsedPlan.title,
|
|
196
|
+
acCount: parsedPlan.acceptanceCriteria.length,
|
|
197
|
+
estimatedComplexity: parsedPlan.estimatedComplexity,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
return result;
|
|
201
|
+
}
|
|
202
|
+
// ---------------------------------------------------------------------------
|
|
148
203
|
// Main handler
|
|
149
204
|
// ---------------------------------------------------------------------------
|
|
150
|
-
export function handleFacilitate(params) {
|
|
151
|
-
const { description, projectId, sessionId, scenario: explicitScenario, collectedInfo = {}, step = 0, targetTool, checkFocus = false, changeFocus, paradigmReport, } = params;
|
|
205
|
+
export async function handleFacilitate(params) {
|
|
206
|
+
const { description, projectId, sessionId, scenario: explicitScenario, collectedInfo = {}, step = 0, targetTool, checkFocus = false, changeFocus, paradigmReport, planContent, } = params;
|
|
152
207
|
const sessionKey = sessionId ?? projectId ?? 'default';
|
|
208
|
+
// SPEC-264: When planContent provided OR no explicit scenario/control params given,
|
|
209
|
+
// use the smart orchestrator path.
|
|
210
|
+
const useSmartOrchestrator = planContent !== undefined ||
|
|
211
|
+
(explicitScenario === undefined &&
|
|
212
|
+
targetTool === undefined &&
|
|
213
|
+
!checkFocus &&
|
|
214
|
+
changeFocus === undefined);
|
|
215
|
+
if (useSmartOrchestrator) {
|
|
216
|
+
try {
|
|
217
|
+
const orchestratorResult = await runSmartOrchestrator(description, projectId, planContent);
|
|
218
|
+
const observations = generateExpertObservations(description);
|
|
219
|
+
const paradigmObs = buildParadigmObservations(paradigmReport);
|
|
220
|
+
const merged = { ...orchestratorResult };
|
|
221
|
+
if (observations.length > 0) {
|
|
222
|
+
merged.expertObservations = observations;
|
|
223
|
+
}
|
|
224
|
+
if (paradigmObs) {
|
|
225
|
+
merged.paradigmObservations = paradigmObs;
|
|
226
|
+
}
|
|
227
|
+
return ok(merged);
|
|
228
|
+
}
|
|
229
|
+
catch (err) {
|
|
230
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
231
|
+
return ok({ action: 'facilitate', error: message, fallback: true });
|
|
232
|
+
}
|
|
233
|
+
}
|
|
153
234
|
try {
|
|
154
235
|
// --- Focus change directive ---
|
|
155
236
|
const changeFocusText = changeFocus ?? parseChangeFocusDirective(description);
|
|
@@ -204,9 +285,8 @@ export function handleFacilitate(params) {
|
|
|
204
285
|
message: `Request is clear enough for \`${targetTool}\`. Proceed.`,
|
|
205
286
|
});
|
|
206
287
|
}
|
|
207
|
-
// --- Main facilitate flow ---
|
|
288
|
+
// --- Main facilitate flow (legacy scenario-based) ---
|
|
208
289
|
const scenario = explicitScenario ?? detectScenario(description);
|
|
209
|
-
// Set initial focus for new sessions
|
|
210
290
|
const existingFocus = getFocus(sessionKey);
|
|
211
291
|
if (!existingFocus) {
|
|
212
292
|
setFocus(sessionKey, {
|
|
@@ -214,12 +294,10 @@ export function handleFacilitate(params) {
|
|
|
214
294
|
startedAt: new Date().toISOString(),
|
|
215
295
|
});
|
|
216
296
|
}
|
|
217
|
-
// Generate expert observations (non-blocking)
|
|
218
297
|
const observations = generateExpertObservations(description);
|
|
219
298
|
let guidance;
|
|
220
299
|
switch (scenario) {
|
|
221
300
|
case 'new_project': {
|
|
222
|
-
// Merge current description into collectedInfo for current step
|
|
223
301
|
const updatedInfo = step === 0
|
|
224
302
|
? { ...collectedInfo, step0: description }
|
|
225
303
|
: { ...collectedInfo, [`step${step}`]: description };
|
|
@@ -233,22 +311,21 @@ export function handleFacilitate(params) {
|
|
|
233
311
|
guidance = buildConcreteProblemResponse(description);
|
|
234
312
|
break;
|
|
235
313
|
}
|
|
236
|
-
const
|
|
314
|
+
const legacyResult = {
|
|
237
315
|
action: 'facilitate',
|
|
238
316
|
scenario,
|
|
239
317
|
step,
|
|
240
318
|
guidance,
|
|
241
319
|
};
|
|
242
320
|
if (observations.length > 0) {
|
|
243
|
-
|
|
244
|
-
|
|
321
|
+
legacyResult.expertObservations = observations;
|
|
322
|
+
legacyResult.expertNote = 'Expert observations added below — these do not block execution.';
|
|
245
323
|
}
|
|
246
|
-
// SPEC-035b: Append paradigm expert voice observations when detection data is available
|
|
247
324
|
const paradigmObservations = buildParadigmObservations(paradigmReport);
|
|
248
325
|
if (paradigmObservations) {
|
|
249
|
-
|
|
326
|
+
legacyResult.paradigmObservations = paradigmObservations;
|
|
250
327
|
}
|
|
251
|
-
return ok(
|
|
328
|
+
return ok(legacyResult);
|
|
252
329
|
}
|
|
253
330
|
catch (error) {
|
|
254
331
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facilitate.js","sourceRoot":"","sources":["../../src/tools/facilitate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"facilitate.js","sourceRoot":"","sources":["../../src/tools/facilitate.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAE9E,SAAS,cAAc,CAAC,WAAmB;IACzC,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAExC,IACE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxB,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC1B,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC3B,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAClC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QACrB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EACzB,CAAC;QACD,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,IACE,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC9B,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5B,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC7B,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC;QACrC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EACnB,CAAC;QACD,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,0CAA0C;AAC1C,8EAA8E;AAE9E,MAAM,iBAAiB,GAAG;IACxB,gFAAgF;IAChF,8FAA8F;IAC9F,sFAAsF;CACvF,CAAC;AAEF,SAAS,uBAAuB,CAAC,IAAY,EAAE,aAAqC;IAClF,IAAI,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,KAAK,GACT,IAAI,KAAK,CAAC;YACR,CAAC,CAAC,uFAAuF;YACzF,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/D,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,QAAQ,EAAE,CAAC;IACnD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,OAAO,CACL,0DAA0D;QAC1D,YAAY,IAAI,MAAM;QACtB,0DAA0D;QAC1D,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;QACnD,yEAAyE,CAC1E,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,SAAS,4BAA4B,CAAC,WAAmB;IACvD,OAAO,CACL,4CAA4C;QAC5C,6CAA6C;QAC7C,sEAAsE;QACtE,kDAAkD;QAClD,sCAAsC;QACtC,sBAAsB,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CACnD,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,MAAM,eAAe,GAA+B;IAClD,CAAC,iBAAiB,EAAE,aAAa,EAAE,0BAA0B,CAAC;IAC9D,CAAC,UAAU,EAAE,UAAU,EAAE,0BAA0B,CAAC;IACpD,CAAC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;IAC7C,CAAC,eAAe,EAAE,eAAe,EAAE,wBAAwB,CAAC;IAC5D,CAAC,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,CAAC;IACvD,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC;IAC3C,CAAC,qBAAqB,EAAE,eAAe,EAAE,0BAA0B,CAAC;IACpE,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,sBAAsB,CAAC;IACtE,CAAC,yBAAyB,EAAE,yBAAyB,EAAE,4BAA4B,CAAC;IACpF,CAAC,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,CAAC;CAC7D,CAAC;AAEF,SAAS,4BAA4B,CAAC,WAAmB;IACvD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACnE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;QAC/B,OAAO,CACL,8BAA8B,MAAM,OAAO;YAC3C,uBAAuB,IAAI,QAAQ;YACnC,UAAU,IAAI,sDAAsD,CACrE,CAAC;IACJ,CAAC;IACD,OAAO,CACL,mEAAmE;QACnE,qDAAqD;QACrD,2DAA2D;QAC3D,6CAA6C;QAC7C,gDAAgD;QAChD,oDAAoD;QACpD,yCAAyC,CAC1C,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E;AAE9E,MAAM,UAAU,yBAAyB,CACvC,cAAiD;IAEjD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,eAAe,GAAG,0BAA0B,CAAC,cAAc,CAAC,CAAC;IACnE,OAAO,0BAA0B,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E,SAAS,0BAA0B,CAAC,WAAmB;IACrD,MAAM,YAAY,GAAwB,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAExC,IAAI,gCAAgC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACvD,YAAY,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,8FAA8F;YACpG,MAAM,EAAE,iEAAiE;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,IAAI,qCAAqC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5D,YAAY,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,6DAA6D;YACnE,MAAM,EAAE,oFAAoF;SAC7F,CAAC,CAAC;IACL,CAAC;IAED,IAAI,0BAA0B,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7E,YAAY,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,sEAAsE;YAC5E,MAAM,EAAE,uEAAuE;SAChF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,YAAY,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,mFAAmF;YACzF,MAAM,EAAE,4EAA4E;SACrF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E;AAE9E,SAAS,sBAAsB,CAAC,QAAuB;IACrD,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,uBAAuB,QAAQ,CAAC,MAAM,gDAAgD,CAAC;QAChG,KAAK,aAAa;YAChB,OAAO,8BAA8B,QAAQ,CAAC,IAAI,iCAAiC,CAAC;QACtF,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC,MAAM,CAAC;QACzB,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC,QAAQ,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E;AAE9E,KAAK,UAAU,oBAAoB,CACjC,WAAmB,EACnB,SAA6B,EAC7B,WAA+B;IAE/B,qBAAqB;IACrB,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAE3C,oCAAoC;IACpC,MAAM,WAAW,GAAG,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/C,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE5D,8BAA8B;IAC9B,IAAI,UAAU,GAAwC,IAAI,CAAC;IAC3D,IAAI,oBAAoB,GAAG,WAAW,CAAC;IACvC,IAAI,WAAW,EAAE,CAAC;QAChB,UAAU,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,UAAU,EAAE,CAAC;YACf,oBAAoB;gBAClB,GAAG,UAAU,CAAC,KAAK,IAAI,GAAG,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAED,WAAW;IACX,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC;IAE1D,uDAAuD;IACvD,MAAM,MAAM,GAA4B;QACtC,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE;YACP,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,MAAM;YACnC,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD;QACD,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B;QACD,UAAU,EAAE,sBAAsB,CAAC,QAAQ,CAAC;KAC7C,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,UAAU,GAAG;YAClB,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,OAAO,EAAE,UAAU,CAAC,kBAAkB,CAAC,MAAM;YAC7C,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;SACpD,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAuB;IAC5D,MAAM,EACJ,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,EAAE,gBAAgB,EAC1B,aAAa,GAAG,EAAE,EAClB,IAAI,GAAG,CAAC,EACR,UAAU,EACV,UAAU,GAAG,KAAK,EAClB,WAAW,EACX,cAAc,EACd,WAAW,GACZ,GAAG,MAAM,CAAC;IAEX,MAAM,UAAU,GAAG,SAAS,IAAI,SAAS,IAAI,SAAS,CAAC;IAEvD,oFAAoF;IACpF,mCAAmC;IACnC,MAAM,oBAAoB,GACxB,WAAW,KAAK,SAAS;QACzB,CAAC,gBAAgB,KAAK,SAAS;YAC7B,UAAU,KAAK,SAAS;YACxB,CAAC,UAAU;YACX,WAAW,KAAK,SAAS,CAAC,CAAC;IAE/B,IAAI,oBAAoB,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,kBAAkB,GAAG,MAAM,oBAAoB,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAC3F,MAAM,YAAY,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;YAC7D,MAAM,WAAW,GAAG,yBAAyB,CAAC,cAAc,CAAC,CAAC;YAC9D,MAAM,MAAM,GAA4B,EAAE,GAAG,kBAAkB,EAAE,CAAC;YAClE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,kBAAkB,GAAG,YAAY,CAAC;YAC3C,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,CAAC,oBAAoB,GAAG,WAAW,CAAC;YAC5C,CAAC;YACD,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,iCAAiC;QACjC,MAAM,eAAe,GAAG,WAAW,IAAI,yBAAyB,CAAC,WAAW,CAAC,CAAC;QAC9E,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAe;gBAC3B,SAAS,EAAE,eAAe;gBAC1B,cAAc,EAAE,UAAU;gBAC1B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YACF,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC/B,OAAO,EAAE,CAAC;gBACR,MAAM,EAAE,eAAe;gBACvB,SAAS,EAAE,eAAe;gBAC1B,OAAO,EAAE,sBAAsB,eAAe,sEAAsE;aACrH,CAAC,CAAC;QACL,CAAC;QAED,4BAA4B;QAC5B,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;YACnE,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;oBACR,MAAM,EAAE,sBAAsB;oBAC9B,KAAK;oBACL,OAAO,EAAE,KAAK,CAAC,eAAe;oBAC9B,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,CAAC;gBACR,MAAM,EAAE,eAAe;gBACvB,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC;gBAClC,OAAO,EAAE,oDAAoD;aAC9D,CAAC,CAAC;QACL,CAAC;QAED,8CAA8C;QAC9C,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACnD,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,EAAE,CAAC;oBACR,MAAM,EAAE,iBAAiB;oBACzB,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;oBAC9C,QAAQ,EAAE,SAAS,CAAC,qBAAqB;oBACzC,OAAO,EAAE,oBAAoB,UAAU,sBAAsB,SAAS,CAAC,qBAAqB,EAAE;iBAC/F,CAAC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,CAAC;gBACR,MAAM,EAAE,iBAAiB;gBACzB,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,OAAO,EAAE,iCAAiC,UAAU,cAAc;aACnE,CAAC,CAAC;QACL,CAAC;QAED,uDAAuD;QACvD,MAAM,QAAQ,GAAG,gBAAgB,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;QAEjE,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,QAAQ,CAAC,UAAU,EAAE;gBACnB,SAAS,EAAE,WAAW;gBACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,YAAY,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;QAE7D,IAAI,QAAgB,CAAC;QAErB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,MAAM,WAAW,GACf,IAAI,KAAK,CAAC;oBACR,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE;oBAC1C,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;gBACzD,QAAQ,GAAG,uBAAuB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBACtD,MAAM;YACR,CAAC;YACD,KAAK,kBAAkB;gBACrB,QAAQ,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,kBAAkB;gBACrB,QAAQ,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;gBACrD,MAAM;QACV,CAAC;QAED,MAAM,YAAY,GAA4B;YAC5C,MAAM,EAAE,YAAY;YACpB,QAAQ;YACR,IAAI;YACJ,QAAQ;SACT,CAAC;QAEF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,YAAY,CAAC,kBAAkB,GAAG,YAAY,CAAC;YAC/C,YAAY,CAAC,UAAU,GAAG,iEAAiE,CAAC;QAC9F,CAAC;QAED,MAAM,oBAAoB,GAAG,yBAAyB,CAAC,cAAc,CAAC,CAAC;QACvE,IAAI,oBAAoB,EAAE,CAAC;YACzB,YAAY,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QAC3D,CAAC;QAED,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9E,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,EAAE,CAAC,IAA6B;IACvC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ToolResult } from '../types/index.js';
|
|
3
|
+
export declare const GenerateAutomationGuideInputSchema: z.ZodObject<{
|
|
4
|
+
projectPath: z.ZodString;
|
|
5
|
+
saveToDisk: z.ZodOptional<z.ZodBoolean>;
|
|
6
|
+
includeExamples: z.ZodOptional<z.ZodBoolean>;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
export type GenerateAutomationGuideInput = z.infer<typeof GenerateAutomationGuideInputSchema>;
|
|
9
|
+
export declare function handleGenerateAutomationGuide(args: GenerateAutomationGuideInput): Promise<ToolResult>;
|
|
10
|
+
//# sourceMappingURL=generate-automation-guide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-automation-guide.d.ts","sourceRoot":"","sources":["../../src/tools/generate-automation-guide.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAOpD,eAAO,MAAM,kCAAkC;;;;iBAO7C,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAiQ9F,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,UAAU,CAAC,CAiCrB"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
// tools/generate-automation-guide.ts — Generate Claude Code automation guide (SPEC-257)
|
|
2
|
+
import { mkdir, writeFile } from 'fs/promises';
|
|
3
|
+
import { dirname } from 'path';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { buildClaudeCommand, generateStreamJsonPipeline, getJobPermissionMode, } from '../engine/ci-generator/output-formats.js';
|
|
6
|
+
export const GenerateAutomationGuideInputSchema = z.object({
|
|
7
|
+
projectPath: z.string().describe('Absolute path to the project root'),
|
|
8
|
+
saveToDisk: z.boolean().optional().describe('Save guide to docs/automation-guide.md'),
|
|
9
|
+
includeExamples: z
|
|
10
|
+
.boolean()
|
|
11
|
+
.optional()
|
|
12
|
+
.describe('Include code examples for each section (default: true)'),
|
|
13
|
+
});
|
|
14
|
+
function buildGuide(includeExamples) {
|
|
15
|
+
const sections = [];
|
|
16
|
+
sections.push('# Claude Code Automation Guide');
|
|
17
|
+
sections.push('');
|
|
18
|
+
sections.push('> This guide covers how to automate Claude Code in CI pipelines, scheduled tasks, and non-interactive workflows.');
|
|
19
|
+
sections.push('');
|
|
20
|
+
// Section 1: Non-interactive mode
|
|
21
|
+
sections.push('## 1. Non-Interactive Mode (`claude -p`)');
|
|
22
|
+
sections.push('');
|
|
23
|
+
sections.push('The `-p` flag runs Claude non-interactively — a single prompt, then Claude exits. Ideal for one-off queries and CI pipelines.');
|
|
24
|
+
sections.push('');
|
|
25
|
+
if (includeExamples) {
|
|
26
|
+
sections.push('```bash');
|
|
27
|
+
sections.push(buildClaudeCommand({ prompt: 'Summarize all failing tests', nonInteractive: true }));
|
|
28
|
+
sections.push(buildClaudeCommand({
|
|
29
|
+
prompt: 'Check for security issues',
|
|
30
|
+
nonInteractive: true,
|
|
31
|
+
permissionMode: 'plan',
|
|
32
|
+
}));
|
|
33
|
+
sections.push('```');
|
|
34
|
+
sections.push('');
|
|
35
|
+
}
|
|
36
|
+
// Section 2: Output formats
|
|
37
|
+
sections.push('## 2. Output Formats');
|
|
38
|
+
sections.push('');
|
|
39
|
+
sections.push('Three output formats are available. Choose based on your integration needs:');
|
|
40
|
+
sections.push('');
|
|
41
|
+
sections.push('| Format | Description | Best for |');
|
|
42
|
+
sections.push('|--------|-------------|----------|');
|
|
43
|
+
sections.push('| `text` | Plain text response (default) | Human-readable output, logs |');
|
|
44
|
+
sections.push('| `json` | Full conversation as JSON | Structured parsing, audit trails |');
|
|
45
|
+
sections.push('| `stream-json` | Real-time JSON events streamed | Live dashboards, piping to `jq` |');
|
|
46
|
+
sections.push('');
|
|
47
|
+
if (includeExamples) {
|
|
48
|
+
sections.push('```bash');
|
|
49
|
+
sections.push('# text (default)');
|
|
50
|
+
sections.push(buildClaudeCommand({ prompt: 'List all TODOs', nonInteractive: true }));
|
|
51
|
+
sections.push('');
|
|
52
|
+
sections.push('# json — full conversation object');
|
|
53
|
+
sections.push(buildClaudeCommand({
|
|
54
|
+
prompt: 'Audit dependencies',
|
|
55
|
+
nonInteractive: true,
|
|
56
|
+
outputFormat: 'json',
|
|
57
|
+
}));
|
|
58
|
+
sections.push('');
|
|
59
|
+
sections.push('# stream-json — pipe to jq for filtering');
|
|
60
|
+
sections.push(generateStreamJsonPipeline('Run linter and report issues', '.content'));
|
|
61
|
+
sections.push('```');
|
|
62
|
+
sections.push('');
|
|
63
|
+
}
|
|
64
|
+
// Section 3: Permission modes
|
|
65
|
+
sections.push('## 3. Permission Modes');
|
|
66
|
+
sections.push('');
|
|
67
|
+
sections.push('Permission modes control what actions Claude can take without asking for confirmation:');
|
|
68
|
+
sections.push('');
|
|
69
|
+
sections.push('| Mode | Description | When to use |');
|
|
70
|
+
sections.push('|------|-------------|-------------|');
|
|
71
|
+
sections.push('| `plan` | Read-only analysis — no file writes | Safe exploration, spec validation |');
|
|
72
|
+
sections.push('| `acceptEdits` | Can edit files, asks before running commands | Iterating on code while reviewing |');
|
|
73
|
+
sections.push('| `auto` | Long tasks, reduces prompt fatigue | Requires Team plan + Sonnet/Opus 4.6 |');
|
|
74
|
+
sections.push('| `dontAsk` | Pre-approved tools only, no confirmations | Locked CI environments |');
|
|
75
|
+
sections.push('| `bypassPermissions` | No safety checks — full autonomy | Containers/VMs only |');
|
|
76
|
+
sections.push('');
|
|
77
|
+
sections.push('**Recommended modes per CI job type:**');
|
|
78
|
+
sections.push('');
|
|
79
|
+
sections.push(`- validate → \`${getJobPermissionMode('validate')}\` — safe, read-only spec checks`);
|
|
80
|
+
sections.push(`- lint → \`${getJobPermissionMode('lint')}\` — pre-approved linting tools only`);
|
|
81
|
+
sections.push(`- migrate → \`${getJobPermissionMode('migrate')}\` — automated migrations with Team plan`);
|
|
82
|
+
sections.push(`- container → \`${getJobPermissionMode('container')}\` — full autonomy inside isolated VMs`);
|
|
83
|
+
sections.push(`- review → \`${getJobPermissionMode('review')}\` — edits files while you review commands`);
|
|
84
|
+
sections.push('');
|
|
85
|
+
if (includeExamples) {
|
|
86
|
+
sections.push('```bash');
|
|
87
|
+
sections.push(buildClaudeCommand({
|
|
88
|
+
prompt: 'validate all specs',
|
|
89
|
+
nonInteractive: true,
|
|
90
|
+
permissionMode: 'plan',
|
|
91
|
+
}));
|
|
92
|
+
sections.push('```');
|
|
93
|
+
sections.push('');
|
|
94
|
+
}
|
|
95
|
+
// Section 4: Scheduled tasks
|
|
96
|
+
sections.push('## 4. Scheduled Tasks');
|
|
97
|
+
sections.push('');
|
|
98
|
+
sections.push('Multiple scheduling options exist — choose based on your access requirements:');
|
|
99
|
+
sections.push('');
|
|
100
|
+
sections.push('| Method | Runs when offline | Access to | Best for |');
|
|
101
|
+
sections.push('|--------|-------------------|-----------|----------|');
|
|
102
|
+
sections.push('| **Cloud** (`claude.ai/code`) | Yes | Remote repos only | Background jobs independent of your machine |');
|
|
103
|
+
sections.push('| **Desktop** | No (requires local machine) | Local files, uncommitted changes | Dev-time checks on local work |');
|
|
104
|
+
sections.push('| **GitHub Actions** | Yes | Repo at event time | Repo-event-driven automation |');
|
|
105
|
+
sections.push('| **`/loop`** | No (session only) | Current context | Quick session-scoped repetition |');
|
|
106
|
+
sections.push('');
|
|
107
|
+
sections.push('> **Note**: `/loop` is cancelled when the session exits — not suitable for production automation.');
|
|
108
|
+
sections.push('');
|
|
109
|
+
// Section 5: Fan-out pattern
|
|
110
|
+
sections.push('## 5. Fan-Out Pattern');
|
|
111
|
+
sections.push('');
|
|
112
|
+
sections.push('Process multiple files in parallel by looping with `claude -p` and `--allowedTools`:');
|
|
113
|
+
sections.push('');
|
|
114
|
+
if (includeExamples) {
|
|
115
|
+
sections.push('```bash');
|
|
116
|
+
sections.push('# Fan-out: lint every changed file independently');
|
|
117
|
+
sections.push('for file in $(git diff --name-only HEAD~1); do');
|
|
118
|
+
sections.push(` ${buildClaudeCommand({
|
|
119
|
+
prompt: 'Review this file for issues: $file',
|
|
120
|
+
nonInteractive: true,
|
|
121
|
+
permissionMode: 'plan',
|
|
122
|
+
allowedTools: ['Read', 'Grep'],
|
|
123
|
+
})} &`);
|
|
124
|
+
sections.push('done');
|
|
125
|
+
sections.push('wait # wait for all parallel jobs');
|
|
126
|
+
sections.push('```');
|
|
127
|
+
sections.push('');
|
|
128
|
+
}
|
|
129
|
+
// Section 6: Session resume
|
|
130
|
+
sections.push('## 6. Session Resume');
|
|
131
|
+
sections.push('');
|
|
132
|
+
sections.push('Resume previous Claude sessions to maintain context across invocations:');
|
|
133
|
+
sections.push('');
|
|
134
|
+
sections.push('| Flag | Behavior |');
|
|
135
|
+
sections.push('|------|----------|');
|
|
136
|
+
sections.push('| `--continue` | Resume the most recent session |');
|
|
137
|
+
sections.push('| `--resume <name>` | Resume a named session by identifier |');
|
|
138
|
+
sections.push('| `--from-pr <N>` | Start a session pre-loaded with PR #N context |');
|
|
139
|
+
sections.push('');
|
|
140
|
+
if (includeExamples) {
|
|
141
|
+
sections.push('```bash');
|
|
142
|
+
sections.push('# Continue the last session and run non-interactively');
|
|
143
|
+
sections.push('claude --continue -p "Summarize what was accomplished in the last session"');
|
|
144
|
+
sections.push('');
|
|
145
|
+
sections.push('# Resume a named session');
|
|
146
|
+
sections.push('claude --resume my-migration-session -p "Continue the migration"');
|
|
147
|
+
sections.push('');
|
|
148
|
+
sections.push('# Start from a PR context');
|
|
149
|
+
sections.push('claude --from-pr 42 -p "Review the changes in this PR"');
|
|
150
|
+
sections.push('```');
|
|
151
|
+
sections.push('');
|
|
152
|
+
}
|
|
153
|
+
// Section 7: dontAsk for CI
|
|
154
|
+
sections.push('## 7. `dontAsk` for CI Environments');
|
|
155
|
+
sections.push('');
|
|
156
|
+
sections.push('Use `dontAsk` permission mode in locked CI environments where only pre-approved tools should run. Combined with `--allowedTools`, this gives deterministic, safe automation:');
|
|
157
|
+
sections.push('');
|
|
158
|
+
if (includeExamples) {
|
|
159
|
+
sections.push('```yaml');
|
|
160
|
+
sections.push('# .github/workflows/planu-validate.yml');
|
|
161
|
+
sections.push('name: Planu Spec Validation');
|
|
162
|
+
sections.push('');
|
|
163
|
+
sections.push('on:');
|
|
164
|
+
sections.push(' pull_request:');
|
|
165
|
+
sections.push(' branches: [main, develop]');
|
|
166
|
+
sections.push('');
|
|
167
|
+
sections.push('jobs:');
|
|
168
|
+
sections.push(' validate:');
|
|
169
|
+
sections.push(' name: Validate Specs');
|
|
170
|
+
sections.push(' runs-on: ubuntu-latest');
|
|
171
|
+
sections.push(' steps:');
|
|
172
|
+
sections.push(' - uses: actions/checkout@v4');
|
|
173
|
+
sections.push('');
|
|
174
|
+
sections.push(' - name: Install Claude Code');
|
|
175
|
+
sections.push(' run: npm install -g @anthropic-ai/claude-code');
|
|
176
|
+
sections.push('');
|
|
177
|
+
sections.push(' - name: Validate all specs');
|
|
178
|
+
sections.push(` run: ${buildClaudeCommand({
|
|
179
|
+
prompt: 'validate all specs and report any issues',
|
|
180
|
+
nonInteractive: true,
|
|
181
|
+
permissionMode: 'dontAsk',
|
|
182
|
+
allowedTools: ['Read', 'Glob', 'Grep'],
|
|
183
|
+
})}`);
|
|
184
|
+
sections.push(' env:');
|
|
185
|
+
sections.push(' ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}');
|
|
186
|
+
sections.push('```');
|
|
187
|
+
sections.push('');
|
|
188
|
+
}
|
|
189
|
+
return sections.join('\n');
|
|
190
|
+
}
|
|
191
|
+
export async function handleGenerateAutomationGuide(args) {
|
|
192
|
+
const includeExamples = args.includeExamples ?? true;
|
|
193
|
+
const guide = buildGuide(includeExamples);
|
|
194
|
+
if (args.saveToDisk === true) {
|
|
195
|
+
const outputPath = `${args.projectPath}/docs/automation-guide.md`;
|
|
196
|
+
await mkdir(dirname(outputPath), { recursive: true });
|
|
197
|
+
await writeFile(outputPath, guide, 'utf-8');
|
|
198
|
+
return {
|
|
199
|
+
content: [
|
|
200
|
+
{
|
|
201
|
+
type: 'text',
|
|
202
|
+
text: [
|
|
203
|
+
'## Automation Guide Generated',
|
|
204
|
+
'',
|
|
205
|
+
`Saved to: \`${outputPath}\``,
|
|
206
|
+
'',
|
|
207
|
+
guide,
|
|
208
|
+
].join('\n'),
|
|
209
|
+
},
|
|
210
|
+
],
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
content: [
|
|
215
|
+
{
|
|
216
|
+
type: 'text',
|
|
217
|
+
text: guide,
|
|
218
|
+
},
|
|
219
|
+
],
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=generate-automation-guide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-automation-guide.js","sourceRoot":"","sources":["../../src/tools/generate-automation-guide.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { BatchScriptInput, ToolResult } from '../types/index.js';
|
|
3
|
+
export declare const GenerateBatchScriptInputSchema: z.ZodObject<{
|
|
4
|
+
projectPath: z.ZodString;
|
|
5
|
+
taskDescription: z.ZodString;
|
|
6
|
+
fileGlob: z.ZodString;
|
|
7
|
+
specId: z.ZodOptional<z.ZodString>;
|
|
8
|
+
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
9
|
+
outputFormat: z.ZodOptional<z.ZodEnum<{
|
|
10
|
+
text: "text";
|
|
11
|
+
json: "json";
|
|
12
|
+
"stream-json": "stream-json";
|
|
13
|
+
}>>;
|
|
14
|
+
permissionMode: z.ZodOptional<z.ZodEnum<{
|
|
15
|
+
auto: "auto";
|
|
16
|
+
dontAsk: "dontAsk";
|
|
17
|
+
default: "default";
|
|
18
|
+
}>>;
|
|
19
|
+
pilotCount: z.ZodOptional<z.ZodNumber>;
|
|
20
|
+
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
/**
|
|
23
|
+
* Handle the generate_batch_script tool.
|
|
24
|
+
* Generates full and pilot bash scripts for fan-out batch processing with claude -p.
|
|
25
|
+
*/
|
|
26
|
+
export declare function handleGenerateBatchScript(args: BatchScriptInput): Promise<ToolResult>;
|
|
27
|
+
//# sourceMappingURL=generate-batch-script.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-batch-script.d.ts","sourceRoot":"","sources":["../../src/tools/generate-batch-script.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGtE,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;iBAsCzC,CAAC;AAEH;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,UAAU,CAAC,CAsCrB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// tools/generate-batch-script.ts — Handle generate_batch_script tool calls (SPEC-253)
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { generateBatchScript } from '../engine/batch-script-generator/index.js';
|
|
4
|
+
export const GenerateBatchScriptInputSchema = z.object({
|
|
5
|
+
projectPath: z.string().describe('Absolute path to the project root'),
|
|
6
|
+
taskDescription: z
|
|
7
|
+
.string()
|
|
8
|
+
.describe('What claude -p should do to each file'),
|
|
9
|
+
fileGlob: z
|
|
10
|
+
.string()
|
|
11
|
+
.describe("Glob pattern for files, e.g. 'src/**/*.ts'"),
|
|
12
|
+
specId: z
|
|
13
|
+
.string()
|
|
14
|
+
.optional()
|
|
15
|
+
.describe('SPEC ID for naming the output script, e.g. SPEC-253'),
|
|
16
|
+
allowedTools: z
|
|
17
|
+
.array(z.string())
|
|
18
|
+
.optional()
|
|
19
|
+
.describe("List of allowed tools passed to claude -p, e.g. ['Edit', 'Bash(git commit *)']"),
|
|
20
|
+
outputFormat: z
|
|
21
|
+
.enum(['text', 'json', 'stream-json'])
|
|
22
|
+
.optional()
|
|
23
|
+
.describe('Output format for claude -p: text (default) | json | stream-json'),
|
|
24
|
+
permissionMode: z
|
|
25
|
+
.enum(['auto', 'dontAsk', 'default'])
|
|
26
|
+
.optional()
|
|
27
|
+
.describe('Permission mode for claude -p: auto (default, unattended) | dontAsk (pre-approved tools only) | default'),
|
|
28
|
+
pilotCount: z
|
|
29
|
+
.number()
|
|
30
|
+
.optional()
|
|
31
|
+
.describe('Number of files in the pilot script (default: 3)'),
|
|
32
|
+
dryRun: z
|
|
33
|
+
.boolean()
|
|
34
|
+
.optional()
|
|
35
|
+
.describe('Return script content without writing to disk (default: false)'),
|
|
36
|
+
});
|
|
37
|
+
/**
|
|
38
|
+
* Handle the generate_batch_script tool.
|
|
39
|
+
* Generates full and pilot bash scripts for fan-out batch processing with claude -p.
|
|
40
|
+
*/
|
|
41
|
+
export async function handleGenerateBatchScript(args) {
|
|
42
|
+
const result = await generateBatchScript(args);
|
|
43
|
+
const lines = [
|
|
44
|
+
'## Batch Script Generated',
|
|
45
|
+
'',
|
|
46
|
+
`**Task**: ${args.taskDescription}`,
|
|
47
|
+
`**File glob**: \`${args.fileGlob}\``,
|
|
48
|
+
`**Estimated files**: ~${String(result.estimatedFiles)}`,
|
|
49
|
+
`**Pilot size**: ${String(args.pilotCount ?? 3)} files`,
|
|
50
|
+
'',
|
|
51
|
+
];
|
|
52
|
+
if (args.dryRun) {
|
|
53
|
+
lines.push('> **dry-run mode** — scripts not written to disk');
|
|
54
|
+
lines.push('');
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
lines.push(`**Full script**: \`${result.fullScriptPath}\``);
|
|
58
|
+
lines.push(`**Pilot script**: \`${result.pilotScriptPath}\``);
|
|
59
|
+
lines.push('');
|
|
60
|
+
}
|
|
61
|
+
lines.push('### Recommended workflow');
|
|
62
|
+
lines.push('');
|
|
63
|
+
lines.push('1. **Run pilot first** (validates the task on a small sample):');
|
|
64
|
+
lines.push(` \`\`\`bash\n ${result.suggestedPilotCommand}\n \`\`\``);
|
|
65
|
+
lines.push('2. **Scale up** (run on all files once pilot looks good):');
|
|
66
|
+
lines.push(` \`\`\`bash\n ${result.scaleUpCommand}\n \`\`\``);
|
|
67
|
+
lines.push('');
|
|
68
|
+
lines.push('### Pilot script preview');
|
|
69
|
+
lines.push('');
|
|
70
|
+
lines.push('```bash');
|
|
71
|
+
lines.push(result.pilotScript.trimEnd());
|
|
72
|
+
lines.push('```');
|
|
73
|
+
return {
|
|
74
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=generate-batch-script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-batch-script.js","sourceRoot":"","sources":["../../src/tools/generate-batch-script.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-sub-agent.d.ts","sourceRoot":"","sources":["../../src/tools/generate-sub-agent.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE3E,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"generate-sub-agent.d.ts","sourceRoot":"","sources":["../../src/tools/generate-sub-agent.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE3E,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CA2H7F"}
|