@ai-devkit/agent-manager 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/AgentAdapter.d.ts +1 -1
- package/dist/adapters/AgentAdapter.d.ts.map +1 -1
- package/dist/adapters/ClaudeCodeAdapter.d.ts +26 -2
- package/dist/adapters/ClaudeCodeAdapter.d.ts.map +1 -1
- package/dist/adapters/ClaudeCodeAdapter.js +97 -37
- package/dist/adapters/ClaudeCodeAdapter.js.map +1 -1
- package/dist/adapters/OpenCodeAdapter.d.ts +35 -0
- package/dist/adapters/OpenCodeAdapter.d.ts.map +1 -0
- package/dist/adapters/OpenCodeAdapter.js +329 -0
- package/dist/adapters/OpenCodeAdapter.js.map +1 -0
- package/dist/adapters/index.d.ts +1 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +3 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/package.json +5 -1
- package/src/__tests__/adapters/ClaudeCodeAdapter.test.ts +227 -1
- package/src/__tests__/adapters/OpenCodeAdapter.test.ts +475 -0
- package/src/adapters/AgentAdapter.ts +1 -1
- package/src/adapters/ClaudeCodeAdapter.ts +121 -40
- package/src/adapters/OpenCodeAdapter.ts +340 -0
- package/src/adapters/index.ts +1 -0
- package/src/index.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/AgentAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/AgentAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAEjF;;GAEG;AACH,oBAAY,WAAW;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,OAAO,YAAY;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IAEb,oBAAoB;IACpB,IAAI,EAAE,SAAS,CAAC;IAEhB,qBAAqB;IACrB,MAAM,EAAE,WAAW,CAAC;IAEpB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAEhB,iBAAiB;IACjB,GAAG,EAAE,MAAM,CAAC;IAEZ,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IAEpB,mBAAmB;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,UAAU,EAAE,IAAI,CAAC;IAEjB,6CAA6C;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,iBAAiB;IACjB,GAAG,EAAE,MAAM,CAAC;IAEZ,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAEhB,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IAEZ,qCAAqC;IACrC,GAAG,EAAE,MAAM,CAAC;IAEZ,uDAAuD;IACvD,SAAS,CAAC,EAAE,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC3B,sCAAsC;IACtC,IAAI,EAAE,SAAS,CAAC;IAEhB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;;;OAMG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB,+EAA+E;IAC/E,UAAU,EAAE,IAAI,CAAC;IAEjB,oFAAoF;IACpF,SAAS,EAAE,IAAI,CAAC;IAEhB,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAChC;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IACzB,yCAAyC;IACzC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAEzB;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAErC;;;;OAIG;IACH,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC;IAE7C;;;;;OAKG;IACH,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,mBAAmB,EAAE,CAAC;IAEjG;;;;;;;;;OASG;IACH,YAAY,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;CACvE"}
|
|
@@ -34,6 +34,23 @@ export declare class ClaudeCodeAdapter implements AgentAdapter {
|
|
|
34
34
|
*/
|
|
35
35
|
private tryResumeMatching;
|
|
36
36
|
private extractResumeSessionId;
|
|
37
|
+
/**
|
|
38
|
+
* Read and parse ~/.claude/sessions/<pid>.json, returning null on any
|
|
39
|
+
* I/O / parse failure or when the file is stale relative to the live
|
|
40
|
+
* process.
|
|
41
|
+
*
|
|
42
|
+
* "Stale" means the PID file's startedAt diverges from the process's
|
|
43
|
+
* start time by more than {@link PID_FILE_STALENESS_MS} — typically
|
|
44
|
+
* a previous Claude Code process recycled the same PID without cleanup.
|
|
45
|
+
*/
|
|
46
|
+
private readMatchingPidFile;
|
|
47
|
+
/**
|
|
48
|
+
* Map the PID file's live status string to {@link AgentStatus}.
|
|
49
|
+
*
|
|
50
|
+
* Returns undefined for missing / unrecognized values so the caller
|
|
51
|
+
* can fall back to JSONL-derived heuristics.
|
|
52
|
+
*/
|
|
53
|
+
private mapPidStatus;
|
|
37
54
|
/**
|
|
38
55
|
* Attempt to match each process to its session via ~/.claude/sessions/<pid>.json.
|
|
39
56
|
*
|
|
@@ -48,8 +65,15 @@ export declare class ClaudeCodeAdapter implements AgentAdapter {
|
|
|
48
65
|
/**
|
|
49
66
|
* Derive the Claude Code project directory for a given CWD.
|
|
50
67
|
*
|
|
51
|
-
* Claude Code encodes paths by replacing
|
|
52
|
-
*
|
|
68
|
+
* Claude Code encodes paths by replacing every non-alphanumeric
|
|
69
|
+
* character with '-', so '/', '_', '.', spaces, etc. all collapse:
|
|
70
|
+
* /Users/foo/bar → -Users-foo-bar
|
|
71
|
+
* /Users/foo/my_project → -Users-foo-my-project
|
|
72
|
+
* /Users/foo/.worktrees/x → -Users-foo--worktrees-x
|
|
73
|
+
*
|
|
74
|
+
* The encoding is lossy — multiple real paths can collide on the
|
|
75
|
+
* same encoded dir. Callers that need to disambiguate must read the
|
|
76
|
+
* `cwd` field inside each session JSONL.
|
|
53
77
|
*/
|
|
54
78
|
private getProjectDir;
|
|
55
79
|
private mapSessionToAgent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaudeCodeAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/ClaudeCodeAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,YAAY,EACZ,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACtB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ClaudeCodeAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/ClaudeCodeAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,YAAY,EACZ,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACtB,MAAM,gBAAgB,CAAC;AAiDxB;;;;;;;;;GASG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IAClD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAElC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAsB;;IASpC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO;IAI5C,OAAO,CAAC,kBAAkB;IAMpB,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAmE1C;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IA6BxB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IA8CzB,OAAO,CAAC,sBAAsB;IAK9B;;;;;;;;OAQG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAapB;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB;IAuC1B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,mBAAmB;IAa3B,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,mBAAmB,EAAE;IAI1F,YAAY,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAkCzE;;;;;;;;;;OAUG;IACH,OAAO,CAAC,oBAAoB;CAqB/B"}
|
|
@@ -92,10 +92,14 @@ class ClaudeCodeAdapter {
|
|
|
92
92
|
]);
|
|
93
93
|
const agents = [];
|
|
94
94
|
// Build agents from direct (resume + PID-file) matches
|
|
95
|
-
for (const
|
|
95
|
+
for (const match of direct) {
|
|
96
|
+
const { process: proc, sessionFile } = match;
|
|
96
97
|
const sessionData = this.parser.readSession(sessionFile.filePath, sessionFile.resolvedCwd);
|
|
97
98
|
if (sessionData) {
|
|
98
|
-
agents.push(this.mapSessionToAgent(sessionData, proc, sessionFile
|
|
99
|
+
agents.push(this.mapSessionToAgent(sessionData, proc, sessionFile, {
|
|
100
|
+
pidStatus: match.pidStatus,
|
|
101
|
+
waitingFor: match.waitingFor,
|
|
102
|
+
}));
|
|
99
103
|
}
|
|
100
104
|
else {
|
|
101
105
|
matchedPids.delete(proc.pid);
|
|
@@ -173,6 +177,11 @@ class ClaudeCodeAdapter {
|
|
|
173
177
|
fallback.push(proc);
|
|
174
178
|
continue;
|
|
175
179
|
}
|
|
180
|
+
// Best-effort: the PID file (if present for this proc) is the
|
|
181
|
+
// authoritative source of live status. We still match the session
|
|
182
|
+
// via --resume, but we read the PID file alongside to capture
|
|
183
|
+
// status/waitingFor.
|
|
184
|
+
const pidEntry = this.readMatchingPidFile(proc.pid, proc.startTime);
|
|
176
185
|
direct.push({
|
|
177
186
|
process: proc,
|
|
178
187
|
sessionFile: {
|
|
@@ -182,6 +191,8 @@ class ClaudeCodeAdapter {
|
|
|
182
191
|
birthtimeMs: stat.birthtimeMs,
|
|
183
192
|
resolvedCwd: proc.cwd,
|
|
184
193
|
},
|
|
194
|
+
pidStatus: this.mapPidStatus(pidEntry?.status),
|
|
195
|
+
waitingFor: pidEntry?.waitingFor,
|
|
185
196
|
});
|
|
186
197
|
}
|
|
187
198
|
return { direct, fallback };
|
|
@@ -190,6 +201,49 @@ class ClaudeCodeAdapter {
|
|
|
190
201
|
const match = command.match(/--resume\s+([0-9a-f-]{36})/i);
|
|
191
202
|
return match?.[1] ?? null;
|
|
192
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Read and parse ~/.claude/sessions/<pid>.json, returning null on any
|
|
206
|
+
* I/O / parse failure or when the file is stale relative to the live
|
|
207
|
+
* process.
|
|
208
|
+
*
|
|
209
|
+
* "Stale" means the PID file's startedAt diverges from the process's
|
|
210
|
+
* start time by more than {@link PID_FILE_STALENESS_MS} — typically
|
|
211
|
+
* a previous Claude Code process recycled the same PID without cleanup.
|
|
212
|
+
*/
|
|
213
|
+
readMatchingPidFile(pid, procStartTime) {
|
|
214
|
+
const pidFilePath = path.join(this.sessionsDir, `${pid}.json`);
|
|
215
|
+
try {
|
|
216
|
+
const entry = JSON.parse(fs.readFileSync(pidFilePath, 'utf-8'));
|
|
217
|
+
if (procStartTime) {
|
|
218
|
+
const deltaMs = Math.abs(procStartTime.getTime() - entry.startedAt);
|
|
219
|
+
if (deltaMs > PID_FILE_STALENESS_MS) {
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return entry;
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Map the PID file's live status string to {@link AgentStatus}.
|
|
231
|
+
*
|
|
232
|
+
* Returns undefined for missing / unrecognized values so the caller
|
|
233
|
+
* can fall back to JSONL-derived heuristics.
|
|
234
|
+
*/
|
|
235
|
+
mapPidStatus(status) {
|
|
236
|
+
switch (status) {
|
|
237
|
+
case 'running':
|
|
238
|
+
return AgentAdapter_1.AgentStatus.RUNNING;
|
|
239
|
+
case 'waiting':
|
|
240
|
+
return AgentAdapter_1.AgentStatus.WAITING;
|
|
241
|
+
case 'idle':
|
|
242
|
+
return AgentAdapter_1.AgentStatus.IDLE;
|
|
243
|
+
default:
|
|
244
|
+
return undefined;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
193
247
|
/**
|
|
194
248
|
* Attempt to match each process to its session via ~/.claude/sessions/<pid>.json.
|
|
195
249
|
*
|
|
@@ -204,57 +258,63 @@ class ClaudeCodeAdapter {
|
|
|
204
258
|
const direct = [];
|
|
205
259
|
const fallback = [];
|
|
206
260
|
for (const proc of processes) {
|
|
207
|
-
const
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
if (proc.startTime) {
|
|
212
|
-
const deltaMs = Math.abs(proc.startTime.getTime() - entry.startedAt);
|
|
213
|
-
if (deltaMs > PID_FILE_STALENESS_MS) {
|
|
214
|
-
fallback.push(proc);
|
|
215
|
-
continue;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
const projectDir = this.getProjectDir(entry.cwd);
|
|
219
|
-
const jsonlPath = path.join(projectDir, `${entry.sessionId}.jsonl`);
|
|
220
|
-
if (!fs.existsSync(jsonlPath)) {
|
|
221
|
-
fallback.push(proc);
|
|
222
|
-
continue;
|
|
223
|
-
}
|
|
224
|
-
direct.push({
|
|
225
|
-
process: proc,
|
|
226
|
-
sessionFile: {
|
|
227
|
-
sessionId: entry.sessionId,
|
|
228
|
-
filePath: jsonlPath,
|
|
229
|
-
projectDir,
|
|
230
|
-
birthtimeMs: entry.startedAt,
|
|
231
|
-
resolvedCwd: entry.cwd,
|
|
232
|
-
},
|
|
233
|
-
});
|
|
261
|
+
const entry = this.readMatchingPidFile(proc.pid, proc.startTime);
|
|
262
|
+
if (!entry) {
|
|
263
|
+
fallback.push(proc);
|
|
264
|
+
continue;
|
|
234
265
|
}
|
|
235
|
-
|
|
236
|
-
|
|
266
|
+
const projectDir = this.getProjectDir(entry.cwd);
|
|
267
|
+
const jsonlPath = path.join(projectDir, `${entry.sessionId}.jsonl`);
|
|
268
|
+
if (!fs.existsSync(jsonlPath)) {
|
|
237
269
|
fallback.push(proc);
|
|
270
|
+
continue;
|
|
238
271
|
}
|
|
272
|
+
direct.push({
|
|
273
|
+
process: proc,
|
|
274
|
+
sessionFile: {
|
|
275
|
+
sessionId: entry.sessionId,
|
|
276
|
+
filePath: jsonlPath,
|
|
277
|
+
projectDir,
|
|
278
|
+
birthtimeMs: entry.startedAt,
|
|
279
|
+
resolvedCwd: entry.cwd,
|
|
280
|
+
},
|
|
281
|
+
pidStatus: this.mapPidStatus(entry.status),
|
|
282
|
+
waitingFor: entry.waitingFor,
|
|
283
|
+
});
|
|
239
284
|
}
|
|
240
285
|
return { direct, fallback };
|
|
241
286
|
}
|
|
242
287
|
/**
|
|
243
288
|
* Derive the Claude Code project directory for a given CWD.
|
|
244
289
|
*
|
|
245
|
-
* Claude Code encodes paths by replacing
|
|
246
|
-
*
|
|
290
|
+
* Claude Code encodes paths by replacing every non-alphanumeric
|
|
291
|
+
* character with '-', so '/', '_', '.', spaces, etc. all collapse:
|
|
292
|
+
* /Users/foo/bar → -Users-foo-bar
|
|
293
|
+
* /Users/foo/my_project → -Users-foo-my-project
|
|
294
|
+
* /Users/foo/.worktrees/x → -Users-foo--worktrees-x
|
|
295
|
+
*
|
|
296
|
+
* The encoding is lossy — multiple real paths can collide on the
|
|
297
|
+
* same encoded dir. Callers that need to disambiguate must read the
|
|
298
|
+
* `cwd` field inside each session JSONL.
|
|
247
299
|
*/
|
|
248
300
|
getProjectDir(cwd) {
|
|
249
|
-
const encoded = cwd.replace(
|
|
301
|
+
const encoded = cwd.replace(/[^a-zA-Z0-9]/g, '-');
|
|
250
302
|
return path.join(this.projectsDir, encoded);
|
|
251
303
|
}
|
|
252
|
-
mapSessionToAgent(session, processInfo, sessionFile) {
|
|
304
|
+
mapSessionToAgent(session, processInfo, sessionFile, liveInfo) {
|
|
305
|
+
// Live PID-file status is authoritative when present — JSONL-derived
|
|
306
|
+
// status mis-classifies sessions whose latest entry is a UI-state
|
|
307
|
+
// event like `permission-mode` or `ai-title`.
|
|
308
|
+
const status = liveInfo?.pidStatus ?? this.parser.determineStatus(session);
|
|
309
|
+
const baseSummary = session.lastUserMessage || 'Session started';
|
|
310
|
+
const summary = status === AgentAdapter_1.AgentStatus.WAITING && liveInfo?.waitingFor
|
|
311
|
+
? `${baseSummary} — waiting for ${liveInfo.waitingFor}`
|
|
312
|
+
: baseSummary;
|
|
253
313
|
return {
|
|
254
314
|
name: (0, matching_1.generateAgentName)(processInfo.cwd, processInfo.pid),
|
|
255
315
|
type: this.type,
|
|
256
|
-
status
|
|
257
|
-
summary
|
|
316
|
+
status,
|
|
317
|
+
summary,
|
|
258
318
|
pid: processInfo.pid,
|
|
259
319
|
projectPath: sessionFile.resolvedCwd || processInfo.cwd || '',
|
|
260
320
|
sessionId: sessionFile.sessionId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaudeCodeAdapter.js","sourceRoot":"","sources":["../../src/adapters/ClaudeCodeAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAS7B,iDAA6C;AAC7C,8CAAuE;AACvE,8CAAgH;AAEhH,gDAAgF;AAChF,sEAAmE;
|
|
1
|
+
{"version":3,"file":"ClaudeCodeAdapter.js","sourceRoot":"","sources":["../../src/adapters/ClaudeCodeAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAS7B,iDAA6C;AAC7C,8CAAuE;AACvE,8CAAgH;AAEhH,gDAAgF;AAChF,sEAAmE;AAwCnE,oFAAoF;AACpF,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAEpC;;;;;;;;;GASG;AACH,MAAa,iBAAiB;IAO1B;QANS,SAAI,GAAG,QAAiB,CAAC;QAO9B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAClE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,GAAG,IAAI,yCAAmB,EAAE,CAAC;IAC5C,CAAC;IAED,SAAS,CAAC,WAAwB;QAC9B,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAEO,kBAAkB,CAAC,OAAe;QACtC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QACrD,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,YAAY,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,YAAY;QACd,MAAM,SAAS,GAAG,IAAA,yBAAe,EAAC,IAAA,4BAAkB,EAAC,QAAQ,CAAC,CAAC,CAAC;QAChE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACd,CAAC;QAED,wEAAwE;QACxE,sEAAsE;QACtE,uCAAuC;QACvC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAEvF,2DAA2D;QAC3D,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAE1E,MAAM,MAAM,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,SAAS,CAAC,CAAC;QAE/C,kFAAkF;QAClF,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,aAAa,GACf,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;YAC5C,CAAC,CAAC,IAAA,mCAAwB,EAAC,QAAQ,EAAE,cAAc,CAAC;YACpD,CAAC,CAAC,EAAE,CAAC;QAEb,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;YACxB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;YACnC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;SAC7C,CAAC,CAAC;QAEH,MAAM,MAAM,GAAgB,EAAE,CAAC;QAE/B,uDAAuD;QACvD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;YAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;YAC3F,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;oBAC/D,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;iBAC/B,CAAC,CAAC,CAAC;YACR,CAAC;iBAAM,CAAC;gBACJ,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;QAED,mCAAmC;QACnC,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CACvC,KAAK,CAAC,OAAO,CAAC,QAAQ,EACtB,KAAK,CAAC,OAAO,CAAC,WAAW,CAC5B,CAAC;YACF,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACnF,CAAC;iBAAM,CAAC;gBACJ,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC;QAED,+DAA+D;QAC/D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACK,gBAAgB,CAAC,SAAwB;QAC7C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE3C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,GAAG;gBAAE,SAAS;YAExB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;gBAAE,SAAS;YAEvC,IAAI,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;oBAAE,SAAS;YACzD,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS;YACb,CAAC;YAED,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEnC,MAAM,KAAK,GAAG,IAAA,uCAA6B,EAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAElE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACK,iBAAiB,CAAC,SAAwB;QAI9C,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAkB,EAAE,CAAC;QAEnC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5D,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpB,SAAS;YACb,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;YAE9D,MAAM,IAAI,GAAG,IAAA,kBAAQ,EAAC,SAAS,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpB,SAAS;YACb,CAAC;YAED,8DAA8D;YAC9D,kEAAkE;YAClE,8DAA8D;YAC9D,qBAAqB;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAEpE,MAAM,CAAC,IAAI,CAAC;gBACR,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE;oBACT,SAAS;oBACT,QAAQ,EAAE,SAAS;oBACnB,UAAU;oBACV,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,WAAW,EAAE,IAAI,CAAC,GAAG;iBACxB;gBACD,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAC9C,UAAU,EAAE,QAAQ,EAAE,UAAU;aACnC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;IAEO,sBAAsB,CAAC,OAAe;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC3D,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC9B,CAAC;IAED;;;;;;;;OAQG;IACK,mBAAmB,CAAC,GAAW,EAAE,aAAoB;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACpB,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CACxB,CAAC;YAElB,IAAI,aAAa,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;gBACpE,IAAI,OAAO,GAAG,qBAAqB,EAAE,CAAC;oBAClC,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACK,YAAY,CAAC,MAA0B;QAC3C,QAAQ,MAAM,EAAE,CAAC;YACb,KAAK,SAAS;gBACV,OAAO,0BAAW,CAAC,OAAO,CAAC;YAC/B,KAAK,SAAS;gBACV,OAAO,0BAAW,CAAC,OAAO,CAAC;YAC/B,KAAK,MAAM;gBACP,OAAO,0BAAW,CAAC,IAAI,CAAC;YAC5B;gBACI,OAAO,SAAS,CAAC;QACzB,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACK,kBAAkB,CAAC,SAAwB;QAI/C,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAkB,EAAE,CAAC;QAEnC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACjE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpB,SAAS;YACb,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,SAAS,QAAQ,CAAC,CAAC;YAEpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpB,SAAS;YACb,CAAC;YAED,MAAM,CAAC,IAAI,CAAC;gBACR,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE;oBACT,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,QAAQ,EAAE,SAAS;oBACnB,UAAU;oBACV,WAAW,EAAE,KAAK,CAAC,SAAS;oBAC5B,WAAW,EAAE,KAAK,CAAC,GAAG;iBACzB;gBACD,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC1C,UAAU,EAAE,KAAK,CAAC,UAAU;aAC/B,CAAC,CAAC;QACP,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,aAAa,CAAC,GAAW;QAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAEO,iBAAiB,CACrB,OAAsB,EACtB,WAAwB,EACxB,WAAwB,EACxB,QAA2D;QAE3D,qEAAqE;QACrE,kEAAkE;QAClE,8CAA8C;QAC9C,MAAM,MAAM,GAAG,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,IAAI,iBAAiB,CAAC;QACjE,MAAM,OAAO,GAAG,MAAM,KAAK,0BAAW,CAAC,OAAO,IAAI,QAAQ,EAAE,UAAU;YAClE,CAAC,CAAC,GAAG,WAAW,kBAAkB,QAAQ,CAAC,UAAU,EAAE;YACvD,CAAC,CAAC,WAAW,CAAC;QAElB,OAAO;YACH,IAAI,EAAE,IAAA,4BAAiB,EAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;YACzD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM;YACN,OAAO;YACP,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,GAAG,IAAI,EAAE;YAC7D,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,eAAe,EAAE,WAAW,CAAC,QAAQ;SACxC,CAAC;IACN,CAAC;IAEO,mBAAmB,CAAC,WAAwB;QAChD,OAAO;YACH,IAAI,EAAE,IAAA,4BAAiB,EAAC,WAAW,CAAC,GAAG,IAAI,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC;YAC/D,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,0BAAW,CAAC,IAAI;YACxB,OAAO,EAAE,SAAS;YAClB,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,WAAW,EAAE,WAAW,CAAC,GAAG,IAAI,EAAE;YAClC,SAAS,EAAE,OAAO,WAAW,CAAC,GAAG,EAAE;YACnC,UAAU,EAAE,IAAI,IAAI,EAAE;SACzB,CAAC;IACN,CAAC;IAED,eAAe,CAAC,eAAuB,EAAE,OAA+B;QACpE,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAA0B;QACzC,MAAM,SAAS,GAAG,IAAI,EAAE,GAAG,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAqB,EAAE,CAAC;QAEvC,KAAK,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,UAAU,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC9D,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,mEAAmE;YACnE,oEAAoE;YACpE,mEAAmE;YACnE,qCAAqC;YACrC,IAAI,CAAC,OAAO,CAAC,aAAa;gBAAE,SAAS;YAErC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC;YAClD,IAAI,SAAS,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS;gBAAE,SAAS;YAEnE,MAAM,IAAI,GAAG,IAAA,kBAAQ,EAAC,QAAQ,CAAC,CAAC;YAEhC,SAAS,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,GAAG,EAAE,WAAW;gBAChB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,EAAE;gBAChD,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE;gBAC3D,SAAS,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE;gBAC/E,eAAe,EAAE,QAAQ;aAC5B,CAAC,CAAC;QACP,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;;;;;;;OAUG;IACK,oBAAoB;QACxB,MAAM,GAAG,GAAoD,EAAE,CAAC;QAEhE,IAAI,CAAC,IAAA,qBAAW,EAAC,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO,GAAG,CAAC;QAE/C,KAAK,MAAM,OAAO,IAAI,IAAA,qBAAW,EAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACxD,IAAI,CAAC,IAAA,qBAAW,EAAC,UAAU,CAAC;gBAAE,SAAS;YAEvC,8DAA8D;YAC9D,+DAA+D;YAC/D,4DAA4D;YAC5D,uBAAuB;YACvB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC3C,KAAK,MAAM,IAAI,IAAI,IAAA,mBAAS,EAAC,UAAU,CAAC,EAAE,CAAC;gBACvC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7E,CAAC;QACL,CAAC;QAED,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AA1ZD,8CA0ZC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenCode Adapter
|
|
3
|
+
*
|
|
4
|
+
* Detects running OpenCode agents by:
|
|
5
|
+
* 1. Finding running opencode processes via shared listAgentProcesses()
|
|
6
|
+
* 2. Enriching with CWD and start times via shared enrichProcesses()
|
|
7
|
+
* 3. Querying OpenCode's SQLite DB (~/.local/share/opencode/opencode.db) to
|
|
8
|
+
* find the session matching each process's CWD and read status from message.time.completed
|
|
9
|
+
*
|
|
10
|
+
* sessionFilePath encodes "<dbPath>::<sessionId>" so getConversation() can open the right
|
|
11
|
+
* DB row without extending the AgentAdapter interface.
|
|
12
|
+
*/
|
|
13
|
+
import type { AgentAdapter, AgentInfo, ProcessInfo, ConversationMessage, SessionSummary, ListSessionsOptions } from './AgentAdapter';
|
|
14
|
+
export declare class OpenCodeAdapter implements AgentAdapter {
|
|
15
|
+
readonly type: "opencode";
|
|
16
|
+
private static readonly IDLE_THRESHOLD_MINUTES;
|
|
17
|
+
private readonly dbPath;
|
|
18
|
+
private db;
|
|
19
|
+
constructor();
|
|
20
|
+
close(): void;
|
|
21
|
+
private static resolveDbPath;
|
|
22
|
+
canHandle(processInfo: ProcessInfo): boolean;
|
|
23
|
+
detectAgents(): Promise<AgentInfo[]>;
|
|
24
|
+
getConversation(sessionFilePath: string, options?: {
|
|
25
|
+
verbose?: boolean;
|
|
26
|
+
}): ConversationMessage[];
|
|
27
|
+
listSessions(opts?: ListSessionsOptions): Promise<SessionSummary[]>;
|
|
28
|
+
private findSessionForDirectory;
|
|
29
|
+
private getSessionStats;
|
|
30
|
+
private mapSessionToAgent;
|
|
31
|
+
private mapProcessOnlyAgent;
|
|
32
|
+
private determineStatus;
|
|
33
|
+
private openDb;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=OpenCodeAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenCodeAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/OpenCodeAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EACR,YAAY,EACZ,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACtB,MAAM,gBAAgB,CAAC;AAgCxB,qBAAa,eAAgB,YAAW,YAAY;IAChD,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IAEpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAK;IAEnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,EAAE,CAAkC;;IAU5C,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,MAAM,CAAC,aAAa;IAO5B,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO;IAMtC,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IA2B1C,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,mBAAmB,EAAE;IAiD1F,YAAY,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAwCzE,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,eAAe;IA6DvB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,MAAM;CAUjB"}
|