takt 0.2.0 → 0.2.2
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 +55 -15
- package/dist/agents/runner.d.ts +3 -1
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +15 -0
- package/dist/agents/runner.js.map +1 -1
- package/dist/claude/client.d.ts +3 -1
- package/dist/claude/client.d.ts.map +1 -1
- package/dist/claude/client.js +17 -0
- package/dist/claude/client.js.map +1 -1
- package/dist/cli.d.ts +10 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +69 -18
- package/dist/cli.js.map +1 -1
- package/dist/commands/addTask.d.ts.map +1 -1
- package/dist/commands/addTask.js +27 -9
- package/dist/commands/addTask.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +5 -3
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/reviewTasks.d.ts +43 -0
- package/dist/commands/reviewTasks.d.ts.map +1 -0
- package/dist/commands/reviewTasks.js +333 -0
- package/dist/commands/reviewTasks.js.map +1 -0
- package/dist/commands/taskExecution.d.ts +16 -2
- package/dist/commands/taskExecution.d.ts.map +1 -1
- package/dist/commands/taskExecution.js +77 -39
- package/dist/commands/taskExecution.js.map +1 -1
- package/dist/commands/watchTasks.d.ts.map +1 -1
- package/dist/commands/watchTasks.js +6 -36
- package/dist/commands/watchTasks.js.map +1 -1
- package/dist/commands/workflowExecution.d.ts +5 -1
- package/dist/commands/workflowExecution.d.ts.map +1 -1
- package/dist/commands/workflowExecution.js +36 -12
- package/dist/commands/workflowExecution.js.map +1 -1
- package/dist/config/initialization.d.ts +2 -0
- package/dist/config/initialization.d.ts.map +1 -1
- package/dist/config/initialization.js +12 -2
- package/dist/config/initialization.js.map +1 -1
- package/dist/config/paths.d.ts +1 -1
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +3 -1
- package/dist/config/paths.js.map +1 -1
- package/dist/config/sessionStore.d.ts +15 -0
- package/dist/config/sessionStore.d.ts.map +1 -1
- package/dist/config/sessionStore.js +55 -1
- package/dist/config/sessionStore.js.map +1 -1
- package/dist/config/workflowLoader.d.ts.map +1 -1
- package/dist/config/workflowLoader.js +1 -0
- package/dist/config/workflowLoader.js.map +1 -1
- package/dist/models/schemas.d.ts +22 -0
- package/dist/models/schemas.d.ts.map +1 -1
- package/dist/models/schemas.js +8 -0
- package/dist/models/schemas.js.map +1 -1
- package/dist/models/types.d.ts +8 -2
- package/dist/models/types.d.ts.map +1 -1
- package/dist/prompt/index.d.ts +60 -11
- package/dist/prompt/index.d.ts.map +1 -1
- package/dist/prompt/index.js +246 -72
- package/dist/prompt/index.js.map +1 -1
- package/dist/providers/claude.d.ts.map +1 -1
- package/dist/providers/claude.js +2 -0
- package/dist/providers/claude.js.map +1 -1
- package/dist/providers/index.d.ts +3 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/task/autoCommit.d.ts +28 -0
- package/dist/task/autoCommit.d.ts.map +1 -0
- package/dist/task/autoCommit.js +68 -0
- package/dist/task/autoCommit.js.map +1 -0
- package/dist/task/index.d.ts +2 -1
- package/dist/task/index.d.ts.map +1 -1
- package/dist/task/index.js +2 -1
- package/dist/task/index.js.map +1 -1
- package/dist/task/runner.d.ts +14 -0
- package/dist/task/runner.d.ts.map +1 -1
- package/dist/task/runner.js +30 -7
- package/dist/task/runner.js.map +1 -1
- package/dist/task/summarize.d.ts +20 -0
- package/dist/task/summarize.d.ts.map +1 -0
- package/dist/task/summarize.js +50 -0
- package/dist/task/summarize.js.map +1 -0
- package/dist/task/worktree.d.ts +39 -0
- package/dist/task/worktree.d.ts.map +1 -1
- package/dist/task/worktree.js +111 -2
- package/dist/task/worktree.js.map +1 -1
- package/dist/utils/debug.d.ts +6 -1
- package/dist/utils/debug.d.ts.map +1 -1
- package/dist/utils/debug.js +30 -24
- package/dist/utils/debug.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/session.d.ts +20 -0
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +32 -3
- package/dist/utils/session.js.map +1 -1
- package/dist/utils/text.d.ts +22 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +54 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/workflow/engine.d.ts +5 -6
- package/dist/workflow/engine.d.ts.map +1 -1
- package/dist/workflow/engine.js +32 -12
- package/dist/workflow/engine.js.map +1 -1
- package/dist/workflow/index.d.ts +2 -2
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +2 -2
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/instruction-builder.d.ts +32 -2
- package/dist/workflow/instruction-builder.d.ts.map +1 -1
- package/dist/workflow/instruction-builder.js +90 -3
- package/dist/workflow/instruction-builder.js.map +1 -1
- package/dist/workflow/transitions.d.ts.map +1 -1
- package/dist/workflow/transitions.js +1 -0
- package/dist/workflow/transitions.js.map +1 -1
- package/dist/workflow/types.d.ts +5 -1
- package/dist/workflow/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/resources/global/en/workflows/default.yaml +22 -51
- package/resources/global/en/workflows/{expert-review.yaml → expert-cqrs.yaml} +6 -48
- package/resources/global/en/workflows/expert.yaml +1099 -0
- package/resources/global/en/workflows/magi.yaml +0 -9
- package/resources/global/en/workflows/research.yaml +0 -9
- package/resources/global/en/workflows/simple.yaml +18 -26
- package/resources/global/ja/agents/default/ai-reviewer.md +24 -1
- package/resources/global/ja/agents/default/architect.md +37 -4
- package/resources/global/ja/agents/default/coder.md +1 -0
- package/resources/global/ja/workflows/default.yaml +27 -52
- package/resources/global/ja/workflows/{expert-review.yaml → expert-cqrs.yaml} +169 -58
- package/resources/global/ja/workflows/expert.yaml +1099 -0
- package/resources/global/ja/workflows/magi.yaml +0 -9
- package/resources/global/ja/workflows/research.yaml +0 -9
- package/resources/global/ja/workflows/simple.yaml +18 -26
- /package/resources/global/en/agents/{expert-review → expert}/frontend-reviewer.md +0 -0
- /package/resources/global/en/agents/{expert-review → expert}/qa-reviewer.md +0 -0
- /package/resources/global/en/agents/{expert-review → expert}/security-reviewer.md +0 -0
- /package/resources/global/en/agents/{expert-review → expert}/supervisor.md +0 -0
- /package/resources/global/en/agents/{expert-review → expert-cqrs}/cqrs-es-reviewer.md +0 -0
- /package/resources/global/ja/agents/{expert-review → expert}/frontend-reviewer.md +0 -0
- /package/resources/global/ja/agents/{expert-review → expert}/qa-reviewer.md +0 -0
- /package/resources/global/ja/agents/{expert-review → expert}/security-reviewer.md +0 -0
- /package/resources/global/ja/agents/{expert-review → expert}/supervisor.md +0 -0
- /package/resources/global/ja/agents/{expert-review → expert-cqrs}/cqrs-es-reviewer.md +0 -0
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Task execution logic
|
|
3
3
|
*/
|
|
4
|
-
import { loadWorkflow } from '../config/index.js';
|
|
4
|
+
import { loadWorkflow, loadGlobalConfig } from '../config/index.js';
|
|
5
5
|
import { TaskRunner } from '../task/index.js';
|
|
6
6
|
import { createWorktree } from '../task/worktree.js';
|
|
7
|
+
import { autoCommitWorktree } from '../task/autoCommit.js';
|
|
7
8
|
import { header, info, error, success, status, } from '../utils/ui.js';
|
|
8
9
|
import { createLogger } from '../utils/debug.js';
|
|
9
10
|
import { getErrorMessage } from '../utils/error.js';
|
|
@@ -12,8 +13,12 @@ import { DEFAULT_WORKFLOW_NAME } from '../constants.js';
|
|
|
12
13
|
const log = createLogger('task');
|
|
13
14
|
/**
|
|
14
15
|
* Execute a single task with workflow
|
|
16
|
+
* @param task - Task content
|
|
17
|
+
* @param cwd - Working directory (may be a worktree path)
|
|
18
|
+
* @param workflowName - Workflow to use
|
|
19
|
+
* @param projectCwd - Project root (where .takt/ lives). Defaults to cwd.
|
|
15
20
|
*/
|
|
16
|
-
export async function executeTask(task, cwd, workflowName = DEFAULT_WORKFLOW_NAME) {
|
|
21
|
+
export async function executeTask(task, cwd, workflowName = DEFAULT_WORKFLOW_NAME, projectCwd) {
|
|
17
22
|
const workflowConfig = loadWorkflow(workflowName);
|
|
18
23
|
if (!workflowConfig) {
|
|
19
24
|
error(`Workflow "${workflowName}" not found.`);
|
|
@@ -25,9 +30,70 @@ export async function executeTask(task, cwd, workflowName = DEFAULT_WORKFLOW_NAM
|
|
|
25
30
|
name: workflowConfig.name,
|
|
26
31
|
steps: workflowConfig.steps.map(s => s.name),
|
|
27
32
|
});
|
|
28
|
-
const
|
|
33
|
+
const globalConfig = loadGlobalConfig();
|
|
34
|
+
const result = await executeWorkflow(workflowConfig, task, cwd, {
|
|
35
|
+
projectCwd,
|
|
36
|
+
language: globalConfig.language,
|
|
37
|
+
});
|
|
29
38
|
return result.success;
|
|
30
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Execute a task: resolve worktree → run workflow → auto-commit → record completion.
|
|
42
|
+
*
|
|
43
|
+
* Shared by runAllTasks() and watchTasks() to avoid duplicated
|
|
44
|
+
* resolve → execute → autoCommit → complete logic.
|
|
45
|
+
*
|
|
46
|
+
* @returns true if the task succeeded
|
|
47
|
+
*/
|
|
48
|
+
export async function executeAndCompleteTask(task, taskRunner, cwd, workflowName) {
|
|
49
|
+
const startedAt = new Date().toISOString();
|
|
50
|
+
const executionLog = [];
|
|
51
|
+
try {
|
|
52
|
+
const { execCwd, execWorkflow, isWorktree } = resolveTaskExecution(task, cwd, workflowName);
|
|
53
|
+
// cwd is always the project root; pass it as projectCwd so reports/sessions go there
|
|
54
|
+
const taskSuccess = await executeTask(task.content, execCwd, execWorkflow, cwd);
|
|
55
|
+
const completedAt = new Date().toISOString();
|
|
56
|
+
if (taskSuccess && isWorktree) {
|
|
57
|
+
const commitResult = autoCommitWorktree(execCwd, task.name);
|
|
58
|
+
if (commitResult.success && commitResult.commitHash) {
|
|
59
|
+
info(`Auto-committed: ${commitResult.commitHash}`);
|
|
60
|
+
}
|
|
61
|
+
else if (!commitResult.success) {
|
|
62
|
+
error(`Auto-commit failed: ${commitResult.message}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const taskResult = {
|
|
66
|
+
task,
|
|
67
|
+
success: taskSuccess,
|
|
68
|
+
response: taskSuccess ? 'Task completed successfully' : 'Task failed',
|
|
69
|
+
executionLog,
|
|
70
|
+
startedAt,
|
|
71
|
+
completedAt,
|
|
72
|
+
};
|
|
73
|
+
if (taskSuccess) {
|
|
74
|
+
taskRunner.completeTask(taskResult);
|
|
75
|
+
success(`Task "${task.name}" completed`);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
taskRunner.failTask(taskResult);
|
|
79
|
+
error(`Task "${task.name}" failed`);
|
|
80
|
+
}
|
|
81
|
+
return taskSuccess;
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
const completedAt = new Date().toISOString();
|
|
85
|
+
taskRunner.failTask({
|
|
86
|
+
task,
|
|
87
|
+
success: false,
|
|
88
|
+
response: getErrorMessage(err),
|
|
89
|
+
executionLog,
|
|
90
|
+
startedAt,
|
|
91
|
+
completedAt,
|
|
92
|
+
});
|
|
93
|
+
error(`Task "${task.name}" error: ${getErrorMessage(err)}`);
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
31
97
|
/**
|
|
32
98
|
* Run all pending tasks from .takt/tasks/
|
|
33
99
|
*
|
|
@@ -50,42 +116,12 @@ export async function runAllTasks(cwd, workflowName = DEFAULT_WORKFLOW_NAME) {
|
|
|
50
116
|
console.log();
|
|
51
117
|
info(`=== Task: ${task.name} ===`);
|
|
52
118
|
console.log();
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
// Resolve execution directory and workflow from task data
|
|
57
|
-
const { execCwd, execWorkflow } = resolveTaskExecution(task, cwd, workflowName);
|
|
58
|
-
const taskSuccess = await executeTask(task.content, execCwd, execWorkflow);
|
|
59
|
-
const completedAt = new Date().toISOString();
|
|
60
|
-
taskRunner.completeTask({
|
|
61
|
-
task,
|
|
62
|
-
success: taskSuccess,
|
|
63
|
-
response: taskSuccess ? 'Task completed successfully' : 'Task failed',
|
|
64
|
-
executionLog,
|
|
65
|
-
startedAt,
|
|
66
|
-
completedAt,
|
|
67
|
-
});
|
|
68
|
-
if (taskSuccess) {
|
|
69
|
-
successCount++;
|
|
70
|
-
success(`Task "${task.name}" completed`);
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
failCount++;
|
|
74
|
-
error(`Task "${task.name}" failed`);
|
|
75
|
-
}
|
|
119
|
+
const taskSuccess = await executeAndCompleteTask(task, taskRunner, cwd, workflowName);
|
|
120
|
+
if (taskSuccess) {
|
|
121
|
+
successCount++;
|
|
76
122
|
}
|
|
77
|
-
|
|
123
|
+
else {
|
|
78
124
|
failCount++;
|
|
79
|
-
const completedAt = new Date().toISOString();
|
|
80
|
-
taskRunner.completeTask({
|
|
81
|
-
task,
|
|
82
|
-
success: false,
|
|
83
|
-
response: getErrorMessage(err),
|
|
84
|
-
executionLog,
|
|
85
|
-
startedAt,
|
|
86
|
-
completedAt,
|
|
87
|
-
});
|
|
88
|
-
error(`Task "${task.name}" error: ${getErrorMessage(err)}`);
|
|
89
125
|
}
|
|
90
126
|
// 次のタスクを動的に取得(新しく追加されたタスクも含む)
|
|
91
127
|
task = taskRunner.getNextTask();
|
|
@@ -107,9 +143,10 @@ export function resolveTaskExecution(task, defaultCwd, defaultWorkflow) {
|
|
|
107
143
|
const data = task.data;
|
|
108
144
|
// No structured data: use defaults
|
|
109
145
|
if (!data) {
|
|
110
|
-
return { execCwd: defaultCwd, execWorkflow: defaultWorkflow };
|
|
146
|
+
return { execCwd: defaultCwd, execWorkflow: defaultWorkflow, isWorktree: false };
|
|
111
147
|
}
|
|
112
148
|
let execCwd = defaultCwd;
|
|
149
|
+
let isWorktree = false;
|
|
113
150
|
// Handle worktree
|
|
114
151
|
if (data.worktree) {
|
|
115
152
|
const result = createWorktree(defaultCwd, {
|
|
@@ -118,10 +155,11 @@ export function resolveTaskExecution(task, defaultCwd, defaultWorkflow) {
|
|
|
118
155
|
taskSlug: task.name,
|
|
119
156
|
});
|
|
120
157
|
execCwd = result.path;
|
|
158
|
+
isWorktree = true;
|
|
121
159
|
info(`Worktree created: ${result.path} (branch: ${result.branch})`);
|
|
122
160
|
}
|
|
123
161
|
// Handle workflow override
|
|
124
162
|
const execWorkflow = data.workflow || defaultWorkflow;
|
|
125
|
-
return { execCwd, execWorkflow };
|
|
163
|
+
return { execCwd, execWorkflow, isWorktree };
|
|
126
164
|
}
|
|
127
165
|
//# sourceMappingURL=taskExecution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taskExecution.js","sourceRoot":"","sources":["../../src/commands/taskExecution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"taskExecution.js","sourceRoot":"","sources":["../../src/commands/taskExecution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watchTasks.d.ts","sourceRoot":"","sources":["../../src/commands/watchTasks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"watchTasks.d.ts","sourceRoot":"","sources":["../../src/commands/watchTasks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH;;;GAGG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyD3D"}
|
|
@@ -7,9 +7,8 @@
|
|
|
7
7
|
import { TaskRunner } from '../task/index.js';
|
|
8
8
|
import { TaskWatcher } from '../task/watcher.js';
|
|
9
9
|
import { getCurrentWorkflow } from '../config/paths.js';
|
|
10
|
-
import { header, info,
|
|
11
|
-
import {
|
|
12
|
-
import { executeTask, resolveTaskExecution } from './taskExecution.js';
|
|
10
|
+
import { header, info, success, status, } from '../utils/ui.js';
|
|
11
|
+
import { executeAndCompleteTask } from './taskExecution.js';
|
|
13
12
|
import { DEFAULT_WORKFLOW_NAME } from '../constants.js';
|
|
14
13
|
/**
|
|
15
14
|
* Watch for tasks and execute them as they appear.
|
|
@@ -40,41 +39,12 @@ export async function watchTasks(cwd) {
|
|
|
40
39
|
console.log();
|
|
41
40
|
info(`=== Task ${taskCount}: ${task.name} ===`);
|
|
42
41
|
console.log();
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const { execCwd, execWorkflow } = resolveTaskExecution(task, cwd, workflowName);
|
|
47
|
-
const taskSuccess = await executeTask(task.content, execCwd, execWorkflow);
|
|
48
|
-
const completedAt = new Date().toISOString();
|
|
49
|
-
taskRunner.completeTask({
|
|
50
|
-
task,
|
|
51
|
-
success: taskSuccess,
|
|
52
|
-
response: taskSuccess ? 'Task completed successfully' : 'Task failed',
|
|
53
|
-
executionLog,
|
|
54
|
-
startedAt,
|
|
55
|
-
completedAt,
|
|
56
|
-
});
|
|
57
|
-
if (taskSuccess) {
|
|
58
|
-
successCount++;
|
|
59
|
-
success(`Task "${task.name}" completed`);
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
failCount++;
|
|
63
|
-
error(`Task "${task.name}" failed`);
|
|
64
|
-
}
|
|
42
|
+
const taskSuccess = await executeAndCompleteTask(task, taskRunner, cwd, workflowName);
|
|
43
|
+
if (taskSuccess) {
|
|
44
|
+
successCount++;
|
|
65
45
|
}
|
|
66
|
-
|
|
46
|
+
else {
|
|
67
47
|
failCount++;
|
|
68
|
-
const completedAt = new Date().toISOString();
|
|
69
|
-
taskRunner.completeTask({
|
|
70
|
-
task,
|
|
71
|
-
success: false,
|
|
72
|
-
response: getErrorMessage(err),
|
|
73
|
-
executionLog,
|
|
74
|
-
startedAt,
|
|
75
|
-
completedAt,
|
|
76
|
-
});
|
|
77
|
-
error(`Task "${task.name}" error: ${getErrorMessage(err)}`);
|
|
78
48
|
}
|
|
79
49
|
console.log();
|
|
80
50
|
info('Waiting for tasks... (Ctrl+C to stop)');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watchTasks.js","sourceRoot":"","sources":["../../src/commands/watchTasks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAiB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,MAAM,EACN,IAAI,EACJ,
|
|
1
|
+
{"version":3,"file":"watchTasks.js","sourceRoot":"","sources":["../../src/commands/watchTasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workflow execution logic
|
|
3
3
|
*/
|
|
4
|
-
import type { WorkflowConfig } from '../models/types.js';
|
|
4
|
+
import type { WorkflowConfig, Language } from '../models/types.js';
|
|
5
5
|
/** Result of workflow execution */
|
|
6
6
|
export interface WorkflowExecutionResult {
|
|
7
7
|
success: boolean;
|
|
@@ -11,6 +11,10 @@ export interface WorkflowExecutionResult {
|
|
|
11
11
|
export interface WorkflowExecutionOptions {
|
|
12
12
|
/** Header prefix for display */
|
|
13
13
|
headerPrefix?: string;
|
|
14
|
+
/** Project root directory (where .takt/ lives). Defaults to cwd. */
|
|
15
|
+
projectCwd?: string;
|
|
16
|
+
/** Language for instruction metadata */
|
|
17
|
+
language?: Language;
|
|
14
18
|
}
|
|
15
19
|
/**
|
|
16
20
|
* Execute a workflow and handle all events
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflowExecution.d.ts","sourceRoot":"","sources":["../../src/commands/workflowExecution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"workflowExecution.d.ts","sourceRoot":"","sources":["../../src/commands/workflowExecution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAiDnE,mCAAmC;AACnC,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qCAAqC;AACrC,MAAM,WAAW,wBAAwB;IACvC,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CAoLlC"}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Workflow execution logic
|
|
3
3
|
*/
|
|
4
4
|
import { WorkflowEngine } from '../workflow/engine.js';
|
|
5
|
-
import { loadAgentSessions, updateAgentSession } from '../config/paths.js';
|
|
5
|
+
import { loadAgentSessions, updateAgentSession, loadWorktreeSessions, updateWorktreeSession, } from '../config/paths.js';
|
|
6
6
|
import { header, info, warn, error, success, status, StreamDisplay, } from '../utils/ui.js';
|
|
7
|
-
import { generateSessionId, createSessionLog, addToSessionLog, finalizeSessionLog, saveSessionLog, } from '../utils/session.js';
|
|
7
|
+
import { generateSessionId, createSessionLog, addToSessionLog, finalizeSessionLog, saveSessionLog, updateLatestPointer, } from '../utils/session.js';
|
|
8
8
|
import { createLogger } from '../utils/debug.js';
|
|
9
9
|
import { notifySuccess, notifyError } from '../utils/notification.js';
|
|
10
10
|
import { selectOption, promptInput } from '../prompt/index.js';
|
|
@@ -29,11 +29,16 @@ function formatElapsedTime(startTime, endTime) {
|
|
|
29
29
|
*/
|
|
30
30
|
export async function executeWorkflow(workflowConfig, task, cwd, options = {}) {
|
|
31
31
|
const { headerPrefix = 'Running Workflow:', } = options;
|
|
32
|
+
// projectCwd is where .takt/ lives (project root, not worktree)
|
|
33
|
+
const projectCwd = options.projectCwd ?? cwd;
|
|
32
34
|
// Always continue from previous sessions (use /clear to reset)
|
|
33
35
|
log.debug('Continuing session (use /clear to reset)');
|
|
34
36
|
header(`${headerPrefix} ${workflowConfig.name}`);
|
|
35
37
|
const workflowSessionId = generateSessionId();
|
|
36
|
-
const sessionLog = createSessionLog(task,
|
|
38
|
+
const sessionLog = createSessionLog(task, projectCwd, workflowConfig.name);
|
|
39
|
+
// Persist initial log + pointer at workflow start (enables crash recovery)
|
|
40
|
+
saveSessionLog(sessionLog, workflowSessionId, projectCwd);
|
|
41
|
+
updateLatestPointer(sessionLog, workflowSessionId, projectCwd, { copyToPrevious: true });
|
|
37
42
|
// Track current display for streaming
|
|
38
43
|
const displayRef = { current: null };
|
|
39
44
|
// Create stream handler that delegates to current display
|
|
@@ -44,12 +49,20 @@ export async function executeWorkflow(workflowConfig, task, cwd, options = {}) {
|
|
|
44
49
|
return;
|
|
45
50
|
displayRef.current.createHandler()(event);
|
|
46
51
|
};
|
|
47
|
-
// Load saved agent sessions for continuity
|
|
48
|
-
const
|
|
52
|
+
// Load saved agent sessions for continuity (from project root or worktree-specific storage)
|
|
53
|
+
const isWorktree = cwd !== projectCwd;
|
|
54
|
+
const savedSessions = isWorktree
|
|
55
|
+
? loadWorktreeSessions(projectCwd, cwd)
|
|
56
|
+
: loadAgentSessions(projectCwd);
|
|
49
57
|
// Session update handler - persist session IDs when they change
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
58
|
+
// Worktree sessions are stored separately per worktree path
|
|
59
|
+
const sessionUpdateHandler = isWorktree
|
|
60
|
+
? (agentName, agentSessionId) => {
|
|
61
|
+
updateWorktreeSession(projectCwd, cwd, agentName, agentSessionId);
|
|
62
|
+
}
|
|
63
|
+
: (agentName, agentSessionId) => {
|
|
64
|
+
updateAgentSession(projectCwd, agentName, agentSessionId);
|
|
65
|
+
};
|
|
53
66
|
const iterationLimitHandler = async (request) => {
|
|
54
67
|
if (displayRef.current) {
|
|
55
68
|
displayRef.current.flush();
|
|
@@ -87,6 +100,8 @@ export async function executeWorkflow(workflowConfig, task, cwd, options = {}) {
|
|
|
87
100
|
initialSessions: savedSessions,
|
|
88
101
|
onSessionUpdate: sessionUpdateHandler,
|
|
89
102
|
onIterationLimit: iterationLimitHandler,
|
|
103
|
+
projectCwd,
|
|
104
|
+
language: options.language,
|
|
90
105
|
});
|
|
91
106
|
let abortReason;
|
|
92
107
|
engine.on('step:start', (step, iteration) => {
|
|
@@ -100,6 +115,7 @@ export async function executeWorkflow(workflowConfig, task, cwd, options = {}) {
|
|
|
100
115
|
status: response.status,
|
|
101
116
|
contentLength: response.content.length,
|
|
102
117
|
sessionId: response.sessionId,
|
|
118
|
+
error: response.error,
|
|
103
119
|
});
|
|
104
120
|
if (displayRef.current) {
|
|
105
121
|
displayRef.current.flush();
|
|
@@ -107,16 +123,23 @@ export async function executeWorkflow(workflowConfig, task, cwd, options = {}) {
|
|
|
107
123
|
}
|
|
108
124
|
console.log();
|
|
109
125
|
status('Status', response.status);
|
|
126
|
+
if (response.error) {
|
|
127
|
+
error(`Error: ${response.error}`);
|
|
128
|
+
}
|
|
110
129
|
if (response.sessionId) {
|
|
111
130
|
status('Session', response.sessionId);
|
|
112
131
|
}
|
|
113
132
|
addToSessionLog(sessionLog, step.name, response);
|
|
133
|
+
// Incremental save after each step
|
|
134
|
+
saveSessionLog(sessionLog, workflowSessionId, projectCwd);
|
|
135
|
+
updateLatestPointer(sessionLog, workflowSessionId, projectCwd);
|
|
114
136
|
});
|
|
115
137
|
engine.on('workflow:complete', (state) => {
|
|
116
138
|
log.info('Workflow completed successfully', { iterations: state.iteration });
|
|
117
139
|
finalizeSessionLog(sessionLog, 'completed');
|
|
118
|
-
// Save log to
|
|
119
|
-
const logPath = saveSessionLog(sessionLog, workflowSessionId,
|
|
140
|
+
// Save log to project root so user can find it easily
|
|
141
|
+
const logPath = saveSessionLog(sessionLog, workflowSessionId, projectCwd);
|
|
142
|
+
updateLatestPointer(sessionLog, workflowSessionId, projectCwd);
|
|
120
143
|
const elapsed = sessionLog.endTime
|
|
121
144
|
? formatElapsedTime(sessionLog.startTime, sessionLog.endTime)
|
|
122
145
|
: '';
|
|
@@ -133,8 +156,9 @@ export async function executeWorkflow(workflowConfig, task, cwd, options = {}) {
|
|
|
133
156
|
}
|
|
134
157
|
abortReason = reason;
|
|
135
158
|
finalizeSessionLog(sessionLog, 'aborted');
|
|
136
|
-
// Save log to
|
|
137
|
-
const logPath = saveSessionLog(sessionLog, workflowSessionId,
|
|
159
|
+
// Save log to project root so user can find it easily
|
|
160
|
+
const logPath = saveSessionLog(sessionLog, workflowSessionId, projectCwd);
|
|
161
|
+
updateLatestPointer(sessionLog, workflowSessionId, projectCwd);
|
|
138
162
|
const elapsed = sessionLog.endTime
|
|
139
163
|
? formatElapsedTime(sessionLog.startTime, sessionLog.endTime)
|
|
140
164
|
: '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflowExecution.js","sourceRoot":"","sources":["../../src/commands/workflowExecution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,
|
|
1
|
+
{"version":3,"file":"workflowExecution.js","sourceRoot":"","sources":["../../src/commands/workflowExecution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,EACN,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE/D,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;AAErC;;GAEG;AACH,SAAS,iBAAiB,CAAC,SAAiB,EAAE,OAAe;IAC3D,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC;IAC9B,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IAEpC,IAAI,UAAU,GAAG,EAAE,EAAE,CAAC;QACpB,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;IAC5C,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC;AACnC,CAAC;AAkBD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,cAA8B,EAC9B,IAAY,EACZ,GAAW,EACX,UAAoC,EAAE;IAEtC,MAAM,EACJ,YAAY,GAAG,mBAAmB,GACnC,GAAG,OAAO,CAAC;IAEZ,gEAAgE;IAChE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC;IAE7C,+DAA+D;IAC/D,GAAG,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAEtD,MAAM,CAAC,GAAG,YAAY,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IAEjD,MAAM,iBAAiB,GAAG,iBAAiB,EAAE,CAAC;IAC9C,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;IAE3E,2EAA2E;IAC3E,cAAc,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAC1D,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzF,sCAAsC;IACtC,MAAM,UAAU,GAAsC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAExE,0DAA0D;IAC1D,MAAM,aAAa,GAAG,CACpB,KAAgE,EAC1D,EAAE;QACR,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,OAAO;QAChC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO;QACpC,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,4FAA4F;IAC5F,MAAM,UAAU,GAAG,GAAG,KAAK,UAAU,CAAC;IACtC,MAAM,aAAa,GAAG,UAAU;QAC9B,CAAC,CAAC,oBAAoB,CAAC,UAAU,EAAE,GAAG,CAAC;QACvC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAElC,gEAAgE;IAChE,4DAA4D;IAC5D,MAAM,oBAAoB,GAAG,UAAU;QACrC,CAAC,CAAC,CAAC,SAAiB,EAAE,cAAsB,EAAQ,EAAE;YAClD,qBAAqB,CAAC,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QACpE,CAAC;QACH,CAAC,CAAC,CAAC,SAAiB,EAAE,cAAsB,EAAQ,EAAE;YAClD,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAC5D,CAAC,CAAC;IAEN,MAAM,qBAAqB,GAAG,KAAK,EACjC,OAA8B,EACN,EAAE;QAC1B,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3B,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,CACF,qBAAqB,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,aAAa,GAAG,CAC1E,CAAC;QACF,IAAI,CAAC,YAAY,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE;YAC3C;gBACE,KAAK,EAAE,qBAAqB;gBAC5B,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,kBAAkB;aAChC;YACD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;SACjC,CAAC,CAAC;QAEH,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,4BAA4B,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACxD,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,oBAAoB,GAAG,CAAC,EAAE,CAAC;gBACvE,cAAc,CAAC,aAAa,IAAI,oBAAoB,CAAC;gBACrD,OAAO,oBAAoB,CAAC;YAC9B,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE;QAC3D,QAAQ,EAAE,aAAa;QACvB,eAAe,EAAE,aAAa;QAC9B,eAAe,EAAE,oBAAoB;QACrC,gBAAgB,EAAE,qBAAqB;QACvC,UAAU;QACV,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;IAEH,IAAI,WAA+B,CAAC;IAEpC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAC1C,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,IAAI,SAAS,IAAI,cAAc,CAAC,aAAa,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC/F,UAAU,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;QAC5C,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM;YACtC,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK;SACtB,CAAC,CAAC;QACH,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3B,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,KAAK,CAAC,UAAU,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QACD,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEjD,mCAAmC;QACnC,cAAc,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAC1D,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;QACvC,GAAG,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7E,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC5C,sDAAsD;QACtD,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAC1E,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAE/D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO;YAChC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC;YAC7D,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAErD,OAAO,CAAC,uBAAuB,KAAK,CAAC,SAAS,cAAc,cAAc,GAAG,CAAC,CAAC;QAC/E,IAAI,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;QAChC,aAAa,CAAC,MAAM,EAAE,aAAa,KAAK,CAAC,SAAS,cAAc,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5C,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACvE,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3B,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,WAAW,GAAG,MAAM,CAAC;QACrB,kBAAkB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC1C,sDAAsD;QACtD,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAC1E,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAE/D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO;YAChC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC;YAC7D,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtD,KAAK,CAAC,0BAA0B,KAAK,CAAC,SAAS,cAAc,cAAc,KAAK,MAAM,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;QAChC,WAAW,CAAC,MAAM,EAAE,OAAO,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IAEtC,OAAO;QACL,OAAO,EAAE,UAAU,CAAC,MAAM,KAAK,WAAW;QAC1C,MAAM,EAAE,WAAW;KACpB,CAAC;AACJ,CAAC"}
|
|
@@ -13,10 +13,12 @@ export declare function needsLanguageSetup(): boolean;
|
|
|
13
13
|
/**
|
|
14
14
|
* Prompt user to select language for resources.
|
|
15
15
|
* Returns 'en' for English (default), 'ja' for Japanese.
|
|
16
|
+
* Exits process if cancelled (initial setup is required).
|
|
16
17
|
*/
|
|
17
18
|
export declare function promptLanguageSelection(): Promise<Language>;
|
|
18
19
|
/**
|
|
19
20
|
* Prompt user to select provider for resources.
|
|
21
|
+
* Exits process if cancelled (initial setup is required).
|
|
20
22
|
*/
|
|
21
23
|
export declare function promptProviderSelection(): Promise<'claude' | 'codex'>;
|
|
22
24
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialization.d.ts","sourceRoot":"","sources":["../../src/config/initialization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAkBnD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAI5C;AAED
|
|
1
|
+
{"version":3,"file":"initialization.d.ts","sourceRoot":"","sources":["../../src/config/initialization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAkBnD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAI5C;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAiBjE;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,CAiB3E;AAED;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBpD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAIxD"}
|
|
@@ -22,23 +22,33 @@ export function needsLanguageSetup() {
|
|
|
22
22
|
/**
|
|
23
23
|
* Prompt user to select language for resources.
|
|
24
24
|
* Returns 'en' for English (default), 'ja' for Japanese.
|
|
25
|
+
* Exits process if cancelled (initial setup is required).
|
|
25
26
|
*/
|
|
26
27
|
export async function promptLanguageSelection() {
|
|
27
28
|
const options = [
|
|
28
29
|
{ label: 'English', value: 'en' },
|
|
29
30
|
{ label: '日本語 (Japanese)', value: 'ja' },
|
|
30
31
|
];
|
|
31
|
-
|
|
32
|
+
const result = await selectOptionWithDefault('Select language for default agents and workflows / デフォルトのエージェントとワークフローの言語を選択してください:', options, DEFAULT_LANGUAGE);
|
|
33
|
+
if (result === null) {
|
|
34
|
+
process.exit(0);
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
32
37
|
}
|
|
33
38
|
/**
|
|
34
39
|
* Prompt user to select provider for resources.
|
|
40
|
+
* Exits process if cancelled (initial setup is required).
|
|
35
41
|
*/
|
|
36
42
|
export async function promptProviderSelection() {
|
|
37
43
|
const options = [
|
|
38
44
|
{ label: 'Claude Code', value: 'claude' },
|
|
39
45
|
{ label: 'Codex', value: 'codex' },
|
|
40
46
|
];
|
|
41
|
-
|
|
47
|
+
const result = await selectOptionWithDefault('Select provider (Claude Code or Codex) / プロバイダーを選択してください:', options, 'claude');
|
|
48
|
+
if (result === null) {
|
|
49
|
+
process.exit(0);
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
42
52
|
}
|
|
43
53
|
/**
|
|
44
54
|
* Initialize global takt directory structure with language selection.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialization.js","sourceRoot":"","sources":["../../src/config/initialization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE7D;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,MAAM,YAAY,GAAG,qBAAqB,EAAE,CAAC;IAC7C,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAC7D,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"initialization.js","sourceRoot":"","sources":["../../src/config/initialization.ts"],"names":[],"mappings":"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"}
|
package/dist/config/paths.d.ts
CHANGED
|
@@ -29,5 +29,5 @@ export declare function ensureDir(dirPath: string): void;
|
|
|
29
29
|
/** Validate path is safe (no directory traversal) */
|
|
30
30
|
export declare function isPathSafe(basePath: string, targetPath: string): boolean;
|
|
31
31
|
export { loadProjectConfig, saveProjectConfig, updateProjectConfig, getCurrentWorkflow, setCurrentWorkflow, isVerboseMode, type ProjectLocalConfig, } from './projectConfig.js';
|
|
32
|
-
export { getInputHistoryPath, MAX_INPUT_HISTORY, loadInputHistory, saveInputHistory, addToInputHistory, type AgentSessionData, getAgentSessionsPath, loadAgentSessions, saveAgentSessions, updateAgentSession, clearAgentSessions, } from './sessionStore.js';
|
|
32
|
+
export { writeFileAtomic, getInputHistoryPath, MAX_INPUT_HISTORY, loadInputHistory, saveInputHistory, addToInputHistory, type AgentSessionData, getAgentSessionsPath, loadAgentSessions, saveAgentSessions, updateAgentSession, clearAgentSessions, getWorktreeSessionsDir, encodeWorktreePath, getWorktreeSessionPath, loadWorktreeSessions, updateWorktreeSession, } from './sessionStore.js';
|
|
33
33
|
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,iDAAiD;AACjD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,8DAA8D;AAC9D,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,qCAAqC;AACrC,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,uCAAuC;AACvC,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,2DAA2D;AAC3D,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,mCAAmC;AACnC,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,kCAAkC;AAClC,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,4CAA4C;AAC5C,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,iCAAiC;AACjC,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,+CAA+C;AAC/C,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI/C;AAED,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAIxE;AAGD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,iDAAiD;AACjD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,8DAA8D;AAC9D,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,qCAAqC;AACrC,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,uCAAuC;AACvC,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,2DAA2D;AAC3D,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,mCAAmC;AACnC,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,kCAAkC;AAClC,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,4CAA4C;AAC5C,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,iCAAiC;AACjC,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,+CAA+C;AAC/C,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI/C;AAED,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAIxE;AAGD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAElB,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC"}
|
package/dist/config/paths.js
CHANGED
|
@@ -62,5 +62,7 @@ export function isPathSafe(basePath, targetPath) {
|
|
|
62
62
|
// Re-export project config functions
|
|
63
63
|
export { loadProjectConfig, saveProjectConfig, updateProjectConfig, getCurrentWorkflow, setCurrentWorkflow, isVerboseMode, } from './projectConfig.js';
|
|
64
64
|
// Re-export session storage functions for backward compatibility
|
|
65
|
-
export { getInputHistoryPath, MAX_INPUT_HISTORY, loadInputHistory, saveInputHistory, addToInputHistory, getAgentSessionsPath, loadAgentSessions, saveAgentSessions, updateAgentSession, clearAgentSessions,
|
|
65
|
+
export { writeFileAtomic, getInputHistoryPath, MAX_INPUT_HISTORY, loadInputHistory, saveInputHistory, addToInputHistory, getAgentSessionsPath, loadAgentSessions, saveAgentSessions, updateAgentSession, clearAgentSessions,
|
|
66
|
+
// Worktree sessions
|
|
67
|
+
getWorktreeSessionsDir, encodeWorktreePath, getWorktreeSessionPath, loadWorktreeSessions, updateWorktreeSession, } from './sessionStore.js';
|
|
66
68
|
//# sourceMappingURL=paths.js.map
|
package/dist/config/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEhD,iDAAiD;AACjD,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,aAAa,CAAC,CAAC;AACnD,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;AAC9D,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC;AAC5D,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,UAAkB;IAC7D,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,OAAO,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjD,CAAC;AAED,qCAAqC;AACrC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,GAEd,MAAM,oBAAoB,CAAC;AAE5B,iEAAiE;AACjE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAEjB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Manages agent sessions and input history persistence.
|
|
5
5
|
*/
|
|
6
|
+
/**
|
|
7
|
+
* Write file atomically using temp file + rename.
|
|
8
|
+
* This prevents corruption when multiple processes write simultaneously.
|
|
9
|
+
*/
|
|
10
|
+
export declare function writeFileAtomic(filePath: string, content: string): void;
|
|
6
11
|
/** Get path for storing input history */
|
|
7
12
|
export declare function getInputHistoryPath(projectDir: string): string;
|
|
8
13
|
/** Maximum number of input history entries to keep */
|
|
@@ -31,6 +36,16 @@ export declare function saveAgentSessions(projectDir: string, sessions: Record<s
|
|
|
31
36
|
export declare function updateAgentSession(projectDir: string, agentName: string, sessionId: string): void;
|
|
32
37
|
/** Clear all saved agent sessions */
|
|
33
38
|
export declare function clearAgentSessions(projectDir: string): void;
|
|
39
|
+
/** Get the worktree sessions directory */
|
|
40
|
+
export declare function getWorktreeSessionsDir(projectDir: string): string;
|
|
41
|
+
/** Encode a worktree path to a safe filename */
|
|
42
|
+
export declare function encodeWorktreePath(worktreePath: string): string;
|
|
43
|
+
/** Get path for a worktree's session file */
|
|
44
|
+
export declare function getWorktreeSessionPath(projectDir: string, worktreePath: string): string;
|
|
45
|
+
/** Load saved agent sessions for a worktree */
|
|
46
|
+
export declare function loadWorktreeSessions(projectDir: string, worktreePath: string): Record<string, string>;
|
|
47
|
+
/** Update a single agent session for a worktree (atomic) */
|
|
48
|
+
export declare function updateWorktreeSession(projectDir: string, worktreePath: string, agentName: string, sessionId: string): void;
|
|
34
49
|
/**
|
|
35
50
|
* Get the Claude CLI project session directory path.
|
|
36
51
|
* Claude CLI stores sessions in ~/.claude/projects/{encoded-project-path}/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionStore.d.ts","sourceRoot":"","sources":["../../src/config/sessionStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"sessionStore.d.ts","sourceRoot":"","sources":["../../src/config/sessionStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAevE;AAID,yCAAyC;AACzC,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,yBAAyB;AACzB,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAqB7D;AAED,wCAAwC;AACxC,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAM5E;AAED,oCAAoC;AACpC,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMzE;AAID,yCAAyC;AACzC,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,0CAA0C;AAC1C,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,gCAAgC;AAChC,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY5E;AAED,yCAAyC;AACzC,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,IAAI,CAQN;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,IAAI,CAsBN;AAED,qCAAqC;AACrC,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAW3D;AAID,0CAA0C;AAC1C,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,gDAAgD;AAChD,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,6CAA6C;AAC7C,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAIvF;AAED,+CAA+C;AAC/C,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYxB;AAED,4DAA4D;AAC5D,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,IAAI,CAwBN;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAMtE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAkCnE"}
|