@sumicom/quicksave 0.6.0 → 0.6.1

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 (71) hide show
  1. package/dist/ai/asyncQueue.d.ts +7 -6
  2. package/dist/ai/asyncQueue.d.ts.map +1 -1
  3. package/dist/ai/asyncQueue.js +31 -21
  4. package/dist/ai/asyncQueue.js.map +1 -1
  5. package/dist/ai/asyncQueue.test.js +18 -18
  6. package/dist/ai/asyncQueue.test.js.map +1 -1
  7. package/dist/ai/cardBuilder.d.ts +11 -2
  8. package/dist/ai/cardBuilder.d.ts.map +1 -1
  9. package/dist/ai/cardBuilder.js +113 -21
  10. package/dist/ai/cardBuilder.js.map +1 -1
  11. package/dist/ai/claudeCliProvider.d.ts +19 -0
  12. package/dist/ai/claudeCliProvider.d.ts.map +1 -0
  13. package/dist/ai/claudeCliProvider.js +466 -0
  14. package/dist/ai/claudeCliProvider.js.map +1 -0
  15. package/dist/ai/claudeSdkProvider.d.ts +18 -0
  16. package/dist/ai/claudeSdkProvider.d.ts.map +1 -0
  17. package/dist/ai/claudeSdkProvider.js +418 -0
  18. package/dist/ai/claudeSdkProvider.js.map +1 -0
  19. package/dist/ai/commitSummary.d.ts +4 -0
  20. package/dist/ai/commitSummary.d.ts.map +1 -1
  21. package/dist/ai/commitSummary.js +80 -40
  22. package/dist/ai/commitSummary.js.map +1 -1
  23. package/dist/ai/provider.d.ts +54 -0
  24. package/dist/ai/provider.d.ts.map +1 -0
  25. package/dist/ai/provider.js +2 -0
  26. package/dist/ai/provider.js.map +1 -0
  27. package/dist/ai/sandboxMcp.d.ts +12 -0
  28. package/dist/ai/sandboxMcp.d.ts.map +1 -0
  29. package/dist/ai/sandboxMcp.js +12 -0
  30. package/dist/ai/sandboxMcp.js.map +1 -0
  31. package/dist/ai/sandboxMcpStdio.d.ts +16 -0
  32. package/dist/ai/sandboxMcpStdio.d.ts.map +1 -0
  33. package/dist/ai/sandboxMcpStdio.js +127 -0
  34. package/dist/ai/sandboxMcpStdio.js.map +1 -0
  35. package/dist/ai/sessionManager.d.ts +100 -0
  36. package/dist/ai/sessionManager.d.ts.map +1 -0
  37. package/dist/ai/sessionManager.js +595 -0
  38. package/dist/ai/sessionManager.js.map +1 -0
  39. package/dist/ai/sessionRegistry.d.ts +28 -0
  40. package/dist/ai/sessionRegistry.d.ts.map +1 -0
  41. package/dist/ai/sessionRegistry.js +148 -0
  42. package/dist/ai/sessionRegistry.js.map +1 -0
  43. package/dist/git/operations.d.ts +6 -1
  44. package/dist/git/operations.d.ts.map +1 -1
  45. package/dist/git/operations.js +31 -2
  46. package/dist/git/operations.js.map +1 -1
  47. package/dist/handlers/messageHandler.d.ts +8 -3
  48. package/dist/handlers/messageHandler.d.ts.map +1 -1
  49. package/dist/handlers/messageHandler.js +96 -12
  50. package/dist/handlers/messageHandler.js.map +1 -1
  51. package/dist/handlers/messageHandler.test.js +1 -1
  52. package/dist/index.js +3 -40
  53. package/dist/index.js.map +1 -1
  54. package/dist/service/ensureDaemon.d.ts.map +1 -1
  55. package/dist/service/ensureDaemon.js +15 -2
  56. package/dist/service/ensureDaemon.js.map +1 -1
  57. package/dist/service/ipc.test.js +6 -6
  58. package/dist/service/ipcClient.js +1 -1
  59. package/dist/service/run.d.ts.map +1 -1
  60. package/dist/service/run.js +22 -15
  61. package/dist/service/run.js.map +1 -1
  62. package/dist/service/singleton.d.ts +4 -0
  63. package/dist/service/singleton.d.ts.map +1 -1
  64. package/dist/service/singleton.js +28 -2
  65. package/dist/service/singleton.js.map +1 -1
  66. package/dist/service/singleton.test.js +1 -1
  67. package/package.json +5 -3
  68. package/dist/ai/claudeCodeService.d.ts +0 -122
  69. package/dist/ai/claudeCodeService.d.ts.map +0 -1
  70. package/dist/ai/claudeCodeService.js +0 -869
  71. package/dist/ai/claudeCodeService.js.map +0 -1
@@ -0,0 +1,466 @@
1
+ import { spawn } from 'child_process';
2
+ import { createInterface } from 'readline';
3
+ import { join, dirname } from 'path';
4
+ import { existsSync } from 'fs';
5
+ import { fileURLToPath } from 'url';
6
+ import { SANDBOX_MCP_NAME } from './sandboxMcp.js';
7
+ const __ownDir = dirname(fileURLToPath(import.meta.url));
8
+ /** Extract readable text from tool_result content (string or array of blocks). */
9
+ function extractToolResultText(content) {
10
+ if (typeof content === 'string')
11
+ return content;
12
+ if (Array.isArray(content)) {
13
+ return content
14
+ .filter((b) => b.type === 'text')
15
+ .map((b) => b.text || '')
16
+ .join('\n');
17
+ }
18
+ return JSON.stringify(content);
19
+ }
20
+ // ============================================================================
21
+ // CliProviderSession — wraps a ChildProcess for ProviderSession interface
22
+ // ============================================================================
23
+ class CliProviderSession {
24
+ process;
25
+ /** StreamIds queued by hot resume — consumeStream pops after each result. */
26
+ pendingStreamIds = [];
27
+ constructor(proc) {
28
+ this.process = proc;
29
+ }
30
+ sendUserMessage(prompt) {
31
+ if (!this.process || this.process.killed)
32
+ return;
33
+ const userMsg = {
34
+ type: 'user',
35
+ message: { role: 'user', content: prompt },
36
+ };
37
+ this.process.stdin.write(JSON.stringify(userMsg) + '\n');
38
+ }
39
+ interrupt() {
40
+ if (!this.process || this.process.killed)
41
+ return;
42
+ try {
43
+ const interruptReq = {
44
+ type: 'control_request',
45
+ request_id: crypto.randomUUID(),
46
+ request: { subtype: 'interrupt' },
47
+ };
48
+ this.process.stdin.write(JSON.stringify(interruptReq) + '\n');
49
+ }
50
+ catch {
51
+ // If stdin write fails, kill the process
52
+ this.process?.kill('SIGTERM');
53
+ }
54
+ }
55
+ kill() {
56
+ if (this.process) {
57
+ this.process.kill('SIGTERM');
58
+ this.process = null;
59
+ }
60
+ }
61
+ get alive() {
62
+ return !!this.process && !this.process.killed;
63
+ }
64
+ }
65
+ // ============================================================================
66
+ // ClaudeCliProvider — implements CodingAgentProvider
67
+ // ============================================================================
68
+ export class ClaudeCliProvider {
69
+ async startSession(opts, cardBuilder, callbacks) {
70
+ const args = this.buildCliArgs({
71
+ prompt: opts.prompt,
72
+ cwd: opts.cwd,
73
+ model: opts.model,
74
+ permissionMode: opts.permissionLevel,
75
+ systemPrompt: opts.systemPrompt,
76
+ });
77
+ return this.spawnAndConsume(args, opts.cwd, opts.streamId, opts.permissionLevel, opts.sandboxed, opts.prompt, cardBuilder, callbacks, opts.model);
78
+ }
79
+ async resumeSession(opts, cardBuilder, callbacks) {
80
+ const args = this.buildCliArgs({
81
+ prompt: opts.prompt,
82
+ cwd: opts.cwd,
83
+ permissionMode: opts.permissionLevel,
84
+ systemPrompt: opts.systemPrompt,
85
+ resumeSessionId: opts.sessionId,
86
+ });
87
+ return this.spawnAndConsume(args, opts.cwd, opts.streamId, opts.permissionLevel, opts.sandboxed, opts.prompt, cardBuilder, callbacks);
88
+ }
89
+ // ── Private: CLI Args ──
90
+ buildCliArgs(opts) {
91
+ const args = [
92
+ '--output-format', 'stream-json',
93
+ '--input-format', 'stream-json',
94
+ '--permission-prompt-tool', 'stdio',
95
+ '--verbose',
96
+ '-p', '', // empty print flag — prompt sent via stdin
97
+ ];
98
+ if (opts.systemPrompt) {
99
+ args.push('--append-system-prompt', opts.systemPrompt);
100
+ }
101
+ if (opts.model) {
102
+ args.push('--model', opts.model);
103
+ }
104
+ if (opts.permissionMode) {
105
+ const cliMode = opts.permissionMode === 'bypassPermissions' ? 'bypassPermissions'
106
+ : opts.permissionMode === 'acceptEdits' ? 'acceptEdits'
107
+ : opts.permissionMode === 'plan' ? 'plan'
108
+ : 'default';
109
+ args.push('--permission-mode', cliMode);
110
+ }
111
+ if (opts.resumeSessionId) {
112
+ args.push('--resume', opts.resumeSessionId);
113
+ }
114
+ // Always inject sandbox MCP server — approve/deny controlled by sandboxed flag at runtime
115
+ const tsPath = join(__ownDir, 'sandboxMcpStdio.ts');
116
+ const jsPath = join(__ownDir, 'sandboxMcpStdio.js');
117
+ const hasTsPath = existsSync(tsPath);
118
+ const mcpConfig = {
119
+ mcpServers: {
120
+ [SANDBOX_MCP_NAME]: {
121
+ type: 'stdio',
122
+ command: hasTsPath ? 'npx' : 'node',
123
+ args: hasTsPath
124
+ ? ['tsx', tsPath, '--cwd', opts.cwd]
125
+ : [jsPath, '--cwd', opts.cwd],
126
+ },
127
+ },
128
+ };
129
+ args.push('--mcp-config', JSON.stringify(mcpConfig));
130
+ return args;
131
+ }
132
+ // ── Private: Spawn & Consume ──
133
+ async spawnAndConsume(args, cwd, streamId, _level, _sandboxed, prompt, cardBuilder, callbacks, _model) {
134
+ const proc = spawn('claude', args, {
135
+ cwd,
136
+ stdio: ['pipe', 'pipe', 'pipe'],
137
+ env: { ...process.env },
138
+ });
139
+ // Send user message immediately — CLI needs stdin before emitting init
140
+ const userMsg = {
141
+ type: 'user',
142
+ message: { role: 'user', content: prompt },
143
+ };
144
+ proc.stdin.write(JSON.stringify(userMsg) + '\n');
145
+ // Buffer all stdout lines until init is received, then replay them into consumeStream.
146
+ const bufferedLines = [];
147
+ const rl = createInterface({ input: proc.stdout });
148
+ // Log stderr for debugging
149
+ proc.stderr.on('data', (chunk) => {
150
+ const text = chunk.toString().trim();
151
+ if (text)
152
+ console.error(`[cli:stderr] ${text}`);
153
+ });
154
+ const sessionId = await new Promise((resolveInit, reject) => {
155
+ const timeout = setTimeout(() => reject(new Error('Timeout waiting for init')), 30_000);
156
+ const onLine = (line) => {
157
+ try {
158
+ const msg = JSON.parse(line);
159
+ if (msg.type === 'system' && msg.subtype === 'init' && msg.session_id) {
160
+ clearTimeout(timeout);
161
+ rl.removeListener('line', onLine);
162
+ if (msg.model) {
163
+ callbacks.onModelDetected(msg.model);
164
+ }
165
+ resolveInit(msg.session_id);
166
+ }
167
+ else {
168
+ bufferedLines.push(line);
169
+ }
170
+ }
171
+ catch {
172
+ // skip non-JSON
173
+ }
174
+ };
175
+ rl.on('line', onLine);
176
+ proc.on('error', (err) => {
177
+ clearTimeout(timeout);
178
+ reject(err);
179
+ });
180
+ proc.on('exit', (code) => {
181
+ clearTimeout(timeout);
182
+ reject(new Error(`claude exited with code ${code} before init`));
183
+ });
184
+ });
185
+ const cliSession = new CliProviderSession(proc);
186
+ // Update the cardBuilder sessionId (it may have been created with a placeholder)
187
+ cardBuilder.updateSessionId(sessionId);
188
+ // Fire and forget the stream consumer — pass the same readline interface
189
+ this.consumeStream(sessionId, streamId, rl, bufferedLines, cliSession, cardBuilder, callbacks, prompt);
190
+ return { sessionId, session: cliSession };
191
+ }
192
+ // ── Private: Stream Consumer ──
193
+ async consumeStream(sessionId, initialStreamId, rl, bufferedLines, cliSession, cb, callbacks, prompt) {
194
+ let streamId = initialStreamId;
195
+ let textBuffer = '';
196
+ let bufferTimer = null;
197
+ let resultEmitted = false;
198
+ const emitCard = (event) => { callbacks.emitCardEvent(event); };
199
+ cb.startNewTurn(streamId);
200
+ // Add user prompt to cardBuilder (for getCards on reconnect) but don't emit
201
+ // as a card-event — the PWA already shows an optimistic user card.
202
+ if (prompt) {
203
+ cb.userMessage(prompt); // adds to cardBuilder.cards internally, no emit
204
+ }
205
+ const flushText = () => {
206
+ if (textBuffer) {
207
+ emitCard(cb.assistantText(textBuffer));
208
+ textBuffer = '';
209
+ }
210
+ if (bufferTimer) {
211
+ clearTimeout(bufferTimer);
212
+ bufferTimer = null;
213
+ }
214
+ };
215
+ const bufferText = (text) => {
216
+ textBuffer += text;
217
+ if (!bufferTimer) {
218
+ bufferTimer = setTimeout(flushText, 150);
219
+ }
220
+ if (textBuffer.length > 2048) {
221
+ flushText();
222
+ }
223
+ };
224
+ const processLine = async (line) => {
225
+ let msg;
226
+ try {
227
+ msg = JSON.parse(line);
228
+ }
229
+ catch {
230
+ return;
231
+ }
232
+ const emittedResult = await this.routeMessage(sessionId, streamId, msg, cliSession, cb, callbacks, emitCard, flushText, bufferText);
233
+ if (emittedResult)
234
+ resultEmitted = true;
235
+ };
236
+ try {
237
+ // Replay lines buffered during init
238
+ for (const line of bufferedLines) {
239
+ await processLine(line);
240
+ }
241
+ for await (const line of rl) {
242
+ await processLine(line);
243
+ }
244
+ }
245
+ catch (error) {
246
+ flushText();
247
+ console.error(`[cli] stream error session=${sessionId.slice(0, 8)}:`, error);
248
+ const msg = error instanceof Error ? error.message : 'Unknown error';
249
+ callbacks.emitStreamEnd({ streamId, sessionId, success: false, error: msg });
250
+ resultEmitted = true;
251
+ }
252
+ finally {
253
+ if (bufferTimer)
254
+ clearTimeout(bufferTimer);
255
+ // Process exited — clean up
256
+ cliSession.process = null;
257
+ if (!resultEmitted) {
258
+ // Process died without result — emit error
259
+ callbacks.emitStreamEnd({ streamId, sessionId, success: false, error: 'Process exited unexpectedly' });
260
+ }
261
+ }
262
+ }
263
+ // ── Private: Route a single stream-json message ──
264
+ // Returns true if a result/stream-end was emitted.
265
+ async routeMessage(sessionId, streamId, msg, cliSession, cb, callbacks, emitCard, flushText, bufferText) {
266
+ // ── Control requests (permissions) ──
267
+ if (msg.type === 'control_request' && msg.request?.subtype === 'can_use_tool') {
268
+ await this.handleControlRequest(sessionId, msg, cliSession, callbacks);
269
+ return false;
270
+ }
271
+ // Skip control echoes
272
+ if (msg.type === 'control_response' || msg.type === 'control_cancel_request')
273
+ return false;
274
+ // ── System events ──
275
+ if (msg.type === 'system') {
276
+ if (msg.subtype === 'task_started') {
277
+ flushText();
278
+ emitCard(cb.subagentStart(msg.description ?? '', msg.task_id, msg.tool_use_id));
279
+ }
280
+ else if (msg.subtype === 'task_progress') {
281
+ const cardEvt = cb.subagentProgress(msg.task_id, msg.tool_use_id, msg.usage?.tool_uses, msg.last_tool_name);
282
+ if (cardEvt)
283
+ emitCard(cardEvt);
284
+ }
285
+ else if (msg.subtype === 'task_notification') {
286
+ const cardEvt = cb.subagentEnd(msg.task_id, msg.tool_use_id, msg.status, msg.summary);
287
+ if (cardEvt)
288
+ emitCard(cardEvt);
289
+ }
290
+ return false;
291
+ }
292
+ // ── Streaming partial events ──
293
+ if (msg.type === 'stream_event') {
294
+ const event = msg.event;
295
+ if (event?.type === 'content_block_delta') {
296
+ const delta = event.delta;
297
+ if (delta?.type === 'text_delta' && delta.text) {
298
+ bufferText(delta.text);
299
+ }
300
+ }
301
+ return false;
302
+ }
303
+ // ── Rate limit events ──
304
+ if (msg.type === 'rate_limit_event')
305
+ return false;
306
+ // ── Complete assistant messages ──
307
+ if (msg.type === 'assistant') {
308
+ if (msg.agentId)
309
+ return false; // sidechain
310
+ flushText();
311
+ const blocks = msg.message?.content ?? [];
312
+ for (const block of blocks) {
313
+ if (block.type === 'thinking' && block.thinking) {
314
+ emitCard(cb.thinkingBlock(block.thinking));
315
+ }
316
+ else if (block.type === 'redacted_thinking') {
317
+ emitCard(cb.thinkingBlock('[Redacted thinking]'));
318
+ }
319
+ else if (block.type === 'text' && block.text) {
320
+ // If text was already streamed via stream_event deltas, finalize
321
+ // the existing card instead of doubling the content.
322
+ const finalizeEvt = cb.finalizeAssistantText();
323
+ if (finalizeEvt) {
324
+ emitCard(finalizeEvt);
325
+ }
326
+ else {
327
+ // No active streaming card — emit text normally (e.g. no stream_events preceded this)
328
+ emitCard(cb.assistantText(block.text));
329
+ }
330
+ }
331
+ else if (block.type === 'tool_use') {
332
+ if (block.name !== 'Agent') {
333
+ emitCard(cb.toolUse(block.name, block.input ?? {}, block.id));
334
+ }
335
+ }
336
+ else if (block.type === 'server_tool_use' || block.type === 'mcp_tool_use') {
337
+ emitCard(cb.toolUse(block.name ?? block.type, block.input ?? {}, block.id ?? ''));
338
+ }
339
+ }
340
+ return false;
341
+ }
342
+ // ── User messages (prompts + tool results) ──
343
+ if (msg.type === 'user') {
344
+ if (msg.agentId)
345
+ return false; // sidechain
346
+ const content = msg.message?.content;
347
+ if (typeof content === 'string' && content) {
348
+ flushText();
349
+ emitCard(cb.userMessage(content));
350
+ }
351
+ if (Array.isArray(content)) {
352
+ for (const block of content) {
353
+ if (block.type === 'text' && block.text) {
354
+ flushText();
355
+ emitCard(cb.userMessage(block.text));
356
+ }
357
+ if (block.type === 'tool_result') {
358
+ const resultContent = extractToolResultText(block.content);
359
+ const cardEvt = cb.toolResult(block.tool_use_id, resultContent, !!block.is_error);
360
+ if (cardEvt)
361
+ emitCard(cardEvt);
362
+ }
363
+ if (block.type === 'web_search_tool_result' || block.type === 'web_fetch_tool_result' ||
364
+ block.type === 'mcp_tool_result' || block.type === 'code_execution_tool_result' ||
365
+ block.type === 'tool_search_tool_result') {
366
+ const resultContent = extractToolResultText(block.content ?? block.text ?? '');
367
+ const parentId = block.tool_use_id;
368
+ if (parentId) {
369
+ const cardEvt = cb.toolResult(parentId, resultContent, !!block.is_error);
370
+ if (cardEvt)
371
+ emitCard(cardEvt);
372
+ }
373
+ }
374
+ }
375
+ }
376
+ return false;
377
+ }
378
+ // ── Result ──
379
+ if (msg.type === 'result') {
380
+ if (msg.session_id !== sessionId)
381
+ return false; // subagent result
382
+ flushText();
383
+ const terminalReason = msg.terminal_reason;
384
+ const interrupted = terminalReason === 'aborted_tools' || terminalReason === 'aborted_streaming';
385
+ console.log(`[cli] result session=${sessionId.slice(0, 8)} subtype=${msg.subtype} cost=$${msg.total_cost_usd?.toFixed(4) ?? '?'}`);
386
+ if (interrupted) {
387
+ emitCard(cb.systemMessage('User interrupted'));
388
+ }
389
+ const finalizeEvent = cb.finalizeAssistantText();
390
+ if (finalizeEvent)
391
+ emitCard(finalizeEvent);
392
+ const streamEnd = {
393
+ streamId,
394
+ sessionId,
395
+ success: msg.subtype === 'success' && !interrupted,
396
+ error: (msg.subtype !== 'success' && !interrupted)
397
+ ? (msg.errors?.join('; ') || `Session ended: ${msg.subtype}`)
398
+ : undefined,
399
+ interrupted,
400
+ totalCostUsd: msg.total_cost_usd,
401
+ tokenUsage: msg.usage
402
+ ? { input: msg.usage.input_tokens, output: msg.usage.output_tokens }
403
+ : undefined,
404
+ };
405
+ callbacks.emitStreamEnd(streamEnd);
406
+ // Clear accumulated cards — the JSONL now has the full history for this turn.
407
+ cb.clearCards();
408
+ // Update cutoff so the next turn's getCards() reads JSONL up to here.
409
+ await cb.snapshotCutoff();
410
+ // Hot resume: if there's a pending streamId, start a new turn for it
411
+ const nextStreamId = cliSession.pendingStreamIds.shift();
412
+ if (nextStreamId) {
413
+ streamId = nextStreamId;
414
+ cb.startNewTurn(streamId);
415
+ }
416
+ return true;
417
+ }
418
+ return false;
419
+ }
420
+ // ── Private: Permission Handling via control_request ──
421
+ async handleControlRequest(sessionId, msg, cliSession, callbacks) {
422
+ if (!cliSession.process)
423
+ return;
424
+ const req = msg.request;
425
+ const controlRequestId = msg.request_id;
426
+ const toolName = req.tool_name ?? 'Unknown';
427
+ const toolInput = req.input ?? {};
428
+ const toolUseId = req.tool_use_id ?? '';
429
+ // Delegate permission decision to SessionManager via callbacks
430
+ const decision = await callbacks.handlePermissionRequest(sessionId, { toolName, toolInput, toolUseId });
431
+ if (decision.action === 'deny') {
432
+ this.sendControlResponse(cliSession.process, controlRequestId, {
433
+ behavior: 'deny',
434
+ message: decision.response || 'Denied',
435
+ });
436
+ }
437
+ else {
438
+ this.sendControlResponse(cliSession.process, controlRequestId, {
439
+ behavior: 'allow',
440
+ updatedInput: decision.updatedInput,
441
+ });
442
+ }
443
+ }
444
+ sendControlResponse(proc, controlRequestId, result) {
445
+ // CLI's nu6() does Object.keys(result.updatedInput) without null check,
446
+ // so always include updatedInput when allowing.
447
+ const safeResult = result.behavior === 'allow'
448
+ ? { ...result, updatedInput: result.updatedInput ?? {} }
449
+ : result;
450
+ const response = {
451
+ type: 'control_response',
452
+ response: {
453
+ subtype: 'success',
454
+ request_id: controlRequestId,
455
+ response: safeResult,
456
+ },
457
+ };
458
+ try {
459
+ proc.stdin.write(JSON.stringify(response) + '\n');
460
+ }
461
+ catch (err) {
462
+ console.error(`[cli] failed to send control_response:`, err);
463
+ }
464
+ }
465
+ }
466
+ //# sourceMappingURL=claudeCliProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudeCliProvider.js","sourceRoot":"","sources":["../../src/ai/claudeCliProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAgB,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAGpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAUnD,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEzD,kFAAkF;AAClF,SAAS,qBAAqB,CAAC,OAAgB;IAC7C,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;aACrC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;aAC7B,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,+EAA+E;AAC/E,0EAA0E;AAC1E,+EAA+E;AAE/E,MAAM,kBAAkB;IACf,OAAO,CAAsB;IACpC,6EAA6E;IACtE,gBAAgB,GAAa,EAAE,CAAC;IAEvC,YAAY,IAAkB;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,eAAe,CAAC,MAAc;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO;QACjD,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;SAC3C,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO;QACjD,IAAI,CAAC;YACH,MAAM,YAAY,GAAG;gBACnB,IAAI,EAAE,iBAAiB;gBACvB,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;gBAC/B,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;aAClC,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;YACzC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,IAAI,KAAK;QACP,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAChD,CAAC;CACF;AAED,+EAA+E;AAC/E,qDAAqD;AACrD,+EAA+E;AAE/E,MAAM,OAAO,iBAAiB;IAE5B,KAAK,CAAC,YAAY,CAChB,IAAsB,EACtB,WAA8B,EAC9B,SAA4B;QAE5B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpJ,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,IAAuB,EACvB,WAA8B,EAC9B,SAA4B;QAE5B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,eAAe,EAAE,IAAI,CAAC,SAAS;SAChC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACxI,CAAC;IAED,0BAA0B;IAElB,YAAY,CAAC,IAOpB;QACC,MAAM,IAAI,GAAa;YACrB,iBAAiB,EAAE,aAAa;YAChC,gBAAgB,EAAE,aAAa;YAC/B,0BAA0B,EAAE,OAAO;YACnC,WAAW;YACX,IAAI,EAAE,EAAE,EAAG,2CAA2C;SACvD,CAAC;QAEF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,KAAK,mBAAmB,CAAC,CAAC,CAAC,mBAAmB;gBAC/E,CAAC,CAAC,IAAI,CAAC,cAAc,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa;oBACvD,CAAC,CAAC,IAAI,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM;wBACzC,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC;QAED,0FAA0F;QAC1F,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG;YAChB,UAAU,EAAE;gBACV,CAAC,gBAAgB,CAAC,EAAE;oBAClB,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;oBACnC,IAAI,EAAE,SAAS;wBACb,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC;wBACpC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC;iBAChC;aACF;SACF,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QAErD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iCAAiC;IAEzB,KAAK,CAAC,eAAe,CAC3B,IAAc,EACd,GAAW,EACX,QAAgB,EAChB,MAAuB,EACvB,UAAmB,EACnB,MAAc,EACd,WAA8B,EAC9B,SAA4B,EAC5B,MAAe;QAEf,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE;YACjC,GAAG;YACH,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC;QAEH,uEAAuE;QACvE,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;SAC3C,CAAC;QACF,IAAI,CAAC,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QAElD,uFAAuF;QACvF,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAO,EAAE,CAAC,CAAC;QAEpD,2BAA2B;QAC3B,IAAI,CAAC,MAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,IAAI;gBAAE,OAAO,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE;YAClE,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAExF,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;gBAC9B,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC7B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;wBACtE,YAAY,CAAC,OAAO,CAAC,CAAC;wBACtB,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAElC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;4BACd,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACvC,CAAC;wBAED,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAC9B,CAAC;yBAAM,CAAC;wBACN,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC3B,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,gBAAgB;gBAClB,CAAC;YACH,CAAC,CAAC;YAEF,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAEtB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACvB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACvB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,IAAI,cAAc,CAAC,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAEhD,iFAAiF;QACjF,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAEvC,yEAAyE;QACzE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAEvG,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAC5C,CAAC;IAED,iCAAiC;IAEzB,KAAK,CAAC,aAAa,CACzB,SAAiB,EACjB,eAAuB,EACvB,EAAsC,EACtC,aAAuB,EACvB,UAA8B,EAC9B,EAAqB,EACrB,SAA4B,EAC5B,MAAe;QAEf,IAAI,QAAQ,GAAG,eAAe,CAAC;QAC/B,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,WAAW,GAAyC,IAAI,CAAC;QAC7D,IAAI,aAAa,GAAG,KAAK,CAAC;QAE1B,MAAM,QAAQ,GAAG,CAAC,KAAgB,EAAE,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3E,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE1B,4EAA4E;QAC5E,mEAAmE;QACnE,IAAI,MAAM,EAAE,CAAC;YACX,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,gDAAgD;QAC1E,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,EAAE;YACrB,IAAI,UAAU,EAAE,CAAC;gBACf,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;gBACvC,UAAU,GAAG,EAAE,CAAC;YAClB,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBAAC,YAAY,CAAC,WAAW,CAAC,CAAC;gBAAC,WAAW,GAAG,IAAI,CAAC;YAAC,CAAC;QACrE,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE;YAClC,UAAU,IAAI,IAAI,CAAC;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;gBAAC,WAAW,GAAG,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAAC,CAAC;YAC/D,IAAI,UAAU,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;gBAAC,SAAS,EAAE,CAAC;YAAC,CAAC;QAChD,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;YACzC,IAAI,GAAQ,CAAC;YACb,IAAI,CAAC;gBAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO;YAAC,CAAC;YAEjD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YACpI,IAAI,aAAa;gBAAE,aAAa,GAAG,IAAI,CAAC;QAC1C,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,oCAAoC;YACpC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAED,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;gBAC5B,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,8BAA8B,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC7E,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACrE,SAAS,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7E,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;gBAAS,CAAC;YACT,IAAI,WAAW;gBAAE,YAAY,CAAC,WAAW,CAAC,CAAC;YAC3C,4BAA4B;YAC5B,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;YAE1B,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,2CAA2C;gBAC3C,SAAS,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC,CAAC;YACzG,CAAC;QACH,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,mDAAmD;IAE3C,KAAK,CAAC,YAAY,CACxB,SAAiB,EACjB,QAAgB,EAChB,GAAQ,EACR,UAA8B,EAC9B,EAAqB,EACrB,SAA4B,EAC5B,QAAoC,EACpC,SAAqB,EACrB,UAAkC;QAElC,uCAAuC;QACvC,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,cAAc,EAAE,CAAC;YAC9E,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,sBAAsB;QACtB,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,IAAI,GAAG,CAAC,IAAI,KAAK,wBAAwB;YAAE,OAAO,KAAK,CAAC;QAE3F,sBAAsB;QACtB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,GAAG,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;gBACnC,SAAS,EAAE,CAAC;gBACZ,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YAClF,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,KAAK,eAAe,EAAE,CAAC;gBAC3C,MAAM,OAAO,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;gBAC5G,IAAI,OAAO;oBAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,KAAK,mBAAmB,EAAE,CAAC;gBAC/C,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBACtF,IAAI,OAAO;oBAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,iCAAiC;QACjC,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;YACxB,IAAI,KAAK,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC1B,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBAC/C,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,0BAA0B;QAC1B,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB;YAAE,OAAO,KAAK,CAAC;QAElD,oCAAoC;QACpC,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC,CAAE,YAAY;YAC5C,SAAS,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;YAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAChD,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC7C,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;oBAC9C,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBACpD,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBAC/C,iEAAiE;oBACjE,qDAAqD;oBACrD,MAAM,WAAW,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;oBAC/C,IAAI,WAAW,EAAE,CAAC;wBAChB,QAAQ,CAAC,WAAW,CAAC,CAAC;oBACxB,CAAC;yBAAM,CAAC;wBACN,sFAAsF;wBACtF,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBACzC,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACrC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC3B,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;oBAChE,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBAC7E,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,+CAA+C;QAC/C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,IAAI,GAAG,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC,CAAE,YAAY;YAC5C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;YACrC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,EAAE,CAAC;gBAC3C,SAAS,EAAE,CAAC;gBACZ,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;YACpC,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;wBACxC,SAAS,EAAE,CAAC;wBACZ,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBACvC,CAAC;oBACD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;wBACjC,MAAM,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAC3D,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBAClF,IAAI,OAAO;4BAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;oBACjC,CAAC;oBACD,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAwB,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB;wBACjF,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,KAAK,CAAC,IAAI,KAAK,4BAA4B;wBAC/E,KAAK,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;wBAC7C,MAAM,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;wBAC/E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC;wBACnC,IAAI,QAAQ,EAAE,CAAC;4BACb,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;4BACzE,IAAI,OAAO;gCAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;wBACjC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,eAAe;QACf,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC,CAAE,kBAAkB;YACnE,SAAS,EAAE,CAAC;YACZ,MAAM,cAAc,GAAuB,GAAG,CAAC,eAAe,CAAC;YAC/D,MAAM,WAAW,GAAG,cAAc,KAAK,eAAe,IAAI,cAAc,KAAK,mBAAmB,CAAC;YACjG,OAAO,CAAC,GAAG,CAAC,wBAAwB,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,GAAG,CAAC,OAAO,UAAU,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YAEnI,IAAI,WAAW,EAAE,CAAC;gBAChB,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,aAAa,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;YACjD,IAAI,aAAa;gBAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;YAE3C,MAAM,SAAS,GAAkB;gBAC/B,QAAQ;gBACR,SAAS;gBACT,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,WAAW;gBAClD,KAAK,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC;oBAChD,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,kBAAkB,GAAG,CAAC,OAAO,EAAE,CAAC;oBAC7D,CAAC,CAAC,SAAS;gBACb,WAAW;gBACX,YAAY,EAAE,GAAG,CAAC,cAAc;gBAChC,UAAU,EAAE,GAAG,CAAC,KAAK;oBACnB,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE;oBACpE,CAAC,CAAC,SAAS;aACd,CAAC;YACF,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAEnC,8EAA8E;YAC9E,EAAE,CAAC,UAAU,EAAE,CAAC;YAChB,sEAAsE;YACtE,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC;YAE1B,qEAAqE;YACrE,MAAM,YAAY,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YACzD,IAAI,YAAY,EAAE,CAAC;gBACjB,QAAQ,GAAG,YAAY,CAAC;gBACxB,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yDAAyD;IAEjD,KAAK,CAAC,oBAAoB,CAChC,SAAiB,EACjB,GAAQ,EACR,UAA8B,EAC9B,SAA4B;QAE5B,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,OAAO;QAEhC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;QACxB,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC;QACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC;QAC5C,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAExC,+DAA+D;QAC/D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,uBAAuB,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QAExG,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE;gBAC7D,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,QAAQ,CAAC,QAAQ,IAAI,QAAQ;aACvC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE;gBAC7D,QAAQ,EAAE,OAAO;gBACjB,YAAY,EAAE,QAAQ,CAAC,YAAY;aACpC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,mBAAmB,CACzB,IAAkB,EAClB,gBAAwB,EACxB,MAA6G;QAE7G,wEAAwE;QACxE,gDAAgD;QAChD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,KAAK,OAAO;YAC5C,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE;YACxD,CAAC,CAAC,MAAM,CAAC;QACX,MAAM,QAAQ,GAAG;YACf,IAAI,EAAE,kBAAkB;YACxB,QAAQ,EAAE;gBACR,OAAO,EAAE,SAAS;gBAClB,UAAU,EAAE,gBAAgB;gBAC5B,QAAQ,EAAE,UAAU;aACrB;SACF,CAAC;QACF,IAAI,CAAC;YACH,IAAI,CAAC,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ import { StreamCardBuilder } from './cardBuilder.js';
2
+ import type { CodingAgentProvider, ProviderSession, ProviderCallbacks, StartSessionOpts, ResumeSessionOpts } from './provider.js';
3
+ export declare class ClaudeSdkProvider implements CodingAgentProvider {
4
+ startSession(opts: StartSessionOpts, cardBuilder: StreamCardBuilder, callbacks: ProviderCallbacks): Promise<{
5
+ sessionId: string;
6
+ session: ProviderSession;
7
+ }>;
8
+ resumeSession(opts: ResumeSessionOpts, cardBuilder: StreamCardBuilder, callbacks: ProviderCallbacks): Promise<{
9
+ sessionId: string;
10
+ session: ProviderSession;
11
+ }>;
12
+ private buildOptions;
13
+ private mapPermissionMode;
14
+ private waitForInit;
15
+ private consumeStream;
16
+ private routeMessage;
17
+ }
18
+ //# sourceMappingURL=claudeSdkProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudeSdkProvider.d.ts","sourceRoot":"","sources":["../../src/ai/claudeSdkProvider.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAElB,MAAM,eAAe,CAAC;AAsEvB,qBAAa,iBAAkB,YAAW,mBAAmB;IAErD,YAAY,CAChB,IAAI,EAAE,gBAAgB,EACtB,WAAW,EAAE,iBAAiB,EAC9B,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IA+BrD,aAAa,CACjB,IAAI,EAAE,iBAAiB,EACvB,WAAW,EAAE,iBAAiB,EAC9B,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAiC3D,OAAO,CAAC,YAAY;IAqEpB,OAAO,CAAC,iBAAiB;YAWX,WAAW;YAiCX,aAAa;YAyEb,YAAY;CAwK3B"}