@agentuity/opencode 1.0.12 → 1.0.13

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 (48) hide show
  1. package/dist/agents/lead.d.ts +1 -1
  2. package/dist/agents/lead.d.ts.map +1 -1
  3. package/dist/agents/lead.js +9 -0
  4. package/dist/agents/lead.js.map +1 -1
  5. package/dist/agents/monitor.d.ts +1 -1
  6. package/dist/agents/monitor.d.ts.map +1 -1
  7. package/dist/agents/monitor.js +13 -0
  8. package/dist/agents/monitor.js.map +1 -1
  9. package/dist/background/manager.d.ts +4 -1
  10. package/dist/background/manager.d.ts.map +1 -1
  11. package/dist/background/manager.js +161 -3
  12. package/dist/background/manager.js.map +1 -1
  13. package/dist/background/types.d.ts +21 -0
  14. package/dist/background/types.d.ts.map +1 -1
  15. package/dist/plugin/hooks/cadence.d.ts +2 -1
  16. package/dist/plugin/hooks/cadence.d.ts.map +1 -1
  17. package/dist/plugin/hooks/cadence.js +57 -1
  18. package/dist/plugin/hooks/cadence.js.map +1 -1
  19. package/dist/plugin/plugin.d.ts.map +1 -1
  20. package/dist/plugin/plugin.js +196 -7
  21. package/dist/plugin/plugin.js.map +1 -1
  22. package/dist/sqlite/index.d.ts +3 -0
  23. package/dist/sqlite/index.d.ts.map +1 -0
  24. package/dist/sqlite/index.js +2 -0
  25. package/dist/sqlite/index.js.map +1 -0
  26. package/dist/sqlite/queries.d.ts +18 -0
  27. package/dist/sqlite/queries.d.ts.map +1 -0
  28. package/dist/sqlite/queries.js +41 -0
  29. package/dist/sqlite/queries.js.map +1 -0
  30. package/dist/sqlite/reader.d.ts +44 -0
  31. package/dist/sqlite/reader.d.ts.map +1 -0
  32. package/dist/sqlite/reader.js +526 -0
  33. package/dist/sqlite/reader.js.map +1 -0
  34. package/dist/sqlite/types.d.ts +110 -0
  35. package/dist/sqlite/types.d.ts.map +1 -0
  36. package/dist/sqlite/types.js +2 -0
  37. package/dist/sqlite/types.js.map +1 -0
  38. package/package.json +3 -3
  39. package/src/agents/lead.ts +9 -0
  40. package/src/agents/monitor.ts +13 -0
  41. package/src/background/manager.ts +174 -3
  42. package/src/background/types.ts +10 -0
  43. package/src/plugin/hooks/cadence.ts +72 -1
  44. package/src/plugin/plugin.ts +271 -23
  45. package/src/sqlite/index.ts +16 -0
  46. package/src/sqlite/queries.ts +50 -0
  47. package/src/sqlite/reader.ts +677 -0
  48. package/src/sqlite/types.ts +121 -0
@@ -0,0 +1,526 @@
1
+ import { Database } from 'bun:sqlite';
2
+ import { existsSync } from 'node:fs';
3
+ import { homedir, platform } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import { QUERIES } from './queries';
6
+ const REQUIRED_TABLES = new Set(['session', 'message', 'part', 'todo']);
7
+ const DEFAULT_LIMIT = 100;
8
+ const DEFAULT_TOOL_LIMIT = 50;
9
+ function safeParseJSON(value) {
10
+ if (!value)
11
+ return null;
12
+ try {
13
+ return JSON.parse(value);
14
+ }
15
+ catch {
16
+ return null;
17
+ }
18
+ }
19
+ function isMemoryPath(path) {
20
+ return path === ':memory:' || path.includes('mode=memory');
21
+ }
22
+ function resolveDBPath(config) {
23
+ if (config?.dbPath) {
24
+ return config.dbPath;
25
+ }
26
+ const home = homedir();
27
+ const candidates = [];
28
+ const currentPlatform = platform();
29
+ if (currentPlatform === 'darwin') {
30
+ candidates.push(join(home, 'Library', 'Application Support', 'opencode', 'opencode.db'));
31
+ }
32
+ if (currentPlatform === 'win32') {
33
+ const appData = process.env.APPDATA ?? join(home, 'AppData', 'Roaming');
34
+ const localAppData = process.env.LOCALAPPDATA ?? join(home, 'AppData', 'Local');
35
+ candidates.push(join(appData, 'opencode', 'opencode.db'));
36
+ candidates.push(join(localAppData, 'opencode', 'opencode.db'));
37
+ }
38
+ // Linux default
39
+ candidates.push(join(home, '.local', 'share', 'opencode', 'opencode.db'));
40
+ for (const candidate of candidates) {
41
+ if (existsSync(candidate)) {
42
+ return candidate;
43
+ }
44
+ }
45
+ return null;
46
+ }
47
+ function buildSessionSummary(row) {
48
+ const diffs = safeParseJSON(row.summary_diffs);
49
+ const hasSummary = row.summary_additions !== null ||
50
+ row.summary_deletions !== null ||
51
+ row.summary_files !== null ||
52
+ diffs !== null;
53
+ if (!hasSummary) {
54
+ return undefined;
55
+ }
56
+ return {
57
+ additions: row.summary_additions ?? undefined,
58
+ deletions: row.summary_deletions ?? undefined,
59
+ files: row.summary_files ?? undefined,
60
+ diffs: diffs ?? undefined,
61
+ };
62
+ }
63
+ function mapSession(row) {
64
+ return {
65
+ id: row.id,
66
+ projectId: row.project_id,
67
+ parentId: row.parent_id ?? undefined,
68
+ slug: row.slug,
69
+ directory: row.directory,
70
+ title: row.title,
71
+ version: row.version,
72
+ shareUrl: row.share_url ?? undefined,
73
+ summary: buildSessionSummary(row),
74
+ timeCreated: row.time_created,
75
+ timeUpdated: row.time_updated,
76
+ timeCompacting: row.time_compacting ?? undefined,
77
+ timeArchived: row.time_archived ?? undefined,
78
+ };
79
+ }
80
+ function mapMessage(row) {
81
+ const payload = safeParseJSON(row.data) ?? {};
82
+ const tokens = payload.tokens;
83
+ return {
84
+ id: row.id,
85
+ sessionId: row.session_id,
86
+ role: typeof payload.role === 'string' ? payload.role : 'unknown',
87
+ agent: typeof payload.agent === 'string' ? payload.agent : undefined,
88
+ model: typeof payload.model === 'string' ? payload.model : undefined,
89
+ cost: typeof payload.cost === 'number' ? payload.cost : undefined,
90
+ tokens: tokens,
91
+ error: typeof payload.error === 'string' ? payload.error : undefined,
92
+ timeCreated: row.time_created,
93
+ timeUpdated: row.time_updated,
94
+ };
95
+ }
96
+ function mapToolCall(row) {
97
+ const payload = safeParseJSON(row.data);
98
+ if (!payload || (payload.type !== 'tool' && payload.type !== 'tool-invocation')) {
99
+ return null;
100
+ }
101
+ const state = payload.state ?? {};
102
+ const callId = payload.callID ?? payload.callId ?? '';
103
+ return {
104
+ id: row.id,
105
+ messageId: row.message_id,
106
+ sessionId: row.session_id,
107
+ callId,
108
+ tool: payload.tool ?? 'unknown',
109
+ status: state.status ?? 'unknown',
110
+ input: state.input,
111
+ output: state.output,
112
+ timeStarted: state.timeStarted ?? state.time_started,
113
+ timeEnded: state.timeEnded ?? state.time_ended,
114
+ };
115
+ }
116
+ function mapTextPart(row) {
117
+ const payload = safeParseJSON(row.data);
118
+ if (!payload || payload.type !== 'text' || typeof payload.text !== 'string') {
119
+ return null;
120
+ }
121
+ return {
122
+ id: row.id,
123
+ messageId: row.message_id,
124
+ sessionId: row.session_id,
125
+ text: payload.text,
126
+ timeCreated: row.time_created,
127
+ };
128
+ }
129
+ function isNotNull(value) {
130
+ return value !== null;
131
+ }
132
+ function summarizeTodos(todos) {
133
+ const total = todos.length;
134
+ const completed = todos.filter((todo) => todo.status === 'completed').length;
135
+ const pending = total - completed;
136
+ return { total, pending, completed };
137
+ }
138
+ function sumTreeCost(node) {
139
+ return ((node.costSummary?.totalCost ?? 0) +
140
+ node.children.reduce((sum, child) => sum + sumTreeCost(child), 0));
141
+ }
142
+ function createEmptySession(sessionId) {
143
+ return {
144
+ id: sessionId,
145
+ projectId: 'unknown',
146
+ parentId: undefined,
147
+ slug: 'unknown',
148
+ directory: '',
149
+ title: 'Unknown Session',
150
+ version: 'unknown',
151
+ timeCreated: 0,
152
+ timeUpdated: 0,
153
+ };
154
+ }
155
+ export class OpenCodeDBReader {
156
+ db = null;
157
+ available = false;
158
+ config;
159
+ dbPath = null;
160
+ statements = new Map();
161
+ constructor(config) {
162
+ this.config = {
163
+ enableSchemaValidation: true,
164
+ ...config,
165
+ };
166
+ }
167
+ isAvailable() {
168
+ if (this.available && this.db) {
169
+ return true;
170
+ }
171
+ const resolved = resolveDBPath(this.config);
172
+ if (!resolved)
173
+ return false;
174
+ if (isMemoryPath(resolved)) {
175
+ return true;
176
+ }
177
+ return existsSync(resolved);
178
+ }
179
+ open() {
180
+ if (this.db) {
181
+ return this.available;
182
+ }
183
+ this.dbPath = resolveDBPath(this.config);
184
+ if (!this.dbPath) {
185
+ this.available = false;
186
+ return false;
187
+ }
188
+ const isMemory = isMemoryPath(this.dbPath);
189
+ if (this.config.dbPath && !isMemory && !existsSync(this.dbPath)) {
190
+ this.available = false;
191
+ return false;
192
+ }
193
+ try {
194
+ if (isMemory) {
195
+ // In-memory shared DBs (used in tests): open in readwrite mode
196
+ // so pragmas can be set and the shared cache is accessible.
197
+ this.db = new Database(this.dbPath);
198
+ this.db.run('PRAGMA journal_mode = WAL');
199
+ }
200
+ else {
201
+ // Real file-based DBs: open read-only for safety.
202
+ // WAL is already configured by OpenCode; readers inherit it.
203
+ this.db = new Database(this.dbPath, { readonly: true });
204
+ }
205
+ // busy_timeout is safe on both readonly and readwrite connections.
206
+ this.db.run('PRAGMA busy_timeout = 3000');
207
+ }
208
+ catch (error) {
209
+ console.warn('[OpenCodeDBReader] Failed to open database', error);
210
+ this.available = false;
211
+ this.db = null;
212
+ return false;
213
+ }
214
+ if (this.config.enableSchemaValidation && !this.validateSchema()) {
215
+ console.warn('[OpenCodeDBReader] Required tables missing in database');
216
+ this.close();
217
+ this.available = false;
218
+ return false;
219
+ }
220
+ this.available = true;
221
+ return true;
222
+ }
223
+ close() {
224
+ if (this.db) {
225
+ this.db.close();
226
+ }
227
+ this.db = null;
228
+ this.available = false;
229
+ this.statements.clear();
230
+ }
231
+ getSession(id) {
232
+ if (!this.ensureOpen())
233
+ return null;
234
+ try {
235
+ const statement = this.getStatement('GET_SESSION');
236
+ const row = statement?.get(id);
237
+ return row ? mapSession(row) : null;
238
+ }
239
+ catch (error) {
240
+ console.warn('[OpenCodeDBReader] Failed to get session', error);
241
+ return null;
242
+ }
243
+ }
244
+ getChildSessions(parentId) {
245
+ if (!this.ensureOpen())
246
+ return [];
247
+ try {
248
+ const statement = this.getStatement('GET_CHILD_SESSIONS');
249
+ const rows = statement?.all(parentId);
250
+ return rows ? rows.map(mapSession) : [];
251
+ }
252
+ catch (error) {
253
+ console.warn('[OpenCodeDBReader] Failed to get child sessions', error);
254
+ return [];
255
+ }
256
+ }
257
+ getSessionsByProject(projectId) {
258
+ if (!this.ensureOpen())
259
+ return [];
260
+ try {
261
+ const statement = this.getStatement('GET_SESSIONS_BY_PROJECT');
262
+ const rows = statement?.all(projectId);
263
+ return rows ? rows.map(mapSession) : [];
264
+ }
265
+ catch (error) {
266
+ console.warn('[OpenCodeDBReader] Failed to get project sessions', error);
267
+ return [];
268
+ }
269
+ }
270
+ getSessionTree(rootId) {
271
+ const visited = new Set();
272
+ return this.buildSessionTree(rootId, visited);
273
+ }
274
+ getMessages(sessionId, opts) {
275
+ if (!this.ensureOpen())
276
+ return [];
277
+ const limit = opts?.limit ?? DEFAULT_LIMIT;
278
+ const offset = opts?.offset ?? 0;
279
+ try {
280
+ const statement = this.getStatement('GET_MESSAGES');
281
+ const rows = statement?.all(sessionId, limit, offset);
282
+ return rows ? rows.map(mapMessage) : [];
283
+ }
284
+ catch (error) {
285
+ console.warn('[OpenCodeDBReader] Failed to get messages', error);
286
+ return [];
287
+ }
288
+ }
289
+ getLatestMessage(sessionId) {
290
+ if (!this.ensureOpen())
291
+ return null;
292
+ try {
293
+ const statement = this.getStatement('GET_LATEST_MESSAGE');
294
+ const row = statement?.get(sessionId);
295
+ return row ? mapMessage(row) : null;
296
+ }
297
+ catch (error) {
298
+ console.warn('[OpenCodeDBReader] Failed to get latest message', error);
299
+ return null;
300
+ }
301
+ }
302
+ getMessageCount(sessionId) {
303
+ if (!this.ensureOpen())
304
+ return 0;
305
+ try {
306
+ const statement = this.getStatement('GET_MESSAGE_COUNT');
307
+ const row = statement?.get(sessionId);
308
+ return row?.count ?? 0;
309
+ }
310
+ catch (error) {
311
+ console.warn('[OpenCodeDBReader] Failed to get message count', error);
312
+ return 0;
313
+ }
314
+ }
315
+ getActiveToolCalls(sessionId) {
316
+ if (!this.ensureOpen())
317
+ return [];
318
+ try {
319
+ const statement = this.getStatement('GET_ACTIVE_TOOLS');
320
+ const rows = statement?.all(sessionId);
321
+ return rows ? rows.map(mapToolCall).filter(isNotNull) : [];
322
+ }
323
+ catch (error) {
324
+ console.warn('[OpenCodeDBReader] Failed to get active tools', error);
325
+ return [];
326
+ }
327
+ }
328
+ getToolCallHistory(sessionId, opts) {
329
+ if (!this.ensureOpen())
330
+ return [];
331
+ const limit = opts?.limit ?? DEFAULT_TOOL_LIMIT;
332
+ try {
333
+ const statement = this.getStatement('GET_TOOL_HISTORY');
334
+ const rows = statement?.all(sessionId, limit);
335
+ return rows ? rows.map(mapToolCall).filter(isNotNull) : [];
336
+ }
337
+ catch (error) {
338
+ console.warn('[OpenCodeDBReader] Failed to get tool history', error);
339
+ return [];
340
+ }
341
+ }
342
+ getTextParts(sessionId, opts) {
343
+ if (!this.ensureOpen())
344
+ return [];
345
+ const limit = opts?.limit ?? DEFAULT_LIMIT;
346
+ try {
347
+ const statement = this.getStatement('GET_TEXT_PARTS');
348
+ const rows = statement?.all(sessionId, limit);
349
+ return rows ? rows.map(mapTextPart).filter(isNotNull) : [];
350
+ }
351
+ catch (error) {
352
+ console.warn('[OpenCodeDBReader] Failed to get text parts', error);
353
+ return [];
354
+ }
355
+ }
356
+ getTodos(sessionId) {
357
+ if (!this.ensureOpen())
358
+ return [];
359
+ try {
360
+ const statement = this.getStatement('GET_TODOS');
361
+ const rows = statement?.all(sessionId);
362
+ return rows
363
+ ? rows.map((row) => ({
364
+ sessionId: row.session_id,
365
+ content: row.content,
366
+ status: row.status,
367
+ priority: row.priority,
368
+ position: row.position,
369
+ }))
370
+ : [];
371
+ }
372
+ catch (error) {
373
+ console.warn('[OpenCodeDBReader] Failed to get todos', error);
374
+ return [];
375
+ }
376
+ }
377
+ getSessionCost(sessionId) {
378
+ if (!this.ensureOpen()) {
379
+ return {
380
+ totalCost: 0,
381
+ totalTokens: 0,
382
+ inputTokens: 0,
383
+ outputTokens: 0,
384
+ reasoningTokens: 0,
385
+ cacheRead: 0,
386
+ cacheWrite: 0,
387
+ messageCount: 0,
388
+ };
389
+ }
390
+ try {
391
+ const statement = this.getStatement('GET_SESSION_COST');
392
+ const row = statement?.get(sessionId);
393
+ return {
394
+ totalCost: row?.total_cost ?? 0,
395
+ totalTokens: row?.total_tokens ?? 0,
396
+ inputTokens: row?.input_tokens ?? 0,
397
+ outputTokens: row?.output_tokens ?? 0,
398
+ reasoningTokens: row?.reasoning_tokens ?? 0,
399
+ cacheRead: row?.cache_read ?? 0,
400
+ cacheWrite: row?.cache_write ?? 0,
401
+ messageCount: row?.message_count ?? 0,
402
+ };
403
+ }
404
+ catch (error) {
405
+ console.warn('[OpenCodeDBReader] Failed to get session cost', error);
406
+ return {
407
+ totalCost: 0,
408
+ totalTokens: 0,
409
+ inputTokens: 0,
410
+ outputTokens: 0,
411
+ reasoningTokens: 0,
412
+ cacheRead: 0,
413
+ cacheWrite: 0,
414
+ messageCount: 0,
415
+ };
416
+ }
417
+ }
418
+ getSessionStatus(sessionId) {
419
+ const session = this.getSession(sessionId);
420
+ if (!session) {
421
+ return { status: 'idle', lastActivity: 0 };
422
+ }
423
+ if (session.timeArchived) {
424
+ return { status: 'archived', lastActivity: session.timeUpdated };
425
+ }
426
+ if (session.timeCompacting) {
427
+ return { status: 'compacting', lastActivity: session.timeUpdated };
428
+ }
429
+ const latest = this.getLatestMessage(sessionId);
430
+ if (latest?.error) {
431
+ return { status: 'error', lastActivity: latest.timeUpdated };
432
+ }
433
+ const activeTools = this.getActiveToolCalls(sessionId);
434
+ const lastActivity = Math.max(session.timeUpdated, latest?.timeUpdated ?? 0);
435
+ if (activeTools.length > 0) {
436
+ return { status: 'active', lastActivity };
437
+ }
438
+ return { status: 'idle', lastActivity };
439
+ }
440
+ searchSessions(query, opts) {
441
+ if (!this.ensureOpen())
442
+ return [];
443
+ try {
444
+ const pattern = `%${query}%`;
445
+ if (opts?.limit !== undefined) {
446
+ const statement = this.getStatement('SEARCH_SESSIONS_LIMITED');
447
+ const rows = statement?.all(pattern, opts.limit);
448
+ return rows ? rows.map(mapSession) : [];
449
+ }
450
+ const statement = this.getStatement('SEARCH_SESSIONS');
451
+ const rows = statement?.all(pattern);
452
+ return rows ? rows.map(mapSession) : [];
453
+ }
454
+ catch (error) {
455
+ console.warn('[OpenCodeDBReader] Failed to search sessions', error);
456
+ return [];
457
+ }
458
+ }
459
+ getSessionDashboard(parentSessionId) {
460
+ const sessions = this.getChildSessions(parentSessionId).map((child) => this.getSessionTree(child.id));
461
+ const totalCost = sessions.reduce((sum, node) => sum + sumTreeCost(node), 0);
462
+ return { sessions, totalCost };
463
+ }
464
+ ensureOpen() {
465
+ if (this.db && this.available) {
466
+ return true;
467
+ }
468
+ return this.open();
469
+ }
470
+ getStatement(key) {
471
+ if (!this.db)
472
+ return null;
473
+ const existing = this.statements.get(key);
474
+ if (existing)
475
+ return existing;
476
+ const statement = this.db.prepare(QUERIES[key]);
477
+ this.statements.set(key, statement);
478
+ return statement;
479
+ }
480
+ validateSchema() {
481
+ if (!this.db)
482
+ return false;
483
+ try {
484
+ const statement = this.db.prepare(QUERIES.CHECK_TABLES);
485
+ const rows = statement.all();
486
+ const found = new Set(rows.map((row) => row.name));
487
+ for (const table of REQUIRED_TABLES) {
488
+ if (!found.has(table)) {
489
+ return false;
490
+ }
491
+ }
492
+ return true;
493
+ }
494
+ catch (error) {
495
+ console.warn('[OpenCodeDBReader] Failed to validate schema', error);
496
+ return false;
497
+ }
498
+ }
499
+ buildSessionTree(rootId, visited) {
500
+ if (visited.has(rootId)) {
501
+ console.warn('[OpenCodeDBReader] Detected session cycle', rootId);
502
+ return {
503
+ session: createEmptySession(rootId),
504
+ children: [],
505
+ messageCount: 0,
506
+ activeToolCount: 0,
507
+ };
508
+ }
509
+ visited.add(rootId);
510
+ const session = this.getSession(rootId) ?? createEmptySession(rootId);
511
+ const children = this.getChildSessions(rootId).map((child) => this.buildSessionTree(child.id, visited));
512
+ const messageCount = this.getMessageCount(rootId);
513
+ const activeToolCount = this.getActiveToolCalls(rootId).length;
514
+ const todos = this.getTodos(rootId);
515
+ const costSummary = this.getSessionCost(rootId);
516
+ return {
517
+ session,
518
+ children,
519
+ messageCount,
520
+ activeToolCount,
521
+ todoSummary: todos.length > 0 ? summarizeTodos(todos) : undefined,
522
+ costSummary,
523
+ };
524
+ }
525
+ }
526
+ //# sourceMappingURL=reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../src/sqlite/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiFpC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACxE,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,SAAS,aAAa,CAAI,KAAgC;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IACjC,OAAO,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,aAAa,CAAC,MAAyB;IAC/C,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,eAAe,GAAG,QAAQ,EAAE,CAAC;IAEnC,IAAI,eAAe,KAAK,QAAQ,EAAE,CAAC;QAClC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI,eAAe,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAChF,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;QAC1D,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,gBAAgB;IAChB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;IAE1E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAe;IAC3C,MAAM,KAAK,GAAG,aAAa,CAAU,GAAG,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,UAAU,GACf,GAAG,CAAC,iBAAiB,KAAK,IAAI;QAC9B,GAAG,CAAC,iBAAiB,KAAK,IAAI;QAC9B,GAAG,CAAC,aAAa,KAAK,IAAI;QAC1B,KAAK,KAAK,IAAI,CAAC;IAEhB,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO;QACN,SAAS,EAAE,GAAG,CAAC,iBAAiB,IAAI,SAAS;QAC7C,SAAS,EAAE,GAAG,CAAC,iBAAiB,IAAI,SAAS;QAC7C,KAAK,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;QACrC,KAAK,EAAE,KAAK,IAAI,SAAS;KACzB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAAe;IAClC,OAAO;QACN,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,QAAQ,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS;QACpC,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,QAAQ,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS;QACpC,OAAO,EAAE,mBAAmB,CAAC,GAAG,CAAC;QACjC,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,cAAc,EAAE,GAAG,CAAC,eAAe,IAAI,SAAS;QAChD,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;KAC5C,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAAe;IAClC,MAAM,OAAO,GAAG,aAAa,CAA0B,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACvE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAmC,CAAC;IAE3D,OAAO;QACN,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACjE,KAAK,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QACpE,KAAK,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QACpE,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACjE,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QACpE,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,WAAW,EAAE,GAAG,CAAC,YAAY;KAC7B,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAChC,MAAM,OAAO,GAAG,aAAa,CAAW,GAAG,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,EAAE,CAAC;QACjF,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IAEtD,OAAO;QACN,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,MAAM;QACN,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS;QAC/B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,SAAS;QACjC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,YAAY;QACpD,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,UAAU;KAC9C,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAChC,MAAM,OAAO,GAAG,aAAa,CAAW,GAAG,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7E,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO;QACN,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,WAAW,EAAE,GAAG,CAAC,YAAY;KAC7B,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAI,KAAe;IACpC,OAAO,KAAK,KAAK,IAAI,CAAC;AACvB,CAAC;AAED,SAAS,cAAc,CAAC,KAAe;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;IAC7E,MAAM,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IAElC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,WAAW,CAAC,IAAqB;IACzC,OAAO,CACN,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CACjE,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAiB;IAC5C,OAAO;QACN,EAAE,EAAE,SAAS;QACb,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,EAAE;QACb,KAAK,EAAE,iBAAiB;QACxB,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;KACd,CAAC;AACH,CAAC;AAED,MAAM,OAAO,gBAAgB;IACpB,EAAE,GAAoB,IAAI,CAAC;IAC3B,SAAS,GAAG,KAAK,CAAC;IACT,MAAM,CAAmB;IAClC,MAAM,GAAkB,IAAI,CAAC;IAC7B,UAAU,GAAG,IAAI,GAAG,EAAmC,CAAC;IAEhE,YAAY,MAAyB;QACpC,IAAI,CAAC,MAAM,GAAG;YACb,sBAAsB,EAAE,IAAI;YAC5B,GAAG,MAAM;SACT,CAAC;IACH,CAAC;IAED,WAAW;QACV,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAE5B,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI;QACH,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,OAAO,KAAK,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACJ,IAAI,QAAQ,EAAE,CAAC;gBACd,+DAA+D;gBAC/D,4DAA4D;gBAC5D,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACP,kDAAkD;gBAClD,6DAA6D;gBAC7D,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,mEAAmE;YACnE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;YACf,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK;QACJ,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,UAAU,CAAC,EAAU;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO,IAAI,CAAC;QAEpC,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YACnD,MAAM,GAAG,GAAG,SAAS,EAAE,GAAG,CAAC,EAAE,CAAsB,CAAC;YACpD,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAED,gBAAgB,CAAC,QAAgB;QAChC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO,EAAE,CAAC;QAElC,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;YAC1D,MAAM,IAAI,GAAG,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAwB,CAAC;YAC7D,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;YACvE,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED,oBAAoB,CAAC,SAAiB;QACrC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO,EAAE,CAAC;QAElC,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;YAC/D,MAAM,IAAI,GAAG,SAAS,EAAE,GAAG,CAAC,SAAS,CAAwB,CAAC;YAC9D,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAC;YACzE,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED,cAAc,CAAC,MAAc;QAC5B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,WAAW,CAAC,SAAiB,EAAE,IAA0C;QACxE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO,EAAE,CAAC;QAElC,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,aAAa,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;QAEjC,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAwB,CAAC;YAC7E,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;YACjE,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED,gBAAgB,CAAC,SAAiB;QACjC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO,IAAI,CAAC;QAEpC,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;YAC1D,MAAM,GAAG,GAAG,SAAS,EAAE,GAAG,CAAC,SAAS,CAAsB,CAAC;YAC3D,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAED,eAAe,CAAC,SAAiB;QAChC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO,CAAC,CAAC;QAEjC,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,SAAS,EAAE,GAAG,CAAC,SAAS,CAA6B,CAAC;YAClE,OAAO,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;YACtE,OAAO,CAAC,CAAC;QACV,CAAC;IACF,CAAC;IAED,kBAAkB,CAAC,SAAiB;QACnC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO,EAAE,CAAC;QAElC,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,SAAS,EAAE,GAAG,CAAC,SAAS,CAAqB,CAAC;YAC3D,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;YACrE,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED,kBAAkB,CAAC,SAAiB,EAAE,IAAyB;QAC9D,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO,EAAE,CAAC;QAElC,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,kBAAkB,CAAC;QAEhD,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,CAAqB,CAAC;YAClE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;YACrE,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED,YAAY,CAAC,SAAiB,EAAE,IAAyB;QACxD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO,EAAE,CAAC;QAElC,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,aAAa,CAAC;QAE3C,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;YACtD,MAAM,IAAI,GAAG,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,CAAqB,CAAC;YAClE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;YACnE,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED,QAAQ,CAAC,SAAiB;QACzB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO,EAAE,CAAC;QAElC,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,SAAS,EAAE,GAAG,CAAC,SAAS,CAAqB,CAAC;YAC3D,OAAO,IAAI;gBACV,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACnB,SAAS,EAAE,GAAG,CAAC,UAAU;oBACzB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;iBACtB,CAAC,CAAC;gBACJ,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YAC9D,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED,cAAc,CAAC,SAAiB;QAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACxB,OAAO;gBACN,SAAS,EAAE,CAAC;gBACZ,WAAW,EAAE,CAAC;gBACd,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,CAAC;gBACf,eAAe,EAAE,CAAC;gBAClB,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;gBACb,YAAY,EAAE,CAAC;aACf,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;YACxD,MAAM,GAAG,GAAG,SAAS,EAAE,GAAG,CAAC,SAAS,CAS5B,CAAC;YAET,OAAO;gBACN,SAAS,EAAE,GAAG,EAAE,UAAU,IAAI,CAAC;gBAC/B,WAAW,EAAE,GAAG,EAAE,YAAY,IAAI,CAAC;gBACnC,WAAW,EAAE,GAAG,EAAE,YAAY,IAAI,CAAC;gBACnC,YAAY,EAAE,GAAG,EAAE,aAAa,IAAI,CAAC;gBACrC,eAAe,EAAE,GAAG,EAAE,gBAAgB,IAAI,CAAC;gBAC3C,SAAS,EAAE,GAAG,EAAE,UAAU,IAAI,CAAC;gBAC/B,UAAU,EAAE,GAAG,EAAE,WAAW,IAAI,CAAC;gBACjC,YAAY,EAAE,GAAG,EAAE,aAAa,IAAI,CAAC;aACrC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;YACrE,OAAO;gBACN,SAAS,EAAE,CAAC;gBACZ,WAAW,EAAE,CAAC;gBACd,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,CAAC;gBACf,eAAe,EAAE,CAAC;gBAClB,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;gBACb,YAAY,EAAE,CAAC;aACf,CAAC;QACH,CAAC;IACF,CAAC;IAED,gBAAgB,CAAC,SAAiB;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;QAC5C,CAAC;QAED,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QAClE,CAAC;QAED,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC5B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QACpE,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;YACnB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;QAC9D,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC;QAE7E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;QAC3C,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,cAAc,CAAC,KAAa,EAAE,IAAyB;QACtD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO,EAAE,CAAC;QAElC,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,IAAI,KAAK,GAAG,CAAC;YAC7B,IAAI,IAAI,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;gBAC/D,MAAM,IAAI,GAAG,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAwB,CAAC;gBACxE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,SAAS,EAAE,GAAG,CAAC,OAAO,CAAwB,CAAC;YAC5D,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;YACpE,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED,mBAAmB,CAAC,eAAuB;QAI1C,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACrE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAC7B,CAAC;QACF,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAChC,CAAC;IAEO,UAAU;QACjB,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAEO,YAAY,CAAC,GAAyB;QAC7C,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAE9B,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACpC,OAAO,SAAS,CAAC;IAClB,CAAC;IAEO,cAAc;QACrB,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAE3B,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,EAA6B,CAAC;YACxD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACnD,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvB,OAAO,KAAK,CAAC;gBACd,CAAC;YACF,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;YACpE,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAEO,gBAAgB,CAAC,MAAc,EAAE,OAAoB;QAC5D,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,MAAM,CAAC,CAAC;YAClE,OAAO;gBACN,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC;gBACnC,QAAQ,EAAE,EAAE;gBACZ,YAAY,EAAE,CAAC;gBACf,eAAe,EAAE,CAAC;aAClB,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC5D,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CACxC,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEhD,OAAO;YACN,OAAO;YACP,QAAQ;YACR,YAAY;YACZ,eAAe;YACf,WAAW,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;YACjE,WAAW;SACX,CAAC;IACH,CAAC;CACD"}
@@ -0,0 +1,110 @@
1
+ export interface SessionSummary {
2
+ additions?: number;
3
+ deletions?: number;
4
+ files?: number;
5
+ diffs?: unknown;
6
+ }
7
+ export interface MessageTokens {
8
+ total?: number;
9
+ input?: number;
10
+ output?: number;
11
+ reasoning?: number;
12
+ cache?: {
13
+ read?: number;
14
+ write?: number;
15
+ };
16
+ }
17
+ export interface DBSession {
18
+ id: string;
19
+ projectId: string;
20
+ parentId?: string | null;
21
+ slug: string;
22
+ directory: string;
23
+ title: string;
24
+ version: string;
25
+ shareUrl?: string | null;
26
+ summary?: SessionSummary;
27
+ timeCreated: number;
28
+ timeUpdated: number;
29
+ timeCompacting?: number | null;
30
+ timeArchived?: number | null;
31
+ }
32
+ export interface DBMessage {
33
+ id: string;
34
+ sessionId: string;
35
+ role: string;
36
+ agent?: string;
37
+ model?: string;
38
+ cost?: number;
39
+ tokens?: MessageTokens;
40
+ error?: string;
41
+ timeCreated: number;
42
+ timeUpdated: number;
43
+ }
44
+ export interface DBPart {
45
+ id: string;
46
+ messageId: string;
47
+ sessionId: string;
48
+ type: string;
49
+ data: unknown;
50
+ timeCreated: number;
51
+ timeUpdated: number;
52
+ }
53
+ export interface DBToolCall {
54
+ id: string;
55
+ messageId: string;
56
+ sessionId: string;
57
+ callId: string;
58
+ tool: string;
59
+ status: string;
60
+ input?: unknown;
61
+ output?: unknown;
62
+ timeStarted?: number;
63
+ timeEnded?: number;
64
+ }
65
+ export interface DBTextPart {
66
+ id: string;
67
+ messageId: string;
68
+ sessionId: string;
69
+ text: string;
70
+ timeCreated: number;
71
+ }
72
+ export interface DBTodo {
73
+ sessionId: string;
74
+ content: string;
75
+ status: string;
76
+ priority: string;
77
+ position: number;
78
+ }
79
+ export interface SessionCostSummary {
80
+ totalCost: number;
81
+ totalTokens: number;
82
+ inputTokens: number;
83
+ outputTokens: number;
84
+ reasoningTokens: number;
85
+ cacheRead: number;
86
+ cacheWrite: number;
87
+ messageCount: number;
88
+ }
89
+ export interface SessionStatus {
90
+ status: 'active' | 'idle' | 'error' | 'archived' | 'compacting';
91
+ lastActivity: number;
92
+ }
93
+ export interface TodoSummary {
94
+ total: number;
95
+ pending: number;
96
+ completed: number;
97
+ }
98
+ export interface SessionTreeNode {
99
+ session: DBSession;
100
+ children: SessionTreeNode[];
101
+ messageCount: number;
102
+ activeToolCount: number;
103
+ todoSummary?: TodoSummary;
104
+ costSummary?: SessionCostSummary;
105
+ }
106
+ export interface OpenCodeDBConfig {
107
+ dbPath?: string;
108
+ enableSchemaValidation?: boolean;
109
+ }
110
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sqlite/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sqlite/types.ts"],"names":[],"mappings":""}