@proletariat/cli 0.3.96 → 0.3.98
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/commands/gc.d.ts +1 -0
- package/dist/commands/gc.js +31 -1
- package/dist/commands/gc.js.map +1 -1
- package/dist/commands/linear/connect.d.ts +5 -0
- package/dist/commands/linear/connect.js +84 -0
- package/dist/commands/linear/connect.js.map +1 -1
- package/dist/commands/orchestrate/index.js +18 -10
- package/dist/commands/orchestrate/index.js.map +1 -1
- package/dist/commands/qa/index.js +1 -1
- package/dist/commands/session/watch.d.ts +1 -0
- package/dist/commands/session/watch.js +46 -2
- package/dist/commands/session/watch.js.map +1 -1
- package/dist/commands/watch/index.d.ts +28 -0
- package/dist/commands/watch/index.js +172 -0
- package/dist/commands/watch/index.js.map +1 -0
- package/dist/commands/work/complete.d.ts +1 -0
- package/dist/commands/work/complete.js +38 -31
- package/dist/commands/work/complete.js.map +1 -1
- package/dist/commands/{ticket/index.d.ts → work/drop.d.ts} +5 -4
- package/dist/commands/work/drop.js +215 -0
- package/dist/commands/work/drop.js.map +1 -0
- package/dist/commands/work/linear.js +1 -1
- package/dist/commands/work/linear.js.map +1 -1
- package/dist/commands/work/ready.d.ts +1 -0
- package/dist/commands/work/ready.js +46 -30
- package/dist/commands/work/ready.js.map +1 -1
- package/dist/commands/work/ship.d.ts +1 -0
- package/dist/commands/work/ship.js +56 -40
- package/dist/commands/work/ship.js.map +1 -1
- package/dist/commands/work/start.d.ts +2 -0
- package/dist/commands/work/start.js +238 -83
- package/dist/commands/work/start.js.map +1 -1
- package/dist/commands/work/stop.d.ts +1 -0
- package/dist/commands/work/stop.js +40 -0
- package/dist/commands/work/stop.js.map +1 -1
- package/dist/lib/agents/commands.js +7 -5
- package/dist/lib/agents/commands.js.map +1 -1
- package/dist/lib/asana/client.d.ts +4 -1
- package/dist/lib/asana/client.js +15 -0
- package/dist/lib/asana/client.js.map +1 -1
- package/dist/lib/asana/index.d.ts +1 -1
- package/dist/lib/asana/types.d.ts +4 -0
- package/dist/lib/database/credential-store.js +1 -0
- package/dist/lib/database/credential-store.js.map +1 -1
- package/dist/lib/database/drizzle-schema.d.ts +17 -0
- package/dist/lib/database/drizzle-schema.js +1 -0
- package/dist/lib/database/drizzle-schema.js.map +1 -1
- package/dist/lib/database/migrations/0019_gc_artifact_cleanup.d.ts +9 -0
- package/dist/lib/database/migrations/0019_gc_artifact_cleanup.js +23 -0
- package/dist/lib/database/migrations/0019_gc_artifact_cleanup.js.map +1 -0
- package/dist/lib/database/migrations/0020_transition_map.d.ts +2 -0
- package/dist/lib/database/migrations/0020_transition_map.js +27 -0
- package/dist/lib/database/migrations/0020_transition_map.js.map +1 -0
- package/dist/lib/database/migrations/index.js +4 -0
- package/dist/lib/database/migrations/index.js.map +1 -1
- package/dist/lib/execution/config.d.ts +10 -0
- package/dist/lib/execution/config.js +24 -0
- package/dist/lib/execution/config.js.map +1 -1
- package/dist/lib/execution/preflight.d.ts +51 -0
- package/dist/lib/execution/preflight.js +278 -0
- package/dist/lib/execution/preflight.js.map +1 -0
- package/dist/lib/execution/runners/prompt-builder.d.ts +6 -0
- package/dist/lib/execution/runners/prompt-builder.js +38 -7
- package/dist/lib/execution/runners/prompt-builder.js.map +1 -1
- package/dist/lib/execution/session-utils.d.ts +23 -0
- package/dist/lib/execution/session-utils.js +69 -0
- package/dist/lib/execution/session-utils.js.map +1 -1
- package/dist/lib/execution/spawner.d.ts +11 -1
- package/dist/lib/execution/spawner.js +44 -16
- package/dist/lib/execution/spawner.js.map +1 -1
- package/dist/lib/execution/storage.d.ts +6 -0
- package/dist/lib/execution/storage.js +18 -0
- package/dist/lib/execution/storage.js.map +1 -1
- package/dist/lib/execution/ticket-refs.d.ts +71 -0
- package/dist/lib/execution/ticket-refs.js +125 -0
- package/dist/lib/execution/ticket-refs.js.map +1 -0
- package/dist/lib/execution/types.d.ts +7 -2
- package/dist/lib/execution/types.js +5 -3
- package/dist/lib/execution/types.js.map +1 -1
- package/dist/lib/external-issues/index.d.ts +1 -0
- package/dist/lib/external-issues/index.js +2 -0
- package/dist/lib/external-issues/index.js.map +1 -1
- package/dist/lib/external-issues/linear.js +1 -1
- package/dist/lib/external-issues/linear.js.map +1 -1
- package/dist/lib/external-issues/ticket-builder.d.ts +21 -0
- package/dist/lib/external-issues/ticket-builder.js +43 -0
- package/dist/lib/external-issues/ticket-builder.js.map +1 -0
- package/dist/lib/external-issues/work-start.js +1 -1
- package/dist/lib/external-issues/work-start.js.map +1 -1
- package/dist/lib/gc/index.d.ts +67 -6
- package/dist/lib/gc/index.js +293 -15
- package/dist/lib/gc/index.js.map +1 -1
- package/dist/lib/github/client.d.ts +84 -0
- package/dist/lib/github/client.js +123 -0
- package/dist/lib/github/client.js.map +1 -0
- package/dist/lib/github/config.d.ts +42 -0
- package/dist/lib/github/config.js +115 -0
- package/dist/lib/github/config.js.map +1 -0
- package/dist/lib/github/types.d.ts +71 -0
- package/dist/lib/github/types.js +50 -0
- package/dist/lib/github/types.js.map +1 -0
- package/dist/lib/jira/client.d.ts +113 -0
- package/dist/lib/jira/client.js +208 -0
- package/dist/lib/jira/client.js.map +1 -0
- package/dist/lib/jira/config.d.ts +9 -0
- package/dist/lib/jira/config.js +30 -0
- package/dist/lib/jira/config.js.map +1 -1
- package/dist/lib/jira/index.d.ts +6 -2
- package/dist/lib/jira/index.js +4 -2
- package/dist/lib/jira/index.js.map +1 -1
- package/dist/lib/jira/types.d.ts +118 -0
- package/dist/lib/jira/types.js +45 -0
- package/dist/lib/jira/types.js.map +1 -0
- package/dist/lib/linear/config.d.ts +10 -0
- package/dist/lib/linear/config.js +33 -0
- package/dist/lib/linear/config.js.map +1 -1
- package/dist/lib/mcp/tools/index.d.ts +0 -2
- package/dist/lib/mcp/tools/index.js +0 -2
- package/dist/lib/mcp/tools/index.js.map +1 -1
- package/dist/lib/orchestrate/index.d.ts +2 -0
- package/dist/lib/orchestrate/index.js +1 -0
- package/dist/lib/orchestrate/index.js.map +1 -1
- package/dist/lib/orchestrate/simple-poller.d.ts +57 -0
- package/dist/lib/orchestrate/simple-poller.js +324 -0
- package/dist/lib/orchestrate/simple-poller.js.map +1 -0
- package/dist/lib/pmo/storage/index.js +16 -5
- package/dist/lib/pmo/storage/index.js.map +1 -1
- package/dist/lib/prompt-json.d.ts +31 -0
- package/dist/lib/prompt-json.js.map +1 -1
- package/dist/lib/providers/asana-provider.d.ts +27 -0
- package/dist/lib/providers/asana-provider.js +426 -0
- package/dist/lib/providers/asana-provider.js.map +1 -0
- package/dist/lib/providers/auto-mapper.d.ts +45 -0
- package/dist/lib/providers/auto-mapper.js +138 -0
- package/dist/lib/providers/auto-mapper.js.map +1 -0
- package/dist/lib/providers/github-provider.d.ts +34 -0
- package/dist/lib/providers/github-provider.js +418 -0
- package/dist/lib/providers/github-provider.js.map +1 -0
- package/dist/lib/providers/index.d.ts +3 -0
- package/dist/lib/providers/index.js +3 -0
- package/dist/lib/providers/index.js.map +1 -1
- package/dist/lib/providers/jira-provider.d.ts +31 -0
- package/dist/lib/providers/jira-provider.js +383 -0
- package/dist/lib/providers/jira-provider.js.map +1 -0
- package/dist/lib/providers/linear-provider.js +6 -7
- package/dist/lib/providers/linear-provider.js.map +1 -1
- package/dist/lib/providers/resolver.js +54 -0
- package/dist/lib/providers/resolver.js.map +1 -1
- package/dist/lib/providers/state-intents.d.ts +20 -0
- package/dist/lib/providers/state-intents.js +61 -7
- package/dist/lib/providers/state-intents.js.map +1 -1
- package/dist/lib/providers/state-resolution.d.ts +15 -11
- package/dist/lib/providers/state-resolution.js +54 -48
- package/dist/lib/providers/state-resolution.js.map +1 -1
- package/dist/lib/providers/transition-map.d.ts +59 -0
- package/dist/lib/providers/transition-map.js +113 -0
- package/dist/lib/providers/transition-map.js.map +1 -0
- package/dist/lib/providers/types.d.ts +1 -1
- package/dist/lib/session/index.d.ts +3 -1
- package/dist/lib/session/index.js +3 -1
- package/dist/lib/session/index.js.map +1 -1
- package/dist/lib/session/tmux-watchdog.d.ts +157 -0
- package/dist/lib/session/tmux-watchdog.js +424 -0
- package/dist/lib/session/tmux-watchdog.js.map +1 -0
- package/dist/lib/session/watcher.d.ts +22 -4
- package/dist/lib/session/watcher.js +66 -8
- package/dist/lib/session/watcher.js.map +1 -1
- package/dist/lib/work-lifecycle/post-execution.js +26 -1
- package/dist/lib/work-lifecycle/post-execution.js.map +1 -1
- package/dist/lib/work-lifecycle/transition.d.ts +73 -0
- package/dist/lib/work-lifecycle/transition.js +138 -0
- package/dist/lib/work-lifecycle/transition.js.map +1 -0
- package/dist/lib/work-source/config.d.ts +1 -1
- package/dist/lib/work-source/config.js +11 -1
- package/dist/lib/work-source/config.js.map +1 -1
- package/oclif.manifest.json +936 -1628
- package/package.json +1 -1
- package/dist/commands/ticket/create.d.ts +0 -44
- package/dist/commands/ticket/create.js +0 -760
- package/dist/commands/ticket/create.js.map +0 -1
- package/dist/commands/ticket/delete.d.ts +0 -17
- package/dist/commands/ticket/delete.js +0 -204
- package/dist/commands/ticket/delete.js.map +0 -1
- package/dist/commands/ticket/edit.d.ts +0 -28
- package/dist/commands/ticket/edit.js +0 -402
- package/dist/commands/ticket/edit.js.map +0 -1
- package/dist/commands/ticket/index.js +0 -74
- package/dist/commands/ticket/index.js.map +0 -1
- package/dist/commands/ticket/list.d.ts +0 -33
- package/dist/commands/ticket/list.js +0 -519
- package/dist/commands/ticket/list.js.map +0 -1
- package/dist/commands/ticket/move.d.ts +0 -27
- package/dist/commands/ticket/move.js +0 -413
- package/dist/commands/ticket/move.js.map +0 -1
- package/dist/commands/ticket/show.d.ts +0 -14
- package/dist/commands/ticket/show.js +0 -110
- package/dist/commands/ticket/show.js.map +0 -1
- package/dist/commands/ticket/update.d.ts +0 -28
- package/dist/commands/ticket/update.js +0 -458
- package/dist/commands/ticket/update.js.map +0 -1
- package/dist/lib/mcp/tools/action.d.ts +0 -6
- package/dist/lib/mcp/tools/action.js +0 -123
- package/dist/lib/mcp/tools/action.js.map +0 -1
- package/dist/lib/mcp/tools/ticket.d.ts +0 -6
- package/dist/lib/mcp/tools/ticket.js +0 -464
- package/dist/lib/mcp/tools/ticket.js.map +0 -1
package/dist/lib/gc/index.js
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* Garbage Collection Module
|
|
3
3
|
*
|
|
4
4
|
* Core logic for cleaning up agent artifacts after PR merge/close.
|
|
5
|
-
* Handles: worktree removal, container removal, branch pruning
|
|
5
|
+
* Handles: worktree removal, container removal, branch pruning (local + remote),
|
|
6
|
+
* tmux session cleanup, Claude session cleanup, DB record marking, agent name recycling,
|
|
7
|
+
* and stale PR closure.
|
|
6
8
|
*
|
|
7
9
|
* Used by both the `prlt gc` command and the daemon's post-merge phase.
|
|
8
10
|
*/
|
|
@@ -86,6 +88,30 @@ export function classifyArtifact(pr, staleDays) {
|
|
|
86
88
|
return 'stale';
|
|
87
89
|
return 'active';
|
|
88
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Check if an agent is still alive — either its container is running
|
|
93
|
+
* or its DB status is 'active'/'running'.
|
|
94
|
+
*
|
|
95
|
+
* This prevents GC from killing agents that just spawned but haven't
|
|
96
|
+
* pushed a branch or created a PR yet.
|
|
97
|
+
*/
|
|
98
|
+
export function isAgentAlive(agentName, hqPath, container) {
|
|
99
|
+
// Check 1: container is running
|
|
100
|
+
if (container?.running)
|
|
101
|
+
return true;
|
|
102
|
+
// Check 2: agent status in DB is active or running
|
|
103
|
+
try {
|
|
104
|
+
const { getAgent } = require('../database/agents.js');
|
|
105
|
+
const agent = getAgent(hqPath, agentName);
|
|
106
|
+
if (agent && (agent.status === 'active' || agent.status === 'running')) {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// DB access may fail — non-fatal, fall through
|
|
112
|
+
}
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
89
115
|
/**
|
|
90
116
|
* Collect all GC candidates by scanning worktrees and checking PR status.
|
|
91
117
|
*
|
|
@@ -138,7 +164,16 @@ export function collectGCCandidates(options) {
|
|
|
138
164
|
pr = getPRForBranch(wt.branch, repoPath);
|
|
139
165
|
seenBranches.set(wt.branch, pr);
|
|
140
166
|
}
|
|
141
|
-
|
|
167
|
+
let status = classifyArtifact(pr, staleDays);
|
|
168
|
+
const container = agentName ? containerByAgent.get(agentName) ?? null : null;
|
|
169
|
+
// Guard: never GC an agent that is still alive.
|
|
170
|
+
// Agents that just spawned may not have pushed a branch or created a PR yet,
|
|
171
|
+
// so classifyArtifact would return 'closed'. Check the actual agent state
|
|
172
|
+
// (running container or active/running DB status) and override to 'active'.
|
|
173
|
+
if (status !== 'active' && agentName && isAgentAlive(agentName, hqPath, container)) {
|
|
174
|
+
log?.(`Agent "${agentName}" is still alive — skipping (was: ${status})`);
|
|
175
|
+
status = 'active';
|
|
176
|
+
}
|
|
142
177
|
candidates.push({
|
|
143
178
|
worktreePath: wt.worktreePath,
|
|
144
179
|
branch: wt.branch,
|
|
@@ -147,7 +182,7 @@ export function collectGCCandidates(options) {
|
|
|
147
182
|
sourceRepoPath: repoPath,
|
|
148
183
|
pr,
|
|
149
184
|
status,
|
|
150
|
-
container
|
|
185
|
+
container,
|
|
151
186
|
});
|
|
152
187
|
}
|
|
153
188
|
}
|
|
@@ -224,22 +259,186 @@ function removeAgentDir(agentDir) {
|
|
|
224
259
|
return false;
|
|
225
260
|
}
|
|
226
261
|
}
|
|
262
|
+
/**
|
|
263
|
+
* Delete a remote git branch. Non-fatal if branch doesn't exist on remote.
|
|
264
|
+
*/
|
|
265
|
+
export function deleteRemoteBranch(branch, cwd) {
|
|
266
|
+
try {
|
|
267
|
+
execSync(`git push origin --delete "${branch}"`, {
|
|
268
|
+
cwd,
|
|
269
|
+
encoding: 'utf-8',
|
|
270
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
271
|
+
timeout: 30000,
|
|
272
|
+
});
|
|
273
|
+
return true;
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
// If the remote branch is already gone, that's fine
|
|
277
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
278
|
+
if (msg.includes('remote ref does not exist') || msg.includes('unable to delete')) {
|
|
279
|
+
return false;
|
|
280
|
+
}
|
|
281
|
+
return false;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Kill tmux sessions inside a Docker container.
|
|
286
|
+
* Non-fatal if tmux is not running or container is not accessible.
|
|
287
|
+
*/
|
|
288
|
+
export function killTmuxInContainer(containerId) {
|
|
289
|
+
try {
|
|
290
|
+
execSync(`docker exec ${containerId} tmux kill-server`, {
|
|
291
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
292
|
+
timeout: 10000,
|
|
293
|
+
});
|
|
294
|
+
return true;
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
// Non-fatal — tmux may not be running in the container
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Clean up Claude session data from a Docker container's claude-credentials volume.
|
|
303
|
+
* Only removes session-specific files, preserving auth credentials.
|
|
304
|
+
*
|
|
305
|
+
* Session files to clean: projects/, .claude-*, statsig/
|
|
306
|
+
* Files to preserve: .credentials.json, credentials.json, .oauthtoken, settings.json
|
|
307
|
+
*/
|
|
308
|
+
export function cleanClaudeSessionData(containerId) {
|
|
309
|
+
try {
|
|
310
|
+
// Remove session-specific directories and files, preserve auth
|
|
311
|
+
// The cleanup script removes session state but keeps credentials
|
|
312
|
+
const script = 'rm -rf /home/node/.claude/projects 2>/dev/null; ' +
|
|
313
|
+
'rm -rf /home/node/.claude/statsig 2>/dev/null; ' +
|
|
314
|
+
'rm -f /home/node/.claude/.claude-session 2>/dev/null; ' +
|
|
315
|
+
'rm -f /home/node/.claude/.claude-conversation 2>/dev/null; ' +
|
|
316
|
+
'rm -f /home/node/.claude/.claude-history 2>/dev/null; ' +
|
|
317
|
+
'rm -rf /home/node/.claude/memory 2>/dev/null; ' +
|
|
318
|
+
'true';
|
|
319
|
+
execSync(`docker exec ${containerId} sh -c '${script}'`, {
|
|
320
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
321
|
+
timeout: 10000,
|
|
322
|
+
});
|
|
323
|
+
return true;
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
// Non-fatal — container may not be accessible
|
|
327
|
+
return false;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Mark execution records as GC-cleaned for the given agent names.
|
|
332
|
+
* Sets gc_cleaned_at timestamp on agent_work rows that are completed/failed.
|
|
333
|
+
*/
|
|
334
|
+
export function markExecutionRecordsCleaned(hqPath, agentNames) {
|
|
335
|
+
if (agentNames.length === 0)
|
|
336
|
+
return 0;
|
|
337
|
+
try {
|
|
338
|
+
const { openWorkspaceDatabase } = require('../database/workspace.js');
|
|
339
|
+
const db = openWorkspaceDatabase(hqPath);
|
|
340
|
+
try {
|
|
341
|
+
// Check if agent_work table exists
|
|
342
|
+
const tableExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agent_work'").get();
|
|
343
|
+
if (!tableExists)
|
|
344
|
+
return 0;
|
|
345
|
+
// Check if gc_cleaned_at column exists
|
|
346
|
+
const cols = db.prepare("PRAGMA table_info(agent_work)").all();
|
|
347
|
+
if (!cols.some(c => c.name === 'gc_cleaned_at'))
|
|
348
|
+
return 0;
|
|
349
|
+
const placeholders = agentNames.map(() => '?').join(',');
|
|
350
|
+
const now = new Date().toISOString();
|
|
351
|
+
const stmt = db.prepare(`UPDATE agent_work SET gc_cleaned_at = ? WHERE agent_name IN (${placeholders}) AND gc_cleaned_at IS NULL`);
|
|
352
|
+
const result = stmt.run(now, ...agentNames);
|
|
353
|
+
return result.changes;
|
|
354
|
+
}
|
|
355
|
+
finally {
|
|
356
|
+
db.close();
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
catch {
|
|
360
|
+
return 0;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Purge (DELETE) execution records for the given agent names.
|
|
365
|
+
* Only deletes records that have already been marked as gc_cleaned.
|
|
366
|
+
*/
|
|
367
|
+
export function purgeExecutionRecords(hqPath, agentNames) {
|
|
368
|
+
if (agentNames.length === 0)
|
|
369
|
+
return 0;
|
|
370
|
+
try {
|
|
371
|
+
const { openWorkspaceDatabase } = require('../database/workspace.js');
|
|
372
|
+
const db = openWorkspaceDatabase(hqPath);
|
|
373
|
+
try {
|
|
374
|
+
const tableExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agent_work'").get();
|
|
375
|
+
if (!tableExists)
|
|
376
|
+
return 0;
|
|
377
|
+
const placeholders = agentNames.map(() => '?').join(',');
|
|
378
|
+
const stmt = db.prepare(`DELETE FROM agent_work WHERE agent_name IN (${placeholders}) AND gc_cleaned_at IS NOT NULL`);
|
|
379
|
+
const result = stmt.run(...agentNames);
|
|
380
|
+
return result.changes;
|
|
381
|
+
}
|
|
382
|
+
finally {
|
|
383
|
+
db.close();
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
catch {
|
|
387
|
+
return 0;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Mark agent names as recyclable (status='cleaned') in the database.
|
|
392
|
+
* Preserves the record for history but allows name reuse.
|
|
393
|
+
*/
|
|
394
|
+
export function recycleAgentNames(hqPath, agentNames) {
|
|
395
|
+
if (agentNames.length === 0)
|
|
396
|
+
return [];
|
|
397
|
+
const recycled = [];
|
|
398
|
+
try {
|
|
399
|
+
const { markAgentCleaned } = require('../database/agents.js');
|
|
400
|
+
for (const name of agentNames) {
|
|
401
|
+
try {
|
|
402
|
+
markAgentCleaned(hqPath, name);
|
|
403
|
+
recycled.push(name);
|
|
404
|
+
}
|
|
405
|
+
catch {
|
|
406
|
+
// Agent may not exist in DB — non-fatal
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
catch {
|
|
411
|
+
// DB access may fail — non-fatal
|
|
412
|
+
}
|
|
413
|
+
return recycled;
|
|
414
|
+
}
|
|
227
415
|
/**
|
|
228
416
|
* Execute garbage collection on the provided candidates.
|
|
229
417
|
*
|
|
230
418
|
* Processes candidates in order:
|
|
231
419
|
* 1. Close stale PRs
|
|
232
|
-
* 2.
|
|
233
|
-
* 3.
|
|
234
|
-
* 4.
|
|
235
|
-
* 5.
|
|
420
|
+
* 2. Kill tmux sessions in containers
|
|
421
|
+
* 3. Clean Claude session data in containers
|
|
422
|
+
* 4. Remove worktrees
|
|
423
|
+
* 5. Remove containers
|
|
424
|
+
* 6. Prune local branches
|
|
425
|
+
* 7. Delete remote branches
|
|
426
|
+
* 8. Clean up empty agent directories
|
|
427
|
+
* 9. Mark/purge DB execution records
|
|
428
|
+
* 10. Recycle agent names
|
|
236
429
|
*/
|
|
237
430
|
export function executeGC(candidates, options) {
|
|
238
|
-
const { execute = false, log } = options;
|
|
431
|
+
const { execute = false, purgeDb = false, log, hqPath } = options;
|
|
239
432
|
const result = {
|
|
240
433
|
worktreesRemoved: [],
|
|
241
434
|
containersRemoved: [],
|
|
242
435
|
branchesPruned: [],
|
|
436
|
+
remoteBranchesDeleted: [],
|
|
437
|
+
tmuxSessionsCleaned: [],
|
|
438
|
+
claudeSessionsCleaned: [],
|
|
439
|
+
dbRecordsMarked: 0,
|
|
440
|
+
dbRecordsPurged: 0,
|
|
441
|
+
agentNamesRecycled: [],
|
|
243
442
|
stalePRsClosed: [],
|
|
244
443
|
errors: [],
|
|
245
444
|
skipped: [],
|
|
@@ -255,6 +454,8 @@ export function executeGC(candidates, options) {
|
|
|
255
454
|
const reposToProcess = new Set();
|
|
256
455
|
const agentDirs = new Set();
|
|
257
456
|
const processedContainers = new Set();
|
|
457
|
+
const processedAgentNames = new Set();
|
|
458
|
+
const processedBranches = new Set();
|
|
258
459
|
for (const candidate of actionable) {
|
|
259
460
|
// 1. Close stale PRs
|
|
260
461
|
if (candidate.status === 'stale' && candidate.pr) {
|
|
@@ -276,7 +477,30 @@ export function executeGC(candidates, options) {
|
|
|
276
477
|
result.stalePRsClosed.push(candidate.pr.number);
|
|
277
478
|
}
|
|
278
479
|
}
|
|
279
|
-
// 2.
|
|
480
|
+
// 2. Kill tmux sessions + 3. Clean Claude session data (before container removal)
|
|
481
|
+
if (candidate.container && !processedContainers.has(candidate.container.containerId)) {
|
|
482
|
+
if (execute) {
|
|
483
|
+
// Kill tmux sessions inside the container
|
|
484
|
+
log?.(`Killing tmux sessions in container: ${candidate.container.containerName}`);
|
|
485
|
+
if (killTmuxInContainer(candidate.container.containerId)) {
|
|
486
|
+
result.tmuxSessionsCleaned.push(candidate.container.containerName);
|
|
487
|
+
}
|
|
488
|
+
// tmux cleanup failure is non-fatal
|
|
489
|
+
// Clean Claude session data
|
|
490
|
+
log?.(`Cleaning Claude session data in container: ${candidate.container.containerName}`);
|
|
491
|
+
if (cleanClaudeSessionData(candidate.container.containerId)) {
|
|
492
|
+
result.claudeSessionsCleaned.push(candidate.container.containerName);
|
|
493
|
+
}
|
|
494
|
+
// Claude session cleanup failure is non-fatal
|
|
495
|
+
}
|
|
496
|
+
else {
|
|
497
|
+
log?.(`[dry-run] Would kill tmux sessions in container: ${candidate.container.containerName}`);
|
|
498
|
+
result.tmuxSessionsCleaned.push(candidate.container.containerName);
|
|
499
|
+
log?.(`[dry-run] Would clean Claude session data in container: ${candidate.container.containerName}`);
|
|
500
|
+
result.claudeSessionsCleaned.push(candidate.container.containerName);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
// 4. Remove worktree
|
|
280
504
|
if (execute) {
|
|
281
505
|
log?.(`Removing worktree: ${candidate.worktreePath}`);
|
|
282
506
|
if (removeWorktree(candidate.worktreePath, candidate.sourceRepoPath)) {
|
|
@@ -290,7 +514,7 @@ export function executeGC(candidates, options) {
|
|
|
290
514
|
log?.(`[dry-run] Would remove worktree: ${candidate.worktreePath}`);
|
|
291
515
|
result.worktreesRemoved.push(candidate.worktreePath);
|
|
292
516
|
}
|
|
293
|
-
//
|
|
517
|
+
// 5. Remove container (deduplicate by agent)
|
|
294
518
|
if (candidate.container && !processedContainers.has(candidate.container.containerId)) {
|
|
295
519
|
processedContainers.add(candidate.container.containerId);
|
|
296
520
|
if (execute) {
|
|
@@ -308,28 +532,44 @@ export function executeGC(candidates, options) {
|
|
|
308
532
|
result.containersRemoved.push(candidate.container.containerName);
|
|
309
533
|
}
|
|
310
534
|
}
|
|
311
|
-
//
|
|
535
|
+
// 6. Prune local branch
|
|
312
536
|
if (candidate.branch) {
|
|
313
537
|
if (execute) {
|
|
314
538
|
if (deleteLocalBranch(candidate.branch, candidate.sourceRepoPath)) {
|
|
315
539
|
result.branchesPruned.push(candidate.branch);
|
|
316
|
-
log?.(`Pruned branch: ${candidate.branch}`);
|
|
540
|
+
log?.(`Pruned local branch: ${candidate.branch}`);
|
|
317
541
|
}
|
|
318
542
|
// Branch deletion failure is non-fatal (may already be deleted)
|
|
319
543
|
}
|
|
320
544
|
else {
|
|
321
|
-
log?.(`[dry-run] Would prune branch: ${candidate.branch}`);
|
|
545
|
+
log?.(`[dry-run] Would prune local branch: ${candidate.branch}`);
|
|
322
546
|
result.branchesPruned.push(candidate.branch);
|
|
323
547
|
}
|
|
548
|
+
// 7. Delete remote branch (deduplicate across repos for same branch)
|
|
549
|
+
if (!processedBranches.has(candidate.branch)) {
|
|
550
|
+
processedBranches.add(candidate.branch);
|
|
551
|
+
if (execute) {
|
|
552
|
+
log?.(`Deleting remote branch: ${candidate.branch}`);
|
|
553
|
+
if (deleteRemoteBranch(candidate.branch, candidate.sourceRepoPath)) {
|
|
554
|
+
result.remoteBranchesDeleted.push(candidate.branch);
|
|
555
|
+
}
|
|
556
|
+
// Remote branch deletion failure is non-fatal (may already be deleted)
|
|
557
|
+
}
|
|
558
|
+
else {
|
|
559
|
+
log?.(`[dry-run] Would delete remote branch: ${candidate.branch}`);
|
|
560
|
+
result.remoteBranchesDeleted.push(candidate.branch);
|
|
561
|
+
}
|
|
562
|
+
}
|
|
324
563
|
}
|
|
325
564
|
reposToProcess.add(candidate.sourceRepoPath);
|
|
326
|
-
// Track agent directory for cleanup
|
|
565
|
+
// Track agent directory and name for cleanup
|
|
327
566
|
if (candidate.agentName) {
|
|
328
567
|
const agentDir = path.dirname(candidate.worktreePath);
|
|
329
568
|
agentDirs.add(agentDir);
|
|
569
|
+
processedAgentNames.add(candidate.agentName);
|
|
330
570
|
}
|
|
331
571
|
}
|
|
332
|
-
//
|
|
572
|
+
// 8. Prune worktree refs and clean up empty agent directories
|
|
333
573
|
if (execute) {
|
|
334
574
|
for (const repoPath of reposToProcess) {
|
|
335
575
|
pruneWorktreeRefs(repoPath);
|
|
@@ -350,6 +590,44 @@ export function executeGC(candidates, options) {
|
|
|
350
590
|
}
|
|
351
591
|
}
|
|
352
592
|
}
|
|
593
|
+
// 9. Mark/purge DB execution records
|
|
594
|
+
const agentNameList = [...processedAgentNames];
|
|
595
|
+
if (agentNameList.length > 0) {
|
|
596
|
+
if (execute) {
|
|
597
|
+
// Always mark records as gc_cleaned
|
|
598
|
+
const marked = markExecutionRecordsCleaned(hqPath, agentNameList);
|
|
599
|
+
result.dbRecordsMarked = marked;
|
|
600
|
+
if (marked > 0) {
|
|
601
|
+
log?.(`Marked ${marked} execution record(s) as gc_cleaned`);
|
|
602
|
+
}
|
|
603
|
+
// Optionally purge (DELETE) if --purge-db was passed
|
|
604
|
+
if (purgeDb) {
|
|
605
|
+
const purged = purgeExecutionRecords(hqPath, agentNameList);
|
|
606
|
+
result.dbRecordsPurged = purged;
|
|
607
|
+
if (purged > 0) {
|
|
608
|
+
log?.(`Purged ${purged} execution record(s)`);
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
else {
|
|
613
|
+
log?.(`[dry-run] Would mark execution records as gc_cleaned for ${agentNameList.length} agent(s)`);
|
|
614
|
+
if (purgeDb) {
|
|
615
|
+
log?.(`[dry-run] Would purge execution records for ${agentNameList.length} agent(s)`);
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
// 10. Recycle agent names
|
|
620
|
+
if (agentNameList.length > 0) {
|
|
621
|
+
if (execute) {
|
|
622
|
+
log?.(`Recycling ${agentNameList.length} agent name(s)`);
|
|
623
|
+
const recycled = recycleAgentNames(hqPath, agentNameList);
|
|
624
|
+
result.agentNamesRecycled = recycled;
|
|
625
|
+
}
|
|
626
|
+
else {
|
|
627
|
+
log?.(`[dry-run] Would recycle ${agentNameList.length} agent name(s)`);
|
|
628
|
+
result.agentNamesRecycled = agentNameList;
|
|
629
|
+
}
|
|
630
|
+
}
|
|
353
631
|
return result;
|
|
354
632
|
}
|
|
355
633
|
/**
|
package/dist/lib/gc/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/gc/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EACL,mBAAmB,EACnB,eAAe,GAEhB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,cAAc,EACd,OAAO,GAER,MAAM,gBAAgB,CAAA;AAqEvB;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACnD,MAAM,OAAO,GAAoB,EAAE,CAAA;IAEnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAA;QAC/D,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;QAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;QAE5D,IAAI,CAAC,YAAY;YAAE,SAAQ;QAE3B,OAAO,CAAC,IAAI,CAAC;YACX,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YACnD,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;YACtE,UAAU;SACX,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,QAAgB;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,+BAA+B,EAAE;YACvD,GAAG,EAAE,QAAQ;YACb,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAA;QACF,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAAoB,EAAE,MAAc;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACpD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAA;IAEhD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACtC,+CAA+C;IAC/C,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAiB,EAAE,SAAiB;IACnE,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,+EAA+E;QAC/E,sCAAsC;QACtC,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,IAAI,EAAE,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC1C,IAAI,EAAE,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAE1C,8BAA8B;IAC9B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IACxC,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;IAClF,IAAI,eAAe,IAAI,SAAS;QAAE,OAAO,OAAO,CAAA;IAEhD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAkB;IACpD,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5C,MAAM,UAAU,GAAkB,EAAE,CAAA;IAEpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,UAAU,CAAA;IAEhD,uBAAuB;IACvB,IAAI,QAAkB,CAAA;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC9C,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CACnD,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,oDAAoD;IACpD,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAA;IACxC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAyB,CAAA;IACzD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,kEAAkE;IAClE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAA;IAErD,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAC/C,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;QAEzC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,gEAAgE;YAChE,IAAI,EAAE,CAAC,YAAY,KAAK,QAAQ,IAAI,EAAE,CAAC,UAAU;gBAAE,SAAQ;YAE3D,mDAAmD;YACnD,MAAM,SAAS,GAAG,gBAAgB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YAC3D,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,SAAQ;YAEjE,kDAAkD;YAClD,IAAI,CAAC,EAAE,CAAC,MAAM;gBAAE,SAAQ;YAExB,oCAAoC;YACpC,IAAI,EAAiB,CAAA;YACrB,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAE,CAAA;YACnC,CAAC;iBAAM,CAAC;gBACN,GAAG,EAAE,CAAC,kCAAkC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAA;gBACpD,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;gBACxC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YACjC,CAAC;YAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;YAE9C,UAAU,CAAC,IAAI,CAAC;gBACd,YAAY,EAAE,EAAE,CAAC,YAAY;gBAC7B,MAAM,EAAE,EAAE,CAAC,MAAM;gBACjB,SAAS;gBACT,QAAQ;gBACR,cAAc,EAAE,QAAQ;gBACxB,EAAE;gBACF,MAAM;gBACN,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI;aACtE,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;GAEG;AACH,SAAS,iBAAiB,CAAC,MAAc,EAAE,GAAW;IACpD,IAAI,CAAC;QACH,QAAQ,CAAC,iBAAiB,MAAM,EAAE,EAAE;YAClC,GAAG;YACH,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,YAAoB,EAAE,cAAsB;IAClE,IAAI,CAAC;QACH,QAAQ,CAAC,wBAAwB,YAAY,WAAW,EAAE;YACxD,GAAG,EAAE,cAAc;YACnB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;QACpE,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChC,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3D,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,QAAgB;IACzC,IAAI,CAAC;QACH,QAAQ,CAAC,oBAAoB,EAAE;YAC7B,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YACrD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CACvB,UAAyB,EACzB,OAAkB;IAElB,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;IAExC,MAAM,MAAM,GAAa;QACvB,gBAAgB,EAAE,EAAE;QACpB,iBAAiB,EAAE,EAAE;QACrB,cAAc,EAAE,EAAE;QAClB,cAAc,EAAE,EAAE;QAClB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;KACZ,CAAA;IAED,uCAAuC;IACvC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC1E,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAC1E,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAExE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IAClD,CAAC;IAED,iEAAiE;IACjE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAA;IACxC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAA;IAE7C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,qBAAqB;QACrB,IAAI,SAAS,CAAC,MAAM,KAAK,OAAO,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;YACjD,IAAI,OAAO,EAAE,CAAC;gBACZ,GAAG,EAAE,CAAC,qBAAqB,SAAS,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;gBACxE,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE;oBAC/C,OAAO,EAAE,sEAAsE;oBAC/E,GAAG,EAAE,SAAS,CAAC,cAAc;iBAC9B,CAAC,CAAA;gBACF,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;oBACxB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;gBACjD,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,SAAS,CAAC,EAAE,CAAC,MAAM,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC,CAAA;gBACxF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,GAAG,EAAE,CAAC,mCAAmC,SAAS,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;gBACtF,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;YACjD,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,EAAE,CAAC,sBAAsB,SAAS,CAAC,YAAY,EAAE,CAAC,CAAA;YACrD,IAAI,cAAc,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;gBACrE,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;YACtD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,SAAS,CAAC,YAAY,EAAE,CAAC,CAAA;YAC5E,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,EAAE,CAAC,oCAAoC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAA;YACnE,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QACtD,CAAC;QAED,6CAA6C;QAC7C,IAAI,SAAS,CAAC,SAAS,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;YACrF,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;YACxD,IAAI,OAAO,EAAE,CAAC;gBACZ,GAAG,EAAE,CAAC,uBAAuB,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,CAAA;gBACjE,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;gBACjE,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACrB,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;gBAClE,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,SAAS,CAAC,SAAS,CAAC,aAAa,KAAK,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;gBAC1G,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,GAAG,EAAE,CAAC,qCAAqC,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,CAAA;gBAC/E,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;YAClE,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,iBAAiB,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;oBAClE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;oBAC5C,GAAG,EAAE,CAAC,kBAAkB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;gBAC7C,CAAC;gBACD,gEAAgE;YAClE,CAAC;iBAAM,CAAC;gBACN,GAAG,EAAE,CAAC,iCAAiC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;gBAC1D,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC;QAED,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;QAE5C,oCAAoC;QACpC,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;YACrD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;YACtC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;QAC7B,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,yDAAyD;YACzD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;oBACzC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC1B,cAAc,CAAC,QAAQ,CAAC,CAAA;wBACxB,GAAG,EAAE,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAA;oBACrD,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAYD;;;GAGG;AACH,MAAM,OAAO,WAAW;IACd,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAA;IAC7C,aAAa,CAAQ;IAE7B,YAAY,gBAAwB,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY;QAC7D,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;IACpC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,MAAc;QACrB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAM;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;YACvB,MAAM;YACN,WAAW,EAAE,GAAG;YAChB,UAAU,EAAE,GAAG,GAAG,IAAI,CAAC,aAAa;SACrC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,KAAK,GAAa,EAAE,CAAA;QAE1B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3C,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACpB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,MAAc;QACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC7B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACnC,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;IAC1B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/gc/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Issues API Client
|
|
3
|
+
*
|
|
4
|
+
* REST wrapper for GitHub Issues API access.
|
|
5
|
+
* Uses the GitHub REST API v3 (application/vnd.github+json).
|
|
6
|
+
* Auth via GITHUB_TOKEN or stored token.
|
|
7
|
+
*/
|
|
8
|
+
import type { GitHubIssue, GitHubLabel, GitHubRepo } from './types.js';
|
|
9
|
+
export declare class GitHubClient {
|
|
10
|
+
private token;
|
|
11
|
+
constructor(token: string);
|
|
12
|
+
private request;
|
|
13
|
+
/**
|
|
14
|
+
* Verify the token is valid and return the authenticated user info.
|
|
15
|
+
*/
|
|
16
|
+
verify(): Promise<{
|
|
17
|
+
login: string;
|
|
18
|
+
name: string | null;
|
|
19
|
+
}>;
|
|
20
|
+
/**
|
|
21
|
+
* Get a repository by owner and name.
|
|
22
|
+
*/
|
|
23
|
+
getRepo(owner: string, repo: string): Promise<GitHubRepo>;
|
|
24
|
+
/**
|
|
25
|
+
* Get a single issue by number.
|
|
26
|
+
*/
|
|
27
|
+
getIssue(owner: string, repo: string, issueNumber: number): Promise<GitHubIssue>;
|
|
28
|
+
/**
|
|
29
|
+
* List issues for a repository.
|
|
30
|
+
*/
|
|
31
|
+
listIssues(owner: string, repo: string, options?: {
|
|
32
|
+
state?: 'open' | 'closed' | 'all';
|
|
33
|
+
labels?: string;
|
|
34
|
+
assignee?: string;
|
|
35
|
+
milestone?: string;
|
|
36
|
+
per_page?: number;
|
|
37
|
+
page?: number;
|
|
38
|
+
}): Promise<GitHubIssue[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Create a new issue.
|
|
41
|
+
*/
|
|
42
|
+
createIssue(owner: string, repo: string, input: {
|
|
43
|
+
title: string;
|
|
44
|
+
body?: string;
|
|
45
|
+
labels?: string[];
|
|
46
|
+
assignees?: string[];
|
|
47
|
+
milestone?: number;
|
|
48
|
+
}): Promise<GitHubIssue>;
|
|
49
|
+
/**
|
|
50
|
+
* Update an existing issue.
|
|
51
|
+
*/
|
|
52
|
+
updateIssue(owner: string, repo: string, issueNumber: number, input: {
|
|
53
|
+
title?: string;
|
|
54
|
+
body?: string;
|
|
55
|
+
state?: 'open' | 'closed';
|
|
56
|
+
labels?: string[];
|
|
57
|
+
assignees?: string[];
|
|
58
|
+
milestone?: number | null;
|
|
59
|
+
}): Promise<GitHubIssue>;
|
|
60
|
+
/**
|
|
61
|
+
* Add labels to an issue.
|
|
62
|
+
*/
|
|
63
|
+
addLabels(owner: string, repo: string, issueNumber: number, labels: string[]): Promise<GitHubLabel[]>;
|
|
64
|
+
/**
|
|
65
|
+
* Remove a label from an issue.
|
|
66
|
+
*/
|
|
67
|
+
removeLabel(owner: string, repo: string, issueNumber: number, label: string): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* List all labels for a repository.
|
|
70
|
+
*/
|
|
71
|
+
listRepoLabels(owner: string, repo: string): Promise<GitHubLabel[]>;
|
|
72
|
+
/**
|
|
73
|
+
* Create a label in a repository.
|
|
74
|
+
*/
|
|
75
|
+
createLabel(owner: string, repo: string, input: {
|
|
76
|
+
name: string;
|
|
77
|
+
color?: string;
|
|
78
|
+
description?: string;
|
|
79
|
+
}): Promise<GitHubLabel>;
|
|
80
|
+
/**
|
|
81
|
+
* Add a comment to an issue.
|
|
82
|
+
*/
|
|
83
|
+
addComment(owner: string, repo: string, issueNumber: number, body: string): Promise<void>;
|
|
84
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Issues API Client
|
|
3
|
+
*
|
|
4
|
+
* REST wrapper for GitHub Issues API access.
|
|
5
|
+
* Uses the GitHub REST API v3 (application/vnd.github+json).
|
|
6
|
+
* Auth via GITHUB_TOKEN or stored token.
|
|
7
|
+
*/
|
|
8
|
+
const GITHUB_API_URL = 'https://api.github.com';
|
|
9
|
+
export class GitHubClient {
|
|
10
|
+
token;
|
|
11
|
+
constructor(token) {
|
|
12
|
+
this.token = token;
|
|
13
|
+
}
|
|
14
|
+
async request(method, path, body) {
|
|
15
|
+
const url = `${GITHUB_API_URL}${path}`;
|
|
16
|
+
const options = {
|
|
17
|
+
method,
|
|
18
|
+
headers: {
|
|
19
|
+
'Accept': 'application/vnd.github+json',
|
|
20
|
+
'Authorization': `Bearer ${this.token}`,
|
|
21
|
+
'X-GitHub-Api-Version': '2022-11-28',
|
|
22
|
+
'Content-Type': 'application/json',
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
if (body !== undefined) {
|
|
26
|
+
options.body = JSON.stringify(body);
|
|
27
|
+
}
|
|
28
|
+
const response = await fetch(url, options);
|
|
29
|
+
if (!response.ok) {
|
|
30
|
+
const text = await response.text().catch(() => '');
|
|
31
|
+
throw new Error(`GitHub API ${method} ${path} failed with status ${response.status}: ${text}`);
|
|
32
|
+
}
|
|
33
|
+
// DELETE returns 204 No Content
|
|
34
|
+
if (response.status === 204) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
return (await response.json());
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Verify the token is valid and return the authenticated user info.
|
|
41
|
+
*/
|
|
42
|
+
async verify() {
|
|
43
|
+
const data = await this.request('GET', '/user');
|
|
44
|
+
return { login: data.login, name: data.name };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get a repository by owner and name.
|
|
48
|
+
*/
|
|
49
|
+
async getRepo(owner, repo) {
|
|
50
|
+
return this.request('GET', `/repos/${owner}/${repo}`);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get a single issue by number.
|
|
54
|
+
*/
|
|
55
|
+
async getIssue(owner, repo, issueNumber) {
|
|
56
|
+
return this.request('GET', `/repos/${owner}/${repo}/issues/${issueNumber}`);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* List issues for a repository.
|
|
60
|
+
*/
|
|
61
|
+
async listIssues(owner, repo, options) {
|
|
62
|
+
const params = new URLSearchParams();
|
|
63
|
+
if (options?.state)
|
|
64
|
+
params.set('state', options.state);
|
|
65
|
+
if (options?.labels)
|
|
66
|
+
params.set('labels', options.labels);
|
|
67
|
+
if (options?.assignee)
|
|
68
|
+
params.set('assignee', options.assignee);
|
|
69
|
+
if (options?.milestone)
|
|
70
|
+
params.set('milestone', options.milestone);
|
|
71
|
+
params.set('per_page', String(options?.per_page ?? 100));
|
|
72
|
+
if (options?.page)
|
|
73
|
+
params.set('page', String(options.page));
|
|
74
|
+
const qs = params.toString();
|
|
75
|
+
const path = `/repos/${owner}/${repo}/issues${qs ? `?${qs}` : ''}`;
|
|
76
|
+
const results = await this.request('GET', path);
|
|
77
|
+
// Filter out pull requests (GitHub API returns PRs in issues endpoint)
|
|
78
|
+
return results.filter(issue => !('pull_request' in issue));
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Create a new issue.
|
|
82
|
+
*/
|
|
83
|
+
async createIssue(owner, repo, input) {
|
|
84
|
+
return this.request('POST', `/repos/${owner}/${repo}/issues`, input);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Update an existing issue.
|
|
88
|
+
*/
|
|
89
|
+
async updateIssue(owner, repo, issueNumber, input) {
|
|
90
|
+
return this.request('PATCH', `/repos/${owner}/${repo}/issues/${issueNumber}`, input);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Add labels to an issue.
|
|
94
|
+
*/
|
|
95
|
+
async addLabels(owner, repo, issueNumber, labels) {
|
|
96
|
+
return this.request('POST', `/repos/${owner}/${repo}/issues/${issueNumber}/labels`, { labels });
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Remove a label from an issue.
|
|
100
|
+
*/
|
|
101
|
+
async removeLabel(owner, repo, issueNumber, label) {
|
|
102
|
+
await this.request('DELETE', `/repos/${owner}/${repo}/issues/${issueNumber}/labels/${encodeURIComponent(label)}`);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* List all labels for a repository.
|
|
106
|
+
*/
|
|
107
|
+
async listRepoLabels(owner, repo) {
|
|
108
|
+
return this.request('GET', `/repos/${owner}/${repo}/labels?per_page=100`);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Create a label in a repository.
|
|
112
|
+
*/
|
|
113
|
+
async createLabel(owner, repo, input) {
|
|
114
|
+
return this.request('POST', `/repos/${owner}/${repo}/labels`, input);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Add a comment to an issue.
|
|
118
|
+
*/
|
|
119
|
+
async addComment(owner, repo, issueNumber, body) {
|
|
120
|
+
await this.request('POST', `/repos/${owner}/${repo}/issues/${issueNumber}/comments`, { body });
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=client.js.map
|