takt 0.2.1 → 0.2.3
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 +67 -38
- package/dist/cli.d.ts +4 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +27 -17
- package/dist/cli.js.map +1 -1
- package/dist/commands/addTask.d.ts.map +1 -1
- package/dist/commands/addTask.js +6 -5
- package/dist/commands/addTask.js.map +1 -1
- package/dist/commands/help.js +3 -3
- package/dist/commands/index.d.ts +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/listTasks.d.ts +45 -0
- package/dist/commands/listTasks.d.ts.map +1 -0
- package/dist/commands/listTasks.js +353 -0
- package/dist/commands/listTasks.js.map +1 -0
- package/dist/commands/taskExecution.d.ts +7 -5
- package/dist/commands/taskExecution.d.ts.map +1 -1
- package/dist/commands/taskExecution.js +26 -17
- package/dist/commands/taskExecution.js.map +1 -1
- package/dist/commands/workflowExecution.d.ts.map +1 -1
- package/dist/commands/workflowExecution.js +11 -10
- package/dist/commands/workflowExecution.js.map +1 -1
- package/dist/config/globalConfig.d.ts.map +1 -1
- package/dist/config/globalConfig.js +4 -0
- package/dist/config/globalConfig.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 +10 -0
- package/dist/config/sessionStore.d.ts.map +1 -1
- package/dist/config/sessionStore.js +54 -0
- package/dist/config/sessionStore.js.map +1 -1
- 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/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +6 -3
- package/dist/resources/index.js.map +1 -1
- package/dist/task/autoCommit.d.ts +9 -6
- package/dist/task/autoCommit.d.ts.map +1 -1
- package/dist/task/autoCommit.js +21 -12
- package/dist/task/autoCommit.js.map +1 -1
- package/dist/task/branchList.d.ts +55 -0
- package/dist/task/branchList.d.ts.map +1 -0
- package/dist/task/branchList.js +131 -0
- package/dist/task/branchList.js.map +1 -0
- package/dist/task/clone.d.ts +53 -0
- package/dist/task/clone.d.ts.map +1 -0
- package/dist/task/clone.js +181 -0
- package/dist/task/clone.js.map +1 -0
- package/dist/task/index.d.ts +3 -2
- package/dist/task/index.d.ts.map +1 -1
- package/dist/task/index.js +3 -2
- 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/schema.d.ts +4 -4
- package/dist/task/schema.js +4 -4
- package/dist/task/summarize.d.ts +22 -0
- package/dist/task/summarize.d.ts.map +1 -0
- package/dist/task/summarize.js +83 -0
- package/dist/task/summarize.js.map +1 -0
- package/dist/utils/updateNotifier.d.ts +6 -0
- package/dist/utils/updateNotifier.d.ts.map +1 -0
- package/dist/utils/updateNotifier.js +17 -0
- package/dist/utils/updateNotifier.js.map +1 -0
- package/dist/workflow/engine.d.ts +1 -1
- package/dist/workflow/engine.d.ts.map +1 -1
- package/dist/workflow/engine.js +10 -2
- package/dist/workflow/engine.js.map +1 -1
- package/dist/workflow/instruction-builder.d.ts +8 -7
- package/dist/workflow/instruction-builder.d.ts.map +1 -1
- package/dist/workflow/instruction-builder.js +39 -24
- package/dist/workflow/instruction-builder.js.map +1 -1
- package/package.json +4 -1
- package/resources/global/en/agents/default/{ai-reviewer.md → ai-antipattern-reviewer.md} +22 -1
- package/resources/global/en/agents/default/coder.md +3 -3
- package/resources/global/en/agents/default/planner.md +14 -1
- package/resources/global/en/workflows/default.yaml +6 -51
- package/resources/global/en/workflows/{expert-review.yaml → expert-cqrs.yaml} +14 -49
- package/resources/global/en/workflows/expert.yaml +1106 -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 +5 -26
- package/resources/global/ja/agents/default/{ai-reviewer.md → ai-antipattern-reviewer.md} +22 -1
- package/resources/global/ja/agents/default/coder.md +3 -3
- package/resources/global/ja/agents/default/planner.md +14 -1
- package/resources/global/ja/workflows/default.yaml +6 -51
- package/resources/global/ja/workflows/{expert-review.yaml → expert-cqrs.yaml} +15 -55
- package/resources/global/ja/workflows/expert.yaml +1106 -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 +5 -26
- package/resources/project/dotgitignore +10 -0
- package/resources/project/tasks/TASK-FORMAT +37 -0
- package/dist/commands/reviewTasks.d.ts +0 -32
- package/dist/commands/reviewTasks.d.ts.map +0 -1
- package/dist/commands/reviewTasks.js +0 -198
- package/dist/commands/reviewTasks.js.map +0 -1
- package/dist/task/worktree.d.ts +0 -70
- package/dist/task/worktree.d.ts.map +0 -1
- package/dist/task/worktree.js +0 -221
- package/dist/task/worktree.js.map +0 -1
- /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
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* List tasks command
|
|
3
|
+
*
|
|
4
|
+
* Interactive UI for reviewing branch-based task results:
|
|
5
|
+
* try merge, merge & cleanup, or delete actions.
|
|
6
|
+
* Clones are ephemeral — only branches persist between sessions.
|
|
7
|
+
*/
|
|
8
|
+
import { execFileSync, spawnSync } from 'node:child_process';
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
import { createTempCloneForBranch, removeClone, removeCloneMeta, cleanupOrphanedClone, } from '../task/clone.js';
|
|
11
|
+
import { detectDefaultBranch, listTaktBranches, buildListItems, } from '../task/branchList.js';
|
|
12
|
+
import { autoCommitAndPush } from '../task/autoCommit.js';
|
|
13
|
+
import { selectOption, confirm, promptInput } from '../prompt/index.js';
|
|
14
|
+
import { info, success, error as logError, warn } from '../utils/ui.js';
|
|
15
|
+
import { createLogger } from '../utils/debug.js';
|
|
16
|
+
import { executeTask } from './taskExecution.js';
|
|
17
|
+
import { listWorkflows } from '../config/workflowLoader.js';
|
|
18
|
+
import { getCurrentWorkflow } from '../config/paths.js';
|
|
19
|
+
import { DEFAULT_WORKFLOW_NAME } from '../constants.js';
|
|
20
|
+
const log = createLogger('list-tasks');
|
|
21
|
+
/**
|
|
22
|
+
* Check if a branch has already been merged into HEAD.
|
|
23
|
+
*/
|
|
24
|
+
export function isBranchMerged(projectDir, branch) {
|
|
25
|
+
try {
|
|
26
|
+
execFileSync('git', ['merge-base', '--is-ancestor', branch, 'HEAD'], {
|
|
27
|
+
cwd: projectDir,
|
|
28
|
+
encoding: 'utf-8',
|
|
29
|
+
stdio: 'pipe',
|
|
30
|
+
});
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Show full diff in an interactive pager (less).
|
|
39
|
+
* Falls back to direct output if pager is unavailable.
|
|
40
|
+
*/
|
|
41
|
+
export function showFullDiff(cwd, defaultBranch, branch) {
|
|
42
|
+
try {
|
|
43
|
+
const result = spawnSync('git', ['diff', '--color=always', `${defaultBranch}...${branch}`], { cwd, stdio: ['inherit', 'inherit', 'inherit'], env: { ...process.env, GIT_PAGER: 'less -R' } });
|
|
44
|
+
if (result.status !== 0) {
|
|
45
|
+
warn('Could not display diff');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
warn('Could not display diff');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Show diff stat for a branch and prompt for an action.
|
|
54
|
+
*/
|
|
55
|
+
async function showDiffAndPromptAction(cwd, defaultBranch, item) {
|
|
56
|
+
console.log();
|
|
57
|
+
console.log(chalk.bold.cyan(`=== ${item.info.branch} ===`));
|
|
58
|
+
if (item.originalInstruction) {
|
|
59
|
+
console.log(chalk.dim(` ${item.originalInstruction}`));
|
|
60
|
+
}
|
|
61
|
+
console.log();
|
|
62
|
+
// Show diff stat
|
|
63
|
+
try {
|
|
64
|
+
const stat = execFileSync('git', ['diff', '--stat', `${defaultBranch}...${item.info.branch}`], { cwd, encoding: 'utf-8', stdio: 'pipe' });
|
|
65
|
+
console.log(stat);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
warn('Could not generate diff stat');
|
|
69
|
+
}
|
|
70
|
+
// Prompt action
|
|
71
|
+
const action = await selectOption(`Action for ${item.info.branch}:`, [
|
|
72
|
+
{ label: 'View diff', value: 'diff', description: 'Show full diff in pager' },
|
|
73
|
+
{ label: 'Instruct', value: 'instruct', description: 'Give additional instructions via temp clone' },
|
|
74
|
+
{ label: 'Try merge', value: 'try', description: 'Squash merge (stage changes without commit)' },
|
|
75
|
+
{ label: 'Merge & cleanup', value: 'merge', description: 'Merge and delete branch' },
|
|
76
|
+
{ label: 'Delete', value: 'delete', description: 'Discard changes, delete branch' },
|
|
77
|
+
]);
|
|
78
|
+
return action;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Try-merge (squash): stage changes from branch without committing.
|
|
82
|
+
* User can inspect staged changes and commit manually if satisfied.
|
|
83
|
+
*/
|
|
84
|
+
export function tryMergeBranch(projectDir, item) {
|
|
85
|
+
const { branch } = item.info;
|
|
86
|
+
try {
|
|
87
|
+
execFileSync('git', ['merge', '--squash', branch], {
|
|
88
|
+
cwd: projectDir,
|
|
89
|
+
encoding: 'utf-8',
|
|
90
|
+
stdio: 'pipe',
|
|
91
|
+
});
|
|
92
|
+
success(`Squash-merged ${branch} (changes staged, not committed)`);
|
|
93
|
+
info('Run `git status` to see staged changes, `git commit` to finalize, or `git reset` to undo.');
|
|
94
|
+
log.info('Try-merge (squash) completed', { branch });
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
99
|
+
logError(`Squash merge failed: ${msg}`);
|
|
100
|
+
logError('You may need to resolve conflicts manually.');
|
|
101
|
+
log.error('Try-merge (squash) failed', { branch, error: msg });
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Merge & cleanup: if already merged, skip merge and just delete the branch.
|
|
107
|
+
* Otherwise merge first, then delete the branch.
|
|
108
|
+
* No worktree removal needed — clones are ephemeral.
|
|
109
|
+
*/
|
|
110
|
+
export function mergeBranch(projectDir, item) {
|
|
111
|
+
const { branch } = item.info;
|
|
112
|
+
const alreadyMerged = isBranchMerged(projectDir, branch);
|
|
113
|
+
try {
|
|
114
|
+
// Merge only if not already merged
|
|
115
|
+
if (alreadyMerged) {
|
|
116
|
+
info(`${branch} is already merged, skipping merge.`);
|
|
117
|
+
log.info('Branch already merged, cleanup only', { branch });
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
execFileSync('git', ['merge', branch], {
|
|
121
|
+
cwd: projectDir,
|
|
122
|
+
encoding: 'utf-8',
|
|
123
|
+
stdio: 'pipe',
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
// Delete the branch
|
|
127
|
+
try {
|
|
128
|
+
execFileSync('git', ['branch', '-d', branch], {
|
|
129
|
+
cwd: projectDir,
|
|
130
|
+
encoding: 'utf-8',
|
|
131
|
+
stdio: 'pipe',
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
warn(`Could not delete branch ${branch}. You may delete it manually.`);
|
|
136
|
+
}
|
|
137
|
+
// Clean up orphaned clone directory if it still exists
|
|
138
|
+
cleanupOrphanedClone(projectDir, branch);
|
|
139
|
+
success(`Merged & cleaned up ${branch}`);
|
|
140
|
+
log.info('Branch merged & cleaned up', { branch, alreadyMerged });
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
145
|
+
logError(`Merge failed: ${msg}`);
|
|
146
|
+
logError('You may need to resolve conflicts manually.');
|
|
147
|
+
log.error('Merge & cleanup failed', { branch, error: msg });
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Delete a branch (discard changes).
|
|
153
|
+
* No worktree removal needed — clones are ephemeral.
|
|
154
|
+
*/
|
|
155
|
+
export function deleteBranch(projectDir, item) {
|
|
156
|
+
const { branch } = item.info;
|
|
157
|
+
try {
|
|
158
|
+
// Force-delete the branch
|
|
159
|
+
execFileSync('git', ['branch', '-D', branch], {
|
|
160
|
+
cwd: projectDir,
|
|
161
|
+
encoding: 'utf-8',
|
|
162
|
+
stdio: 'pipe',
|
|
163
|
+
});
|
|
164
|
+
// Clean up orphaned clone directory if it still exists
|
|
165
|
+
cleanupOrphanedClone(projectDir, branch);
|
|
166
|
+
success(`Deleted ${branch}`);
|
|
167
|
+
log.info('Branch deleted', { branch });
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
172
|
+
logError(`Delete failed: ${msg}`);
|
|
173
|
+
log.error('Delete failed', { branch, error: msg });
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Get the workflow to use for instruction.
|
|
179
|
+
* If multiple workflows available, prompt user to select.
|
|
180
|
+
*/
|
|
181
|
+
async function selectWorkflowForInstruction(projectDir) {
|
|
182
|
+
const availableWorkflows = listWorkflows();
|
|
183
|
+
const currentWorkflow = getCurrentWorkflow(projectDir);
|
|
184
|
+
if (availableWorkflows.length === 0) {
|
|
185
|
+
return DEFAULT_WORKFLOW_NAME;
|
|
186
|
+
}
|
|
187
|
+
if (availableWorkflows.length === 1 && availableWorkflows[0]) {
|
|
188
|
+
return availableWorkflows[0];
|
|
189
|
+
}
|
|
190
|
+
// Multiple workflows: let user select
|
|
191
|
+
const options = availableWorkflows.map((name) => ({
|
|
192
|
+
label: name === currentWorkflow ? `${name} (current)` : name,
|
|
193
|
+
value: name,
|
|
194
|
+
}));
|
|
195
|
+
return await selectOption('Select workflow:', options);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Get branch context: diff stat and commit log from main branch.
|
|
199
|
+
*/
|
|
200
|
+
function getBranchContext(projectDir, branch) {
|
|
201
|
+
const defaultBranch = detectDefaultBranch(projectDir);
|
|
202
|
+
const lines = [];
|
|
203
|
+
// Get diff stat
|
|
204
|
+
try {
|
|
205
|
+
const diffStat = execFileSync('git', ['diff', '--stat', `${defaultBranch}...${branch}`], { cwd: projectDir, encoding: 'utf-8', stdio: 'pipe' }).trim();
|
|
206
|
+
if (diffStat) {
|
|
207
|
+
lines.push('## 現在の変更内容(mainからの差分)');
|
|
208
|
+
lines.push('```');
|
|
209
|
+
lines.push(diffStat);
|
|
210
|
+
lines.push('```');
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
// Ignore errors
|
|
215
|
+
}
|
|
216
|
+
// Get commit log
|
|
217
|
+
try {
|
|
218
|
+
const commitLog = execFileSync('git', ['log', '--oneline', `${defaultBranch}..${branch}`], { cwd: projectDir, encoding: 'utf-8', stdio: 'pipe' }).trim();
|
|
219
|
+
if (commitLog) {
|
|
220
|
+
lines.push('');
|
|
221
|
+
lines.push('## コミット履歴');
|
|
222
|
+
lines.push('```');
|
|
223
|
+
lines.push(commitLog);
|
|
224
|
+
lines.push('```');
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
// Ignore errors
|
|
229
|
+
}
|
|
230
|
+
return lines.length > 0 ? lines.join('\n') + '\n\n' : '';
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Instruct branch: create a temp clone, give additional instructions,
|
|
234
|
+
* auto-commit+push, then remove clone.
|
|
235
|
+
*/
|
|
236
|
+
export async function instructBranch(projectDir, item) {
|
|
237
|
+
const { branch } = item.info;
|
|
238
|
+
// 1. Prompt for instruction
|
|
239
|
+
const instruction = await promptInput('Enter instruction');
|
|
240
|
+
if (!instruction) {
|
|
241
|
+
info('Cancelled');
|
|
242
|
+
return false;
|
|
243
|
+
}
|
|
244
|
+
// 2. Select workflow
|
|
245
|
+
const selectedWorkflow = await selectWorkflowForInstruction(projectDir);
|
|
246
|
+
if (!selectedWorkflow) {
|
|
247
|
+
info('Cancelled');
|
|
248
|
+
return false;
|
|
249
|
+
}
|
|
250
|
+
log.info('Instructing branch via temp clone', { branch, workflow: selectedWorkflow });
|
|
251
|
+
info(`Running instruction on ${branch}...`);
|
|
252
|
+
// 3. Create temp clone for the branch
|
|
253
|
+
const clone = createTempCloneForBranch(projectDir, branch);
|
|
254
|
+
try {
|
|
255
|
+
// 4. Build instruction with branch context
|
|
256
|
+
const branchContext = getBranchContext(projectDir, branch);
|
|
257
|
+
const fullInstruction = branchContext
|
|
258
|
+
? `${branchContext}## 追加指示\n${instruction}`
|
|
259
|
+
: instruction;
|
|
260
|
+
// 5. Execute task on temp clone
|
|
261
|
+
const taskSuccess = await executeTask(fullInstruction, clone.path, selectedWorkflow, projectDir);
|
|
262
|
+
// 6. Auto-commit+push if successful
|
|
263
|
+
if (taskSuccess) {
|
|
264
|
+
const commitResult = autoCommitAndPush(clone.path, item.taskSlug, projectDir);
|
|
265
|
+
if (commitResult.success && commitResult.commitHash) {
|
|
266
|
+
info(`Auto-committed & pushed: ${commitResult.commitHash}`);
|
|
267
|
+
}
|
|
268
|
+
else if (!commitResult.success) {
|
|
269
|
+
warn(`Auto-commit skipped: ${commitResult.message}`);
|
|
270
|
+
}
|
|
271
|
+
success(`Instruction completed on ${branch}`);
|
|
272
|
+
log.info('Instruction completed', { branch });
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
logError(`Instruction failed on ${branch}`);
|
|
276
|
+
log.error('Instruction failed', { branch });
|
|
277
|
+
}
|
|
278
|
+
return taskSuccess;
|
|
279
|
+
}
|
|
280
|
+
finally {
|
|
281
|
+
// 7. Always remove temp clone and metadata
|
|
282
|
+
removeClone(clone.path);
|
|
283
|
+
removeCloneMeta(projectDir, branch);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Main entry point: list branch-based tasks interactively.
|
|
288
|
+
*/
|
|
289
|
+
export async function listTasks(cwd) {
|
|
290
|
+
log.info('Starting list-tasks');
|
|
291
|
+
const defaultBranch = detectDefaultBranch(cwd);
|
|
292
|
+
let branches = listTaktBranches(cwd);
|
|
293
|
+
if (branches.length === 0) {
|
|
294
|
+
info('No tasks to list.');
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
// Interactive loop
|
|
298
|
+
while (branches.length > 0) {
|
|
299
|
+
const items = buildListItems(cwd, branches, defaultBranch);
|
|
300
|
+
// Build selection options
|
|
301
|
+
const options = items.map((item, idx) => {
|
|
302
|
+
const filesSummary = `${item.filesChanged} file${item.filesChanged !== 1 ? 's' : ''} changed`;
|
|
303
|
+
const description = item.originalInstruction
|
|
304
|
+
? `${filesSummary} | ${item.originalInstruction}`
|
|
305
|
+
: filesSummary;
|
|
306
|
+
return {
|
|
307
|
+
label: item.info.branch,
|
|
308
|
+
value: String(idx),
|
|
309
|
+
description,
|
|
310
|
+
};
|
|
311
|
+
});
|
|
312
|
+
const selected = await selectOption('List Tasks (Branches)', options);
|
|
313
|
+
if (selected === null) {
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
const selectedIdx = parseInt(selected, 10);
|
|
317
|
+
const item = items[selectedIdx];
|
|
318
|
+
if (!item)
|
|
319
|
+
continue;
|
|
320
|
+
// Action loop: re-show menu after viewing diff
|
|
321
|
+
let action;
|
|
322
|
+
do {
|
|
323
|
+
action = await showDiffAndPromptAction(cwd, defaultBranch, item);
|
|
324
|
+
if (action === 'diff') {
|
|
325
|
+
showFullDiff(cwd, defaultBranch, item.info.branch);
|
|
326
|
+
}
|
|
327
|
+
} while (action === 'diff');
|
|
328
|
+
if (action === null)
|
|
329
|
+
continue;
|
|
330
|
+
switch (action) {
|
|
331
|
+
case 'instruct':
|
|
332
|
+
await instructBranch(cwd, item);
|
|
333
|
+
break;
|
|
334
|
+
case 'try':
|
|
335
|
+
tryMergeBranch(cwd, item);
|
|
336
|
+
break;
|
|
337
|
+
case 'merge':
|
|
338
|
+
mergeBranch(cwd, item);
|
|
339
|
+
break;
|
|
340
|
+
case 'delete': {
|
|
341
|
+
const confirmed = await confirm(`Delete ${item.info.branch}? This will discard all changes.`, false);
|
|
342
|
+
if (confirmed) {
|
|
343
|
+
deleteBranch(cwd, item);
|
|
344
|
+
}
|
|
345
|
+
break;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
// Refresh branch list after action
|
|
349
|
+
branches = listTaktBranches(cwd);
|
|
350
|
+
}
|
|
351
|
+
info('All tasks listed.');
|
|
352
|
+
}
|
|
353
|
+
//# sourceMappingURL=listTasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listTasks.js","sourceRoot":"","sources":["../../src/commands/listTasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,13 @@ import { TaskRunner, type TaskInfo } from '../task/index.js';
|
|
|
5
5
|
/**
|
|
6
6
|
* Execute a single task with workflow
|
|
7
7
|
* @param task - Task content
|
|
8
|
-
* @param cwd - Working directory (may be a
|
|
8
|
+
* @param cwd - Working directory (may be a clone path)
|
|
9
9
|
* @param workflowName - Workflow to use
|
|
10
10
|
* @param projectCwd - Project root (where .takt/ lives). Defaults to cwd.
|
|
11
11
|
*/
|
|
12
12
|
export declare function executeTask(task: string, cwd: string, workflowName?: string, projectCwd?: string): Promise<boolean>;
|
|
13
13
|
/**
|
|
14
|
-
* Execute a task: resolve
|
|
14
|
+
* Execute a task: resolve clone → run workflow → auto-commit+push → remove clone → record completion.
|
|
15
15
|
*
|
|
16
16
|
* Shared by runAllTasks() and watchTasks() to avoid duplicated
|
|
17
17
|
* resolve → execute → autoCommit → complete logic.
|
|
@@ -28,11 +28,13 @@ export declare function executeAndCompleteTask(task: TaskInfo, taskRunner: TaskR
|
|
|
28
28
|
export declare function runAllTasks(cwd: string, workflowName?: string): Promise<void>;
|
|
29
29
|
/**
|
|
30
30
|
* Resolve execution directory and workflow from task data.
|
|
31
|
-
* If the task has worktree settings, create a
|
|
31
|
+
* If the task has worktree settings, create a shared clone and use it as cwd.
|
|
32
|
+
* Task name is summarized to English by AI for use in branch/clone names.
|
|
32
33
|
*/
|
|
33
|
-
export declare function resolveTaskExecution(task: TaskInfo, defaultCwd: string, defaultWorkflow: string): {
|
|
34
|
+
export declare function resolveTaskExecution(task: TaskInfo, defaultCwd: string, defaultWorkflow: string): Promise<{
|
|
34
35
|
execCwd: string;
|
|
35
36
|
execWorkflow: string;
|
|
36
37
|
isWorktree: boolean;
|
|
37
|
-
|
|
38
|
+
branch?: string;
|
|
39
|
+
}>;
|
|
38
40
|
//# sourceMappingURL=taskExecution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taskExecution.d.ts","sourceRoot":"","sources":["../../src/commands/taskExecution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"taskExecution.d.ts","sourceRoot":"","sources":["../../src/commands/taskExecution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAkB7D;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,MAA8B,EAC5C,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAqBlB;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC,CAqDlB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,MAA8B,GAC3C,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiC1F"}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { loadWorkflow, loadGlobalConfig } from '../config/index.js';
|
|
5
5
|
import { TaskRunner } from '../task/index.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { createSharedClone } from '../task/clone.js';
|
|
7
|
+
import { autoCommitAndPush } from '../task/autoCommit.js';
|
|
8
|
+
import { summarizeTaskName } from '../task/summarize.js';
|
|
8
9
|
import { header, info, error, success, status, } from '../utils/ui.js';
|
|
9
10
|
import { createLogger } from '../utils/debug.js';
|
|
10
11
|
import { getErrorMessage } from '../utils/error.js';
|
|
@@ -14,7 +15,7 @@ const log = createLogger('task');
|
|
|
14
15
|
/**
|
|
15
16
|
* Execute a single task with workflow
|
|
16
17
|
* @param task - Task content
|
|
17
|
-
* @param cwd - Working directory (may be a
|
|
18
|
+
* @param cwd - Working directory (may be a clone path)
|
|
18
19
|
* @param workflowName - Workflow to use
|
|
19
20
|
* @param projectCwd - Project root (where .takt/ lives). Defaults to cwd.
|
|
20
21
|
*/
|
|
@@ -38,7 +39,7 @@ export async function executeTask(task, cwd, workflowName = DEFAULT_WORKFLOW_NAM
|
|
|
38
39
|
return result.success;
|
|
39
40
|
}
|
|
40
41
|
/**
|
|
41
|
-
* Execute a task: resolve
|
|
42
|
+
* Execute a task: resolve clone → run workflow → auto-commit+push → remove clone → record completion.
|
|
42
43
|
*
|
|
43
44
|
* Shared by runAllTasks() and watchTasks() to avoid duplicated
|
|
44
45
|
* resolve → execute → autoCommit → complete logic.
|
|
@@ -49,38 +50,40 @@ export async function executeAndCompleteTask(task, taskRunner, cwd, workflowName
|
|
|
49
50
|
const startedAt = new Date().toISOString();
|
|
50
51
|
const executionLog = [];
|
|
51
52
|
try {
|
|
52
|
-
const { execCwd, execWorkflow, isWorktree } = resolveTaskExecution(task, cwd, workflowName);
|
|
53
|
+
const { execCwd, execWorkflow, isWorktree } = await resolveTaskExecution(task, cwd, workflowName);
|
|
53
54
|
// cwd is always the project root; pass it as projectCwd so reports/sessions go there
|
|
54
55
|
const taskSuccess = await executeTask(task.content, execCwd, execWorkflow, cwd);
|
|
55
56
|
const completedAt = new Date().toISOString();
|
|
56
57
|
if (taskSuccess && isWorktree) {
|
|
57
|
-
const commitResult =
|
|
58
|
+
const commitResult = autoCommitAndPush(execCwd, task.name, cwd);
|
|
58
59
|
if (commitResult.success && commitResult.commitHash) {
|
|
59
|
-
info(`Auto-committed: ${commitResult.commitHash}`);
|
|
60
|
+
info(`Auto-committed & pushed: ${commitResult.commitHash}`);
|
|
60
61
|
}
|
|
61
62
|
else if (!commitResult.success) {
|
|
62
63
|
error(`Auto-commit failed: ${commitResult.message}`);
|
|
63
64
|
}
|
|
64
65
|
}
|
|
65
|
-
|
|
66
|
+
const taskResult = {
|
|
66
67
|
task,
|
|
67
68
|
success: taskSuccess,
|
|
68
69
|
response: taskSuccess ? 'Task completed successfully' : 'Task failed',
|
|
69
70
|
executionLog,
|
|
70
71
|
startedAt,
|
|
71
72
|
completedAt,
|
|
72
|
-
}
|
|
73
|
+
};
|
|
73
74
|
if (taskSuccess) {
|
|
75
|
+
taskRunner.completeTask(taskResult);
|
|
74
76
|
success(`Task "${task.name}" completed`);
|
|
75
77
|
}
|
|
76
78
|
else {
|
|
79
|
+
taskRunner.failTask(taskResult);
|
|
77
80
|
error(`Task "${task.name}" failed`);
|
|
78
81
|
}
|
|
79
82
|
return taskSuccess;
|
|
80
83
|
}
|
|
81
84
|
catch (err) {
|
|
82
85
|
const completedAt = new Date().toISOString();
|
|
83
|
-
taskRunner.
|
|
86
|
+
taskRunner.failTask({
|
|
84
87
|
task,
|
|
85
88
|
success: false,
|
|
86
89
|
response: getErrorMessage(err),
|
|
@@ -135,9 +138,10 @@ export async function runAllTasks(cwd, workflowName = DEFAULT_WORKFLOW_NAME) {
|
|
|
135
138
|
}
|
|
136
139
|
/**
|
|
137
140
|
* Resolve execution directory and workflow from task data.
|
|
138
|
-
* If the task has worktree settings, create a
|
|
141
|
+
* If the task has worktree settings, create a shared clone and use it as cwd.
|
|
142
|
+
* Task name is summarized to English by AI for use in branch/clone names.
|
|
139
143
|
*/
|
|
140
|
-
export function resolveTaskExecution(task, defaultCwd, defaultWorkflow) {
|
|
144
|
+
export async function resolveTaskExecution(task, defaultCwd, defaultWorkflow) {
|
|
141
145
|
const data = task.data;
|
|
142
146
|
// No structured data: use defaults
|
|
143
147
|
if (!data) {
|
|
@@ -145,19 +149,24 @@ export function resolveTaskExecution(task, defaultCwd, defaultWorkflow) {
|
|
|
145
149
|
}
|
|
146
150
|
let execCwd = defaultCwd;
|
|
147
151
|
let isWorktree = false;
|
|
148
|
-
|
|
152
|
+
let branch;
|
|
153
|
+
// Handle worktree (now creates a shared clone)
|
|
149
154
|
if (data.worktree) {
|
|
150
|
-
|
|
155
|
+
// Summarize task content to English slug using AI
|
|
156
|
+
info('Generating branch name...');
|
|
157
|
+
const taskSlug = await summarizeTaskName(task.content, { cwd: defaultCwd });
|
|
158
|
+
const result = createSharedClone(defaultCwd, {
|
|
151
159
|
worktree: data.worktree,
|
|
152
160
|
branch: data.branch,
|
|
153
|
-
taskSlug
|
|
161
|
+
taskSlug,
|
|
154
162
|
});
|
|
155
163
|
execCwd = result.path;
|
|
164
|
+
branch = result.branch;
|
|
156
165
|
isWorktree = true;
|
|
157
|
-
info(`
|
|
166
|
+
info(`Clone created: ${result.path} (branch: ${result.branch})`);
|
|
158
167
|
}
|
|
159
168
|
// Handle workflow override
|
|
160
169
|
const execWorkflow = data.workflow || defaultWorkflow;
|
|
161
|
-
return { execCwd, execWorkflow, isWorktree };
|
|
170
|
+
return { execCwd, execWorkflow, isWorktree, branch };
|
|
162
171
|
}
|
|
163
172
|
//# 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,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAiB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"taskExecution.js","sourceRoot":"","sources":["../../src/commands/taskExecution.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,QAAQ,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,7 +2,7 @@
|
|
|
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
7
|
import { generateSessionId, createSessionLog, addToSessionLog, finalizeSessionLog, saveSessionLog, updateLatestPointer, } from '../utils/session.js';
|
|
8
8
|
import { createLogger } from '../utils/debug.js';
|
|
@@ -29,7 +29,7 @@ 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
|
|
32
|
+
// projectCwd is where .takt/ lives (project root, not the clone)
|
|
33
33
|
const projectCwd = options.projectCwd ?? cwd;
|
|
34
34
|
// Always continue from previous sessions (use /clear to reset)
|
|
35
35
|
log.debug('Continuing session (use /clear to reset)');
|
|
@@ -49,16 +49,17 @@ export async function executeWorkflow(workflowConfig, task, cwd, options = {}) {
|
|
|
49
49
|
return;
|
|
50
50
|
displayRef.current.createHandler()(event);
|
|
51
51
|
};
|
|
52
|
-
// Load saved agent sessions for continuity (from project root)
|
|
53
|
-
// When running in a worktree (cwd !== projectCwd), skip session resume because
|
|
54
|
-
// Claude Code sessions are stored per-cwd in ~/.claude/projects/{encoded-path}/
|
|
55
|
-
// and sessions from the main project dir can't be resumed in a worktree dir.
|
|
52
|
+
// Load saved agent sessions for continuity (from project root or clone-specific storage)
|
|
56
53
|
const isWorktree = cwd !== projectCwd;
|
|
57
|
-
const savedSessions = isWorktree
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
const savedSessions = isWorktree
|
|
55
|
+
? loadWorktreeSessions(projectCwd, cwd)
|
|
56
|
+
: loadAgentSessions(projectCwd);
|
|
57
|
+
// Session update handler - persist session IDs when they change
|
|
58
|
+
// Clone sessions are stored separately per clone path
|
|
60
59
|
const sessionUpdateHandler = isWorktree
|
|
61
|
-
?
|
|
60
|
+
? (agentName, agentSessionId) => {
|
|
61
|
+
updateWorktreeSession(projectCwd, cwd, agentName, agentSessionId);
|
|
62
|
+
}
|
|
62
63
|
: (agentName, agentSessionId) => {
|
|
63
64
|
updateAgentSession(projectCwd, agentName, agentSessionId);
|
|
64
65
|
};
|
|
@@ -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,iEAAiE;IACjE,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,yFAAyF;IACzF,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,sDAAsD;IACtD,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"}
|