@proletariat/cli 0.3.95 → 0.3.97

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/dist/commands/config/index.js +1 -1
  2. package/dist/commands/config/index.js.map +1 -1
  3. package/dist/commands/db/repair.js +160 -35
  4. package/dist/commands/db/repair.js.map +1 -1
  5. package/dist/commands/gc.d.ts +14 -0
  6. package/dist/commands/gc.js +208 -0
  7. package/dist/commands/gc.js.map +1 -0
  8. package/dist/commands/linear/connect.d.ts +5 -0
  9. package/dist/commands/linear/connect.js +84 -0
  10. package/dist/commands/linear/connect.js.map +1 -1
  11. package/dist/commands/pr/merge.js +1 -1
  12. package/dist/commands/pr/merge.js.map +1 -1
  13. package/dist/commands/session/attach.d.ts +3 -3
  14. package/dist/commands/session/attach.js +37 -79
  15. package/dist/commands/session/attach.js.map +1 -1
  16. package/dist/commands/session/exec.js +1 -1
  17. package/dist/commands/session/exec.js.map +1 -1
  18. package/dist/commands/session/health.js +1 -1
  19. package/dist/commands/session/health.js.map +1 -1
  20. package/dist/commands/session/inspect.js +1 -1
  21. package/dist/commands/session/inspect.js.map +1 -1
  22. package/dist/commands/session/list.d.ts +1 -0
  23. package/dist/commands/session/list.js +111 -78
  24. package/dist/commands/session/list.js.map +1 -1
  25. package/dist/commands/session/peek.js +1 -1
  26. package/dist/commands/session/peek.js.map +1 -1
  27. package/dist/commands/session/poke.js +1 -1
  28. package/dist/commands/session/poke.js.map +1 -1
  29. package/dist/commands/session/prune.js +50 -11
  30. package/dist/commands/session/prune.js.map +1 -1
  31. package/dist/commands/session/restart.js +1 -1
  32. package/dist/commands/session/restart.js.map +1 -1
  33. package/dist/commands/session/watch.d.ts +1 -0
  34. package/dist/commands/session/watch.js +46 -2
  35. package/dist/commands/session/watch.js.map +1 -1
  36. package/dist/commands/{action → sync}/index.d.ts +2 -6
  37. package/dist/commands/sync/index.js +68 -0
  38. package/dist/commands/sync/index.js.map +1 -0
  39. package/dist/commands/sync/pause.d.ts +10 -0
  40. package/dist/commands/sync/pause.js +35 -0
  41. package/dist/commands/sync/pause.js.map +1 -0
  42. package/dist/commands/sync/queue.d.ts +10 -0
  43. package/dist/commands/sync/queue.js +106 -0
  44. package/dist/commands/sync/queue.js.map +1 -0
  45. package/dist/commands/sync/resume.d.ts +10 -0
  46. package/dist/commands/sync/resume.js +34 -0
  47. package/dist/commands/sync/resume.js.map +1 -0
  48. package/dist/commands/sync/start.d.ts +11 -0
  49. package/dist/commands/sync/start.js +73 -0
  50. package/dist/commands/sync/start.js.map +1 -0
  51. package/dist/commands/sync/status.d.ts +10 -0
  52. package/dist/commands/sync/status.js +40 -0
  53. package/dist/commands/sync/status.js.map +1 -0
  54. package/dist/commands/sync/stop.d.ts +10 -0
  55. package/dist/commands/sync/stop.js +39 -0
  56. package/dist/commands/sync/stop.js.map +1 -0
  57. package/dist/commands/ticket/create.js +1 -1
  58. package/dist/commands/ticket/create.js.map +1 -1
  59. package/dist/commands/ticket/edit.js +1 -1
  60. package/dist/commands/ticket/edit.js.map +1 -1
  61. package/dist/commands/ticket/list.js +1 -1
  62. package/dist/commands/ticket/list.js.map +1 -1
  63. package/dist/commands/ticket/update.js +1 -1
  64. package/dist/commands/ticket/update.js.map +1 -1
  65. package/dist/commands/work/complete.d.ts +1 -0
  66. package/dist/commands/work/complete.js +27 -25
  67. package/dist/commands/work/complete.js.map +1 -1
  68. package/dist/commands/work/drop.d.ts +14 -0
  69. package/dist/commands/work/drop.js +215 -0
  70. package/dist/commands/work/drop.js.map +1 -0
  71. package/dist/commands/work/ready.d.ts +1 -0
  72. package/dist/commands/work/ready.js +26 -25
  73. package/dist/commands/work/ready.js.map +1 -1
  74. package/dist/commands/work/resolve.js +1 -1
  75. package/dist/commands/work/resolve.js.map +1 -1
  76. package/dist/commands/work/ship.d.ts +1 -0
  77. package/dist/commands/work/ship.js +33 -32
  78. package/dist/commands/work/ship.js.map +1 -1
  79. package/dist/commands/work/start.d.ts +2 -0
  80. package/dist/commands/work/start.js +172 -125
  81. package/dist/commands/work/start.js.map +1 -1
  82. package/dist/commands/work/stop.d.ts +1 -0
  83. package/dist/commands/work/stop.js +40 -0
  84. package/dist/commands/work/stop.js.map +1 -1
  85. package/dist/lib/agents/commands.js +7 -5
  86. package/dist/lib/agents/commands.js.map +1 -1
  87. package/dist/lib/dashboard/data.js +1 -1
  88. package/dist/lib/dashboard/data.js.map +1 -1
  89. package/dist/lib/database/db-safety.d.ts +22 -0
  90. package/dist/lib/database/db-safety.js +91 -4
  91. package/dist/lib/database/db-safety.js.map +1 -1
  92. package/dist/lib/database/drizzle-schema.d.ts +17 -0
  93. package/dist/lib/database/drizzle-schema.js +1 -0
  94. package/dist/lib/database/drizzle-schema.js.map +1 -1
  95. package/dist/lib/database/index.d.ts +1 -1
  96. package/dist/lib/database/index.js +1 -1
  97. package/dist/lib/database/index.js.map +1 -1
  98. package/dist/lib/database/migrations/0017_drop_agent_work_fk.d.ts +13 -0
  99. package/dist/lib/database/migrations/0017_drop_agent_work_fk.js +85 -0
  100. package/dist/lib/database/migrations/0017_drop_agent_work_fk.js.map +1 -0
  101. package/dist/lib/database/migrations/0018_create_ticket_refs.d.ts +11 -0
  102. package/dist/lib/database/migrations/0018_create_ticket_refs.js +40 -0
  103. package/dist/lib/database/migrations/0018_create_ticket_refs.js.map +1 -0
  104. package/dist/lib/database/migrations/0019_gc_artifact_cleanup.d.ts +9 -0
  105. package/dist/lib/database/migrations/0019_gc_artifact_cleanup.js +23 -0
  106. package/dist/lib/database/migrations/0019_gc_artifact_cleanup.js.map +1 -0
  107. package/dist/lib/database/migrations/0020_transition_map.d.ts +2 -0
  108. package/dist/lib/database/migrations/0020_transition_map.js +27 -0
  109. package/dist/lib/database/migrations/0020_transition_map.js.map +1 -0
  110. package/dist/lib/database/migrations/index.js +8 -0
  111. package/dist/lib/database/migrations/index.js.map +1 -1
  112. package/dist/lib/execution/config.d.ts +10 -0
  113. package/dist/lib/execution/config.js +24 -0
  114. package/dist/lib/execution/config.js.map +1 -1
  115. package/dist/lib/execution/devcontainer.js +1 -1
  116. package/dist/lib/execution/devcontainer.js.map +1 -1
  117. package/dist/lib/execution/preflight.d.ts +51 -0
  118. package/dist/lib/execution/preflight.js +278 -0
  119. package/dist/lib/execution/preflight.js.map +1 -0
  120. package/dist/lib/execution/runners/docker-management.d.ts +9 -0
  121. package/dist/lib/execution/runners/docker-management.js +14 -3
  122. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  123. package/dist/lib/execution/runners/prompt-builder.d.ts +6 -0
  124. package/dist/lib/execution/runners/prompt-builder.js +53 -10
  125. package/dist/lib/execution/runners/prompt-builder.js.map +1 -1
  126. package/dist/lib/execution/runners/shared.d.ts +1 -1
  127. package/dist/lib/execution/runners/shared.js +1 -1
  128. package/dist/lib/execution/runners/shared.js.map +1 -1
  129. package/dist/lib/execution/session-utils.d.ts +39 -0
  130. package/dist/lib/execution/session-utils.js +111 -0
  131. package/dist/lib/execution/session-utils.js.map +1 -1
  132. package/dist/lib/execution/spawner.d.ts +11 -1
  133. package/dist/lib/execution/spawner.js +46 -17
  134. package/dist/lib/execution/spawner.js.map +1 -1
  135. package/dist/lib/execution/storage.js +2 -1
  136. package/dist/lib/execution/storage.js.map +1 -1
  137. package/dist/lib/execution/ticket-refs.d.ts +71 -0
  138. package/dist/lib/execution/ticket-refs.js +125 -0
  139. package/dist/lib/execution/ticket-refs.js.map +1 -0
  140. package/dist/lib/execution/types.d.ts +7 -2
  141. package/dist/lib/execution/types.js +5 -3
  142. package/dist/lib/execution/types.js.map +1 -1
  143. package/dist/lib/external-issues/utils.d.ts +25 -0
  144. package/dist/lib/external-issues/utils.js +32 -0
  145. package/dist/lib/external-issues/utils.js.map +1 -0
  146. package/dist/lib/gc/index.d.ts +179 -0
  147. package/dist/lib/gc/index.js +655 -0
  148. package/dist/lib/gc/index.js.map +1 -0
  149. package/dist/lib/mcp/tools/action.js +1 -1
  150. package/dist/lib/mcp/tools/action.js.map +1 -1
  151. package/dist/lib/mcp/tools/ticket.js +1 -1
  152. package/dist/lib/mcp/tools/ticket.js.map +1 -1
  153. package/dist/lib/orchestrate/actions.js +30 -0
  154. package/dist/lib/orchestrate/actions.js.map +1 -1
  155. package/dist/lib/orchestrate/poller.js +3 -3
  156. package/dist/lib/orchestrate/poller.js.map +1 -1
  157. package/dist/lib/orchestrate/presets.js +2 -1
  158. package/dist/lib/orchestrate/presets.js.map +1 -1
  159. package/dist/lib/orchestrate/types.d.ts +1 -1
  160. package/dist/lib/orchestrate/types.js +1 -0
  161. package/dist/lib/orchestrate/types.js.map +1 -1
  162. package/dist/lib/pmo/index.js +1 -1
  163. package/dist/lib/pmo/index.js.map +1 -1
  164. package/dist/lib/pmo/markdown.js +1 -1
  165. package/dist/lib/pmo/markdown.js.map +1 -1
  166. package/dist/lib/pmo/schema.d.ts +3 -1
  167. package/dist/lib/pmo/schema.js +26 -2
  168. package/dist/lib/pmo/schema.js.map +1 -1
  169. package/dist/lib/pmo/storage/actions.js +1 -1
  170. package/dist/lib/pmo/storage/actions.js.map +1 -1
  171. package/dist/lib/pmo/storage/base.js +37 -15
  172. package/dist/lib/pmo/storage/base.js.map +1 -1
  173. package/dist/lib/pmo/storage/projects.js +2 -1
  174. package/dist/lib/pmo/storage/projects.js.map +1 -1
  175. package/dist/lib/pmo/storage/statuses.js +1 -1
  176. package/dist/lib/pmo/storage/statuses.js.map +1 -1
  177. package/dist/lib/pmo/storage/subtasks.js +1 -1
  178. package/dist/lib/pmo/storage/subtasks.js.map +1 -1
  179. package/dist/lib/pmo/storage/templates.js +1 -1
  180. package/dist/lib/pmo/storage/templates.js.map +1 -1
  181. package/dist/lib/pmo/storage/tickets.js +2 -1
  182. package/dist/lib/pmo/storage/tickets.js.map +1 -1
  183. package/dist/lib/pmo/storage/workflow-rules.js +1 -1
  184. package/dist/lib/pmo/storage/workflow-rules.js.map +1 -1
  185. package/dist/lib/pmo/utils.d.ts +6 -189
  186. package/dist/lib/pmo/utils.js +6 -306
  187. package/dist/lib/pmo/utils.js.map +1 -1
  188. package/dist/lib/prompt-json.d.ts +31 -0
  189. package/dist/lib/prompt-json.js.map +1 -1
  190. package/dist/lib/providers/auto-mapper.d.ts +45 -0
  191. package/dist/lib/providers/auto-mapper.js +115 -0
  192. package/dist/lib/providers/auto-mapper.js.map +1 -0
  193. package/dist/lib/providers/state-intents.d.ts +20 -0
  194. package/dist/lib/providers/state-intents.js +61 -7
  195. package/dist/lib/providers/state-intents.js.map +1 -1
  196. package/dist/lib/providers/state-resolution.d.ts +15 -11
  197. package/dist/lib/providers/state-resolution.js +54 -48
  198. package/dist/lib/providers/state-resolution.js.map +1 -1
  199. package/dist/lib/providers/transition-map.d.ts +59 -0
  200. package/dist/lib/providers/transition-map.js +113 -0
  201. package/dist/lib/providers/transition-map.js.map +1 -0
  202. package/dist/lib/session/heartbeat.js +1 -1
  203. package/dist/lib/session/heartbeat.js.map +1 -1
  204. package/dist/lib/session/index.d.ts +3 -1
  205. package/dist/lib/session/index.js +3 -1
  206. package/dist/lib/session/index.js.map +1 -1
  207. package/dist/lib/session/tmux-watchdog.d.ts +157 -0
  208. package/dist/lib/session/tmux-watchdog.js +424 -0
  209. package/dist/lib/session/tmux-watchdog.js.map +1 -0
  210. package/dist/lib/session/watcher.d.ts +22 -4
  211. package/dist/lib/session/watcher.js +66 -8
  212. package/dist/lib/session/watcher.js.map +1 -1
  213. package/dist/lib/sync/daemon-process.d.ts +9 -0
  214. package/dist/lib/sync/daemon-process.js +184 -0
  215. package/dist/lib/sync/daemon-process.js.map +1 -0
  216. package/dist/lib/sync/daemon.d.ts +39 -0
  217. package/dist/lib/sync/daemon.js +91 -0
  218. package/dist/lib/sync/daemon.js.map +1 -0
  219. package/dist/lib/sync/engine.d.ts +38 -0
  220. package/dist/lib/sync/engine.js +145 -0
  221. package/dist/lib/sync/engine.js.map +1 -0
  222. package/dist/lib/sync/merge-queue.d.ts +116 -0
  223. package/dist/lib/sync/merge-queue.js +321 -0
  224. package/dist/lib/sync/merge-queue.js.map +1 -0
  225. package/dist/lib/sync/reconciler.d.ts +44 -0
  226. package/dist/lib/sync/reconciler.js +88 -0
  227. package/dist/lib/sync/reconciler.js.map +1 -0
  228. package/dist/lib/utils/text.d.ts +44 -0
  229. package/dist/lib/utils/text.js +72 -0
  230. package/dist/lib/utils/text.js.map +1 -0
  231. package/dist/lib/work-lifecycle/post-execution.js +1 -1
  232. package/dist/lib/work-lifecycle/post-execution.js.map +1 -1
  233. package/dist/lib/work-lifecycle/settings.d.ts +138 -0
  234. package/dist/lib/work-lifecycle/settings.js +213 -0
  235. package/dist/lib/work-lifecycle/settings.js.map +1 -0
  236. package/dist/lib/work-lifecycle/transition.d.ts +73 -0
  237. package/dist/lib/work-lifecycle/transition.js +124 -0
  238. package/dist/lib/work-lifecycle/transition.js.map +1 -0
  239. package/oclif.manifest.json +3235 -3380
  240. package/package.json +1 -1
  241. package/dist/commands/action/create.d.ts +0 -26
  242. package/dist/commands/action/create.js +0 -245
  243. package/dist/commands/action/create.js.map +0 -1
  244. package/dist/commands/action/delete.d.ts +0 -18
  245. package/dist/commands/action/delete.js +0 -78
  246. package/dist/commands/action/delete.js.map +0 -1
  247. package/dist/commands/action/index.js +0 -103
  248. package/dist/commands/action/index.js.map +0 -1
  249. package/dist/commands/action/list.d.ts +0 -15
  250. package/dist/commands/action/list.js +0 -90
  251. package/dist/commands/action/list.js.map +0 -1
  252. package/dist/commands/action/run.d.ts +0 -20
  253. package/dist/commands/action/run.js +0 -188
  254. package/dist/commands/action/run.js.map +0 -1
  255. package/dist/commands/action/show.d.ts +0 -17
  256. package/dist/commands/action/show.js +0 -78
  257. package/dist/commands/action/show.js.map +0 -1
  258. package/dist/commands/action/update.d.ts +0 -27
  259. package/dist/commands/action/update.js +0 -288
  260. package/dist/commands/action/update.js.map +0 -1
@@ -0,0 +1,32 @@
1
+ /**
2
+ * External issue metadata helpers.
3
+ */
4
+ /**
5
+ * Extract external issue metadata from a ticket's metadata field.
6
+ * Returns the external source, key (e.g. PRLT-1065), id, and url.
7
+ */
8
+ export function getTicketExternalMetadata(ticket) {
9
+ const metadata = (typeof ticket === 'object'
10
+ && ticket !== null
11
+ && 'metadata' in ticket
12
+ && typeof ticket.metadata === 'object'
13
+ && ticket.metadata !== null
14
+ ? ticket.metadata
15
+ : {});
16
+ return {
17
+ source: typeof metadata.external_source === 'string' ? metadata.external_source : undefined,
18
+ key: typeof metadata.external_key === 'string' ? metadata.external_key : undefined,
19
+ id: typeof metadata.external_id === 'string' ? metadata.external_id : undefined,
20
+ url: typeof metadata.external_url === 'string' ? metadata.external_url : undefined,
21
+ };
22
+ }
23
+ /**
24
+ * Resolve the display/branch ticket ID. When a ticket was imported from an
25
+ * external provider (e.g. Linear), the external key (PRLT-xxx) is preferred
26
+ * over the internal PMO ID (TKT-xxx).
27
+ */
28
+ export function resolveExternalTicketId(ticket) {
29
+ const external = getTicketExternalMetadata(ticket);
30
+ return external.key || ticket.id;
31
+ }
32
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/external-issues/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAgE;IAMxG,MAAM,QAAQ,GAAG,CAAC,OAAO,MAAM,KAAK,QAAQ;WACvC,MAAM,KAAK,IAAI;WACf,UAAU,IAAI,MAAM;WACpB,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;WACnC,MAAM,CAAC,QAAQ,KAAK,IAAI;QAC3B,CAAC,CAAC,MAAM,CAAC,QAAQ;QACjB,CAAC,CAAC,EAAE,CAA4B,CAAA;IAElC,OAAO;QACL,MAAM,EAAE,OAAO,QAAQ,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;QAC3F,GAAG,EAAE,OAAO,QAAQ,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QAClF,EAAE,EAAE,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAC/E,GAAG,EAAE,OAAO,QAAQ,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;KACnF,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAgE;IACtG,MAAM,QAAQ,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAClD,OAAO,QAAQ,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAA;AAClC,CAAC"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Garbage Collection Module
3
+ *
4
+ * Core logic for cleaning up agent artifacts after PR merge/close.
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.
8
+ *
9
+ * Used by both the `prlt gc` command and the daemon's post-merge phase.
10
+ */
11
+ import { type ContainerInfo } from '../execution/container-cleanup.js';
12
+ import { type PRInfo } from '../pr/index.js';
13
+ export type GCArtifactStatus = 'merged' | 'closed' | 'stale' | 'active';
14
+ export interface GCCandidate {
15
+ /** Worktree path on disk */
16
+ worktreePath: string;
17
+ /** Branch name checked out in this worktree */
18
+ branch: string;
19
+ /** Agent name extracted from worktree path */
20
+ agentName: string | null;
21
+ /** Repository name this worktree belongs to */
22
+ repoName: string;
23
+ /** Source repo path (bare/main repo) */
24
+ sourceRepoPath: string;
25
+ /** PR info if found */
26
+ pr: PRInfo | null;
27
+ /** Computed artifact status */
28
+ status: GCArtifactStatus;
29
+ /** Associated container, if any */
30
+ container: ContainerInfo | null;
31
+ }
32
+ export interface GCResult {
33
+ /** Worktrees removed */
34
+ worktreesRemoved: string[];
35
+ /** Containers removed */
36
+ containersRemoved: string[];
37
+ /** Local branches pruned */
38
+ branchesPruned: string[];
39
+ /** Remote branches deleted */
40
+ remoteBranchesDeleted: string[];
41
+ /** tmux sessions killed */
42
+ tmuxSessionsCleaned: string[];
43
+ /** Claude sessions cleaned */
44
+ claudeSessionsCleaned: string[];
45
+ /** DB execution records marked as gc_cleaned */
46
+ dbRecordsMarked: number;
47
+ /** DB execution records purged (deleted) */
48
+ dbRecordsPurged: number;
49
+ /** Agent names marked as recyclable */
50
+ agentNamesRecycled: string[];
51
+ /** Stale PRs closed */
52
+ stalePRsClosed: number[];
53
+ /** Errors encountered */
54
+ errors: string[];
55
+ /** Candidates that were skipped (active) */
56
+ skipped: string[];
57
+ }
58
+ export interface GCOptions {
59
+ /** Working directory (HQ path) */
60
+ hqPath: string;
61
+ /** Days of inactivity before a PR is considered stale */
62
+ staleDays?: number;
63
+ /** Only process candidates matching this status */
64
+ filterStatus?: GCArtifactStatus[];
65
+ /** Actually execute cleanup (default: false = dry run) */
66
+ execute?: boolean;
67
+ /** Purge (DELETE) old DB execution records instead of just marking them */
68
+ purgeDb?: boolean;
69
+ /** Log callback */
70
+ log?: (msg: string) => void;
71
+ }
72
+ interface WorktreeEntry {
73
+ worktreePath: string;
74
+ branch: string;
75
+ isPrunable: boolean;
76
+ }
77
+ /**
78
+ * Parse `git worktree list --porcelain` output into structured entries.
79
+ */
80
+ export declare function parseWorktreeList(output: string): WorktreeEntry[];
81
+ /**
82
+ * Extract agent name from a worktree path.
83
+ * Worktrees are at: {hqPath}/agents/{subdir}/{agentName}/{repoName}
84
+ */
85
+ export declare function extractAgentName(worktreePath: string, hqPath: string): string | null;
86
+ /**
87
+ * Determine the GC status for a worktree based on its PR state.
88
+ */
89
+ export declare function classifyArtifact(pr: PRInfo | null, staleDays: number): GCArtifactStatus;
90
+ /**
91
+ * Collect all GC candidates by scanning worktrees and checking PR status.
92
+ *
93
+ * Scans all repos in the HQ, finds worktrees inside the agents/ directory,
94
+ * checks PR status for each branch, and classifies them.
95
+ */
96
+ export declare function collectGCCandidates(options: GCOptions): GCCandidate[];
97
+ /**
98
+ * Delete a remote git branch. Non-fatal if branch doesn't exist on remote.
99
+ */
100
+ export declare function deleteRemoteBranch(branch: string, cwd: string): boolean;
101
+ /**
102
+ * Kill tmux sessions inside a Docker container.
103
+ * Non-fatal if tmux is not running or container is not accessible.
104
+ */
105
+ export declare function killTmuxInContainer(containerId: string): boolean;
106
+ /**
107
+ * Clean up Claude session data from a Docker container's claude-credentials volume.
108
+ * Only removes session-specific files, preserving auth credentials.
109
+ *
110
+ * Session files to clean: projects/, .claude-*, statsig/
111
+ * Files to preserve: .credentials.json, credentials.json, .oauthtoken, settings.json
112
+ */
113
+ export declare function cleanClaudeSessionData(containerId: string): boolean;
114
+ /**
115
+ * Mark execution records as GC-cleaned for the given agent names.
116
+ * Sets gc_cleaned_at timestamp on agent_work rows that are completed/failed.
117
+ */
118
+ export declare function markExecutionRecordsCleaned(hqPath: string, agentNames: string[]): number;
119
+ /**
120
+ * Purge (DELETE) execution records for the given agent names.
121
+ * Only deletes records that have already been marked as gc_cleaned.
122
+ */
123
+ export declare function purgeExecutionRecords(hqPath: string, agentNames: string[]): number;
124
+ /**
125
+ * Mark agent names as recyclable (status='cleaned') in the database.
126
+ * Preserves the record for history but allows name reuse.
127
+ */
128
+ export declare function recycleAgentNames(hqPath: string, agentNames: string[]): string[];
129
+ /**
130
+ * Execute garbage collection on the provided candidates.
131
+ *
132
+ * Processes candidates in order:
133
+ * 1. Close stale PRs
134
+ * 2. Kill tmux sessions in containers
135
+ * 3. Clean Claude session data in containers
136
+ * 4. Remove worktrees
137
+ * 5. Remove containers
138
+ * 6. Prune local branches
139
+ * 7. Delete remote branches
140
+ * 8. Clean up empty agent directories
141
+ * 9. Mark/purge DB execution records
142
+ * 10. Recycle agent names
143
+ */
144
+ export declare function executeGC(candidates: GCCandidate[], options: GCOptions): GCResult;
145
+ interface ScheduledCleanup {
146
+ branch: string;
147
+ scheduledAt: number;
148
+ graceUntil: number;
149
+ }
150
+ /**
151
+ * In-memory scheduler for daemon GC with grace periods.
152
+ * Tracks branches that need cleanup after their grace period expires.
153
+ */
154
+ export declare class GCScheduler {
155
+ private pending;
156
+ private gracePeriodMs;
157
+ constructor(gracePeriodMs?: number);
158
+ /**
159
+ * Schedule a branch for GC after the grace period.
160
+ */
161
+ schedule(branch: string): void;
162
+ /**
163
+ * Get branches whose grace period has expired.
164
+ */
165
+ getReady(): string[];
166
+ /**
167
+ * Remove a branch from the schedule (after cleanup).
168
+ */
169
+ complete(branch: string): void;
170
+ /**
171
+ * Get all pending cleanups (for status/debugging).
172
+ */
173
+ getPending(): ScheduledCleanup[];
174
+ /**
175
+ * Number of pending cleanups.
176
+ */
177
+ get size(): number;
178
+ }
179
+ export {};