takt 0.3.6 → 0.3.8
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 +81 -25
- package/dist/claude/client.d.ts.map +1 -1
- package/dist/claude/client.js +3 -2
- package/dist/claude/client.js.map +1 -1
- package/dist/claude/executor.d.ts.map +1 -1
- package/dist/claude/executor.js +2 -1
- package/dist/claude/executor.js.map +1 -1
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +52 -21
- package/dist/cli.js.map +1 -1
- package/dist/codex/client.d.ts.map +1 -1
- package/dist/codex/client.js +2 -1
- package/dist/codex/client.js.map +1 -1
- package/dist/commands/addTask.d.ts.map +1 -1
- package/dist/commands/addTask.js +3 -2
- package/dist/commands/addTask.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +0 -7
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/eject.js +3 -3
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/interactive.d.ts.map +1 -1
- package/dist/commands/interactive.js +12 -10
- package/dist/commands/interactive.js.map +1 -1
- package/dist/commands/listTasks.d.ts.map +1 -1
- package/dist/commands/listTasks.js +15 -9
- package/dist/commands/listTasks.js.map +1 -1
- package/dist/commands/pipelineExecution.d.ts +1 -1
- package/dist/commands/pipelineExecution.d.ts.map +1 -1
- package/dist/commands/pipelineExecution.js +15 -25
- package/dist/commands/pipelineExecution.js.map +1 -1
- package/dist/commands/taskExecution.d.ts +14 -6
- package/dist/commands/taskExecution.d.ts.map +1 -1
- package/dist/commands/taskExecution.js +27 -19
- package/dist/commands/taskExecution.js.map +1 -1
- package/dist/commands/watchTasks.d.ts.map +1 -1
- package/dist/commands/watchTasks.js +7 -7
- package/dist/commands/watchTasks.js.map +1 -1
- package/dist/commands/workflow.js +3 -3
- package/dist/commands/workflow.js.map +1 -1
- package/dist/commands/workflowExecution.d.ts +3 -3
- package/dist/commands/workflowExecution.d.ts.map +1 -1
- package/dist/commands/workflowExecution.js +10 -8
- package/dist/commands/workflowExecution.js.map +1 -1
- package/dist/config/globalConfig.d.ts +2 -0
- package/dist/config/globalConfig.d.ts.map +1 -1
- package/dist/config/globalConfig.js +20 -2
- package/dist/config/globalConfig.js.map +1 -1
- package/dist/config/loader.d.ts +2 -2
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +2 -2
- package/dist/config/loader.js.map +1 -1
- package/dist/config/projectConfig.d.ts +0 -2
- package/dist/config/projectConfig.d.ts.map +1 -1
- package/dist/config/projectConfig.js.map +1 -1
- package/dist/config/workflowLoader.d.ts +49 -13
- package/dist/config/workflowLoader.d.ts.map +1 -1
- package/dist/config/workflowLoader.js +139 -51
- package/dist/config/workflowLoader.js.map +1 -1
- package/dist/github/pr.d.ts.map +1 -1
- package/dist/github/pr.js +2 -1
- package/dist/github/pr.js.map +1 -1
- package/dist/mock/client.d.ts.map +1 -1
- package/dist/mock/client.js +5 -2
- package/dist/mock/client.js.map +1 -1
- package/dist/mock/scenario.d.ts +57 -0
- package/dist/mock/scenario.d.ts.map +1 -0
- package/dist/mock/scenario.js +123 -0
- package/dist/mock/scenario.js.map +1 -0
- package/dist/models/schemas.d.ts +1 -0
- package/dist/models/schemas.d.ts.map +1 -1
- package/dist/models/schemas.js +2 -0
- package/dist/models/schemas.js.map +1 -1
- package/dist/models/types.d.ts +2 -0
- package/dist/models/types.d.ts.map +1 -1
- package/dist/task/autoCommit.d.ts.map +1 -1
- package/dist/task/autoCommit.js +6 -25
- package/dist/task/autoCommit.js.map +1 -1
- package/dist/task/git.d.ts +9 -0
- package/dist/task/git.d.ts.map +1 -0
- package/dist/task/git.js +26 -0
- package/dist/task/git.js.map +1 -0
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +2 -1
- package/dist/utils/session.js.map +1 -1
- package/dist/utils/ui.d.ts +4 -1
- package/dist/utils/ui.d.ts.map +1 -1
- package/dist/utils/ui.js +30 -2
- package/dist/utils/ui.js.map +1 -1
- package/dist/workflow/engine.d.ts +1 -1
- package/dist/workflow/engine.d.ts.map +1 -1
- package/dist/workflow/engine.js +4 -3
- package/dist/workflow/engine.js.map +1 -1
- package/dist/workflow/instruction-builder.d.ts +5 -62
- package/dist/workflow/instruction-builder.d.ts.map +1 -1
- package/dist/workflow/instruction-builder.js +5 -139
- package/dist/workflow/instruction-builder.js.map +1 -1
- package/dist/workflow/instruction-context.d.ts +79 -0
- package/dist/workflow/instruction-context.d.ts.map +1 -0
- package/dist/workflow/instruction-context.js +72 -0
- package/dist/workflow/instruction-context.js.map +1 -0
- package/dist/workflow/status-rules.d.ts +21 -0
- package/dist/workflow/status-rules.d.ts.map +1 -0
- package/dist/workflow/status-rules.js +81 -0
- package/dist/workflow/status-rules.js.map +1 -0
- package/dist/workflow/types.d.ts +2 -2
- package/dist/workflow/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/resources/global/en/agents/default/ai-antipattern-reviewer.md +58 -14
- package/resources/global/en/agents/default/architecture-reviewer.md +10 -0
- package/resources/global/en/agents/default/coder.md +82 -0
- package/resources/global/en/workflows/default.yaml +36 -25
- package/resources/global/en/workflows/expert-cqrs.yaml +36 -23
- package/resources/global/en/workflows/expert.yaml +37 -27
- package/resources/global/ja/agents/default/ai-antipattern-reviewer.md +57 -13
- package/resources/global/ja/agents/default/architecture-reviewer.md +10 -0
- package/resources/global/ja/agents/default/coder.md +82 -0
- package/resources/global/ja/workflows/default.yaml +36 -25
- package/resources/global/ja/workflows/expert-cqrs.yaml +36 -23
- package/resources/global/ja/workflows/expert.yaml +37 -28
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectConfig.js","sourceRoot":"","sources":["../../src/config/projectConfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"projectConfig.js","sourceRoot":"","sources":["../../src/config/projectConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,61 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workflow configuration loader
|
|
3
3
|
*
|
|
4
|
-
* Loads workflows with
|
|
5
|
-
* 1.
|
|
6
|
-
* 2.
|
|
4
|
+
* Loads workflows with the following priority:
|
|
5
|
+
* 1. Path-based input (absolute, relative, or home-dir) → load directly from file
|
|
6
|
+
* 2. Project-local workflows: .takt/workflows/{name}.yaml
|
|
7
|
+
* 3. User workflows: ~/.takt/workflows/{name}.yaml
|
|
8
|
+
* 4. Builtin workflows: resources/global/{lang}/workflows/{name}.yaml
|
|
7
9
|
*/
|
|
8
10
|
import type { WorkflowConfig } from '../models/types.js';
|
|
9
11
|
/** Get builtin workflow by name */
|
|
10
12
|
export declare function getBuiltinWorkflow(name: string): WorkflowConfig | null;
|
|
11
13
|
/**
|
|
12
|
-
* Load
|
|
13
|
-
*
|
|
14
|
+
* Load workflow by name (name-based loading only, no path detection).
|
|
15
|
+
*
|
|
16
|
+
* Priority:
|
|
17
|
+
* 1. Project-local workflows → .takt/workflows/{name}.yaml
|
|
18
|
+
* 2. User workflows → ~/.takt/workflows/{name}.yaml
|
|
19
|
+
* 3. Builtin workflows → resources/global/{lang}/workflows/{name}.yaml
|
|
20
|
+
*
|
|
21
|
+
* @param name Workflow name (not a file path)
|
|
22
|
+
* @param projectCwd Project root directory (for project-local workflow resolution)
|
|
14
23
|
*/
|
|
15
|
-
export declare function
|
|
24
|
+
export declare function loadWorkflow(name: string, projectCwd: string): WorkflowConfig | null;
|
|
16
25
|
/**
|
|
17
|
-
* Load
|
|
18
|
-
*
|
|
26
|
+
* Load all workflows with descriptions (for switch command).
|
|
27
|
+
*
|
|
28
|
+
* Priority (later entries override earlier):
|
|
29
|
+
* 1. Builtin workflows
|
|
30
|
+
* 2. User workflows (~/.takt/workflows/)
|
|
31
|
+
* 3. Project-local workflows (.takt/workflows/)
|
|
32
|
+
*/
|
|
33
|
+
export declare function loadAllWorkflows(cwd: string): Map<string, WorkflowConfig>;
|
|
34
|
+
/**
|
|
35
|
+
* List available workflow names (builtin + user + project-local, excluding disabled).
|
|
36
|
+
*
|
|
37
|
+
* @param cwd Project root directory (used to scan project-local .takt/workflows/).
|
|
38
|
+
*/
|
|
39
|
+
export declare function listWorkflows(cwd: string): string[];
|
|
40
|
+
/**
|
|
41
|
+
* Check if a workflow identifier looks like a file path (vs a workflow name).
|
|
42
|
+
*
|
|
43
|
+
* Path indicators:
|
|
44
|
+
* - Starts with `/` (absolute path)
|
|
45
|
+
* - Starts with `~` (home directory)
|
|
46
|
+
* - Starts with `./` or `../` (relative path)
|
|
47
|
+
* - Ends with `.yaml` or `.yml` (file extension)
|
|
48
|
+
*/
|
|
49
|
+
export declare function isWorkflowPath(identifier: string): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Load workflow by identifier (auto-detects name vs path).
|
|
52
|
+
*
|
|
53
|
+
* If the identifier looks like a path (see isWorkflowPath), loads from file.
|
|
54
|
+
* Otherwise, loads by name with the standard priority chain:
|
|
55
|
+
* project-local → user → builtin.
|
|
56
|
+
*
|
|
57
|
+
* @param identifier Workflow name or file path
|
|
58
|
+
* @param projectCwd Project root directory (for project-local resolution and relative path base)
|
|
19
59
|
*/
|
|
20
|
-
export declare function
|
|
21
|
-
/** Load all workflows with descriptions (for switch command) */
|
|
22
|
-
export declare function loadAllWorkflows(): Map<string, WorkflowConfig>;
|
|
23
|
-
/** List available workflows (user + builtin, excluding disabled) */
|
|
24
|
-
export declare function listWorkflows(): string[];
|
|
60
|
+
export declare function loadWorkflowByIdentifier(identifier: string, projectCwd: string): WorkflowConfig | null;
|
|
25
61
|
//# sourceMappingURL=workflowLoader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflowLoader.d.ts","sourceRoot":"","sources":["../../src/config/workflowLoader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"workflowLoader.d.ts","sourceRoot":"","sources":["../../src/config/workflowLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAgE,MAAM,oBAAoB,CAAC;AAIvH,mCAAmC;AACnC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAWtE;AAiQD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,cAAc,GAAG,IAAI,CAiBvB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAkBzE;AAuBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAkBnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAS1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,cAAc,GAAG,IAAI,CAKvB"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workflow configuration loader
|
|
3
3
|
*
|
|
4
|
-
* Loads workflows with
|
|
5
|
-
* 1.
|
|
6
|
-
* 2.
|
|
4
|
+
* Loads workflows with the following priority:
|
|
5
|
+
* 1. Path-based input (absolute, relative, or home-dir) → load directly from file
|
|
6
|
+
* 2. Project-local workflows: .takt/workflows/{name}.yaml
|
|
7
|
+
* 3. User workflows: ~/.takt/workflows/{name}.yaml
|
|
8
|
+
* 4. Builtin workflows: resources/global/{lang}/workflows/{name}.yaml
|
|
7
9
|
*/
|
|
8
10
|
import { readFileSync, existsSync, readdirSync, statSync } from 'node:fs';
|
|
9
|
-
import { join, dirname, basename } from 'node:path';
|
|
11
|
+
import { join, dirname, basename, resolve, isAbsolute } from 'node:path';
|
|
12
|
+
import { homedir } from 'node:os';
|
|
10
13
|
import { parse as parseYaml } from 'yaml';
|
|
11
14
|
import { WorkflowConfigRawSchema } from '../models/schemas.js';
|
|
12
|
-
import { getGlobalWorkflowsDir, getBuiltinWorkflowsDir } from './paths.js';
|
|
15
|
+
import { getGlobalWorkflowsDir, getBuiltinWorkflowsDir, getProjectConfigDir } from './paths.js';
|
|
13
16
|
import { getLanguage, getDisabledBuiltins } from './globalConfig.js';
|
|
14
17
|
/** Get builtin workflow by name */
|
|
15
18
|
export function getBuiltinWorkflow(name) {
|
|
@@ -201,7 +204,7 @@ function normalizeWorkflowConfig(raw, workflowDir) {
|
|
|
201
204
|
* Load a workflow from a YAML file.
|
|
202
205
|
* @param filePath Path to the workflow YAML file
|
|
203
206
|
*/
|
|
204
|
-
|
|
207
|
+
function loadWorkflowFromFile(filePath) {
|
|
205
208
|
if (!existsSync(filePath)) {
|
|
206
209
|
throw new Error(`Workflow file not found: ${filePath}`);
|
|
207
210
|
}
|
|
@@ -211,67 +214,116 @@ export function loadWorkflowFromFile(filePath) {
|
|
|
211
214
|
return normalizeWorkflowConfig(raw, workflowDir);
|
|
212
215
|
}
|
|
213
216
|
/**
|
|
214
|
-
*
|
|
215
|
-
*
|
|
217
|
+
* Resolve a path that may be relative, absolute, or home-directory-relative.
|
|
218
|
+
* @param pathInput Path to resolve
|
|
219
|
+
* @param basePath Base directory for relative paths
|
|
220
|
+
* @returns Absolute resolved path
|
|
216
221
|
*/
|
|
217
|
-
|
|
218
|
-
//
|
|
222
|
+
function resolvePath(pathInput, basePath) {
|
|
223
|
+
// Home directory expansion
|
|
224
|
+
if (pathInput.startsWith('~')) {
|
|
225
|
+
const home = homedir();
|
|
226
|
+
return resolve(home, pathInput.slice(1).replace(/^\//, ''));
|
|
227
|
+
}
|
|
228
|
+
// Absolute path
|
|
229
|
+
if (isAbsolute(pathInput)) {
|
|
230
|
+
return pathInput;
|
|
231
|
+
}
|
|
232
|
+
// Relative path
|
|
233
|
+
return resolve(basePath, pathInput);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Load workflow from a file path.
|
|
237
|
+
* Called internally by loadWorkflowByIdentifier when the identifier is detected as a path.
|
|
238
|
+
*
|
|
239
|
+
* @param filePath Path to workflow file (absolute, relative, or home-dir prefixed with ~)
|
|
240
|
+
* @param basePath Base directory for resolving relative paths
|
|
241
|
+
* @returns WorkflowConfig or null if file not found
|
|
242
|
+
*/
|
|
243
|
+
function loadWorkflowFromPath(filePath, basePath) {
|
|
244
|
+
const resolvedPath = resolvePath(filePath, basePath);
|
|
245
|
+
if (!existsSync(resolvedPath)) {
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
return loadWorkflowFromFile(resolvedPath);
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Load workflow by name (name-based loading only, no path detection).
|
|
252
|
+
*
|
|
253
|
+
* Priority:
|
|
254
|
+
* 1. Project-local workflows → .takt/workflows/{name}.yaml
|
|
255
|
+
* 2. User workflows → ~/.takt/workflows/{name}.yaml
|
|
256
|
+
* 3. Builtin workflows → resources/global/{lang}/workflows/{name}.yaml
|
|
257
|
+
*
|
|
258
|
+
* @param name Workflow name (not a file path)
|
|
259
|
+
* @param projectCwd Project root directory (for project-local workflow resolution)
|
|
260
|
+
*/
|
|
261
|
+
export function loadWorkflow(name, projectCwd) {
|
|
262
|
+
// 1. Project-local workflow (.takt/workflows/{name}.yaml)
|
|
263
|
+
const projectWorkflowsDir = join(getProjectConfigDir(projectCwd), 'workflows');
|
|
264
|
+
const projectWorkflowPath = join(projectWorkflowsDir, `${name}.yaml`);
|
|
265
|
+
if (existsSync(projectWorkflowPath)) {
|
|
266
|
+
return loadWorkflowFromFile(projectWorkflowPath);
|
|
267
|
+
}
|
|
268
|
+
// 2. User workflow (~/.takt/workflows/{name}.yaml)
|
|
219
269
|
const globalWorkflowsDir = getGlobalWorkflowsDir();
|
|
220
270
|
const workflowYamlPath = join(globalWorkflowsDir, `${name}.yaml`);
|
|
221
271
|
if (existsSync(workflowYamlPath)) {
|
|
222
272
|
return loadWorkflowFromFile(workflowYamlPath);
|
|
223
273
|
}
|
|
224
|
-
//
|
|
274
|
+
// 3. Builtin fallback
|
|
225
275
|
return getBuiltinWorkflow(name);
|
|
226
276
|
}
|
|
227
|
-
/**
|
|
228
|
-
|
|
277
|
+
/**
|
|
278
|
+
* Load all workflows with descriptions (for switch command).
|
|
279
|
+
*
|
|
280
|
+
* Priority (later entries override earlier):
|
|
281
|
+
* 1. Builtin workflows
|
|
282
|
+
* 2. User workflows (~/.takt/workflows/)
|
|
283
|
+
* 3. Project-local workflows (.takt/workflows/)
|
|
284
|
+
*/
|
|
285
|
+
export function loadAllWorkflows(cwd) {
|
|
229
286
|
const workflows = new Map();
|
|
230
287
|
const disabled = getDisabledBuiltins();
|
|
231
|
-
// 1. Builtin workflows (
|
|
288
|
+
// 1. Builtin workflows (lowest priority)
|
|
232
289
|
const lang = getLanguage();
|
|
233
290
|
const builtinDir = getBuiltinWorkflowsDir(lang);
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
if (!entry.endsWith('.yaml') && !entry.endsWith('.yml'))
|
|
237
|
-
continue;
|
|
238
|
-
const entryPath = join(builtinDir, entry);
|
|
239
|
-
if (statSync(entryPath).isFile()) {
|
|
240
|
-
const workflowName = entry.replace(/\.ya?ml$/, '');
|
|
241
|
-
if (disabled.includes(workflowName))
|
|
242
|
-
continue;
|
|
243
|
-
try {
|
|
244
|
-
workflows.set(workflowName, loadWorkflowFromFile(entryPath));
|
|
245
|
-
}
|
|
246
|
-
catch {
|
|
247
|
-
// Skip invalid workflows
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
// 2. User workflows (higher priority — overrides builtins)
|
|
291
|
+
loadWorkflowsFromDir(builtinDir, workflows, disabled);
|
|
292
|
+
// 2. User workflows (overrides builtins)
|
|
253
293
|
const globalWorkflowsDir = getGlobalWorkflowsDir();
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
294
|
+
loadWorkflowsFromDir(globalWorkflowsDir, workflows);
|
|
295
|
+
// 3. Project-local workflows (highest priority)
|
|
296
|
+
const projectWorkflowsDir = join(getProjectConfigDir(cwd), 'workflows');
|
|
297
|
+
loadWorkflowsFromDir(projectWorkflowsDir, workflows);
|
|
298
|
+
return workflows;
|
|
299
|
+
}
|
|
300
|
+
/** Load workflow files from a directory into a Map (later calls override earlier entries) */
|
|
301
|
+
function loadWorkflowsFromDir(dir, target, disabled) {
|
|
302
|
+
if (!existsSync(dir))
|
|
303
|
+
return;
|
|
304
|
+
for (const entry of readdirSync(dir)) {
|
|
305
|
+
if (!entry.endsWith('.yaml') && !entry.endsWith('.yml'))
|
|
306
|
+
continue;
|
|
307
|
+
const entryPath = join(dir, entry);
|
|
308
|
+
if (!statSync(entryPath).isFile())
|
|
309
|
+
continue;
|
|
310
|
+
const workflowName = entry.replace(/\.ya?ml$/, '');
|
|
311
|
+
if (disabled?.includes(workflowName))
|
|
312
|
+
continue;
|
|
313
|
+
try {
|
|
314
|
+
target.set(workflowName, loadWorkflowFromFile(entryPath));
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
// Skip invalid workflows
|
|
269
318
|
}
|
|
270
319
|
}
|
|
271
|
-
return workflows;
|
|
272
320
|
}
|
|
273
|
-
/**
|
|
274
|
-
|
|
321
|
+
/**
|
|
322
|
+
* List available workflow names (builtin + user + project-local, excluding disabled).
|
|
323
|
+
*
|
|
324
|
+
* @param cwd Project root directory (used to scan project-local .takt/workflows/).
|
|
325
|
+
*/
|
|
326
|
+
export function listWorkflows(cwd) {
|
|
275
327
|
const workflows = new Set();
|
|
276
328
|
const disabled = getDisabledBuiltins();
|
|
277
329
|
// 1. Builtin workflows
|
|
@@ -281,8 +333,44 @@ export function listWorkflows() {
|
|
|
281
333
|
// 2. User workflows
|
|
282
334
|
const globalWorkflowsDir = getGlobalWorkflowsDir();
|
|
283
335
|
scanWorkflowDir(globalWorkflowsDir, workflows);
|
|
336
|
+
// 3. Project-local workflows
|
|
337
|
+
const projectWorkflowsDir = join(getProjectConfigDir(cwd), 'workflows');
|
|
338
|
+
scanWorkflowDir(projectWorkflowsDir, workflows);
|
|
284
339
|
return Array.from(workflows).sort();
|
|
285
340
|
}
|
|
341
|
+
/**
|
|
342
|
+
* Check if a workflow identifier looks like a file path (vs a workflow name).
|
|
343
|
+
*
|
|
344
|
+
* Path indicators:
|
|
345
|
+
* - Starts with `/` (absolute path)
|
|
346
|
+
* - Starts with `~` (home directory)
|
|
347
|
+
* - Starts with `./` or `../` (relative path)
|
|
348
|
+
* - Ends with `.yaml` or `.yml` (file extension)
|
|
349
|
+
*/
|
|
350
|
+
export function isWorkflowPath(identifier) {
|
|
351
|
+
return (identifier.startsWith('/') ||
|
|
352
|
+
identifier.startsWith('~') ||
|
|
353
|
+
identifier.startsWith('./') ||
|
|
354
|
+
identifier.startsWith('../') ||
|
|
355
|
+
identifier.endsWith('.yaml') ||
|
|
356
|
+
identifier.endsWith('.yml'));
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Load workflow by identifier (auto-detects name vs path).
|
|
360
|
+
*
|
|
361
|
+
* If the identifier looks like a path (see isWorkflowPath), loads from file.
|
|
362
|
+
* Otherwise, loads by name with the standard priority chain:
|
|
363
|
+
* project-local → user → builtin.
|
|
364
|
+
*
|
|
365
|
+
* @param identifier Workflow name or file path
|
|
366
|
+
* @param projectCwd Project root directory (for project-local resolution and relative path base)
|
|
367
|
+
*/
|
|
368
|
+
export function loadWorkflowByIdentifier(identifier, projectCwd) {
|
|
369
|
+
if (isWorkflowPath(identifier)) {
|
|
370
|
+
return loadWorkflowFromPath(identifier, projectCwd);
|
|
371
|
+
}
|
|
372
|
+
return loadWorkflow(identifier, projectCwd);
|
|
373
|
+
}
|
|
286
374
|
/** Scan a directory for .yaml/.yml files and add names to the set */
|
|
287
375
|
function scanWorkflowDir(dir, target, disabled) {
|
|
288
376
|
if (!existsSync(dir))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflowLoader.js","sourceRoot":"","sources":["../../src/config/workflowLoader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflowLoader.js","sourceRoot":"","sources":["../../src/config/workflowLoader.ts"],"names":[],"mappings":"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"}
|
package/dist/github/pr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../src/github/pr.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../src/github/pr.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAI1D,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe;IACf,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAM5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,cAAc,CAuCvF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAoBlF"}
|
package/dist/github/pr.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { execFileSync } from 'node:child_process';
|
|
7
7
|
import { createLogger } from '../utils/debug.js';
|
|
8
|
+
import { getErrorMessage } from '../utils/error.js';
|
|
8
9
|
import { checkGhCli } from './issue.js';
|
|
9
10
|
const log = createLogger('github-pr');
|
|
10
11
|
/**
|
|
@@ -50,7 +51,7 @@ export function createPullRequest(cwd, options) {
|
|
|
50
51
|
return { success: true, url };
|
|
51
52
|
}
|
|
52
53
|
catch (err) {
|
|
53
|
-
const errorMessage =
|
|
54
|
+
const errorMessage = getErrorMessage(err);
|
|
54
55
|
log.error('PR creation failed', { error: errorMessage });
|
|
55
56
|
return { success: false, error: errorMessage };
|
|
56
57
|
}
|
package/dist/github/pr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr.js","sourceRoot":"","sources":["../../src/github/pr.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAoB,MAAM,YAAY,CAAC;AAE1D,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;AAuBtC;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,MAAc;IACpD,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACjD,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;QAC9C,GAAG;QACH,KAAK,EAAE,MAAM;KACd,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,OAAwB;IACrE,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;IAC9B,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,yBAAyB,EAAE,CAAC;IAChF,CAAC;IAED,MAAM,IAAI,GAAG;QACX,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,OAAO,CAAC,KAAK;QACxB,QAAQ,EAAE,OAAO,CAAC,IAAI;QACtB,QAAQ,EAAE,OAAO,CAAC,MAAM;KACzB,CAAC;IAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAE1E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE;YACtC,GAAG;YACH,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC1B,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAEhC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"pr.js","sourceRoot":"","sources":["../../src/github/pr.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/mock/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/mock/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,6BAA6B;AAC7B,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;CACvE;AASD;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,aAAa,CAAC,CAuCxB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,aAAa,CAAC,CAGxB"}
|
package/dist/mock/client.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Useful for testing workflows without incurring costs or latency.
|
|
6
6
|
*/
|
|
7
7
|
import { randomUUID } from 'node:crypto';
|
|
8
|
+
import { getScenarioQueue } from './scenario.js';
|
|
8
9
|
/**
|
|
9
10
|
* Generate a mock session ID
|
|
10
11
|
*/
|
|
@@ -16,9 +17,11 @@ function generateMockSessionId() {
|
|
|
16
17
|
*/
|
|
17
18
|
export async function callMock(agentName, prompt, options) {
|
|
18
19
|
const sessionId = options.sessionId ?? generateMockSessionId();
|
|
19
|
-
|
|
20
|
+
// Scenario queue takes priority over explicit options
|
|
21
|
+
const scenarioEntry = getScenarioQueue()?.consume(agentName);
|
|
22
|
+
const status = scenarioEntry?.status ?? options.mockStatus ?? 'done';
|
|
20
23
|
const statusMarker = `[MOCK:${status.toUpperCase()}]`;
|
|
21
|
-
const content = options.mockResponse ??
|
|
24
|
+
const content = scenarioEntry?.content ?? options.mockResponse ??
|
|
22
25
|
`${statusMarker}\n\nMock response for agent "${agentName}".\nPrompt: ${prompt.slice(0, 100)}${prompt.length > 100 ? '...' : ''}`;
|
|
23
26
|
// Emit stream events if callback is provided
|
|
24
27
|
if (options.onStream) {
|
package/dist/mock/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mock/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mock/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAajD;;GAEG;AACH,SAAS,qBAAqB;IAC5B,OAAO,gBAAgB,UAAU,EAAE,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,SAAiB,EACjB,MAAc,EACd,OAAwB;IAExB,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,qBAAqB,EAAE,CAAC;IAE/D,sDAAsD;IACtD,MAAM,aAAa,GAAG,gBAAgB,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAE7D,MAAM,MAAM,GAAG,aAAa,EAAE,MAAM,IAAI,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;IACrE,MAAM,YAAY,GAAG,SAAS,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC;IACtD,MAAM,OAAO,GAAG,aAAa,EAAE,OAAO,IAAI,OAAO,CAAC,YAAY;QAC5D,GAAG,YAAY,gCAAgC,SAAS,eAAe,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAEnI,6CAA6C;IAC7C,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,SAAS,GAAgB;YAC7B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE;SACzC,CAAC;QACF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE5B,MAAM,SAAS,GAAgB;YAC7B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SACxB,CAAC;QACF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE5B,MAAM,WAAW,GAAgB;YAC/B,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;SACpD,CAAC;QACF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IAED,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,MAAM;QACN,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,MAAc,EACd,aAAqB,EACrB,OAAwB;IAExB,kEAAkE;IAClE,OAAO,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock scenario support for integration testing.
|
|
3
|
+
*
|
|
4
|
+
* Provides a queue-based mechanism to control mock provider responses
|
|
5
|
+
* per agent or by call order. Scenarios can be loaded from JSON files
|
|
6
|
+
* (via TAKT_MOCK_SCENARIO env var) or set programmatically in tests.
|
|
7
|
+
*/
|
|
8
|
+
/** A single entry in a mock scenario */
|
|
9
|
+
export interface ScenarioEntry {
|
|
10
|
+
/** Agent name to match (optional — if omitted, consumed by call order) */
|
|
11
|
+
agent?: string;
|
|
12
|
+
/** Response status */
|
|
13
|
+
status: 'done' | 'blocked' | 'approved' | 'rejected' | 'improve';
|
|
14
|
+
/** Response content body */
|
|
15
|
+
content: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Queue that dispenses scenario entries.
|
|
19
|
+
*
|
|
20
|
+
* Matching rules:
|
|
21
|
+
* 1. If an entry has `agent` set, it only matches calls for that agent name.
|
|
22
|
+
* 2. Entries without `agent` match any call (consumed in order).
|
|
23
|
+
* 3. First matching entry is removed from the queue and returned.
|
|
24
|
+
* 4. Returns undefined when no matching entry remains.
|
|
25
|
+
*/
|
|
26
|
+
export declare class ScenarioQueue {
|
|
27
|
+
private entries;
|
|
28
|
+
constructor(entries: ScenarioEntry[]);
|
|
29
|
+
/**
|
|
30
|
+
* Consume the next matching entry for the given agent.
|
|
31
|
+
*/
|
|
32
|
+
consume(agentName: string): ScenarioEntry | undefined;
|
|
33
|
+
/** Number of remaining entries */
|
|
34
|
+
get remaining(): number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Set mock scenario programmatically (for tests).
|
|
38
|
+
* Pass null to clear.
|
|
39
|
+
*/
|
|
40
|
+
export declare function setMockScenario(entries: ScenarioEntry[] | null): void;
|
|
41
|
+
/**
|
|
42
|
+
* Get the current global scenario queue.
|
|
43
|
+
* Lazily loads from TAKT_MOCK_SCENARIO env var on first access.
|
|
44
|
+
*/
|
|
45
|
+
export declare function getScenarioQueue(): ScenarioQueue | null;
|
|
46
|
+
/**
|
|
47
|
+
* Reset global scenario state (for test cleanup).
|
|
48
|
+
*/
|
|
49
|
+
export declare function resetScenario(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Load and validate a scenario JSON file.
|
|
52
|
+
*
|
|
53
|
+
* @param filePath Absolute or relative path to scenario JSON
|
|
54
|
+
* @throws Error if file not found or JSON invalid
|
|
55
|
+
*/
|
|
56
|
+
export declare function loadScenarioFile(filePath: string): ScenarioEntry[];
|
|
57
|
+
//# sourceMappingURL=scenario.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scenario.d.ts","sourceRoot":"","sources":["../../src/mock/scenario.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IACjE,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAkB;gBAErB,OAAO,EAAE,aAAa,EAAE;IAKpC;;OAEG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAkBrD,kCAAkC;IAClC,IAAI,SAAS,IAAI,MAAM,CAEtB;CACF;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,IAAI,GAAG,IAAI,CAErE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,IAAI,CAWvD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAkBlE"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock scenario support for integration testing.
|
|
3
|
+
*
|
|
4
|
+
* Provides a queue-based mechanism to control mock provider responses
|
|
5
|
+
* per agent or by call order. Scenarios can be loaded from JSON files
|
|
6
|
+
* (via TAKT_MOCK_SCENARIO env var) or set programmatically in tests.
|
|
7
|
+
*/
|
|
8
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
9
|
+
/**
|
|
10
|
+
* Queue that dispenses scenario entries.
|
|
11
|
+
*
|
|
12
|
+
* Matching rules:
|
|
13
|
+
* 1. If an entry has `agent` set, it only matches calls for that agent name.
|
|
14
|
+
* 2. Entries without `agent` match any call (consumed in order).
|
|
15
|
+
* 3. First matching entry is removed from the queue and returned.
|
|
16
|
+
* 4. Returns undefined when no matching entry remains.
|
|
17
|
+
*/
|
|
18
|
+
export class ScenarioQueue {
|
|
19
|
+
entries;
|
|
20
|
+
constructor(entries) {
|
|
21
|
+
// Defensive copy
|
|
22
|
+
this.entries = [...entries];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Consume the next matching entry for the given agent.
|
|
26
|
+
*/
|
|
27
|
+
consume(agentName) {
|
|
28
|
+
// Try agent-specific match first
|
|
29
|
+
const agentIndex = this.entries.findIndex((e) => e.agent !== undefined && e.agent === agentName);
|
|
30
|
+
if (agentIndex >= 0) {
|
|
31
|
+
return this.entries.splice(agentIndex, 1)[0];
|
|
32
|
+
}
|
|
33
|
+
// Fall back to first unspecified entry
|
|
34
|
+
const anyIndex = this.entries.findIndex((e) => e.agent === undefined);
|
|
35
|
+
if (anyIndex >= 0) {
|
|
36
|
+
return this.entries.splice(anyIndex, 1)[0];
|
|
37
|
+
}
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
/** Number of remaining entries */
|
|
41
|
+
get remaining() {
|
|
42
|
+
return this.entries.length;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// --- Global singleton (module-level state) ---
|
|
46
|
+
let globalQueue = null;
|
|
47
|
+
/**
|
|
48
|
+
* Set mock scenario programmatically (for tests).
|
|
49
|
+
* Pass null to clear.
|
|
50
|
+
*/
|
|
51
|
+
export function setMockScenario(entries) {
|
|
52
|
+
globalQueue = entries ? new ScenarioQueue(entries) : null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get the current global scenario queue.
|
|
56
|
+
* Lazily loads from TAKT_MOCK_SCENARIO env var on first access.
|
|
57
|
+
*/
|
|
58
|
+
export function getScenarioQueue() {
|
|
59
|
+
if (globalQueue)
|
|
60
|
+
return globalQueue;
|
|
61
|
+
const envPath = process.env.TAKT_MOCK_SCENARIO;
|
|
62
|
+
if (envPath) {
|
|
63
|
+
const entries = loadScenarioFile(envPath);
|
|
64
|
+
globalQueue = new ScenarioQueue(entries);
|
|
65
|
+
return globalQueue;
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Reset global scenario state (for test cleanup).
|
|
71
|
+
*/
|
|
72
|
+
export function resetScenario() {
|
|
73
|
+
globalQueue = null;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Load and validate a scenario JSON file.
|
|
77
|
+
*
|
|
78
|
+
* @param filePath Absolute or relative path to scenario JSON
|
|
79
|
+
* @throws Error if file not found or JSON invalid
|
|
80
|
+
*/
|
|
81
|
+
export function loadScenarioFile(filePath) {
|
|
82
|
+
if (!existsSync(filePath)) {
|
|
83
|
+
throw new Error(`Scenario file not found: ${filePath}`);
|
|
84
|
+
}
|
|
85
|
+
const raw = readFileSync(filePath, 'utf-8');
|
|
86
|
+
let parsed;
|
|
87
|
+
try {
|
|
88
|
+
parsed = JSON.parse(raw);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
throw new Error(`Scenario file is not valid JSON: ${filePath}`);
|
|
92
|
+
}
|
|
93
|
+
if (!Array.isArray(parsed)) {
|
|
94
|
+
throw new Error(`Scenario file must contain a JSON array: ${filePath}`);
|
|
95
|
+
}
|
|
96
|
+
return parsed.map((entry, i) => validateEntry(entry, i));
|
|
97
|
+
}
|
|
98
|
+
function validateEntry(entry, index) {
|
|
99
|
+
if (typeof entry !== 'object' || entry === null) {
|
|
100
|
+
throw new Error(`Scenario entry [${index}] must be an object`);
|
|
101
|
+
}
|
|
102
|
+
const obj = entry;
|
|
103
|
+
// content is required
|
|
104
|
+
if (typeof obj.content !== 'string') {
|
|
105
|
+
throw new Error(`Scenario entry [${index}] must have a "content" string`);
|
|
106
|
+
}
|
|
107
|
+
// status defaults to 'done'
|
|
108
|
+
const validStatuses = ['done', 'blocked', 'approved', 'rejected', 'improve'];
|
|
109
|
+
const status = obj.status ?? 'done';
|
|
110
|
+
if (typeof status !== 'string' || !validStatuses.includes(status)) {
|
|
111
|
+
throw new Error(`Scenario entry [${index}] has invalid status "${String(status)}". Valid: ${validStatuses.join(', ')}`);
|
|
112
|
+
}
|
|
113
|
+
// agent is optional
|
|
114
|
+
if (obj.agent !== undefined && typeof obj.agent !== 'string') {
|
|
115
|
+
throw new Error(`Scenario entry [${index}] "agent" must be a string if provided`);
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
agent: obj.agent,
|
|
119
|
+
status: status,
|
|
120
|
+
content: obj.content,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=scenario.js.map
|