octie-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +523 -0
- package/dist/cli/commands/approve.d.ts +27 -0
- package/dist/cli/commands/approve.d.ts.map +1 -0
- package/dist/cli/commands/approve.js +119 -0
- package/dist/cli/commands/approve.js.map +1 -0
- package/dist/cli/commands/batch.d.ts +15 -0
- package/dist/cli/commands/batch.d.ts.map +1 -0
- package/dist/cli/commands/batch.js +521 -0
- package/dist/cli/commands/batch.js.map +1 -0
- package/dist/cli/commands/create.d.ts +9 -0
- package/dist/cli/commands/create.d.ts.map +1 -0
- package/dist/cli/commands/create.js +321 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/delete.d.ts +9 -0
- package/dist/cli/commands/delete.d.ts.map +1 -0
- package/dist/cli/commands/delete.js +143 -0
- package/dist/cli/commands/delete.js.map +1 -0
- package/dist/cli/commands/export.d.ts +9 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +66 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/find.d.ts +16 -0
- package/dist/cli/commands/find.d.ts.map +1 -0
- package/dist/cli/commands/find.js +252 -0
- package/dist/cli/commands/find.js.map +1 -0
- package/dist/cli/commands/get.d.ts +9 -0
- package/dist/cli/commands/get.d.ts.map +1 -0
- package/dist/cli/commands/get.js +74 -0
- package/dist/cli/commands/get.js.map +1 -0
- package/dist/cli/commands/graph.d.ts +9 -0
- package/dist/cli/commands/graph.d.ts.map +1 -0
- package/dist/cli/commands/graph.js +200 -0
- package/dist/cli/commands/graph.js.map +1 -0
- package/dist/cli/commands/import.d.ts +9 -0
- package/dist/cli/commands/import.d.ts.map +1 -0
- package/dist/cli/commands/import.js +807 -0
- package/dist/cli/commands/import.js.map +1 -0
- package/dist/cli/commands/init.d.ts +9 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +57 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/list.d.ts +9 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +175 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/merge.d.ts +9 -0
- package/dist/cli/commands/merge.d.ts.map +1 -0
- package/dist/cli/commands/merge.js +113 -0
- package/dist/cli/commands/merge.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +9 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +94 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/update.d.ts +9 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +423 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands/wire.d.ts +15 -0
- package/dist/cli/commands/wire.d.ts.map +1 -0
- package/dist/cli/commands/wire.js +164 -0
- package/dist/cli/commands/wire.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +100 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/output/json.d.ts +16 -0
- package/dist/cli/output/json.d.ts.map +1 -0
- package/dist/cli/output/json.js +29 -0
- package/dist/cli/output/json.js.map +1 -0
- package/dist/cli/output/markdown.d.ts +15 -0
- package/dist/cli/output/markdown.d.ts.map +1 -0
- package/dist/cli/output/markdown.js +206 -0
- package/dist/cli/output/markdown.js.map +1 -0
- package/dist/cli/output/table.d.ts +23 -0
- package/dist/cli/output/table.d.ts.map +1 -0
- package/dist/cli/output/table.js +150 -0
- package/dist/cli/output/table.js.map +1 -0
- package/dist/cli/utils/helpers.d.ts +126 -0
- package/dist/cli/utils/helpers.d.ts.map +1 -0
- package/dist/cli/utils/helpers.js +325 -0
- package/dist/cli/utils/helpers.js.map +1 -0
- package/dist/core/graph/algorithms.d.ts +11 -0
- package/dist/core/graph/algorithms.d.ts.map +1 -0
- package/dist/core/graph/algorithms.js +14 -0
- package/dist/core/graph/algorithms.js.map +1 -0
- package/dist/core/graph/cycle.d.ts +155 -0
- package/dist/core/graph/cycle.d.ts.map +1 -0
- package/dist/core/graph/cycle.js +297 -0
- package/dist/core/graph/cycle.js.map +1 -0
- package/dist/core/graph/index.d.ts +223 -0
- package/dist/core/graph/index.d.ts.map +1 -0
- package/dist/core/graph/index.js +475 -0
- package/dist/core/graph/index.js.map +1 -0
- package/dist/core/graph/operations.d.ts +240 -0
- package/dist/core/graph/operations.d.ts.map +1 -0
- package/dist/core/graph/operations.js +503 -0
- package/dist/core/graph/operations.js.map +1 -0
- package/dist/core/graph/sort.d.ts +76 -0
- package/dist/core/graph/sort.d.ts.map +1 -0
- package/dist/core/graph/sort.js +254 -0
- package/dist/core/graph/sort.js.map +1 -0
- package/dist/core/graph/traversal.d.ts +122 -0
- package/dist/core/graph/traversal.d.ts.map +1 -0
- package/dist/core/graph/traversal.js +336 -0
- package/dist/core/graph/traversal.js.map +1 -0
- package/dist/core/models/task-node.d.ts +328 -0
- package/dist/core/models/task-node.d.ts.map +1 -0
- package/dist/core/models/task-node.js +1090 -0
- package/dist/core/models/task-node.js.map +1 -0
- package/dist/core/registry/index.d.ts +102 -0
- package/dist/core/registry/index.d.ts.map +1 -0
- package/dist/core/registry/index.js +249 -0
- package/dist/core/registry/index.js.map +1 -0
- package/dist/core/registry/root-guard.d.ts +19 -0
- package/dist/core/registry/root-guard.d.ts.map +1 -0
- package/dist/core/registry/root-guard.js +28 -0
- package/dist/core/registry/root-guard.js.map +1 -0
- package/dist/core/storage/atomic-write.d.ts +181 -0
- package/dist/core/storage/atomic-write.d.ts.map +1 -0
- package/dist/core/storage/atomic-write.js +379 -0
- package/dist/core/storage/atomic-write.js.map +1 -0
- package/dist/core/storage/file-store.d.ts +148 -0
- package/dist/core/storage/file-store.d.ts.map +1 -0
- package/dist/core/storage/file-store.js +423 -0
- package/dist/core/storage/file-store.js.map +1 -0
- package/dist/core/storage/indexer.d.ts +138 -0
- package/dist/core/storage/indexer.d.ts.map +1 -0
- package/dist/core/storage/indexer.js +350 -0
- package/dist/core/storage/indexer.js.map +1 -0
- package/dist/core/utils/status-helpers.d.ts +59 -0
- package/dist/core/utils/status-helpers.d.ts.map +1 -0
- package/dist/core/utils/status-helpers.js +149 -0
- package/dist/core/utils/status-helpers.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +504 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +182 -0
- package/dist/types/index.js.map +1 -0
- package/dist/web/routes/graph.d.ts +17 -0
- package/dist/web/routes/graph.d.ts.map +1 -0
- package/dist/web/routes/graph.js +277 -0
- package/dist/web/routes/graph.js.map +1 -0
- package/dist/web/routes/projects.d.ts +14 -0
- package/dist/web/routes/projects.d.ts.map +1 -0
- package/dist/web/routes/projects.js +102 -0
- package/dist/web/routes/projects.js.map +1 -0
- package/dist/web/routes/tasks.d.ts +17 -0
- package/dist/web/routes/tasks.d.ts.map +1 -0
- package/dist/web/routes/tasks.js +538 -0
- package/dist/web/routes/tasks.js.map +1 -0
- package/dist/web/server.d.ts +121 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +389 -0
- package/dist/web/server.js.map +1 -0
- package/dist/web-ui/assets/index-BB0qvF1y.css +1 -0
- package/dist/web-ui/assets/index-Vmm72oKY.js +34 -0
- package/dist/web-ui/index.html +14 -0
- package/dist/web-ui/vite.svg +1 -0
- package/package.json +94 -0
|
@@ -0,0 +1,521 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Batch command - Perform bulk operations on multiple tasks
|
|
3
|
+
*
|
|
4
|
+
* Provides atomic batch operations with safety features:
|
|
5
|
+
* - Preview mode with --dry-run
|
|
6
|
+
* - Atomic operations (all succeed or all fail)
|
|
7
|
+
* - Progress indicators for large batches
|
|
8
|
+
* - Safety confirmation for destructive operations
|
|
9
|
+
*/
|
|
10
|
+
import { Command } from 'commander';
|
|
11
|
+
import chalk from 'chalk';
|
|
12
|
+
import Table from 'cli-table3';
|
|
13
|
+
import { getProjectPath, loadGraph, saveGraph, success, error, info, warning } from '../utils/helpers.js';
|
|
14
|
+
/**
|
|
15
|
+
* Check if task matches title pattern (case-insensitive substring)
|
|
16
|
+
*/
|
|
17
|
+
function matchesTitle(task, pattern) {
|
|
18
|
+
return task.title.toLowerCase().includes(pattern.toLowerCase());
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Check if task contains search text in various fields
|
|
22
|
+
*/
|
|
23
|
+
function matchesSearch(task, query) {
|
|
24
|
+
const queryLower = query.toLowerCase();
|
|
25
|
+
if (task.title.toLowerCase().includes(queryLower))
|
|
26
|
+
return true;
|
|
27
|
+
if (task.description.toLowerCase().includes(queryLower))
|
|
28
|
+
return true;
|
|
29
|
+
if (task.notes.toLowerCase().includes(queryLower))
|
|
30
|
+
return true;
|
|
31
|
+
if (task.success_criteria.some(sc => sc.text.toLowerCase().includes(queryLower)))
|
|
32
|
+
return true;
|
|
33
|
+
if (task.deliverables.some(d => d.text.toLowerCase().includes(queryLower)))
|
|
34
|
+
return true;
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check if task has a specific related file
|
|
39
|
+
*/
|
|
40
|
+
function matchesFile(task, filePath) {
|
|
41
|
+
return task.related_files.some(f => f.toLowerCase().includes(filePath.toLowerCase()));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Check if task has C7 verification from specific library
|
|
45
|
+
*/
|
|
46
|
+
function matchesC7Verification(task, libraryId) {
|
|
47
|
+
const libraryLower = libraryId.toLowerCase();
|
|
48
|
+
return task.c7_verified.some(v => v.library_id.toLowerCase().includes(libraryLower));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Check if task has no blockers
|
|
52
|
+
*/
|
|
53
|
+
function hasNoBlockers(task) {
|
|
54
|
+
return task.blockers.length === 0;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Apply all filters and return matching tasks
|
|
58
|
+
*/
|
|
59
|
+
function applyBatchFilters(graph, options) {
|
|
60
|
+
let taskIds = null;
|
|
61
|
+
let tasks = graph.getAllTasks();
|
|
62
|
+
// If --orphans flag is set, filter to orphan tasks only
|
|
63
|
+
if (options.orphans) {
|
|
64
|
+
const orphanIds = graph.getOrphanTasks();
|
|
65
|
+
if (taskIds === null) {
|
|
66
|
+
taskIds = new Set(orphanIds);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
taskIds = new Set(orphanIds.filter(id => taskIds.has(id)));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// If --leaves flag is set, filter to leaf tasks only
|
|
73
|
+
if (options.leaves) {
|
|
74
|
+
const leafIds = graph.getLeafTasks();
|
|
75
|
+
if (taskIds === null) {
|
|
76
|
+
taskIds = new Set(leafIds);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
taskIds = new Set(leafIds.filter(id => taskIds.has(id)));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// If --without-blockers flag is set, filter to tasks with no blockers
|
|
83
|
+
if (options.withoutBlockers) {
|
|
84
|
+
const noBlockerIds = tasks.filter(t => hasNoBlockers(t)).map(t => t.id);
|
|
85
|
+
if (taskIds === null) {
|
|
86
|
+
taskIds = new Set(noBlockerIds);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
taskIds = new Set(noBlockerIds.filter(id => taskIds.has(id)));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// If taskIds has been constrained by flags, filter tasks
|
|
93
|
+
if (taskIds !== null) {
|
|
94
|
+
tasks = tasks.filter(t => taskIds.has(t.id));
|
|
95
|
+
}
|
|
96
|
+
// Apply --title filter
|
|
97
|
+
if (options.title) {
|
|
98
|
+
tasks = tasks.filter(t => matchesTitle(t, options.title));
|
|
99
|
+
}
|
|
100
|
+
// Apply --search filter (full-text search)
|
|
101
|
+
if (options.search) {
|
|
102
|
+
tasks = tasks.filter(t => matchesSearch(t, options.search));
|
|
103
|
+
}
|
|
104
|
+
// Apply --has-file filter
|
|
105
|
+
if (options.hasFile) {
|
|
106
|
+
tasks = tasks.filter(t => matchesFile(t, options.hasFile));
|
|
107
|
+
}
|
|
108
|
+
// Apply --verified filter (C7 verification library)
|
|
109
|
+
if (options.verified) {
|
|
110
|
+
tasks = tasks.filter(t => matchesC7Verification(t, options.verified));
|
|
111
|
+
}
|
|
112
|
+
// Apply --status filter
|
|
113
|
+
if (options.status) {
|
|
114
|
+
tasks = tasks.filter(t => t.status === options.status);
|
|
115
|
+
}
|
|
116
|
+
// Apply --priority filter
|
|
117
|
+
if (options.priority) {
|
|
118
|
+
tasks = tasks.filter(t => t.priority === options.priority);
|
|
119
|
+
}
|
|
120
|
+
return tasks;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Preview affected tasks in a table
|
|
124
|
+
*/
|
|
125
|
+
function previewTasks(tasks, operation) {
|
|
126
|
+
if (tasks.length === 0) {
|
|
127
|
+
info('No tasks match the criteria');
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
console.log('');
|
|
131
|
+
console.log(chalk.bold(`${operation} - ${tasks.length} task(s) affected:`));
|
|
132
|
+
console.log('');
|
|
133
|
+
const table = new Table({
|
|
134
|
+
head: [
|
|
135
|
+
chalk.gray('ID'),
|
|
136
|
+
chalk.gray('Status'),
|
|
137
|
+
chalk.gray('Priority'),
|
|
138
|
+
chalk.gray('Title'),
|
|
139
|
+
].map(h => chalk.bold(h)),
|
|
140
|
+
colWidths: [10, 15, 10, 50],
|
|
141
|
+
wordWrap: true,
|
|
142
|
+
});
|
|
143
|
+
for (const task of tasks) {
|
|
144
|
+
table.push([
|
|
145
|
+
task.id.substring(0, 8),
|
|
146
|
+
task.status,
|
|
147
|
+
task.priority,
|
|
148
|
+
task.title.substring(0, 50),
|
|
149
|
+
]);
|
|
150
|
+
}
|
|
151
|
+
console.log(table.toString());
|
|
152
|
+
console.log('');
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Batch update-status subcommand
|
|
156
|
+
*/
|
|
157
|
+
async function batchUpdateStatus(graph, newStatus, filterOptions, dryRun) {
|
|
158
|
+
const tasks = applyBatchFilters(graph, filterOptions);
|
|
159
|
+
const result = {
|
|
160
|
+
success: true,
|
|
161
|
+
affected: 0,
|
|
162
|
+
failed: 0,
|
|
163
|
+
errors: [],
|
|
164
|
+
affectedTasks: [],
|
|
165
|
+
};
|
|
166
|
+
if (dryRun) {
|
|
167
|
+
previewTasks(tasks, 'Update Status');
|
|
168
|
+
result.affected = tasks.length;
|
|
169
|
+
result.affectedTasks = tasks.map(t => t.id);
|
|
170
|
+
return result;
|
|
171
|
+
}
|
|
172
|
+
for (const task of tasks) {
|
|
173
|
+
try {
|
|
174
|
+
task.setStatus(newStatus);
|
|
175
|
+
result.affected++;
|
|
176
|
+
result.affectedTasks.push(task.id);
|
|
177
|
+
}
|
|
178
|
+
catch (err) {
|
|
179
|
+
result.failed++;
|
|
180
|
+
if (err instanceof Error) {
|
|
181
|
+
result.errors.push(`Task ${task.id.substring(0, 8)}: ${err.message}`);
|
|
182
|
+
}
|
|
183
|
+
result.success = false;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return result;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Batch delete subcommand
|
|
190
|
+
*/
|
|
191
|
+
async function batchDelete(graph, filterOptions, dryRun, force) {
|
|
192
|
+
const tasks = applyBatchFilters(graph, filterOptions);
|
|
193
|
+
const result = {
|
|
194
|
+
success: true,
|
|
195
|
+
affected: 0,
|
|
196
|
+
failed: 0,
|
|
197
|
+
errors: [],
|
|
198
|
+
affectedTasks: [],
|
|
199
|
+
};
|
|
200
|
+
if (dryRun) {
|
|
201
|
+
previewTasks(tasks, 'Delete Tasks');
|
|
202
|
+
result.affected = tasks.length;
|
|
203
|
+
result.affectedTasks = tasks.map(t => t.id);
|
|
204
|
+
return result;
|
|
205
|
+
}
|
|
206
|
+
if (!force && tasks.length > 0) {
|
|
207
|
+
warning('Use --force flag to actually delete tasks');
|
|
208
|
+
warning('This is a destructive operation that cannot be undone');
|
|
209
|
+
result.success = false;
|
|
210
|
+
result.errors.push('Operation cancelled: --force flag required');
|
|
211
|
+
return result;
|
|
212
|
+
}
|
|
213
|
+
// Delete tasks (in reverse order to handle dependencies)
|
|
214
|
+
for (let i = tasks.length - 1; i >= 0; i--) {
|
|
215
|
+
const task = tasks[i];
|
|
216
|
+
if (!task)
|
|
217
|
+
continue;
|
|
218
|
+
try {
|
|
219
|
+
graph.removeNode(task.id);
|
|
220
|
+
result.affected++;
|
|
221
|
+
result.affectedTasks.push(task.id);
|
|
222
|
+
}
|
|
223
|
+
catch (err) {
|
|
224
|
+
result.failed++;
|
|
225
|
+
if (err instanceof Error) {
|
|
226
|
+
result.errors.push(`Task ${task.id.substring(0, 8)}: ${err.message}`);
|
|
227
|
+
}
|
|
228
|
+
result.success = false;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return result;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Batch add-blocker subcommand
|
|
235
|
+
*/
|
|
236
|
+
async function batchAddBlocker(graph, blockerId, filterOptions, dryRun) {
|
|
237
|
+
const tasks = applyBatchFilters(graph, filterOptions);
|
|
238
|
+
const result = {
|
|
239
|
+
success: true,
|
|
240
|
+
affected: 0,
|
|
241
|
+
failed: 0,
|
|
242
|
+
errors: [],
|
|
243
|
+
affectedTasks: [],
|
|
244
|
+
};
|
|
245
|
+
// Validate blocker exists
|
|
246
|
+
const blockerTask = graph.getNode(blockerId);
|
|
247
|
+
if (!blockerTask) {
|
|
248
|
+
result.success = false;
|
|
249
|
+
result.errors.push(`Blocker task not found: ${blockerId}`);
|
|
250
|
+
return result;
|
|
251
|
+
}
|
|
252
|
+
if (dryRun) {
|
|
253
|
+
previewTasks(tasks, `Add Blocker ${blockerId.substring(0, 8)}`);
|
|
254
|
+
result.affected = tasks.length;
|
|
255
|
+
result.affectedTasks = tasks.map(t => t.id);
|
|
256
|
+
return result;
|
|
257
|
+
}
|
|
258
|
+
for (const task of tasks) {
|
|
259
|
+
try {
|
|
260
|
+
// Check if task already has this blocker
|
|
261
|
+
if (!task.blockers.includes(blockerId)) {
|
|
262
|
+
task.addBlocker(blockerId);
|
|
263
|
+
result.affected++;
|
|
264
|
+
result.affectedTasks.push(task.id);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
catch (err) {
|
|
268
|
+
result.failed++;
|
|
269
|
+
if (err instanceof Error) {
|
|
270
|
+
result.errors.push(`Task ${task.id.substring(0, 8)}: ${err.message}`);
|
|
271
|
+
}
|
|
272
|
+
result.success = false;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return result;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Batch remove-blocker subcommand
|
|
279
|
+
*/
|
|
280
|
+
async function batchRemoveBlocker(graph, blockerId, filterOptions, dryRun) {
|
|
281
|
+
const tasks = applyBatchFilters(graph, filterOptions);
|
|
282
|
+
const result = {
|
|
283
|
+
success: true,
|
|
284
|
+
affected: 0,
|
|
285
|
+
failed: 0,
|
|
286
|
+
errors: [],
|
|
287
|
+
affectedTasks: [],
|
|
288
|
+
};
|
|
289
|
+
if (dryRun) {
|
|
290
|
+
previewTasks(tasks, `Remove Blocker ${blockerId.substring(0, 8)}`);
|
|
291
|
+
result.affected = tasks.length;
|
|
292
|
+
result.affectedTasks = tasks.map(t => t.id);
|
|
293
|
+
return result;
|
|
294
|
+
}
|
|
295
|
+
for (const task of tasks) {
|
|
296
|
+
try {
|
|
297
|
+
// Check if task has this blocker
|
|
298
|
+
if (task.blockers.includes(blockerId)) {
|
|
299
|
+
task.removeBlocker(blockerId);
|
|
300
|
+
result.affected++;
|
|
301
|
+
result.affectedTasks.push(task.id);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
catch (err) {
|
|
305
|
+
result.failed++;
|
|
306
|
+
if (err instanceof Error) {
|
|
307
|
+
result.errors.push(`Task ${task.id.substring(0, 8)}: ${err.message}`);
|
|
308
|
+
}
|
|
309
|
+
result.success = false;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
return result;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Display batch operation results
|
|
316
|
+
*/
|
|
317
|
+
function displayResults(result, dryRun) {
|
|
318
|
+
console.log('');
|
|
319
|
+
if (dryRun) {
|
|
320
|
+
info('Dry run complete - no changes made');
|
|
321
|
+
console.log(chalk.gray(`Would affect: ${result.affected} task(s)`));
|
|
322
|
+
}
|
|
323
|
+
else if (result.success) {
|
|
324
|
+
success(`Batch operation complete: ${result.affected} task(s) affected`);
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
error(`Batch operation partially failed: ${result.affected} succeeded, ${result.failed} failed`);
|
|
328
|
+
if (result.errors.length > 0) {
|
|
329
|
+
console.log('');
|
|
330
|
+
warning('Errors:');
|
|
331
|
+
for (const err of result.errors) {
|
|
332
|
+
console.log(` - ${err}`);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
console.log('');
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Create the batch command with subcommands
|
|
340
|
+
*/
|
|
341
|
+
export const batchCommand = new Command('batch')
|
|
342
|
+
.description('Perform bulk operations on multiple tasks')
|
|
343
|
+
.addHelpText('after', `
|
|
344
|
+
Safety Features:
|
|
345
|
+
--dry-run Preview affected tasks without making changes
|
|
346
|
+
--force Required for destructive operations (delete)
|
|
347
|
+
|
|
348
|
+
Filter Options (same as 'find' command):
|
|
349
|
+
--status <status> Filter by status
|
|
350
|
+
--priority <priority> Filter by priority
|
|
351
|
+
--title <pattern> Filter by title substring
|
|
352
|
+
--search <text> Full-text search
|
|
353
|
+
--has-file <path> Filter by related file
|
|
354
|
+
--verified <library> Filter by C7 verification
|
|
355
|
+
--without-blockers Filter to tasks with no blockers
|
|
356
|
+
--orphans Filter to orphan tasks
|
|
357
|
+
--leaves Filter to leaf tasks
|
|
358
|
+
|
|
359
|
+
Examples:
|
|
360
|
+
# Preview batch status update
|
|
361
|
+
$ octie batch update-status in_progress --status ready --dry-run
|
|
362
|
+
|
|
363
|
+
# Update all ready tasks to in_progress
|
|
364
|
+
$ octie batch update-status in_progress --status ready
|
|
365
|
+
|
|
366
|
+
# Delete all orphan tasks (requires --force)
|
|
367
|
+
$ octie batch delete --orphans --force
|
|
368
|
+
|
|
369
|
+
# Add blocker to all tasks matching filter
|
|
370
|
+
$ octie batch add-blocker task-123 --priority top
|
|
371
|
+
|
|
372
|
+
# Remove blocker from tasks
|
|
373
|
+
$ octie batch remove-blocker task-123 --status blocked
|
|
374
|
+
`);
|
|
375
|
+
// Subcommand: update-status
|
|
376
|
+
batchCommand
|
|
377
|
+
.command('update-status <status>')
|
|
378
|
+
.description('Update status of all tasks matching filters')
|
|
379
|
+
.option('-t, --title <pattern>', 'Filter by title')
|
|
380
|
+
.option('-s, --search <text>', 'Full-text search filter')
|
|
381
|
+
.option('-f, --has-file <path>', 'Filter by related file')
|
|
382
|
+
.option('-v, --verified <library>', 'Filter by C7 verification')
|
|
383
|
+
.option('--without-blockers', 'Filter to tasks with no blockers')
|
|
384
|
+
.option('--orphans', 'Filter to orphan tasks')
|
|
385
|
+
.option('--leaves', 'Filter to leaf tasks')
|
|
386
|
+
.option('--status <currentStatus>', 'Filter by current status')
|
|
387
|
+
.option('-p, --priority <priority>', 'Filter by priority')
|
|
388
|
+
.option('--dry-run', 'Preview changes without making them')
|
|
389
|
+
.action(async (newStatus, options, command) => {
|
|
390
|
+
try {
|
|
391
|
+
const globalOpts = command.parent?.parent?.opts() || {};
|
|
392
|
+
const projectPath = await getProjectPath(globalOpts.project);
|
|
393
|
+
const graph = await loadGraph(projectPath);
|
|
394
|
+
const result = await batchUpdateStatus(graph, newStatus, options, options.dryRun || false);
|
|
395
|
+
displayResults(result, options.dryRun || false);
|
|
396
|
+
if (!options.dryRun && result.success) {
|
|
397
|
+
await saveGraph(projectPath, graph);
|
|
398
|
+
}
|
|
399
|
+
process.exit(result.success ? 0 : 1);
|
|
400
|
+
}
|
|
401
|
+
catch (err) {
|
|
402
|
+
if (err instanceof Error) {
|
|
403
|
+
error(err.message);
|
|
404
|
+
}
|
|
405
|
+
else {
|
|
406
|
+
error('Failed to batch update status');
|
|
407
|
+
}
|
|
408
|
+
process.exit(1);
|
|
409
|
+
}
|
|
410
|
+
});
|
|
411
|
+
// Subcommand: delete
|
|
412
|
+
batchCommand
|
|
413
|
+
.command('delete')
|
|
414
|
+
.description('Delete all tasks matching filters')
|
|
415
|
+
.option('-t, --title <pattern>', 'Filter by title')
|
|
416
|
+
.option('-s, --search <text>', 'Full-text search filter')
|
|
417
|
+
.option('-f, --has-file <path>', 'Filter by related file')
|
|
418
|
+
.option('-v, --verified <library>', 'Filter by C7 verification')
|
|
419
|
+
.option('--without-blockers', 'Filter to tasks with no blockers')
|
|
420
|
+
.option('--orphans', 'Filter to orphan tasks')
|
|
421
|
+
.option('--leaves', 'Filter to leaf tasks')
|
|
422
|
+
.option('--status <status>', 'Filter by status')
|
|
423
|
+
.option('-p, --priority <priority>', 'Filter by priority')
|
|
424
|
+
.option('--dry-run', 'Preview changes without making them')
|
|
425
|
+
.option('--force', 'Actually delete tasks (required for safety)')
|
|
426
|
+
.action(async (options, command) => {
|
|
427
|
+
try {
|
|
428
|
+
const globalOpts = command.parent?.parent?.opts() || {};
|
|
429
|
+
const projectPath = await getProjectPath(globalOpts.project);
|
|
430
|
+
const graph = await loadGraph(projectPath);
|
|
431
|
+
const result = await batchDelete(graph, options, options.dryRun || false, options.force || false);
|
|
432
|
+
displayResults(result, options.dryRun || false);
|
|
433
|
+
if (!options.dryRun && result.success) {
|
|
434
|
+
info('Creating backup before save...');
|
|
435
|
+
await saveGraph(projectPath, graph);
|
|
436
|
+
}
|
|
437
|
+
process.exit(result.success ? 0 : 1);
|
|
438
|
+
}
|
|
439
|
+
catch (err) {
|
|
440
|
+
if (err instanceof Error) {
|
|
441
|
+
error(err.message);
|
|
442
|
+
}
|
|
443
|
+
else {
|
|
444
|
+
error('Failed to batch delete tasks');
|
|
445
|
+
}
|
|
446
|
+
process.exit(1);
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
// Subcommand: add-blocker
|
|
450
|
+
batchCommand
|
|
451
|
+
.command('add-blocker <blocker-id>')
|
|
452
|
+
.description('Add blocker to all tasks matching filters')
|
|
453
|
+
.option('-t, --title <pattern>', 'Filter by title')
|
|
454
|
+
.option('-s, --search <text>', 'Full-text search filter')
|
|
455
|
+
.option('-f, --has-file <path>', 'Filter by related file')
|
|
456
|
+
.option('-v, --verified <library>', 'Filter by C7 verification')
|
|
457
|
+
.option('--without-blockers', 'Filter to tasks with no blockers')
|
|
458
|
+
.option('--orphans', 'Filter to orphan tasks')
|
|
459
|
+
.option('--leaves', 'Filter to leaf tasks')
|
|
460
|
+
.option('--status <status>', 'Filter by status')
|
|
461
|
+
.option('-p, --priority <priority>', 'Filter by priority')
|
|
462
|
+
.option('--dry-run', 'Preview changes without making them')
|
|
463
|
+
.action(async (blockerId, options, command) => {
|
|
464
|
+
try {
|
|
465
|
+
const globalOpts = command.parent?.parent?.opts() || {};
|
|
466
|
+
const projectPath = await getProjectPath(globalOpts.project);
|
|
467
|
+
const graph = await loadGraph(projectPath);
|
|
468
|
+
const result = await batchAddBlocker(graph, blockerId, options, options.dryRun || false);
|
|
469
|
+
displayResults(result, options.dryRun || false);
|
|
470
|
+
if (!options.dryRun && result.success) {
|
|
471
|
+
await saveGraph(projectPath, graph);
|
|
472
|
+
}
|
|
473
|
+
process.exit(result.success ? 0 : 1);
|
|
474
|
+
}
|
|
475
|
+
catch (err) {
|
|
476
|
+
if (err instanceof Error) {
|
|
477
|
+
error(err.message);
|
|
478
|
+
}
|
|
479
|
+
else {
|
|
480
|
+
error('Failed to batch add blocker');
|
|
481
|
+
}
|
|
482
|
+
process.exit(1);
|
|
483
|
+
}
|
|
484
|
+
});
|
|
485
|
+
// Subcommand: remove-blocker
|
|
486
|
+
batchCommand
|
|
487
|
+
.command('remove-blocker <blocker-id>')
|
|
488
|
+
.description('Remove blocker from all tasks matching filters')
|
|
489
|
+
.option('-t, --title <pattern>', 'Filter by title')
|
|
490
|
+
.option('-s, --search <text>', 'Full-text search filter')
|
|
491
|
+
.option('-f, --has-file <path>', 'Filter by related file')
|
|
492
|
+
.option('-v, --verified <library>', 'Filter by C7 verification')
|
|
493
|
+
.option('--without-blockers', 'Filter to tasks with no blockers')
|
|
494
|
+
.option('--orphans', 'Filter to orphan tasks')
|
|
495
|
+
.option('--leaves', 'Filter to leaf tasks')
|
|
496
|
+
.option('--status <status>', 'Filter by status')
|
|
497
|
+
.option('-p, --priority <priority>', 'Filter by priority')
|
|
498
|
+
.option('--dry-run', 'Preview changes without making them')
|
|
499
|
+
.action(async (blockerId, options, command) => {
|
|
500
|
+
try {
|
|
501
|
+
const globalOpts = command.parent?.parent?.opts() || {};
|
|
502
|
+
const projectPath = await getProjectPath(globalOpts.project);
|
|
503
|
+
const graph = await loadGraph(projectPath);
|
|
504
|
+
const result = await batchRemoveBlocker(graph, blockerId, options, options.dryRun || false);
|
|
505
|
+
displayResults(result, options.dryRun || false);
|
|
506
|
+
if (!options.dryRun && result.success) {
|
|
507
|
+
await saveGraph(projectPath, graph);
|
|
508
|
+
}
|
|
509
|
+
process.exit(result.success ? 0 : 1);
|
|
510
|
+
}
|
|
511
|
+
catch (err) {
|
|
512
|
+
if (err instanceof Error) {
|
|
513
|
+
error(err.message);
|
|
514
|
+
}
|
|
515
|
+
else {
|
|
516
|
+
error('Failed to batch remove blocker');
|
|
517
|
+
}
|
|
518
|
+
process.exit(1);
|
|
519
|
+
}
|
|
520
|
+
});
|
|
521
|
+
//# sourceMappingURL=batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/cli/commands/batch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,YAAY,CAAC;AAI/B,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AA4B1G;;GAEG;AACH,SAAS,YAAY,CAAC,IAAc,EAAE,OAAe;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,IAAc,EAAE,KAAa;IAClD,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAEvC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACrE,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9F,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAExF,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAc,EAAE,QAAgB;IACnD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACjC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CACjD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,IAAc,EAAE,SAAiB;IAC9D,MAAM,YAAY,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAC7C,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAC/B,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAClD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,IAAc;IACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAAqB,EAAE,OAA2B;IAC3E,IAAI,OAAO,GAAuB,IAAI,CAAC;IACvC,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAEhC,wDAAwD;IACxD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,OAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QACrC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,OAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,OAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,uBAAuB;IACvB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,KAAM,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,2CAA2C;IAC3C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,MAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,0BAA0B;IAC1B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,OAAQ,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,oDAAoD;IACpD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,QAAS,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,wBAAwB;IACxB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,0BAA0B;IAC1B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,KAAiB,EAAE,SAAiB;IACxD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,MAAM,KAAK,CAAC,MAAM,oBAAoB,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,IAAI,EAAE;YACJ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;SACpB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3B,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;YACvB,IAAI,CAAC,MAAM;YACX,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAC9B,KAAqB,EACrB,SAAqB,EACrB,aAAiC,EACjC,MAAe;IAEf,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACtD,MAAM,MAAM,GAAgB;QAC1B,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,EAAE;QACV,aAAa,EAAE,EAAE;KAClB,CAAC;IAEF,IAAI,MAAM,EAAE,CAAC;QACX,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACrC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC/B,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC1B,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;gBACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CACxB,KAAqB,EACrB,aAAiC,EACjC,MAAe,EACf,KAAc;IAEd,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACtD,MAAM,MAAM,GAAgB;QAC1B,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,EAAE;QACV,aAAa,EAAE,EAAE;KAClB,CAAC;IAEF,IAAI,MAAM,EAAE,CAAC;QACX,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACpC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC/B,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,2CAA2C,CAAC,CAAC;QACrD,OAAO,CAAC,uDAAuD,CAAC,CAAC;QACjE,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACjE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yDAAyD;IACzD,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,IAAI,CAAC;YACH,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1B,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;gBACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAC5B,KAAqB,EACrB,SAAiB,EACjB,aAAiC,EACjC,MAAe;IAEf,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACtD,MAAM,MAAM,GAAgB;QAC1B,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,EAAE;QACV,aAAa,EAAE,EAAE;KAClB,CAAC;IAEF,0BAA0B;IAC1B,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QAC3D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,YAAY,CAAC,KAAK,EAAE,eAAe,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAChE,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC/B,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,yCAAyC;YACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAC3B,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;gBACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,KAAqB,EACrB,SAAiB,EACjB,aAAiC,EACjC,MAAe;IAEf,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACtD,MAAM,MAAM,GAAgB;QAC1B,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,EAAE;QACV,aAAa,EAAE,EAAE;KAClB,CAAC;IAEF,IAAI,MAAM,EAAE,CAAC;QACX,YAAY,CAAC,KAAK,EAAE,kBAAkB,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC/B,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,iCAAiC;YACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;gBAC9B,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;gBACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,MAAmB,EAAE,MAAe;IAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,QAAQ,UAAU,CAAC,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1B,OAAO,CAAC,6BAA6B,MAAM,CAAC,QAAQ,mBAAmB,CAAC,CAAC;IAC3E,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,qCAAqC,MAAM,CAAC,QAAQ,eAAe,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;QAEjG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,SAAS,CAAC,CAAC;YACnB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,2CAA2C,CAAC;KACxD,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BvB,CAAC,CAAC;AAEH,4BAA4B;AAC5B,YAAY;KACT,OAAO,CAAC,wBAAwB,CAAC;KACjC,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;KACxD,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC;KACzD,MAAM,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;KAC/D,MAAM,CAAC,oBAAoB,EAAE,kCAAkC,CAAC;KAChE,MAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC;KAC7C,MAAM,CAAC,UAAU,EAAE,sBAAsB,CAAC;KAC1C,MAAM,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;KAC9D,MAAM,CAAC,2BAA2B,EAAE,oBAAoB,CAAC;KACzD,MAAM,CAAC,WAAW,EAAE,qCAAqC,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;QAE3C,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC,KAAK,EACL,SAAuB,EACvB,OAAO,EACP,OAAO,CAAC,MAAM,IAAI,KAAK,CACxB,CAAC;QAEF,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;QAEhD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACzB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,qBAAqB;AACrB,YAAY;KACT,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;KACxD,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC;KACzD,MAAM,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;KAC/D,MAAM,CAAC,oBAAoB,EAAE,kCAAkC,CAAC;KAChE,MAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC;KAC7C,MAAM,CAAC,UAAU,EAAE,sBAAsB,CAAC;KAC1C,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;KAC/C,MAAM,CAAC,2BAA2B,EAAE,oBAAoB,CAAC;KACzD,MAAM,CAAC,WAAW,EAAE,qCAAqC,CAAC;KAC1D,MAAM,CAAC,SAAS,EAAE,6CAA6C,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IACjC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;QAE3C,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,KAAK,EACL,OAAO,EACP,OAAO,CAAC,MAAM,IAAI,KAAK,EACvB,OAAO,CAAC,KAAK,IAAI,KAAK,CACvB,CAAC;QAEF,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;QAEhD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YACvC,MAAM,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACzB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,0BAA0B;AAC1B,YAAY;KACT,OAAO,CAAC,0BAA0B,CAAC;KACnC,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;KACxD,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC;KACzD,MAAM,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;KAC/D,MAAM,CAAC,oBAAoB,EAAE,kCAAkC,CAAC;KAChE,MAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC;KAC7C,MAAM,CAAC,UAAU,EAAE,sBAAsB,CAAC;KAC1C,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;KAC/C,MAAM,CAAC,2BAA2B,EAAE,oBAAoB,CAAC;KACzD,MAAM,CAAC,WAAW,EAAE,qCAAqC,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;QAE3C,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,KAAK,EACL,SAAS,EACT,OAAO,EACP,OAAO,CAAC,MAAM,IAAI,KAAK,CACxB,CAAC;QAEF,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;QAEhD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACzB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,6BAA6B;AAC7B,YAAY;KACT,OAAO,CAAC,6BAA6B,CAAC;KACtC,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;KACxD,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC;KACzD,MAAM,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;KAC/D,MAAM,CAAC,oBAAoB,EAAE,kCAAkC,CAAC;KAChE,MAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC;KAC7C,MAAM,CAAC,UAAU,EAAE,sBAAsB,CAAC;KAC1C,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;KAC/C,MAAM,CAAC,2BAA2B,EAAE,oBAAoB,CAAC;KACzD,MAAM,CAAC,WAAW,EAAE,qCAAqC,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;QAE3C,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,KAAK,EACL,SAAS,EACT,OAAO,EACP,OAAO,CAAC,MAAM,IAAI,KAAK,CACxB,CAAC;QAEF,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;QAEhD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACzB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAkD5C;;GAEG;AACH,eAAO,MAAM,aAAa,SAoStB,CAAC"}
|