opentasks 0.0.8 → 0.1.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.
Files changed (35) hide show
  1. package/dist/cli.js +0 -0
  2. package/dist/graph/query.js +3 -3
  3. package/dist/graph/query.js.map +1 -1
  4. package/dist/providers/map-connector.d.ts +4 -0
  5. package/dist/providers/map-connector.d.ts.map +1 -1
  6. package/dist/providers/map-connector.js +48 -0
  7. package/dist/providers/map-connector.js.map +1 -1
  8. package/dist/storage/interface.d.ts +6 -0
  9. package/dist/storage/interface.d.ts.map +1 -1
  10. package/dist/storage/interface.js.map +1 -1
  11. package/dist/storage/sqlite.d.ts +1 -0
  12. package/dist/storage/sqlite.d.ts.map +1 -1
  13. package/dist/storage/sqlite.js +11 -0
  14. package/dist/storage/sqlite.js.map +1 -1
  15. package/package.json +2 -2
  16. package/dist/daemon/entire-linker.d.ts +0 -71
  17. package/dist/daemon/entire-linker.d.ts.map +0 -1
  18. package/dist/daemon/entire-linker.js +0 -466
  19. package/dist/daemon/entire-linker.js.map +0 -1
  20. package/dist/daemon/entire-watcher.d.ts +0 -66
  21. package/dist/daemon/entire-watcher.d.ts.map +0 -1
  22. package/dist/daemon/entire-watcher.js +0 -258
  23. package/dist/daemon/entire-watcher.js.map +0 -1
  24. package/dist/providers/entire.d.ts +0 -68
  25. package/dist/providers/entire.d.ts.map +0 -1
  26. package/dist/providers/entire.js +0 -461
  27. package/dist/providers/entire.js.map +0 -1
  28. package/dist/tracking/claude-task-reconstructor.d.ts +0 -41
  29. package/dist/tracking/claude-task-reconstructor.d.ts.map +0 -1
  30. package/dist/tracking/claude-task-reconstructor.js +0 -91
  31. package/dist/tracking/claude-task-reconstructor.js.map +0 -1
  32. package/dist/tracking/plan-mode-tracker.d.ts +0 -20
  33. package/dist/tracking/plan-mode-tracker.d.ts.map +0 -1
  34. package/dist/tracking/plan-mode-tracker.js +0 -35
  35. package/dist/tracking/plan-mode-tracker.js.map +0 -1
@@ -1,461 +0,0 @@
1
- /**
2
- * Entire Provider
3
- *
4
- * Read-only provider that resolves entire:// URIs to Entire session
5
- * and checkpoint data. Uses the sessionlog package for direct
6
- * filesystem/git access — no external binary required.
7
- *
8
- * URI formats:
9
- * entire://session/<session-id>
10
- * entire://checkpoint/<checkpoint-id>
11
- */
12
- import { ProviderError } from './types.js';
13
- import { createNativeSessionlogStore } from 'sessionlog';
14
- // ============================================================================
15
- // Constants
16
- // ============================================================================
17
- /**
18
- * Pattern for entire:// URIs
19
- * Format: entire://(session|checkpoint)/<id>
20
- */
21
- const ENTIRE_URI_PATTERN = /^entire:\/\/(session|checkpoint)\/(.+)$/i;
22
- // ============================================================================
23
- // CLI Exec Store (shells out to Go binary)
24
- // ============================================================================
25
- /**
26
- * Create an Entire store that shells out to the Go CLI binary.
27
- * Used when the user explicitly configures an executable path.
28
- */
29
- export function createEntireExecStore(config) {
30
- const { executable, timeout = 30000, cwd = process.cwd() } = config;
31
- async function execEntire(args) {
32
- const { exec } = await import('child_process');
33
- const { promisify } = await import('util');
34
- const execAsync = promisify(exec);
35
- try {
36
- const result = await execAsync(`${executable} ${args}`, {
37
- cwd,
38
- timeout,
39
- env: { ...process.env, NO_COLOR: '1' },
40
- });
41
- return result.stdout.trim();
42
- }
43
- catch (error) {
44
- if (error instanceof Error && 'code' in error) {
45
- throw new ProviderError('OPERATION_FAILED', `Entire CLI failed: ${error.message}`, 'entire', error);
46
- }
47
- throw error;
48
- }
49
- }
50
- function parseSessionJson(json) {
51
- try {
52
- const data = JSON.parse(json);
53
- const sessions = Array.isArray(data) ? data : [data];
54
- return sessions.map((s) => ({
55
- id: String(s.id ?? s.sessionId ?? ''),
56
- agent: String(s.agent ?? s.agentType ?? 'unknown'),
57
- phase: String(s.phase ?? s.state ?? 'ACTIVE').toUpperCase(),
58
- baseCommit: s.baseCommit,
59
- branch: s.branch,
60
- startedAt: s.startedAt,
61
- endedAt: s.endedAt,
62
- checkpoints: s.checkpoints,
63
- tokenUsage: s.tokenUsage,
64
- filesTouched: s.filesTouched,
65
- summary: s.summary,
66
- }));
67
- }
68
- catch {
69
- return [];
70
- }
71
- }
72
- function parseCheckpointJson(json) {
73
- try {
74
- const data = JSON.parse(json);
75
- const checkpoints = Array.isArray(data) ? data : [data];
76
- return checkpoints.map((c) => ({
77
- id: String(c.id ?? c.checkpointId ?? ''),
78
- sessionId: c.sessionId,
79
- commitHash: c.commitHash,
80
- commitMessage: c.commitMessage,
81
- promptCount: c.promptCount,
82
- filesModified: c.filesModified,
83
- filesNew: c.filesNew,
84
- filesDeleted: c.filesDeleted,
85
- tokenUsage: c.tokenUsage,
86
- context: c.context,
87
- }));
88
- }
89
- catch {
90
- return [];
91
- }
92
- }
93
- return {
94
- async getSession(id) {
95
- try {
96
- const output = await execEntire(`status --json`);
97
- const sessions = parseSessionJson(output);
98
- return sessions.find((s) => s.id === id) ?? null;
99
- }
100
- catch {
101
- return null;
102
- }
103
- },
104
- async listSessions() {
105
- try {
106
- const output = await execEntire(`status --json`);
107
- return parseSessionJson(output);
108
- }
109
- catch {
110
- return [];
111
- }
112
- },
113
- async getCheckpoint(id) {
114
- try {
115
- const output = await execEntire(`rewind --list`);
116
- const checkpoints = parseCheckpointJson(output);
117
- return checkpoints.find((c) => c.id === id) ?? null;
118
- }
119
- catch {
120
- return null;
121
- }
122
- },
123
- async listCheckpoints() {
124
- try {
125
- const output = await execEntire(`rewind --list`);
126
- return parseCheckpointJson(output);
127
- }
128
- catch {
129
- return [];
130
- }
131
- },
132
- async search(query) {
133
- const results = [];
134
- const lowerQuery = query.toLowerCase();
135
- try {
136
- const sessions = await this.listSessions();
137
- for (const session of sessions) {
138
- if (session.summary?.toLowerCase().includes(lowerQuery) ||
139
- session.id.toLowerCase().includes(lowerQuery) ||
140
- session.filesTouched?.some((f) => f.toLowerCase().includes(lowerQuery))) {
141
- results.push(session);
142
- }
143
- }
144
- }
145
- catch {
146
- // Continue with checkpoints
147
- }
148
- try {
149
- const checkpoints = await this.listCheckpoints();
150
- for (const cp of checkpoints) {
151
- if (cp.commitMessage?.toLowerCase().includes(lowerQuery) ||
152
- cp.id.toLowerCase().includes(lowerQuery) ||
153
- cp.context?.toLowerCase().includes(lowerQuery) ||
154
- cp.filesModified?.some((f) => f.toLowerCase().includes(lowerQuery)) ||
155
- cp.filesNew?.some((f) => f.toLowerCase().includes(lowerQuery))) {
156
- results.push(cp);
157
- }
158
- }
159
- }
160
- catch {
161
- // Return what we have
162
- }
163
- return results;
164
- },
165
- };
166
- }
167
- // ============================================================================
168
- // Store Factory (with CLI → native fallback)
169
- // ============================================================================
170
- /**
171
- * Check if a CLI executable is available on the system.
172
- */
173
- async function isExecutableAvailable(executable) {
174
- const { exec } = await import('child_process');
175
- const { promisify } = await import('util');
176
- const execAsync = promisify(exec);
177
- try {
178
- await execAsync(`${executable} --version`, { timeout: 5000 });
179
- return true;
180
- }
181
- catch {
182
- return false;
183
- }
184
- }
185
- /**
186
- * Create an Entire store with optional CLI fallback.
187
- *
188
- * - If `config.executable` is set and the binary is found, uses the Go CLI.
189
- * - Otherwise, uses the built-in TS store (sessionlog package).
190
- */
191
- export async function createEntireCliStoreAsync(config = {}) {
192
- const cwd = config.cwd ?? process.cwd();
193
- if (config.executable) {
194
- const available = await isExecutableAvailable(config.executable);
195
- if (available) {
196
- return createEntireExecStore({
197
- executable: config.executable,
198
- timeout: config.timeout,
199
- cwd,
200
- });
201
- }
202
- }
203
- return createNativeSessionlogStore(cwd);
204
- }
205
- /**
206
- * Create an Entire store (sync — always uses built-in TS store).
207
- * For the CLI-preferred path, use createEntireCliStoreAsync instead.
208
- */
209
- export function createEntireCliStore(config = {}) {
210
- const cwd = config.cwd ?? process.cwd();
211
- return createNativeSessionlogStore(cwd);
212
- }
213
- /**
214
- * Create an in-memory Entire store for testing
215
- */
216
- export function createInMemoryEntireStore() {
217
- const sessions = new Map();
218
- const checkpoints = new Map();
219
- return {
220
- addSession(session) {
221
- sessions.set(session.id, session);
222
- },
223
- addCheckpoint(checkpoint) {
224
- checkpoints.set(checkpoint.id, checkpoint);
225
- },
226
- async getSession(id) {
227
- return sessions.get(id) ?? null;
228
- },
229
- async listSessions() {
230
- return Array.from(sessions.values());
231
- },
232
- async getCheckpoint(id) {
233
- return checkpoints.get(id) ?? null;
234
- },
235
- async listCheckpoints() {
236
- return Array.from(checkpoints.values());
237
- },
238
- async search(query) {
239
- const results = [];
240
- const lowerQuery = query.toLowerCase();
241
- for (const session of sessions.values()) {
242
- if (session.summary?.toLowerCase().includes(lowerQuery) ||
243
- session.id.toLowerCase().includes(lowerQuery) ||
244
- session.filesTouched?.some((f) => f.toLowerCase().includes(lowerQuery))) {
245
- results.push(session);
246
- }
247
- }
248
- for (const cp of checkpoints.values()) {
249
- if (cp.commitMessage?.toLowerCase().includes(lowerQuery) ||
250
- cp.id.toLowerCase().includes(lowerQuery) ||
251
- cp.context?.toLowerCase().includes(lowerQuery) ||
252
- cp.filesModified?.some((f) => f.toLowerCase().includes(lowerQuery)) ||
253
- cp.filesNew?.some((f) => f.toLowerCase().includes(lowerQuery))) {
254
- results.push(cp);
255
- }
256
- }
257
- return results;
258
- },
259
- };
260
- }
261
- // ============================================================================
262
- // Node Conversion
263
- // ============================================================================
264
- /**
265
- * Convert an Entire session to a ProviderNode
266
- */
267
- function sessionToProviderNode(session) {
268
- return {
269
- id: session.id,
270
- uri: `entire://session/${session.id}`,
271
- type: 'external',
272
- title: `Session: ${session.summary || session.id}`,
273
- content: session.summary,
274
- status: session.phase === 'ENDED' ? 'closed' : 'open',
275
- rawData: {
276
- entityType: 'session',
277
- agent: session.agent,
278
- baseCommit: session.baseCommit,
279
- branch: session.branch,
280
- phase: session.phase,
281
- tokenUsage: session.tokenUsage,
282
- filesTouched: session.filesTouched,
283
- checkpoints: session.checkpoints,
284
- startedAt: session.startedAt,
285
- endedAt: session.endedAt,
286
- skillsUsed: session.skillsUsed,
287
- },
288
- fetchedAt: new Date().toISOString(),
289
- };
290
- }
291
- /**
292
- * Convert an Entire checkpoint to a ProviderNode
293
- */
294
- function checkpointToProviderNode(checkpoint) {
295
- return {
296
- id: checkpoint.id,
297
- uri: `entire://checkpoint/${checkpoint.id}`,
298
- type: 'external',
299
- title: `Checkpoint: ${checkpoint.commitMessage || checkpoint.id}`,
300
- content: checkpoint.context,
301
- status: 'closed', // Checkpoints are immutable
302
- rawData: {
303
- entityType: 'checkpoint',
304
- sessionId: checkpoint.sessionId,
305
- commitHash: checkpoint.commitHash,
306
- commitMessage: checkpoint.commitMessage,
307
- promptCount: checkpoint.promptCount,
308
- filesModified: checkpoint.filesModified,
309
- filesNew: checkpoint.filesNew,
310
- filesDeleted: checkpoint.filesDeleted,
311
- tokenUsage: checkpoint.tokenUsage,
312
- },
313
- fetchedAt: new Date().toISOString(),
314
- };
315
- }
316
- /**
317
- * Check if an item is a session (has 'phase' field)
318
- */
319
- function isSession(item) {
320
- return 'phase' in item;
321
- }
322
- // ============================================================================
323
- // Entire Provider Implementation
324
- // ============================================================================
325
- /**
326
- * Create an Entire provider.
327
- *
328
- * When a pre-built store is provided, it is used directly.
329
- * Otherwise, falls back to the sync native store (createEntireCliStore).
330
- * For CLI-preferred creation, build the store via createEntireCliStoreAsync
331
- * and pass it as the `store` parameter.
332
- */
333
- export function createEntireProvider(config = {}, store) {
334
- const entireStore = store ?? createEntireCliStore(config);
335
- const capabilities = {
336
- read: true,
337
- write: false,
338
- search: true,
339
- watch: false,
340
- mount: false,
341
- feedback: false,
342
- };
343
- return {
344
- name: 'entire',
345
- schemes: ['entire'],
346
- capabilities,
347
- // =========================================================================
348
- // URI Operations
349
- // =========================================================================
350
- parseUri(uri) {
351
- const match = uri.match(ENTIRE_URI_PATTERN);
352
- if (match) {
353
- const entityType = match[1].toLowerCase(); // 'session' or 'checkpoint'
354
- const id = match[2];
355
- return {
356
- scheme: 'entire',
357
- workspace: entityType,
358
- id,
359
- isRelative: false,
360
- };
361
- }
362
- return null;
363
- },
364
- buildUri(id, options) {
365
- const entityType = options?.workspace ?? 'session';
366
- if (options?.relative) {
367
- return id;
368
- }
369
- return `entire://${entityType}/${id}`;
370
- },
371
- isValidUri(uri) {
372
- return this.parseUri(uri) !== null;
373
- },
374
- // =========================================================================
375
- // CRUD Operations
376
- // =========================================================================
377
- async get(id) {
378
- const parsed = this.parseUri(id);
379
- const entityType = parsed?.workspace ?? 'session';
380
- const entityId = parsed?.id ?? id;
381
- try {
382
- if (entityType === 'checkpoint') {
383
- const checkpoint = await entireStore.getCheckpoint(entityId);
384
- if (!checkpoint)
385
- return null;
386
- return checkpointToProviderNode(checkpoint);
387
- }
388
- else {
389
- const session = await entireStore.getSession(entityId);
390
- if (!session)
391
- return null;
392
- return sessionToProviderNode(session);
393
- }
394
- }
395
- catch (error) {
396
- if (error instanceof ProviderError)
397
- throw error;
398
- throw new ProviderError('OPERATION_FAILED', `Failed to get entire entity: ${error instanceof Error ? error.message : String(error)}`, 'entire', error instanceof Error ? error : undefined);
399
- }
400
- },
401
- async list(filter) {
402
- try {
403
- const results = [];
404
- // List sessions
405
- const sessions = await entireStore.listSessions();
406
- for (const session of sessions) {
407
- const node = sessionToProviderNode(session);
408
- if (filter?.status && node.status !== filter.status)
409
- continue;
410
- results.push(node);
411
- }
412
- // List checkpoints
413
- const checkpoints = await entireStore.listCheckpoints();
414
- for (const cp of checkpoints) {
415
- const node = checkpointToProviderNode(cp);
416
- if (filter?.status && node.status !== filter.status)
417
- continue;
418
- results.push(node);
419
- }
420
- // Apply limit
421
- if (filter?.limit) {
422
- return results.slice(0, filter.limit);
423
- }
424
- return results;
425
- }
426
- catch (error) {
427
- if (error instanceof ProviderError)
428
- throw error;
429
- throw new ProviderError('OPERATION_FAILED', `Failed to list entire entities: ${error instanceof Error ? error.message : String(error)}`, 'entire', error instanceof Error ? error : undefined);
430
- }
431
- },
432
- async create(_input) {
433
- throw new ProviderError('NOT_SUPPORTED', 'Entire provider is read-only. Sessions and checkpoints are managed by the Entire CLI.', 'entire');
434
- },
435
- async update(_id, _updates) {
436
- throw new ProviderError('NOT_SUPPORTED', 'Entire provider is read-only. Sessions and checkpoints are managed by the Entire CLI.', 'entire');
437
- },
438
- async delete(_id) {
439
- throw new ProviderError('NOT_SUPPORTED', 'Entire provider is read-only. Sessions and checkpoints are managed by the Entire CLI.', 'entire');
440
- },
441
- // =========================================================================
442
- // Search
443
- // =========================================================================
444
- async search(query, options) {
445
- try {
446
- const results = await entireStore.search(query);
447
- let nodes = results.map((item) => isSession(item) ? sessionToProviderNode(item) : checkpointToProviderNode(item));
448
- if (options?.limit) {
449
- nodes = nodes.slice(0, options.limit);
450
- }
451
- return nodes;
452
- }
453
- catch (error) {
454
- if (error instanceof ProviderError)
455
- throw error;
456
- throw new ProviderError('OPERATION_FAILED', `Failed to search entire: ${error instanceof Error ? error.message : String(error)}`, 'entire', error instanceof Error ? error : undefined);
457
- }
458
- },
459
- };
460
- }
461
- //# sourceMappingURL=entire.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entire.js","sourceRoot":"","sources":["../../src/providers/entire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAa3C,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AA2BzD,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,kBAAkB,GAAG,0CAA0C,CAAC;AAEtE,+EAA+E;AAC/E,2CAA2C;AAC3C,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAIrC;IACC,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;IAEpE,KAAK,UAAU,UAAU,CAAC,IAAY;QACpC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,UAAU,IAAI,IAAI,EAAE,EAAE;gBACtD,GAAG;gBACH,OAAO;gBACP,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;aACvC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;gBAC9C,MAAM,IAAI,aAAa,CACrB,kBAAkB,EAClB,sBAAsB,KAAK,CAAC,OAAO,EAAE,EACrC,QAAQ,EACR,KAAK,CACN,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,SAAS,gBAAgB,CAAC,IAAY;QACpC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC;gBACnD,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;gBACrC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC;gBAClD,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,WAAW,EAA4B;gBACrF,UAAU,EAAE,CAAC,CAAC,UAAgC;gBAC9C,MAAM,EAAE,CAAC,CAAC,MAA4B;gBACtC,SAAS,EAAE,CAAC,CAAC,SAA+B;gBAC5C,OAAO,EAAE,CAAC,CAAC,OAA6B;gBACxC,WAAW,EAAE,CAAC,CAAC,WAAmC;gBAClD,UAAU,EAAE,CAAC,CAAC,UAAyC;gBACvD,YAAY,EAAE,CAAC,CAAC,YAAoC;gBACpD,OAAO,EAAE,CAAC,CAAC,OAA6B;aACzC,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,SAAS,mBAAmB,CAAC,IAAY;QACvC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC;gBACtD,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;gBACxC,SAAS,EAAE,CAAC,CAAC,SAA+B;gBAC5C,UAAU,EAAE,CAAC,CAAC,UAAgC;gBAC9C,aAAa,EAAE,CAAC,CAAC,aAAmC;gBACpD,WAAW,EAAE,CAAC,CAAC,WAAiC;gBAChD,aAAa,EAAE,CAAC,CAAC,aAAqC;gBACtD,QAAQ,EAAE,CAAC,CAAC,QAAgC;gBAC5C,YAAY,EAAE,CAAC,CAAC,YAAoC;gBACpD,UAAU,EAAE,CAAC,CAAC,UAA4C;gBAC1D,OAAO,EAAE,CAAC,CAAC,OAA6B;aACzC,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,CAAC,UAAU,CAAC,EAAU;YACzB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,CAAC;gBACjD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAC1C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,KAAK,CAAC,YAAY;YAChB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,CAAC;gBACjD,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,EAAU;YAC5B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,CAAC;gBACjD,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBAChD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;YACtD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,KAAK,CAAC,eAAe;YACnB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,CAAC;gBACjD,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAa;YACxB,MAAM,OAAO,GAA4C,EAAE,CAAC;YAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAEvC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC3C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,IACE,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;wBACnD,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;wBAC7C,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EACvE,CAAC;wBACD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;YAC9B,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;gBACjD,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;oBAC7B,IACE,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;wBACpD,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;wBACxC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;wBAC9C,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;wBACnE,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAC9D,CAAC;wBACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACnB,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,sBAAsB;YACxB,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,6CAA6C;AAC7C,+EAA+E;AAE/E;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAAC,UAAkB;IACrD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,GAAG,UAAU,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,SAAuB,EAAE;IACvE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAExC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjE,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,qBAAqB,CAAC;gBAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,2BAA2B,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAuB,EAAE;IAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACxC,OAAO,2BAA2B,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB;IAIvC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAClD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4B,CAAC;IAExD,OAAO;QACL,UAAU,CAAC,OAAsB;YAC/B,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;QAED,aAAa,CAAC,UAA4B;YACxC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,EAAU;YACzB,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;QAClC,CAAC;QAED,KAAK,CAAC,YAAY;YAChB,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,EAAU;YAC5B,OAAO,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;QACrC,CAAC;QAED,KAAK,CAAC,eAAe;YACnB,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAa;YACxB,MAAM,OAAO,GAA4C,EAAE,CAAC;YAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAEvC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBACxC,IACE,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;oBACnD,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAC7C,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EACvE,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;YAED,KAAK,MAAM,EAAE,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;gBACtC,IACE,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;oBACpD,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;oBACxC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAC9C,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBACnE,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAC9D,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,qBAAqB,CAAC,OAAsB;IACnD,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,GAAG,EAAE,oBAAoB,OAAO,CAAC,EAAE,EAAE;QACrC,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,YAAY,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,EAAE;QAClD,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;QACrD,OAAO,EAAE;YACP,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B;QACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,UAA4B;IAC5D,OAAO;QACL,EAAE,EAAE,UAAU,CAAC,EAAE;QACjB,GAAG,EAAE,uBAAuB,UAAU,CAAC,EAAE,EAAE;QAC3C,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,eAAe,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,EAAE,EAAE;QACjE,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,MAAM,EAAE,QAAQ,EAAE,4BAA4B;QAC9C,OAAO,EAAE;YACP,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,aAAa,EAAE,UAAU,CAAC,aAAa;YACvC,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,aAAa,EAAE,UAAU,CAAC,aAAa;YACvC,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,UAAU,EAAE,UAAU,CAAC,UAAU;SAClC;QACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,IAAsC;IACvD,OAAO,OAAO,IAAI,IAAI,CAAC;AACzB,CAAC;AAED,+EAA+E;AAC/E,iCAAiC;AACjC,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAuB,EAAE,EAAE,KAAmB;IACjF,MAAM,WAAW,GAAG,KAAK,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE1D,MAAM,YAAY,GAAyB;QACzC,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,KAAK;KAChB,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC,QAAQ,CAAC;QACnB,YAAY;QAEZ,4EAA4E;QAC5E,iBAAiB;QACjB,4EAA4E;QAE5E,QAAQ,CAAC,GAAW;YAClB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC5C,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,4BAA4B;gBACvE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpB,OAAO;oBACL,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,UAAU;oBACrB,EAAE;oBACF,UAAU,EAAE,KAAK;iBAClB,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,QAAQ,CAAC,EAAU,EAAE,OAAoB;YACvC,MAAM,UAAU,GAAG,OAAO,EAAE,SAAS,IAAI,SAAS,CAAC;YACnD,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACtB,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,YAAY,UAAU,IAAI,EAAE,EAAE,CAAC;QACxC,CAAC;QAED,UAAU,CAAC,GAAW;YACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;QACrC,CAAC;QAED,4EAA4E;QAC5E,kBAAkB;QAClB,4EAA4E;QAE5E,KAAK,CAAC,GAAG,CAAC,EAAU;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACjC,MAAM,UAAU,GAAG,MAAM,EAAE,SAAS,IAAI,SAAS,CAAC;YAClD,MAAM,QAAQ,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC;YAElC,IAAI,CAAC;gBACH,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;oBAChC,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAC7D,IAAI,CAAC,UAAU;wBAAE,OAAO,IAAI,CAAC;oBAC7B,OAAO,wBAAwB,CAAC,UAAU,CAAC,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACN,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACvD,IAAI,CAAC,OAAO;wBAAE,OAAO,IAAI,CAAC;oBAC1B,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,aAAa;oBAAE,MAAM,KAAK,CAAC;gBAChD,MAAM,IAAI,aAAa,CACrB,kBAAkB,EAClB,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACxF,QAAQ,EACR,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAuB;YAChC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAmB,EAAE,CAAC;gBAEnC,gBAAgB;gBAChB,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,YAAY,EAAE,CAAC;gBAClD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,MAAM,IAAI,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;oBAC5C,IAAI,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;wBAAE,SAAS;oBAC9D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC;gBAED,mBAAmB;gBACnB,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC;gBACxD,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;oBAC7B,MAAM,IAAI,GAAG,wBAAwB,CAAC,EAAE,CAAC,CAAC;oBAC1C,IAAI,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;wBAAE,SAAS;oBAC9D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC;gBAED,cAAc;gBACd,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;oBAClB,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACxC,CAAC;gBAED,OAAO,OAAO,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,aAAa;oBAAE,MAAM,KAAK,CAAC;gBAChD,MAAM,IAAI,aAAa,CACrB,kBAAkB,EAClB,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC3F,QAAQ,EACR,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,MAA2B;YACtC,MAAM,IAAI,aAAa,CACrB,eAAe,EACf,uFAAuF,EACvF,QAAQ,CACT,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,QAA6B;YACrD,MAAM,IAAI,aAAa,CACrB,eAAe,EACf,uFAAuF,EACvF,QAAQ,CACT,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,GAAW;YACtB,MAAM,IAAI,aAAa,CACrB,eAAe,EACf,uFAAuF,EACvF,QAAQ,CACT,CAAC;QACJ,CAAC;QAED,4EAA4E;QAC5E,SAAS;QACT,4EAA4E;QAE5E,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,OAAuB;YACjD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChD,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC/B,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAC/E,CAAC;gBAEF,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;oBACnB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBACxC,CAAC;gBAED,OAAO,KAAK,CAAC;YACf,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,aAAa;oBAAE,MAAM,KAAK,CAAC;gBAChD,MAAM,IAAI,aAAa,CACrB,kBAAkB,EAClB,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACpF,QAAQ,EACR,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,41 +0,0 @@
1
- /**
2
- * Claude Task State Reconstructor
3
- *
4
- * Replays TaskCreate/TaskUpdate sequences from extracted tool calls
5
- * to reconstruct the ephemeral task list state from a session.
6
- */
7
- import type { ExtractedToolCall } from './claude-tool-categorizer.js';
8
- export interface ReconstructedTask {
9
- /** Task ID (from TaskCreate response or TaskUpdate params) */
10
- taskId: string;
11
- /** Subject (from TaskCreate input) */
12
- subject: string;
13
- /** Description (from TaskCreate input) */
14
- description?: string;
15
- /** Status transitions in order */
16
- statusHistory: Array<{
17
- status: string;
18
- lineIndex: number;
19
- }>;
20
- /** Final status */
21
- finalStatus: 'pending' | 'in_progress' | 'completed';
22
- /** Owner if assigned via TaskUpdate */
23
- owner?: string;
24
- /** Dependencies from TaskUpdate addBlocks */
25
- blocks?: string[];
26
- /** Dependencies from TaskUpdate addBlockedBy */
27
- blockedBy?: string[];
28
- }
29
- export interface ReconstructedClaudeTaskState {
30
- /** Tasks that existed during the session */
31
- tasks: ReconstructedTask[];
32
- /** Final task list snapshot at session end */
33
- finalSnapshot: ReconstructedTask[];
34
- }
35
- /**
36
- * Reconstruct Claude's ephemeral task state from a list of extracted tool calls.
37
- * Only processes calls with `category === 'claude-native'` and
38
- * `toolName` of `TaskCreate` or `TaskUpdate`.
39
- */
40
- export declare function reconstructClaudeTaskState(toolCalls: ExtractedToolCall[]): ReconstructedClaudeTaskState;
41
- //# sourceMappingURL=claude-task-reconstructor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-task-reconstructor.d.ts","sourceRoot":"","sources":["../../src/tracking/claude-task-reconstructor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAMtE,MAAM,WAAW,iBAAiB;IAChC,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IAEf,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAEhB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,kCAAkC;IAClC,aAAa,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE5D,mBAAmB;IACnB,WAAW,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;IAErD,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,4BAA4B;IAC3C,4CAA4C;IAC5C,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAE3B,8CAA8C;IAC9C,aAAa,EAAE,iBAAiB,EAAE,CAAC;CACpC;AAcD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,iBAAiB,EAAE,GAC7B,4BAA4B,CA+E9B"}
@@ -1,91 +0,0 @@
1
- /**
2
- * Claude Task State Reconstructor
3
- *
4
- * Replays TaskCreate/TaskUpdate sequences from extracted tool calls
5
- * to reconstruct the ephemeral task list state from a session.
6
- */
7
- // ============================================================================
8
- // Implementation
9
- // ============================================================================
10
- const TASK_CREATED_REGEX = /Task #(\d+)/;
11
- function parseTaskIdFromOutput(output) {
12
- if (!output)
13
- return undefined;
14
- const match = output.match(TASK_CREATED_REGEX);
15
- return match?.[1];
16
- }
17
- /**
18
- * Reconstruct Claude's ephemeral task state from a list of extracted tool calls.
19
- * Only processes calls with `category === 'claude-native'` and
20
- * `toolName` of `TaskCreate` or `TaskUpdate`.
21
- */
22
- export function reconstructClaudeTaskState(toolCalls) {
23
- const tasksById = new Map();
24
- const taskOrder = [];
25
- for (const call of toolCalls) {
26
- if (call.category !== 'claude-native')
27
- continue;
28
- if (call.toolName === 'TaskCreate') {
29
- const taskId = parseTaskIdFromOutput(call.output);
30
- if (!taskId)
31
- continue;
32
- const task = {
33
- taskId,
34
- subject: call.input.subject ?? '',
35
- description: call.input.description,
36
- statusHistory: [{ status: 'pending', lineIndex: call.lineIndex }],
37
- finalStatus: 'pending',
38
- owner: undefined,
39
- blocks: undefined,
40
- blockedBy: undefined,
41
- };
42
- tasksById.set(taskId, task);
43
- taskOrder.push(taskId);
44
- }
45
- if (call.toolName === 'TaskUpdate') {
46
- const taskId = call.input.taskId;
47
- if (!taskId)
48
- continue;
49
- let task = tasksById.get(taskId);
50
- if (!task) {
51
- // Task was created before this transcript scope
52
- task = {
53
- taskId,
54
- subject: `(unknown task #${taskId})`,
55
- statusHistory: [],
56
- finalStatus: 'pending',
57
- };
58
- tasksById.set(taskId, task);
59
- taskOrder.push(taskId);
60
- }
61
- if (call.input.status) {
62
- const status = call.input.status;
63
- task.statusHistory.push({ status, lineIndex: call.lineIndex });
64
- task.finalStatus = status;
65
- }
66
- if (call.input.owner !== undefined) {
67
- task.owner = call.input.owner;
68
- }
69
- if (call.input.subject !== undefined) {
70
- task.subject = call.input.subject;
71
- }
72
- if (call.input.description !== undefined) {
73
- task.description = call.input.description;
74
- }
75
- if (call.input.addBlocks) {
76
- const newBlocks = call.input.addBlocks;
77
- task.blocks = [...(task.blocks ?? []), ...newBlocks];
78
- }
79
- if (call.input.addBlockedBy) {
80
- const newBlockedBy = call.input.addBlockedBy;
81
- task.blockedBy = [...(task.blockedBy ?? []), ...newBlockedBy];
82
- }
83
- }
84
- }
85
- const tasks = taskOrder.map((id) => tasksById.get(id));
86
- return {
87
- tasks,
88
- finalSnapshot: tasks.map((t) => ({ ...t })),
89
- };
90
- }
91
- //# sourceMappingURL=claude-task-reconstructor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-task-reconstructor.js","sourceRoot":"","sources":["../../src/tracking/claude-task-reconstructor.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- /**
2
- * Plan Mode Tracker
3
- *
4
- * Extracts EnterPlanMode/ExitPlanMode transitions from extracted tool calls.
5
- */
6
- import type { ExtractedToolCall } from './claude-tool-categorizer.js';
7
- export interface PlanModeTransition {
8
- type: 'enter' | 'exit';
9
- lineIndex: number;
10
- /** For exit: the plan content from ExitPlanMode input */
11
- planContent?: string;
12
- /** For exit: whether user approved (inferred from tool_result success) */
13
- approved?: boolean;
14
- }
15
- /**
16
- * Extract plan mode transitions from a list of extracted tool calls.
17
- * Only processes calls with `toolName` of `EnterPlanMode` or `ExitPlanMode`.
18
- */
19
- export declare function extractPlanModeTransitions(toolCalls: ExtractedToolCall[]): PlanModeTransition[];
20
- //# sourceMappingURL=plan-mode-tracker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plan-mode-tracker.d.ts","sourceRoot":"","sources":["../../src/tracking/plan-mode-tracker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAMtE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAElB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,kBAAkB,EAAE,CAwB/F"}