@kibitzsh/kibitz 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +200 -0
  3. package/dist/cli/index.d.ts +2 -0
  4. package/dist/cli/index.d.ts.map +1 -0
  5. package/dist/cli/index.js +2662 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/core/commentary.d.ts +69 -0
  8. package/dist/core/commentary.d.ts.map +1 -0
  9. package/dist/core/commentary.js +1041 -0
  10. package/dist/core/commentary.js.map +1 -0
  11. package/dist/core/parsers/claude.d.ts +3 -0
  12. package/dist/core/parsers/claude.d.ts.map +1 -0
  13. package/dist/core/parsers/claude.js +124 -0
  14. package/dist/core/parsers/claude.js.map +1 -0
  15. package/dist/core/parsers/codex.d.ts +3 -0
  16. package/dist/core/parsers/codex.d.ts.map +1 -0
  17. package/dist/core/parsers/codex.js +133 -0
  18. package/dist/core/parsers/codex.js.map +1 -0
  19. package/dist/core/platform-support.d.ts +17 -0
  20. package/dist/core/platform-support.d.ts.map +1 -0
  21. package/dist/core/platform-support.js +146 -0
  22. package/dist/core/platform-support.js.map +1 -0
  23. package/dist/core/providers/anthropic.d.ts +15 -0
  24. package/dist/core/providers/anthropic.d.ts.map +1 -0
  25. package/dist/core/providers/anthropic.js +236 -0
  26. package/dist/core/providers/anthropic.js.map +1 -0
  27. package/dist/core/providers/openai.d.ts +16 -0
  28. package/dist/core/providers/openai.d.ts.map +1 -0
  29. package/dist/core/providers/openai.js +154 -0
  30. package/dist/core/providers/openai.js.map +1 -0
  31. package/dist/core/session-dispatch.d.ts +28 -0
  32. package/dist/core/session-dispatch.d.ts.map +1 -0
  33. package/dist/core/session-dispatch.js +453 -0
  34. package/dist/core/session-dispatch.js.map +1 -0
  35. package/dist/core/types.d.ts +78 -0
  36. package/dist/core/types.d.ts.map +1 -0
  37. package/dist/core/types.js +22 -0
  38. package/dist/core/types.js.map +1 -0
  39. package/dist/core/watcher.d.ts +23 -0
  40. package/dist/core/watcher.d.ts.map +1 -0
  41. package/dist/core/watcher.js +866 -0
  42. package/dist/core/watcher.js.map +1 -0
  43. package/package.json +74 -0
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnthropicProvider = void 0;
4
+ exports.checkClaudeCliAvailable = checkClaudeCliAvailable;
5
+ const child_process_1 = require("child_process");
6
+ const fs_1 = require("fs");
7
+ const path_1 = require("path");
8
+ const os_1 = require("os");
9
+ let cachedClaudePath = null;
10
+ const PROVIDER_TIMEOUT_MS = 90_000;
11
+ /**
12
+ * On Windows, .cmd wrappers from npm have 8191-char limit.
13
+ * Resolve to the underlying .js script to bypass it.
14
+ */
15
+ function resolveNodeScript(cmdPath) {
16
+ if (process.platform !== 'win32' || !cmdPath.endsWith('.cmd'))
17
+ return null;
18
+ try {
19
+ const content = (0, fs_1.readFileSync)(cmdPath, 'utf-8');
20
+ const match = content.match(/%dp0%\\(.+?\.js)/);
21
+ if (match) {
22
+ const script = (0, path_1.join)((0, path_1.dirname)(cmdPath), match[1]);
23
+ if ((0, fs_1.existsSync)(script))
24
+ return script;
25
+ }
26
+ }
27
+ catch { /* fall through */ }
28
+ return null;
29
+ }
30
+ /**
31
+ * Resolve the full path to the `claude` CLI binary.
32
+ * Same approach as Quoroom — probes common locations, falls back to login-shell `which`.
33
+ */
34
+ function resolveClaudePath() {
35
+ if (cachedClaudePath)
36
+ return cachedClaudePath;
37
+ const home = (0, os_1.homedir)();
38
+ const isWindows = process.platform === 'win32';
39
+ const candidates = isWindows
40
+ ? [
41
+ (0, path_1.join)(home, '.claude', 'bin', 'claude.exe'),
42
+ (0, path_1.join)(home, 'AppData', 'Local', 'Programs', 'claude-code', 'claude.exe'),
43
+ (0, path_1.join)(home, 'AppData', 'Local', 'Claude', 'claude.exe'),
44
+ (0, path_1.join)(home, 'AppData', 'Local', 'Microsoft', 'WinGet', 'Links', 'claude.exe'),
45
+ 'C:\\Program Files\\Claude\\claude.exe',
46
+ (0, path_1.join)(home, 'AppData', 'Roaming', 'npm', 'claude.cmd'),
47
+ ]
48
+ : [
49
+ (0, path_1.join)(home, '.local', 'bin', 'claude'),
50
+ (0, path_1.join)(home, '.claude', 'bin', 'claude'),
51
+ '/usr/local/bin/claude',
52
+ '/usr/bin/claude',
53
+ '/snap/bin/claude',
54
+ '/opt/homebrew/bin/claude',
55
+ ];
56
+ for (const p of candidates) {
57
+ if ((0, fs_1.existsSync)(p)) {
58
+ cachedClaudePath = p;
59
+ return p;
60
+ }
61
+ }
62
+ // Fall back to shell resolution
63
+ const env = { ...process.env };
64
+ delete env.ELECTRON_RUN_AS_NODE;
65
+ delete env.CLAUDECODE;
66
+ if (isWindows) {
67
+ try {
68
+ const resolved = (0, child_process_1.execSync)('where claude', {
69
+ encoding: 'utf-8', env, timeout: 5000,
70
+ }).trim().split('\n')[0].trim();
71
+ if (resolved && (0, fs_1.existsSync)(resolved)) {
72
+ cachedClaudePath = resolved;
73
+ return resolved;
74
+ }
75
+ }
76
+ catch { /* not in PATH */ }
77
+ }
78
+ else {
79
+ const shells = ['/bin/zsh', '/bin/bash'];
80
+ for (const sh of shells) {
81
+ if (!(0, fs_1.existsSync)(sh))
82
+ continue;
83
+ try {
84
+ const resolved = (0, child_process_1.execSync)(`${sh} -lic 'which claude'`, {
85
+ encoding: 'utf-8', env, timeout: 5000,
86
+ }).trim();
87
+ if (resolved && (0, fs_1.existsSync)(resolved)) {
88
+ cachedClaudePath = resolved;
89
+ return resolved;
90
+ }
91
+ }
92
+ catch { /* shell not available */ }
93
+ }
94
+ }
95
+ return null;
96
+ }
97
+ /**
98
+ * Uses the Claude CLI with user's subscription — no API key needed.
99
+ * Spawns `claude -p <prompt> --output-format stream-json` and streams the response.
100
+ */
101
+ class AnthropicProvider {
102
+ async generate(systemPrompt, userPrompt, _apiKey, // unused — uses subscription
103
+ model, onChunk) {
104
+ return new Promise((resolve, reject) => {
105
+ const claudePath = resolveClaudePath();
106
+ if (!claudePath) {
107
+ reject(new Error('Claude CLI not found. Install from https://docs.anthropic.com/en/docs/claude-code'));
108
+ return;
109
+ }
110
+ const fullPrompt = `${systemPrompt}\n\n${userPrompt}`;
111
+ const args = [
112
+ '-p', fullPrompt,
113
+ '--output-format', 'stream-json',
114
+ '--verbose',
115
+ '--max-turns', '1',
116
+ '--model', model,
117
+ ];
118
+ const env = { ...process.env };
119
+ delete env.ELECTRON_RUN_AS_NODE;
120
+ delete env.CLAUDECODE;
121
+ let proc;
122
+ try {
123
+ const nodeScript = resolveNodeScript(claudePath);
124
+ if (nodeScript) {
125
+ proc = (0, child_process_1.spawn)(process.execPath, [nodeScript, ...args], {
126
+ cwd: (0, os_1.homedir)(), env,
127
+ stdio: ['ignore', 'pipe', 'pipe'],
128
+ windowsHide: true,
129
+ });
130
+ }
131
+ else {
132
+ proc = (0, child_process_1.spawn)(claudePath, args, {
133
+ cwd: (0, os_1.homedir)(), env,
134
+ stdio: ['ignore', 'pipe', 'pipe'],
135
+ windowsHide: true,
136
+ shell: process.platform === 'win32',
137
+ });
138
+ }
139
+ }
140
+ catch (err) {
141
+ reject(new Error(`Failed to spawn claude CLI: ${err instanceof Error ? err.message : String(err)}`));
142
+ return;
143
+ }
144
+ if (!proc.stdout || !proc.stderr) {
145
+ reject(new Error('Failed to create stdio pipes for Claude CLI'));
146
+ try {
147
+ proc.kill();
148
+ }
149
+ catch { }
150
+ return;
151
+ }
152
+ let full = '';
153
+ let buffer = '';
154
+ let stderr = '';
155
+ let timedOut = false;
156
+ proc.stdout.on('data', (data) => {
157
+ buffer += data.toString();
158
+ const lines = buffer.split('\n');
159
+ buffer = lines.pop() ?? '';
160
+ for (const line of lines) {
161
+ if (!line.trim())
162
+ continue;
163
+ try {
164
+ const event = JSON.parse(line);
165
+ // assistant message with text content
166
+ if (event.type === 'assistant') {
167
+ const content = event.message?.content;
168
+ if (Array.isArray(content)) {
169
+ for (const block of content) {
170
+ if (block.type === 'text' && typeof block.text === 'string') {
171
+ full += block.text;
172
+ onChunk(block.text);
173
+ }
174
+ }
175
+ }
176
+ }
177
+ // result event — final text
178
+ if (event.type === 'result' && event.result) {
179
+ // Only use if we haven't already captured text
180
+ if (!full) {
181
+ full = String(event.result);
182
+ onChunk(full);
183
+ }
184
+ }
185
+ }
186
+ catch { /* skip non-JSON */ }
187
+ }
188
+ });
189
+ proc.stderr.on('data', (data) => {
190
+ stderr += data.toString();
191
+ });
192
+ const timeout = setTimeout(() => {
193
+ timedOut = true;
194
+ try {
195
+ proc.kill();
196
+ }
197
+ catch { }
198
+ }, PROVIDER_TIMEOUT_MS);
199
+ proc.on('close', (code) => {
200
+ clearTimeout(timeout);
201
+ if (timedOut && !full) {
202
+ reject(new Error(`Claude CLI timed out after ${PROVIDER_TIMEOUT_MS}ms`));
203
+ return;
204
+ }
205
+ if (code !== 0 && !full) {
206
+ reject(new Error(`Claude CLI exited with code ${code}: ${stderr.slice(0, 500)}`));
207
+ }
208
+ else {
209
+ resolve(full);
210
+ }
211
+ });
212
+ proc.on('error', (err) => {
213
+ clearTimeout(timeout);
214
+ reject(new Error(`Claude CLI error: ${err.message}`));
215
+ });
216
+ });
217
+ }
218
+ }
219
+ exports.AnthropicProvider = AnthropicProvider;
220
+ function checkClaudeCliAvailable() {
221
+ const claudePath = resolveClaudePath();
222
+ if (!claudePath) {
223
+ return { available: false, error: 'Claude CLI not found' };
224
+ }
225
+ try {
226
+ const env = { ...process.env };
227
+ delete env.ELECTRON_RUN_AS_NODE;
228
+ delete env.CLAUDECODE;
229
+ const version = (0, child_process_1.execSync)(`"${claudePath}" --version`, { encoding: 'utf-8', env, timeout: 5000 }).trim();
230
+ return { available: true, version };
231
+ }
232
+ catch (err) {
233
+ return { available: false, error: err instanceof Error ? err.message : String(err) };
234
+ }
235
+ }
236
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/core/providers/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Provider, ModelId } from '../types';
2
+ /**
3
+ * Uses the Codex CLI with user's OpenAI subscription — no API key needed.
4
+ * Spawns `codex exec --json --skip-git-repo-check <prompt>` and streams the response.
5
+ * Same pattern as Quoroom's executeCodex in agent-executor.ts.
6
+ */
7
+ export declare class OpenAIProvider implements Provider {
8
+ generate(systemPrompt: string, userPrompt: string, _apiKey: string, // unused — uses subscription
9
+ _model: ModelId, onChunk: (text: string) => void): Promise<string>;
10
+ }
11
+ export declare function checkCodexCliAvailable(): {
12
+ available: boolean;
13
+ version?: string;
14
+ error?: string;
15
+ };
16
+ //# sourceMappingURL=openai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/core/providers/openai.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AA+B5C;;;;GAIG;AACH,qBAAa,cAAe,YAAW,QAAQ;IACvC,QAAQ,CACZ,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EAAE,6BAA6B;IAC9C,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC9B,OAAO,CAAC,MAAM,CAAC;CAyFnB;AAED,wBAAgB,sBAAsB,IAAI;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAYjG"}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenAIProvider = void 0;
4
+ exports.checkCodexCliAvailable = checkCodexCliAvailable;
5
+ const child_process_1 = require("child_process");
6
+ const fs_1 = require("fs");
7
+ const path_1 = require("path");
8
+ const os_1 = require("os");
9
+ let cachedCodexScript = null;
10
+ let codexScriptResolved = false;
11
+ const PROVIDER_TIMEOUT_MS = 90_000;
12
+ /**
13
+ * On Windows, resolve codex.cmd → underlying .js script to bypass cmd.exe limits.
14
+ * Same pattern as Quoroom's resolveCodexNodeScript.
15
+ */
16
+ function resolveCodexNodeScript() {
17
+ if (codexScriptResolved)
18
+ return cachedCodexScript;
19
+ codexScriptResolved = true;
20
+ if (process.platform !== 'win32')
21
+ return null;
22
+ try {
23
+ const cmdPath = (0, child_process_1.execSync)('where codex.cmd', {
24
+ encoding: 'utf-8', timeout: 5000,
25
+ stdio: ['ignore', 'pipe', 'ignore'],
26
+ }).trim().split('\n')[0].trim();
27
+ const content = (0, fs_1.readFileSync)(cmdPath, 'utf-8');
28
+ const match = content.match(/%dp0%\\(.+?\.js)/);
29
+ if (!match)
30
+ return null;
31
+ const script = (0, path_1.join)((0, path_1.dirname)(cmdPath), match[1]);
32
+ if ((0, fs_1.existsSync)(script)) {
33
+ cachedCodexScript = script;
34
+ return script;
35
+ }
36
+ }
37
+ catch { /* codex not installed */ }
38
+ return null;
39
+ }
40
+ /**
41
+ * Uses the Codex CLI with user's OpenAI subscription — no API key needed.
42
+ * Spawns `codex exec --json --skip-git-repo-check <prompt>` and streams the response.
43
+ * Same pattern as Quoroom's executeCodex in agent-executor.ts.
44
+ */
45
+ class OpenAIProvider {
46
+ async generate(systemPrompt, userPrompt, _apiKey, // unused — uses subscription
47
+ _model, onChunk) {
48
+ return new Promise((resolve, reject) => {
49
+ const fullPrompt = `${systemPrompt}\n\n${userPrompt}`;
50
+ const args = ['exec', '--json', '--skip-git-repo-check', fullPrompt];
51
+ let proc;
52
+ try {
53
+ const nodeScript = resolveCodexNodeScript();
54
+ if (nodeScript) {
55
+ proc = (0, child_process_1.spawn)(process.execPath, [nodeScript, ...args], {
56
+ cwd: (0, os_1.homedir)(),
57
+ env: process.env,
58
+ stdio: ['ignore', 'pipe', 'pipe'],
59
+ windowsHide: true,
60
+ });
61
+ }
62
+ else {
63
+ const codexCmd = process.platform === 'win32' ? 'codex.cmd' : 'codex';
64
+ proc = (0, child_process_1.spawn)(codexCmd, args, {
65
+ cwd: (0, os_1.homedir)(),
66
+ env: process.env,
67
+ stdio: ['ignore', 'pipe', 'pipe'],
68
+ windowsHide: true,
69
+ shell: process.platform === 'win32',
70
+ });
71
+ }
72
+ }
73
+ catch (err) {
74
+ reject(new Error(`Failed to spawn codex CLI: ${err instanceof Error ? err.message : String(err)}`));
75
+ return;
76
+ }
77
+ if (!proc.stdout || !proc.stderr) {
78
+ reject(new Error('Failed to create stdio pipes for codex CLI'));
79
+ try {
80
+ proc.kill();
81
+ }
82
+ catch { }
83
+ return;
84
+ }
85
+ let full = '';
86
+ let buffer = '';
87
+ let stderr = '';
88
+ let timedOut = false;
89
+ proc.stdout.on('data', (data) => {
90
+ buffer += data.toString();
91
+ const lines = buffer.split('\n');
92
+ buffer = lines.pop() ?? '';
93
+ for (const line of lines) {
94
+ if (!line.trim())
95
+ continue;
96
+ try {
97
+ const event = JSON.parse(line);
98
+ // Codex JSON output: {"type":"item.completed","item":{"type":"agent_message","text":"..."}}
99
+ if (event.type === 'item.completed' && event.item) {
100
+ if (event.item.type === 'agent_message' && typeof event.item.text === 'string') {
101
+ full += event.item.text;
102
+ onChunk(event.item.text);
103
+ }
104
+ }
105
+ }
106
+ catch { /* skip non-JSON */ }
107
+ }
108
+ });
109
+ proc.stderr.on('data', (data) => {
110
+ stderr += data.toString();
111
+ });
112
+ const timeout = setTimeout(() => {
113
+ timedOut = true;
114
+ try {
115
+ proc.kill();
116
+ }
117
+ catch { }
118
+ }, PROVIDER_TIMEOUT_MS);
119
+ proc.on('close', (code) => {
120
+ clearTimeout(timeout);
121
+ if (timedOut && !full) {
122
+ reject(new Error(`Codex CLI timed out after ${PROVIDER_TIMEOUT_MS}ms`));
123
+ return;
124
+ }
125
+ if (code !== 0 && !full) {
126
+ reject(new Error(`Codex CLI exited with code ${code}: ${stderr.slice(0, 500)}`));
127
+ }
128
+ else {
129
+ resolve(full);
130
+ }
131
+ });
132
+ proc.on('error', (err) => {
133
+ clearTimeout(timeout);
134
+ reject(new Error(`Codex CLI error: ${err.message}`));
135
+ });
136
+ });
137
+ }
138
+ }
139
+ exports.OpenAIProvider = OpenAIProvider;
140
+ function checkCodexCliAvailable() {
141
+ const isWindows = process.platform === 'win32';
142
+ const cmd = isWindows ? 'codex.cmd' : 'codex';
143
+ try {
144
+ const version = (0, child_process_1.execSync)(`${cmd} --version`, {
145
+ encoding: 'utf-8', timeout: 5000,
146
+ stdio: ['ignore', 'pipe', 'ignore'],
147
+ }).trim();
148
+ return { available: true, version };
149
+ }
150
+ catch {
151
+ return { available: false, error: 'Codex CLI not found' };
152
+ }
153
+ }
154
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/core/providers/openai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { EventEmitter } from 'events';
2
+ import { DispatchRequest, DispatchTarget, SessionInfo } from './types';
3
+ import { SessionProvider } from './platform-support';
4
+ export interface DispatchCommand {
5
+ provider: SessionProvider;
6
+ command: string;
7
+ args: string[];
8
+ }
9
+ export interface SessionDispatchOptions {
10
+ getActiveSessions: () => SessionInfo[];
11
+ launchInteractiveSession?: (provider: SessionProvider, prompt: string) => Promise<void>;
12
+ }
13
+ export declare class SessionDispatchService extends EventEmitter {
14
+ private options;
15
+ constructor(options: SessionDispatchOptions);
16
+ dispatch(request: DispatchRequest): Promise<void>;
17
+ private dispatchExistingSession;
18
+ private emitStatus;
19
+ }
20
+ export declare function buildExistingDispatchCommand(target: DispatchTarget, prompt: string, platform?: NodeJS.Platform): DispatchCommand;
21
+ export declare function buildInteractiveDispatchCommand(provider: SessionProvider, prompt: string, platform?: NodeJS.Platform): DispatchCommand;
22
+ export interface ResolvedLaunchCommand {
23
+ command: string;
24
+ args: string[];
25
+ shell: boolean;
26
+ }
27
+ export declare function resolveDispatchCommand(command: DispatchCommand, platform?: NodeJS.Platform): ResolvedLaunchCommand;
28
+ //# sourceMappingURL=session-dispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-dispatch.d.ts","sourceRoot":"","sources":["../../src/core/session-dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAIrC,OAAO,EACL,eAAe,EAEf,cAAc,EACd,WAAW,EACZ,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,eAAe,EAIhB,MAAM,oBAAoB,CAAA;AAE3B,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,eAAe,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,EAAE,CAAA;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,iBAAiB,EAAE,MAAM,WAAW,EAAE,CAAA;IACtC,wBAAwB,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACxF;AAED,qBAAa,sBAAuB,SAAQ,YAAY;IAC1C,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,sBAAsB;IAI7C,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAgCzC,uBAAuB;IAiDrC,OAAO,CAAC,UAAU;CAanB;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,eAAe,CAwBjB;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,eAAe,CAMjB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;CACf;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,EACxB,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,qBAAqB,CA8BvB"}