247-cli 1.3.0 → 1.4.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.
- package/agent/dist/db/index.d.ts.map +1 -1
- package/agent/dist/db/index.js +78 -0
- package/agent/dist/db/index.js.map +1 -1
- package/agent/dist/db/schema.d.ts +14 -2
- package/agent/dist/db/schema.d.ts.map +1 -1
- package/agent/dist/db/schema.js +10 -2
- package/agent/dist/db/schema.js.map +1 -1
- package/agent/dist/db/sessions.d.ts +35 -0
- package/agent/dist/db/sessions.d.ts.map +1 -1
- package/agent/dist/db/sessions.js +149 -3
- package/agent/dist/db/sessions.js.map +1 -1
- package/agent/dist/routes/sessions.d.ts.map +1 -1
- package/agent/dist/routes/sessions.js +112 -0
- package/agent/dist/routes/sessions.js.map +1 -1
- package/agent/dist/services/cleanup.d.ts +45 -0
- package/agent/dist/services/cleanup.d.ts.map +1 -0
- package/agent/dist/services/cleanup.js +130 -0
- package/agent/dist/services/cleanup.js.map +1 -0
- package/agent/dist/services/execution.d.ts +53 -0
- package/agent/dist/services/execution.d.ts.map +1 -0
- package/agent/dist/services/execution.js +75 -0
- package/agent/dist/services/execution.js.map +1 -0
- package/agent/dist/services/index.d.ts +7 -0
- package/agent/dist/services/index.d.ts.map +1 -0
- package/agent/dist/services/index.js +5 -0
- package/agent/dist/services/index.js.map +1 -0
- package/agent/dist/services/worktree.d.ts +41 -0
- package/agent/dist/services/worktree.d.ts.map +1 -0
- package/agent/dist/services/worktree.js +139 -0
- package/agent/dist/services/worktree.js.map +1 -0
- package/agent/dist/websocket-handlers.d.ts.map +1 -1
- package/agent/dist/websocket-handlers.js +43 -1
- package/agent/dist/websocket-handlers.js.map +1 -1
- package/agent/node_modules/247-shared/dist/types/index.d.ts +2 -0
- package/agent/node_modules/247-shared/dist/types/index.d.ts.map +1 -1
- package/agent/node_modules/247-shared/dist/types/index.js.map +1 -1
- package/agent/node_modules/247-shared/package.json +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
|
@@ -5,8 +5,15 @@ import { Router } from 'express';
|
|
|
5
5
|
import { tmuxSessionStatus, broadcastSessionRemoved, broadcastSessionArchived } from '../status.js';
|
|
6
6
|
import * as sessionsDb from '../db/sessions.js';
|
|
7
7
|
import { getEnvironmentMetadata, getSessionEnvironment, clearSessionEnvironment, } from '../db/environments.js';
|
|
8
|
+
import { executionManager, worktreeManager } from '../services/index.js';
|
|
9
|
+
import { config } from '../config.js';
|
|
8
10
|
export function createSessionRoutes() {
|
|
9
11
|
const router = Router();
|
|
12
|
+
// Get execution capacity (max parallel sessions)
|
|
13
|
+
router.get('/capacity', (_req, res) => {
|
|
14
|
+
const capacity = executionManager.getCapacity();
|
|
15
|
+
res.json(capacity);
|
|
16
|
+
});
|
|
10
17
|
// Enhanced sessions endpoint with detailed info
|
|
11
18
|
router.get('/', async (_req, res) => {
|
|
12
19
|
const { exec } = await import('child_process');
|
|
@@ -76,6 +83,9 @@ export function createSessionRoutes() {
|
|
|
76
83
|
contextUsage,
|
|
77
84
|
linesAdded,
|
|
78
85
|
linesRemoved,
|
|
86
|
+
// Git worktree isolation
|
|
87
|
+
worktreePath: dbSession?.worktree_path ?? undefined,
|
|
88
|
+
branchName: dbSession?.branch_name ?? undefined,
|
|
79
89
|
});
|
|
80
90
|
}
|
|
81
91
|
res.json(sessions);
|
|
@@ -116,6 +126,9 @@ export function createSessionRoutes() {
|
|
|
116
126
|
contextUsage: session.context_usage ?? undefined,
|
|
117
127
|
linesAdded: session.lines_added ?? undefined,
|
|
118
128
|
linesRemoved: session.lines_removed ?? undefined,
|
|
129
|
+
// Git worktree isolation
|
|
130
|
+
worktreePath: session.worktree_path ?? undefined,
|
|
131
|
+
branchName: session.branch_name ?? undefined,
|
|
119
132
|
};
|
|
120
133
|
});
|
|
121
134
|
res.json(sessions);
|
|
@@ -154,12 +167,23 @@ export function createSessionRoutes() {
|
|
|
154
167
|
return res.status(400).json({ error: 'Invalid session name' });
|
|
155
168
|
}
|
|
156
169
|
try {
|
|
170
|
+
// Get session info before deleting to retrieve worktree path
|
|
171
|
+
const session = sessionsDb.getSession(sessionName);
|
|
157
172
|
await execAsync(`tmux kill-session -t "${sessionName}" 2>/dev/null`);
|
|
158
173
|
console.log(`Killed tmux session: ${sessionName}`);
|
|
174
|
+
// Clean up worktree if session had one
|
|
175
|
+
if (session?.worktree_path && session?.project) {
|
|
176
|
+
const projectPath = `${config.projects.basePath}/${session.project}`.replace('~', process.env.HOME);
|
|
177
|
+
const removed = await worktreeManager.remove(projectPath, session.worktree_path);
|
|
178
|
+
if (removed) {
|
|
179
|
+
console.log(`[Delete] Removed worktree at ${session.worktree_path}`);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
159
182
|
sessionsDb.deleteSession(sessionName);
|
|
160
183
|
sessionsDb.clearSessionEnvironmentId(sessionName);
|
|
161
184
|
tmuxSessionStatus.delete(sessionName);
|
|
162
185
|
clearSessionEnvironment(sessionName);
|
|
186
|
+
executionManager.unregister(sessionName);
|
|
163
187
|
broadcastSessionRemoved(sessionName);
|
|
164
188
|
res.json({ success: true, message: `Session ${sessionName} killed` });
|
|
165
189
|
}
|
|
@@ -176,6 +200,8 @@ export function createSessionRoutes() {
|
|
|
176
200
|
if (!/^[\w-]+$/.test(sessionName)) {
|
|
177
201
|
return res.status(400).json({ error: 'Invalid session name' });
|
|
178
202
|
}
|
|
203
|
+
// Get session info before archiving to retrieve worktree path
|
|
204
|
+
const sessionBeforeArchive = sessionsDb.getSession(sessionName);
|
|
179
205
|
const archivedSession = sessionsDb.archiveSession(sessionName);
|
|
180
206
|
if (!archivedSession) {
|
|
181
207
|
return res.status(404).json({ error: 'Session not found' });
|
|
@@ -187,7 +213,17 @@ export function createSessionRoutes() {
|
|
|
187
213
|
catch {
|
|
188
214
|
console.log(`[Archive] Tmux session ${sessionName} was already gone`);
|
|
189
215
|
}
|
|
216
|
+
// Clean up worktree immediately when archiving
|
|
217
|
+
if (sessionBeforeArchive?.worktree_path && sessionBeforeArchive?.project) {
|
|
218
|
+
const projectPath = `${config.projects.basePath}/${sessionBeforeArchive.project}`.replace('~', process.env.HOME);
|
|
219
|
+
const removed = await worktreeManager.remove(projectPath, sessionBeforeArchive.worktree_path);
|
|
220
|
+
if (removed) {
|
|
221
|
+
sessionsDb.clearSessionWorktree(sessionName);
|
|
222
|
+
console.log(`[Archive] Removed worktree at ${sessionBeforeArchive.worktree_path}`);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
190
225
|
tmuxSessionStatus.delete(sessionName);
|
|
226
|
+
executionManager.unregister(sessionName);
|
|
191
227
|
const envId = getSessionEnvironment(sessionName);
|
|
192
228
|
const envMeta = envId ? getEnvironmentMetadata(envId) : undefined;
|
|
193
229
|
const archivedInfo = {
|
|
@@ -218,6 +254,82 @@ export function createSessionRoutes() {
|
|
|
218
254
|
session: archivedInfo,
|
|
219
255
|
});
|
|
220
256
|
});
|
|
257
|
+
// Push branch to remote (for worktree sessions)
|
|
258
|
+
router.post('/:sessionName/push', async (req, res) => {
|
|
259
|
+
const { sessionName } = req.params;
|
|
260
|
+
const { exec } = await import('child_process');
|
|
261
|
+
const { promisify } = await import('util');
|
|
262
|
+
const execAsync = promisify(exec);
|
|
263
|
+
if (!/^[\w-]+$/.test(sessionName)) {
|
|
264
|
+
return res.status(400).json({ error: 'Invalid session name' });
|
|
265
|
+
}
|
|
266
|
+
const session = sessionsDb.getSession(sessionName);
|
|
267
|
+
if (!session) {
|
|
268
|
+
return res.status(404).json({ error: 'Session not found' });
|
|
269
|
+
}
|
|
270
|
+
if (!session.worktree_path || !session.branch_name) {
|
|
271
|
+
return res.status(400).json({ error: 'Session has no worktree' });
|
|
272
|
+
}
|
|
273
|
+
try {
|
|
274
|
+
await execAsync(`git push -u origin "${session.branch_name}"`, {
|
|
275
|
+
cwd: session.worktree_path,
|
|
276
|
+
});
|
|
277
|
+
console.log(`[Push] Pushed branch ${session.branch_name} for session ${sessionName}`);
|
|
278
|
+
res.json({
|
|
279
|
+
success: true,
|
|
280
|
+
branch: session.branch_name,
|
|
281
|
+
message: `Branch ${session.branch_name} pushed to origin`,
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
catch (error) {
|
|
285
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
286
|
+
console.error(`[Push] Failed to push branch for session ${sessionName}:`, errorMessage);
|
|
287
|
+
res.status(500).json({ error: `Failed to push branch: ${errorMessage}` });
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
// Create PR via gh CLI (for worktree sessions)
|
|
291
|
+
router.post('/:sessionName/create-pr', async (req, res) => {
|
|
292
|
+
const { sessionName } = req.params;
|
|
293
|
+
const { title, body } = req.body;
|
|
294
|
+
const { exec } = await import('child_process');
|
|
295
|
+
const { promisify } = await import('util');
|
|
296
|
+
const execAsync = promisify(exec);
|
|
297
|
+
if (!/^[\w-]+$/.test(sessionName)) {
|
|
298
|
+
return res.status(400).json({ error: 'Invalid session name' });
|
|
299
|
+
}
|
|
300
|
+
if (!title) {
|
|
301
|
+
return res.status(400).json({ error: 'PR title is required' });
|
|
302
|
+
}
|
|
303
|
+
const session = sessionsDb.getSession(sessionName);
|
|
304
|
+
if (!session) {
|
|
305
|
+
return res.status(404).json({ error: 'Session not found' });
|
|
306
|
+
}
|
|
307
|
+
if (!session.worktree_path || !session.branch_name) {
|
|
308
|
+
return res.status(400).json({ error: 'Session has no worktree' });
|
|
309
|
+
}
|
|
310
|
+
try {
|
|
311
|
+
// Push branch first
|
|
312
|
+
await execAsync(`git push -u origin "${session.branch_name}"`, {
|
|
313
|
+
cwd: session.worktree_path,
|
|
314
|
+
});
|
|
315
|
+
// Create PR using gh CLI
|
|
316
|
+
const prBody = body || '';
|
|
317
|
+
const { stdout } = await execAsync(`gh pr create --title "${title.replace(/"/g, '\\"')}" --body "${prBody.replace(/"/g, '\\"')}"`, { cwd: session.worktree_path });
|
|
318
|
+
const prUrl = stdout.trim();
|
|
319
|
+
console.log(`[PR] Created PR for session ${sessionName}: ${prUrl}`);
|
|
320
|
+
res.json({
|
|
321
|
+
success: true,
|
|
322
|
+
prUrl,
|
|
323
|
+
branch: session.branch_name,
|
|
324
|
+
message: `PR created: ${prUrl}`,
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
catch (error) {
|
|
328
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
329
|
+
console.error(`[PR] Failed to create PR for session ${sessionName}:`, errorMessage);
|
|
330
|
+
res.status(500).json({ error: `Failed to create PR: ${errorMessage}` });
|
|
331
|
+
}
|
|
332
|
+
});
|
|
221
333
|
return router;
|
|
222
334
|
}
|
|
223
335
|
//# sourceMappingURL=sessions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACpG,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,UAAU,mBAAmB;IACjC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,iDAAiD;IACjD,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACpC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAChD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,gDAAgD;IAChD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAClC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAChC,wEAAwE,CACzE,CAAC;YAEF,MAAM,QAAQ,GAAoB,EAAE,CAAC;YAErC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEnC,IAAI,MAAM,GAAkB,MAAM,CAAC;gBACnC,IAAI,eAA4C,CAAC;gBACjD,IAAI,YAAY,GAAoB,MAAM,CAAC;gBAC3C,IAAI,SAA6B,CAAC;gBAClC,IAAI,gBAAoC,CAAC;gBAEzC,8DAA8D;gBAC9D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC7C,0DAA0D;gBAC1D,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAE9C,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;oBACzB,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;oBAC3C,YAAY,GAAG,MAAM,CAAC;oBACtB,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;oBAC/B,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;gBAC/C,CAAC;qBAAM,IAAI,SAAS,EAAE,CAAC;oBACrB,oCAAoC;oBACpC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;oBAC1B,eAAe,GAAG,SAAS,CAAC,gBAAgB,IAAI,SAAS,CAAC;oBAC1D,YAAY,GAAG,MAAM,CAAC;oBACtB,SAAS,GAAG,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC;oBAC9C,gBAAgB,GAAG,SAAS,CAAC,kBAAkB,CAAC;gBAClD,CAAC;gBAED,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAElE,qEAAqE;gBACrE,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,IAAI,SAAS,CAAC;gBAC/D,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,SAAS,EAAE,QAAQ,IAAI,SAAS,CAAC;gBACtE,MAAM,YAAY,GAAG,QAAQ,EAAE,YAAY,IAAI,SAAS,EAAE,aAAa,IAAI,SAAS,CAAC;gBACrF,MAAM,UAAU,GAAG,QAAQ,EAAE,UAAU,IAAI,SAAS,EAAE,WAAW,IAAI,SAAS,CAAC;gBAC/E,MAAM,YAAY,GAAG,QAAQ,EAAE,YAAY,IAAI,SAAS,EAAE,aAAa,IAAI,SAAS,CAAC;gBAErF,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI;oBACJ,OAAO;oBACP,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI;oBACnC,MAAM;oBACN,eAAe;oBACf,YAAY;oBACZ,YAAY,EAAE,QAAQ,EAAE,YAAY,IAAI,SAAS,EAAE,aAAa;oBAChE,SAAS;oBACT,gBAAgB;oBAChB,aAAa,EAAE,KAAK;oBACpB,WAAW,EAAE,OAAO;wBAClB,CAAC,CAAC;4BACE,EAAE,EAAE,OAAO,CAAC,EAAE;4BACd,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,SAAS,EAAE,OAAO,CAAC,SAAS;yBAC7B;wBACH,CAAC,CAAC,SAAS;oBACb,iDAAiD;oBACjD,KAAK;oBACL,OAAO;oBACP,YAAY;oBACZ,UAAU;oBACV,YAAY;oBACZ,yBAAyB;oBACzB,YAAY,EAAE,SAAS,EAAE,aAAa,IAAI,SAAS;oBACnD,UAAU,EAAE,SAAS,EAAE,WAAW,IAAI,SAAS;iBAChD,CAAC,CAAC;YACL,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,wBAAwB;IACxB,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACpC,MAAM,gBAAgB,GAAG,UAAU,CAAC,mBAAmB,EAAE,CAAC;QAE1D,MAAM,QAAQ,GAAoB,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACjE,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAElE,OAAO;gBACL,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,SAAS,EAAE,OAAO,CAAC,UAAU;gBAC7B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,eAAe,EAAE,OAAO,CAAC,gBAAgB,IAAI,SAAS;gBACtD,YAAY,EAAE,MAAe;gBAC7B,SAAS,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;gBAC1C,gBAAgB,EAAE,OAAO,CAAC,kBAAkB;gBAC5C,UAAU,EAAE,OAAO,CAAC,WAAW,IAAI,SAAS;gBAC5C,aAAa,EAAE,KAAK;gBACpB,WAAW,EAAE,OAAO;oBAClB,CAAC,CAAC;wBACE,EAAE,EAAE,OAAO,CAAC,EAAE;wBACd,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,SAAS,EAAE,OAAO,CAAC,SAAS;qBAC7B;oBACH,CAAC,CAAC,SAAS;gBACb,6BAA6B;gBAC7B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;gBACjC,OAAO,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;gBACtC,YAAY,EAAE,OAAO,CAAC,aAAa,IAAI,SAAS;gBAChD,UAAU,EAAE,OAAO,CAAC,WAAW,IAAI,SAAS;gBAC5C,YAAY,EAAE,OAAO,CAAC,aAAa,IAAI,SAAS;gBAChD,yBAAyB;gBACzB,YAAY,EAAE,OAAO,CAAC,aAAa,IAAI,SAAS;gBAChD,UAAU,EAAE,OAAO,CAAC,WAAW,IAAI,SAAS;aAC7C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,qDAAqD;IACrD,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACrD,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAChC,yBAAyB,WAAW,yBAAyB,CAC9D,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,KAAK,GAAG,QAAQ;iBACnB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;iBACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAExF,GAAG,CAAC,IAAI,CAAC;gBACP,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;gBACtD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,sBAAsB;IACtB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAChD,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC;YACH,6DAA6D;YAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAEnD,MAAM,SAAS,CAAC,yBAAyB,WAAW,eAAe,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,wBAAwB,WAAW,EAAE,CAAC,CAAC;YAEnD,uCAAuC;YACvC,IAAI,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;gBAC/C,MAAM,WAAW,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,OAAO,CAC1E,GAAG,EACH,OAAO,CAAC,GAAG,CAAC,IAAK,CAClB,CAAC;gBACF,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;gBACjF,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,gCAAgC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;YAED,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACtC,UAAU,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;YAClD,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACtC,uBAAuB,CAAC,WAAW,CAAC,CAAC;YACrC,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACzC,uBAAuB,CAAC,WAAW,CAAC,CAAC;YAErC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,WAAW,SAAS,EAAE,CAAC,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,uDAAuD;IACvD,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACtD,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,8DAA8D;QAC9D,MAAM,oBAAoB,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAEhE,MAAM,eAAe,GAAG,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC/D,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,yBAAyB,WAAW,eAAe,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,kCAAkC,WAAW,EAAE,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,0BAA0B,WAAW,mBAAmB,CAAC,CAAC;QACxE,CAAC;QAED,+CAA+C;QAC/C,IAAI,oBAAoB,EAAE,aAAa,IAAI,oBAAoB,EAAE,OAAO,EAAE,CAAC;YACzE,MAAM,WAAW,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,oBAAoB,CAAC,OAAO,EAAE,CAAC,OAAO,CACvF,GAAG,EACH,OAAO,CAAC,GAAG,CAAC,IAAK,CAClB,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;YAC9F,IAAI,OAAO,EAAE,CAAC;gBACZ,UAAU,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,iCAAiC,oBAAoB,CAAC,aAAa,EAAE,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;QAED,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACtC,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAElE,MAAM,YAAY,GAAkB;YAClC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,eAAe,CAAC,OAAO;YAChC,SAAS,EAAE,eAAe,CAAC,UAAU;YACrC,MAAM,EAAE,eAAe,CAAC,MAAM;YAC9B,eAAe,EAAE,eAAe,CAAC,gBAAgB,IAAI,SAAS;YAC9D,YAAY,EAAE,MAAM;YACpB,SAAS,EAAE,eAAe,CAAC,UAAU,IAAI,SAAS;YAClD,gBAAgB,EAAE,eAAe,CAAC,kBAAkB;YACpD,UAAU,EAAE,eAAe,CAAC,WAAW,IAAI,SAAS;YACpD,aAAa,EAAE,KAAK;YACpB,WAAW,EAAE,OAAO;gBAClB,CAAC,CAAC;oBACE,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,SAAS,EAAE,OAAO,CAAC,SAAS;iBAC7B;gBACH,CAAC,CAAC,SAAS;SACd,CAAC;QAEF,wBAAwB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEpD,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,WAAW,WAAW,WAAW;YAC1C,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,gDAAgD;IAChD,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACnD,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACnD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,uBAAuB,OAAO,CAAC,WAAW,GAAG,EAAE;gBAC7D,GAAG,EAAE,OAAO,CAAC,aAAa;aAC3B,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,wBAAwB,OAAO,CAAC,WAAW,gBAAgB,WAAW,EAAE,CAAC,CAAC;YAEtF,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,OAAO,CAAC,WAAW;gBAC3B,OAAO,EAAE,UAAU,OAAO,CAAC,WAAW,mBAAmB;aAC1D,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,OAAO,CAAC,KAAK,CAAC,4CAA4C,WAAW,GAAG,EAAE,YAAY,CAAC,CAAC;YACxF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,YAAY,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,+CAA+C;IAC/C,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACxD,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACnC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAAyC,CAAC;QACtE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACnD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC;YACH,oBAAoB;YACpB,MAAM,SAAS,CAAC,uBAAuB,OAAO,CAAC,WAAW,GAAG,EAAE;gBAC7D,GAAG,EAAE,OAAO,CAAC,aAAa;aAC3B,CAAC,CAAC;YAEH,yBAAyB;YACzB,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAChC,yBAAyB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAC9F,EAAE,GAAG,EAAE,OAAO,CAAC,aAAa,EAAE,CAC/B,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,+BAA+B,WAAW,KAAK,KAAK,EAAE,CAAC,CAAC;YAEpE,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,IAAI;gBACb,KAAK;gBACL,MAAM,EAAE,OAAO,CAAC,WAAW;gBAC3B,OAAO,EAAE,eAAe,KAAK,EAAE;aAChC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,OAAO,CAAC,KAAK,CAAC,wCAAwC,WAAW,GAAG,EAAE,YAAY,CAAC,CAAC;YACpF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,YAAY,EAAE,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface CleanupConfig {
|
|
2
|
+
maxIdleMs: number;
|
|
3
|
+
intervalMs: number;
|
|
4
|
+
}
|
|
5
|
+
export interface CleanupResult {
|
|
6
|
+
cleanedSessions: string[];
|
|
7
|
+
errors: Array<{
|
|
8
|
+
session: string;
|
|
9
|
+
error: string;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* CleanupService - Automatically cleans up stale worktrees.
|
|
14
|
+
* Runs periodically to remove worktrees from archived sessions.
|
|
15
|
+
*/
|
|
16
|
+
export declare class CleanupService {
|
|
17
|
+
private intervalHandle;
|
|
18
|
+
private config;
|
|
19
|
+
private projectPathResolver;
|
|
20
|
+
constructor(projectPathResolver: (project: string) => string, config?: Partial<CleanupConfig>);
|
|
21
|
+
/**
|
|
22
|
+
* Start the cleanup job.
|
|
23
|
+
*/
|
|
24
|
+
start(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Stop the cleanup job.
|
|
27
|
+
*/
|
|
28
|
+
stop(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Run a cleanup cycle.
|
|
31
|
+
* Returns info about what was cleaned up.
|
|
32
|
+
*/
|
|
33
|
+
runCleanup(): Promise<CleanupResult>;
|
|
34
|
+
/**
|
|
35
|
+
* Check if cleanup job is running.
|
|
36
|
+
*/
|
|
37
|
+
isRunning(): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Update cleanup configuration.
|
|
40
|
+
*/
|
|
41
|
+
updateConfig(config: Partial<CleanupConfig>): void;
|
|
42
|
+
}
|
|
43
|
+
export declare function initCleanupService(projectPathResolver: (project: string) => string, config?: Partial<CleanupConfig>): CleanupService;
|
|
44
|
+
export declare function getCleanupService(): CleanupService | null;
|
|
45
|
+
//# sourceMappingURL=cleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/services/cleanup.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,mBAAmB,CAA8B;gBAGvD,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,EAChD,MAAM,GAAE,OAAO,CAAC,aAAa,CAAM;IASrC;;OAEG;IACH,KAAK,IAAI,IAAI;IAuBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IAgD1C;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;CAanD;AAMD,wBAAgB,kBAAkB,CAChC,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,EAChD,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC9B,cAAc,CAGhB;AAED,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAEzD"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { getCleanableWorktreeSessions, clearSessionWorktree } from '../db/sessions.js';
|
|
2
|
+
import { worktreeManager } from './worktree.js';
|
|
3
|
+
// Default: 72 hours before cleaning up archived session worktrees
|
|
4
|
+
const DEFAULT_MAX_IDLE_MS = 72 * 60 * 60 * 1000;
|
|
5
|
+
// Default: run cleanup every 30 minutes
|
|
6
|
+
const DEFAULT_CLEANUP_INTERVAL_MS = 30 * 60 * 1000;
|
|
7
|
+
/**
|
|
8
|
+
* CleanupService - Automatically cleans up stale worktrees.
|
|
9
|
+
* Runs periodically to remove worktrees from archived sessions.
|
|
10
|
+
*/
|
|
11
|
+
export class CleanupService {
|
|
12
|
+
intervalHandle = null;
|
|
13
|
+
config;
|
|
14
|
+
projectPathResolver;
|
|
15
|
+
constructor(projectPathResolver, config = {}) {
|
|
16
|
+
this.projectPathResolver = projectPathResolver;
|
|
17
|
+
this.config = {
|
|
18
|
+
maxIdleMs: config.maxIdleMs ?? DEFAULT_MAX_IDLE_MS,
|
|
19
|
+
intervalMs: config.intervalMs ?? DEFAULT_CLEANUP_INTERVAL_MS,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Start the cleanup job.
|
|
24
|
+
*/
|
|
25
|
+
start() {
|
|
26
|
+
if (this.intervalHandle) {
|
|
27
|
+
console.log('[Cleanup] Already running');
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
console.log(`[Cleanup] Starting cleanup job (interval: ${this.config.intervalMs / 1000 / 60}min, max idle: ${this.config.maxIdleMs / 1000 / 60 / 60}h)`);
|
|
31
|
+
// Run immediately on start
|
|
32
|
+
this.runCleanup().catch((err) => {
|
|
33
|
+
console.error('[Cleanup] Initial cleanup failed:', err);
|
|
34
|
+
});
|
|
35
|
+
// Then run periodically
|
|
36
|
+
this.intervalHandle = setInterval(() => {
|
|
37
|
+
this.runCleanup().catch((err) => {
|
|
38
|
+
console.error('[Cleanup] Periodic cleanup failed:', err);
|
|
39
|
+
});
|
|
40
|
+
}, this.config.intervalMs);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Stop the cleanup job.
|
|
44
|
+
*/
|
|
45
|
+
stop() {
|
|
46
|
+
if (this.intervalHandle) {
|
|
47
|
+
clearInterval(this.intervalHandle);
|
|
48
|
+
this.intervalHandle = null;
|
|
49
|
+
console.log('[Cleanup] Stopped cleanup job');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Run a cleanup cycle.
|
|
54
|
+
* Returns info about what was cleaned up.
|
|
55
|
+
*/
|
|
56
|
+
async runCleanup() {
|
|
57
|
+
const result = {
|
|
58
|
+
cleanedSessions: [],
|
|
59
|
+
errors: [],
|
|
60
|
+
};
|
|
61
|
+
try {
|
|
62
|
+
// Get archived sessions with worktrees that are old enough to clean
|
|
63
|
+
const sessions = getCleanableWorktreeSessions(this.config.maxIdleMs);
|
|
64
|
+
if (sessions.length === 0) {
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
console.log(`[Cleanup] Found ${sessions.length} sessions to clean up`);
|
|
68
|
+
for (const session of sessions) {
|
|
69
|
+
if (!session.worktree_path)
|
|
70
|
+
continue;
|
|
71
|
+
try {
|
|
72
|
+
const projectPath = this.projectPathResolver(session.project);
|
|
73
|
+
// Remove the worktree
|
|
74
|
+
const removed = await worktreeManager.remove(projectPath, session.worktree_path);
|
|
75
|
+
if (removed) {
|
|
76
|
+
// Clear worktree info in DB
|
|
77
|
+
clearSessionWorktree(session.name);
|
|
78
|
+
result.cleanedSessions.push(session.name);
|
|
79
|
+
console.log(`[Cleanup] Cleaned up worktree for session ${session.name}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
84
|
+
result.errors.push({ session: session.name, error: errorMsg });
|
|
85
|
+
console.error(`[Cleanup] Failed to clean up session ${session.name}:`, error);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (result.cleanedSessions.length > 0) {
|
|
89
|
+
console.log(`[Cleanup] Cleaned up ${result.cleanedSessions.length} worktrees`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
console.error('[Cleanup] Error during cleanup:', error);
|
|
94
|
+
}
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Check if cleanup job is running.
|
|
99
|
+
*/
|
|
100
|
+
isRunning() {
|
|
101
|
+
return this.intervalHandle !== null;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Update cleanup configuration.
|
|
105
|
+
*/
|
|
106
|
+
updateConfig(config) {
|
|
107
|
+
if (config.maxIdleMs !== undefined) {
|
|
108
|
+
this.config.maxIdleMs = config.maxIdleMs;
|
|
109
|
+
}
|
|
110
|
+
if (config.intervalMs !== undefined) {
|
|
111
|
+
this.config.intervalMs = config.intervalMs;
|
|
112
|
+
// Restart with new interval if running
|
|
113
|
+
if (this.isRunning()) {
|
|
114
|
+
this.stop();
|
|
115
|
+
this.start();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Factory function to create cleanup service
|
|
121
|
+
// Needs to be initialized with project path resolver
|
|
122
|
+
let cleanupService = null;
|
|
123
|
+
export function initCleanupService(projectPathResolver, config) {
|
|
124
|
+
cleanupService = new CleanupService(projectPathResolver, config);
|
|
125
|
+
return cleanupService;
|
|
126
|
+
}
|
|
127
|
+
export function getCleanupService() {
|
|
128
|
+
return cleanupService;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/services/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExecutionManager - Manages parallel session execution limits.
|
|
3
|
+
* Limits the number of concurrent Claude sessions to prevent resource exhaustion.
|
|
4
|
+
*/
|
|
5
|
+
export interface SessionInfo {
|
|
6
|
+
project: string;
|
|
7
|
+
worktreePath: string | null;
|
|
8
|
+
startedAt: number;
|
|
9
|
+
}
|
|
10
|
+
export interface CapacityInfo {
|
|
11
|
+
max: number;
|
|
12
|
+
running: number;
|
|
13
|
+
available: number;
|
|
14
|
+
}
|
|
15
|
+
export declare class ExecutionManager {
|
|
16
|
+
private maxParallel;
|
|
17
|
+
private running;
|
|
18
|
+
constructor(maxParallel?: number);
|
|
19
|
+
/**
|
|
20
|
+
* Check if a new session can be started.
|
|
21
|
+
*/
|
|
22
|
+
canStart(): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Register a running session.
|
|
25
|
+
*/
|
|
26
|
+
register(sessionName: string, project: string, worktreePath: string | null): void;
|
|
27
|
+
/**
|
|
28
|
+
* Unregister a session when it stops.
|
|
29
|
+
*/
|
|
30
|
+
unregister(sessionName: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* Get current capacity information.
|
|
33
|
+
*/
|
|
34
|
+
getCapacity(): CapacityInfo;
|
|
35
|
+
/**
|
|
36
|
+
* Get information about a specific running session.
|
|
37
|
+
*/
|
|
38
|
+
getSession(sessionName: string): SessionInfo | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Get all running sessions.
|
|
41
|
+
*/
|
|
42
|
+
getRunningSessions(): Map<string, SessionInfo>;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a specific session is running.
|
|
45
|
+
*/
|
|
46
|
+
isRunning(sessionName: string): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Update the maximum parallel sessions limit.
|
|
49
|
+
*/
|
|
50
|
+
setMaxParallel(max: number): void;
|
|
51
|
+
}
|
|
52
|
+
export declare const executionManager: ExecutionManager;
|
|
53
|
+
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/services/execution.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAA2B;gBAE9B,WAAW,GAAE,MAAU;IAKnC;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAWjF;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQrC;;OAEG;IACH,WAAW,IAAI,YAAY;IAQ3B;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIxD;;OAEG;IACH,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;IAI9C;;OAEG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIvC;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAIlC;AAGD,eAAO,MAAM,gBAAgB,kBAA0B,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExecutionManager - Manages parallel session execution limits.
|
|
3
|
+
* Limits the number of concurrent Claude sessions to prevent resource exhaustion.
|
|
4
|
+
*/
|
|
5
|
+
export class ExecutionManager {
|
|
6
|
+
maxParallel;
|
|
7
|
+
running;
|
|
8
|
+
constructor(maxParallel = 3) {
|
|
9
|
+
this.maxParallel = maxParallel;
|
|
10
|
+
this.running = new Map();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Check if a new session can be started.
|
|
14
|
+
*/
|
|
15
|
+
canStart() {
|
|
16
|
+
return this.running.size < this.maxParallel;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Register a running session.
|
|
20
|
+
*/
|
|
21
|
+
register(sessionName, project, worktreePath) {
|
|
22
|
+
this.running.set(sessionName, {
|
|
23
|
+
project,
|
|
24
|
+
worktreePath,
|
|
25
|
+
startedAt: Date.now(),
|
|
26
|
+
});
|
|
27
|
+
console.log(`[Execution] Registered session ${sessionName} (${this.running.size}/${this.maxParallel})`);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Unregister a session when it stops.
|
|
31
|
+
*/
|
|
32
|
+
unregister(sessionName) {
|
|
33
|
+
if (this.running.delete(sessionName)) {
|
|
34
|
+
console.log(`[Execution] Unregistered session ${sessionName} (${this.running.size}/${this.maxParallel})`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get current capacity information.
|
|
39
|
+
*/
|
|
40
|
+
getCapacity() {
|
|
41
|
+
return {
|
|
42
|
+
max: this.maxParallel,
|
|
43
|
+
running: this.running.size,
|
|
44
|
+
available: this.maxParallel - this.running.size,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get information about a specific running session.
|
|
49
|
+
*/
|
|
50
|
+
getSession(sessionName) {
|
|
51
|
+
return this.running.get(sessionName);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get all running sessions.
|
|
55
|
+
*/
|
|
56
|
+
getRunningSessions() {
|
|
57
|
+
return new Map(this.running);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if a specific session is running.
|
|
61
|
+
*/
|
|
62
|
+
isRunning(sessionName) {
|
|
63
|
+
return this.running.has(sessionName);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Update the maximum parallel sessions limit.
|
|
67
|
+
*/
|
|
68
|
+
setMaxParallel(max) {
|
|
69
|
+
this.maxParallel = max;
|
|
70
|
+
console.log(`[Execution] Max parallel sessions set to ${max}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Singleton instance with default max of 3
|
|
74
|
+
export const executionManager = new ExecutionManager(3);
|
|
75
|
+
//# sourceMappingURL=execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/services/execution.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,MAAM,OAAO,gBAAgB;IACnB,WAAW,CAAS;IACpB,OAAO,CAA2B;IAE1C,YAAY,cAAsB,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,WAAmB,EAAE,OAAe,EAAE,YAA2B;QACxE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE;YAC5B,OAAO;YACP,YAAY;YACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CACT,kCAAkC,WAAW,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,GAAG,CAC3F,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,WAAmB;QAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CACT,oCAAoC,WAAW,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,GAAG,CAC7F,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,WAAW;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YAC1B,SAAS,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;SAChD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,WAAmB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,WAAmB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,GAAW;QACxB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,4CAA4C,GAAG,EAAE,CAAC,CAAC;IACjE,CAAC;CACF;AAED,2CAA2C;AAC3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { WorktreeManager, worktreeManager } from './worktree.js';
|
|
2
|
+
export type { WorktreeInfo } from './worktree.js';
|
|
3
|
+
export { ExecutionManager, executionManager } from './execution.js';
|
|
4
|
+
export type { SessionInfo, CapacityInfo } from './execution.js';
|
|
5
|
+
export { CleanupService, initCleanupService, getCleanupService } from './cleanup.js';
|
|
6
|
+
export type { CleanupConfig, CleanupResult } from './cleanup.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACpE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACrF,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// Services index - centralized exports for all services
|
|
2
|
+
export { WorktreeManager, worktreeManager } from './worktree.js';
|
|
3
|
+
export { ExecutionManager, executionManager } from './execution.js';
|
|
4
|
+
export { CleanupService, initCleanupService, getCleanupService } from './cleanup.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAExD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGjE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface WorktreeInfo {
|
|
2
|
+
worktreePath: string;
|
|
3
|
+
branch: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Manages Git worktrees for session isolation.
|
|
7
|
+
* Each session gets its own worktree with a dedicated branch.
|
|
8
|
+
*/
|
|
9
|
+
export declare class WorktreeManager {
|
|
10
|
+
private basePath;
|
|
11
|
+
constructor(basePath?: string);
|
|
12
|
+
/**
|
|
13
|
+
* Create a new worktree for a session.
|
|
14
|
+
* If branchName is not provided, creates a branch named `session/<sessionName>`.
|
|
15
|
+
*/
|
|
16
|
+
create(projectPath: string, sessionName: string, branchName?: string): Promise<WorktreeInfo>;
|
|
17
|
+
/**
|
|
18
|
+
* Remove a worktree.
|
|
19
|
+
* Uses --force to remove even if there are uncommitted changes.
|
|
20
|
+
*/
|
|
21
|
+
remove(projectPath: string, worktreePath: string): Promise<boolean>;
|
|
22
|
+
/**
|
|
23
|
+
* List all worktrees for a project.
|
|
24
|
+
*/
|
|
25
|
+
list(projectPath: string): Promise<string[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Check if a worktree exists for a session.
|
|
28
|
+
*/
|
|
29
|
+
exists(sessionName: string): Promise<boolean>;
|
|
30
|
+
/**
|
|
31
|
+
* Get the worktree path for a session.
|
|
32
|
+
*/
|
|
33
|
+
getPath(sessionName: string): string;
|
|
34
|
+
/**
|
|
35
|
+
* Copy Claude configuration files (CLAUDE.md, .claude/) from source to destination.
|
|
36
|
+
* These files contain project-specific context that Claude needs.
|
|
37
|
+
*/
|
|
38
|
+
private copyClaudeConfig;
|
|
39
|
+
}
|
|
40
|
+
export declare const worktreeManager: WorktreeManager;
|
|
41
|
+
//# sourceMappingURL=worktree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../src/services/worktree.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,GAAE,MAAuB;IAI7C;;;OAGG;IACG,MAAM,CACV,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC;IAwCxB;;;OAGG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBzE;;OAEG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmBlD;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKnD;;OAEG;IACH,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAIpC;;;OAGG;YACW,gBAAgB;CAsB/B;AAGD,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|