agentrinse 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +58 -16
  2. package/dist/adapters/git/adapter.d.ts +14 -1
  3. package/dist/adapters/git/adapter.d.ts.map +1 -1
  4. package/dist/adapters/git/adapter.js +217 -56
  5. package/dist/adapters/git/adapter.js.map +1 -1
  6. package/dist/adapters/git/refs.d.ts +6 -0
  7. package/dist/adapters/git/refs.d.ts.map +1 -0
  8. package/dist/adapters/git/refs.js +24 -0
  9. package/dist/adapters/git/refs.js.map +1 -0
  10. package/dist/adapters/git/status.d.ts +1 -0
  11. package/dist/adapters/git/status.d.ts.map +1 -1
  12. package/dist/adapters/git/status.js +6 -0
  13. package/dist/adapters/git/status.js.map +1 -1
  14. package/dist/adapters/registry.d.ts +2 -1
  15. package/dist/adapters/registry.d.ts.map +1 -1
  16. package/dist/adapters/registry.js +6 -2
  17. package/dist/adapters/registry.js.map +1 -1
  18. package/dist/commands/apply.d.ts.map +1 -1
  19. package/dist/commands/apply.js +4 -0
  20. package/dist/commands/apply.js.map +1 -1
  21. package/dist/commands/clean.d.ts +2 -0
  22. package/dist/commands/clean.d.ts.map +1 -1
  23. package/dist/commands/clean.js +9 -3
  24. package/dist/commands/clean.js.map +1 -1
  25. package/dist/commands/completion.d.ts.map +1 -1
  26. package/dist/commands/completion.js +3 -1
  27. package/dist/commands/completion.js.map +1 -1
  28. package/dist/commands/confirmation.d.ts +6 -0
  29. package/dist/commands/confirmation.d.ts.map +1 -0
  30. package/dist/commands/confirmation.js +21 -0
  31. package/dist/commands/confirmation.js.map +1 -0
  32. package/dist/commands/doctor.d.ts.map +1 -1
  33. package/dist/commands/doctor.js +4 -2
  34. package/dist/commands/doctor.js.map +1 -1
  35. package/dist/commands/purge.d.ts +29 -0
  36. package/dist/commands/purge.d.ts.map +1 -0
  37. package/dist/commands/purge.js +168 -0
  38. package/dist/commands/purge.js.map +1 -0
  39. package/dist/commands/show.d.ts.map +1 -1
  40. package/dist/commands/show.js +14 -2
  41. package/dist/commands/show.js.map +1 -1
  42. package/dist/commands/undo.d.ts +21 -0
  43. package/dist/commands/undo.d.ts.map +1 -0
  44. package/dist/commands/undo.js +66 -0
  45. package/dist/commands/undo.js.map +1 -0
  46. package/dist/config/defaults.d.ts.map +1 -1
  47. package/dist/config/defaults.js +4 -0
  48. package/dist/config/defaults.js.map +1 -1
  49. package/dist/config/load.d.ts.map +1 -1
  50. package/dist/config/load.js +4 -0
  51. package/dist/config/load.js.map +1 -1
  52. package/dist/config/schema.d.ts +4 -0
  53. package/dist/config/schema.d.ts.map +1 -1
  54. package/dist/config/schema.js +18 -0
  55. package/dist/config/schema.js.map +1 -1
  56. package/dist/contracts/action.d.ts +59 -0
  57. package/dist/contracts/action.d.ts.map +1 -1
  58. package/dist/contracts/action.js +28 -1
  59. package/dist/contracts/action.js.map +1 -1
  60. package/dist/contracts/finding.d.ts +22 -0
  61. package/dist/contracts/finding.d.ts.map +1 -1
  62. package/dist/contracts/plan.d.ts +23 -0
  63. package/dist/contracts/plan.d.ts.map +1 -1
  64. package/dist/contracts/plan.js +20 -1
  65. package/dist/contracts/plan.js.map +1 -1
  66. package/dist/contracts/quarantine.d.ts +79 -0
  67. package/dist/contracts/quarantine.d.ts.map +1 -0
  68. package/dist/contracts/quarantine.js +60 -0
  69. package/dist/contracts/quarantine.js.map +1 -0
  70. package/dist/contracts/report.d.ts +22 -0
  71. package/dist/contracts/report.d.ts.map +1 -1
  72. package/dist/contracts/run.d.ts +133 -5
  73. package/dist/contracts/run.d.ts.map +1 -1
  74. package/dist/contracts/run.js +17 -3
  75. package/dist/contracts/run.js.map +1 -1
  76. package/dist/core/apply.d.ts +8 -1
  77. package/dist/core/apply.d.ts.map +1 -1
  78. package/dist/core/apply.js +138 -48
  79. package/dist/core/apply.js.map +1 -1
  80. package/dist/core/git-operation-state.d.ts +3 -0
  81. package/dist/core/git-operation-state.d.ts.map +1 -0
  82. package/dist/core/git-operation-state.js +23 -0
  83. package/dist/core/git-operation-state.js.map +1 -0
  84. package/dist/core/measure.d.ts +1 -0
  85. package/dist/core/measure.d.ts.map +1 -1
  86. package/dist/core/measure.js +3 -0
  87. package/dist/core/measure.js.map +1 -1
  88. package/dist/core/no-clobber-rename.d.ts +2 -0
  89. package/dist/core/no-clobber-rename.d.ts.map +1 -0
  90. package/dist/core/no-clobber-rename.js +58 -0
  91. package/dist/core/no-clobber-rename.js.map +1 -0
  92. package/dist/core/plan.d.ts.map +1 -1
  93. package/dist/core/plan.js +1 -0
  94. package/dist/core/plan.js.map +1 -1
  95. package/dist/core/worktree-executor.d.ts +51 -0
  96. package/dist/core/worktree-executor.d.ts.map +1 -0
  97. package/dist/core/worktree-executor.js +676 -0
  98. package/dist/core/worktree-executor.js.map +1 -0
  99. package/dist/core/worktree-lock.d.ts +15 -0
  100. package/dist/core/worktree-lock.d.ts.map +1 -0
  101. package/dist/core/worktree-lock.js +139 -0
  102. package/dist/core/worktree-lock.js.map +1 -0
  103. package/dist/core/worktree-recovery.d.ts +37 -0
  104. package/dist/core/worktree-recovery.d.ts.map +1 -0
  105. package/dist/core/worktree-recovery.js +1018 -0
  106. package/dist/core/worktree-recovery.js.map +1 -0
  107. package/dist/core/worktree-revalidation.d.ts +25 -0
  108. package/dist/core/worktree-revalidation.d.ts.map +1 -0
  109. package/dist/core/worktree-revalidation.js +107 -0
  110. package/dist/core/worktree-revalidation.js.map +1 -0
  111. package/dist/index.d.ts +3 -2
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +3 -2
  114. package/dist/index.js.map +1 -1
  115. package/dist/main.d.ts.map +1 -1
  116. package/dist/main.js +47 -0
  117. package/dist/main.js.map +1 -1
  118. package/dist/state/layout.d.ts +1 -0
  119. package/dist/state/layout.d.ts.map +1 -1
  120. package/dist/state/layout.js +1 -0
  121. package/dist/state/layout.js.map +1 -1
  122. package/dist/state/records.d.ts +6 -0
  123. package/dist/state/records.d.ts.map +1 -1
  124. package/dist/state/records.js +9 -1
  125. package/dist/state/records.js.map +1 -1
  126. package/dist/state/run-journal.d.ts.map +1 -1
  127. package/dist/state/run-journal.js +3 -0
  128. package/dist/state/run-journal.js.map +1 -1
  129. package/dist/version.d.ts +1 -1
  130. package/dist/version.js +1 -1
  131. package/package.json +2 -1
  132. package/schemas/audit.schema.json +112 -0
  133. package/schemas/plan.schema.json +117 -0
  134. package/schemas/quarantine.schema.json +238 -0
  135. package/schemas/run.schema.json +152 -54
package/README.md CHANGED
@@ -6,11 +6,11 @@ AgentRinse inventories agent state and developer residue, explains why each
6
6
  resource is protected or eligible, creates content-addressed cleanup plans,
7
7
  and applies only actions that still pass every safety check.
8
8
 
9
- Version `0.2.0` adds Git reachability proof, live-process and Codex/Claude
10
- workspace roots, explicit pins, a repository closeout profile, and opt-in
11
- runtime inventory. Its only mutating action remains removal of exact
12
- rebuildable artifact directories declared under explicit project roots.
13
- Provider state, Git worktrees, runtimes, and Docker resources are report-only.
9
+ Version `0.3.0` adds recoverable quarantine for fully proven inactive linked
10
+ Git worktrees. Quarantine is opt-in at the `recoverable` risk ceiling, keeps a
11
+ tested undo path, and reports zero immediate disk reclaim until a separate
12
+ purge. Exact configured rebuildable artifacts remain the only `safe` action.
13
+ Provider state, runtimes, and Docker resources remain report-only.
14
14
 
15
15
  ## Install
16
16
 
@@ -21,10 +21,16 @@ npm install --global agentrinse
21
21
  agentrinse --version
22
22
  ```
23
23
 
24
+ Homebrew:
25
+
26
+ ```bash
27
+ brew install vincentkoc/tap/agentrinse
28
+ ```
29
+
24
30
  One-off use also works:
25
31
 
26
32
  ```bash
27
- npx agentrinse@0.2.0 doctor
33
+ npx agentrinse@0.3.0 doctor
28
34
  ```
29
35
 
30
36
  ## Quickstart
@@ -52,6 +58,10 @@ Edit the generated JSON and add explicit artifact roots:
52
58
  "minBytes": 67108864,
53
59
  "processCheck": "required"
54
60
  },
61
+ "worktrees": {
62
+ "minAgeMinutes": 20160,
63
+ "quarantineTtlMinutes": 10080
64
+ },
55
65
  "plan": {
56
66
  "ttlMinutes": 30,
57
67
  "maxRisk": "safe"
@@ -100,7 +110,7 @@ repository's linked worktrees, loads Codex and Claude reachability metadata,
100
110
  and ignores unrelated configured artifact projects. It does not infer that a
101
111
  task is finished.
102
112
 
103
- After reviewing the summary, a fresh closeout can apply only existing `safe`
113
+ After reviewing the summary, a fresh closeout can apply existing `safe`
104
114
  artifact actions:
105
115
 
106
116
  ```bash
@@ -108,12 +118,30 @@ agentrinse clean --profile closeout --apply
108
118
  agentrinse clean --profile closeout --apply --yes --max-risk safe --json
109
119
  ```
110
120
 
121
+ Whole-worktree quarantine must be selected explicitly:
122
+
123
+ ```bash
124
+ agentrinse clean --profile closeout --max-risk recoverable
125
+ agentrinse clean --profile closeout --max-risk recoverable --apply --yes
126
+ ```
127
+
128
+ Quarantine moves bytes out of the active path but does not reclaim disk.
129
+ Restore or permanently purge the resulting run:
130
+
131
+ ```bash
132
+ agentrinse undo <run-id>
133
+ agentrinse purge --run <run-id>
134
+ agentrinse purge --run <run-id> --apply --yes
135
+ ```
136
+
111
137
  On macOS, an installed Mole binary adds external `mo purge --dry-run` and
112
138
  `mo clean --dry-run` suggestions. AgentRinse never runs those commands.
113
139
 
114
140
  ## Mutation Boundary
115
141
 
116
- AgentRinse can remove only these configured artifact names:
142
+ AgentRinse has two mutation classes.
143
+
144
+ `safe` artifact removal supports only these configured names:
117
145
 
118
146
  - `node_modules`
119
147
  - `dist`
@@ -132,10 +160,21 @@ descendant age, mount boundaries, current working directory ownership,
132
160
  same-user processes, and plan expiration. The exact target is atomically moved
133
161
  to a same-parent tombstone and verified again before deletion.
134
162
 
163
+ `recoverable` worktree quarantine supports only linked, unlocked, clean,
164
+ pushed, branch-attached worktrees with complete measurement, no submodules,
165
+ no live process, no pin or provider root, and sufficient age. A recovery ref
166
+ is created before atomic same-filesystem rename. Git registration is repaired,
167
+ locked, verified, and recorded in an owner-only manifest.
168
+
169
+ Permanent purge reloads configuration and provider workspace metadata under
170
+ the mutation lock. A current path, resource-ID, or Git-ref pin, provider-managed
171
+ root, active/recent session, or unknown provider state protects the original,
172
+ quarantine, or purge-isolation location and refuses deletion. The refresh runs
173
+ again immediately before every normal or resumed permanent removal.
174
+
135
175
  AgentRinse never removes provider sessions, transcripts, databases,
136
176
  credentials, configuration, plugins, skills, memories, Git branches, stashes,
137
- worktrees, Docker images, containers, networks, volumes, or build cache in
138
- `0.2.0`.
177
+ Docker images, containers, networks, volumes, or build cache in `0.3.0`.
139
178
 
140
179
  ## Operations
141
180
 
@@ -144,6 +183,9 @@ agentrinse history
144
183
  agentrinse show run <run-id>
145
184
  agentrinse show plan <plan-id>
146
185
  agentrinse show resource <resource-id>
186
+ agentrinse undo <run-id>
187
+ agentrinse purge
188
+ agentrinse purge --expired --apply --yes
147
189
  agentrinse lock status
148
190
  ```
149
191
 
@@ -195,12 +237,12 @@ exact so they can be used for planning.
195
237
 
196
238
  ## Platform Support
197
239
 
198
- | Platform | `0.2.0` support |
199
- | -------------- | --------------------------------------------------- |
200
- | macOS | audit and safe artifact apply |
201
- | Linux | audit and safe artifact apply |
202
- | WSL | Linux contract inside the WSL filesystem |
203
- | native Windows | audit-only; mutation remains blocked before `1.0.0` |
240
+ | Platform | `0.3.0` support |
241
+ | -------------- | ------------------------------------------------------- |
242
+ | macOS | audit, artifact removal, worktree quarantine/undo/purge |
243
+ | Linux | audit, artifact removal, worktree quarantine/undo/purge |
244
+ | WSL | Linux contract inside the WSL filesystem |
245
+ | native Windows | audit-only; mutation remains blocked before `1.0.0` |
204
246
 
205
247
  Git and `lsof` are required for the complete diagnostic and process-ownership
206
248
  contract. Docker is optional. Doctor can detect the optional external Mole
@@ -1,22 +1,35 @@
1
+ import type { AgentRinseConfig } from "../../config/schema.js";
1
2
  import type { AuditAdapter, AuditContext, CollectionResult } from "../../contracts/adapter.js";
2
3
  import type { Finding } from "../../contracts/finding.js";
3
4
  import type { AdapterProbe } from "../../contracts/report.js";
4
5
  import type { ResourceSnapshot } from "../../contracts/resource.js";
6
+ import { measurePath } from "../../core/measure.js";
7
+ import { type MountBoundaryResult } from "../../core/mount-boundaries.js";
5
8
  import { type ProcessOwnershipResult } from "../../core/process-ownership.js";
6
9
  import type { ReachabilityIndex } from "../../core/reachability.js";
7
10
  export type GitRunner = (args: string[]) => Promise<string>;
8
11
  export type GitPathExists = (path: string) => Promise<boolean>;
9
12
  export type GitProcessProbe = (path: string) => Promise<ProcessOwnershipResult>;
13
+ export type GitWorktreeOptions = AgentRinseConfig["audit"] & AgentRinseConfig["worktrees"] & {
14
+ platform: NodeJS.Platform;
15
+ };
16
+ export type GitWorktreeDependencies = {
17
+ measure?: typeof measurePath;
18
+ mountProbe?: (path: string) => Promise<MountBoundaryResult>;
19
+ };
10
20
  export declare class GitWorktreeAuditAdapter implements AuditAdapter {
11
21
  private readonly root;
12
22
  private readonly runGit;
13
23
  private readonly pathExists;
14
24
  private readonly processProbe;
15
25
  private readonly reachability?;
26
+ private readonly options;
27
+ private readonly dependencies;
16
28
  readonly id = "git";
17
- constructor(root: string | undefined, runGit?: GitRunner, pathExists?: GitPathExists, processProbe?: GitProcessProbe, reachability?: ReachabilityIndex | undefined);
29
+ constructor(root: string | undefined, runGit?: GitRunner, pathExists?: GitPathExists, processProbe?: GitProcessProbe, reachability?: ReachabilityIndex | undefined, options?: GitWorktreeOptions, dependencies?: GitWorktreeDependencies);
18
30
  probe(_context: AuditContext): Promise<AdapterProbe>;
19
31
  collect(context: AuditContext, probe: AdapterProbe): Promise<CollectionResult>;
20
32
  classify(context: AuditContext, resource: ResourceSnapshot): Promise<Finding>;
33
+ private actionFor;
21
34
  }
22
35
  //# sourceMappingURL=adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/git/adapter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE/F,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAcpE,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAkDhF,qBAAa,uBAAwB,YAAW,YAAY;IAIxD,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAPhC,QAAQ,CAAC,EAAE,SAAS;IAEpB,YACmB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,MAAM,GAAE,SAA4B,EACpC,UAAU,GAAE,aAAiC,EAC7C,YAAY,GAAE,eAAwD,EACtE,YAAY,CAAC,EAAE,iBAAiB,YAAA,EAC/C;IAEE,KAAK,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CA6CzD;IAEK,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwLnF;IAEK,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAoHlF;CACF"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/git/adapter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG/F,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,OAAO,EAAE,WAAW,EAAoB,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAuB,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC/F,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAUpE,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAChF,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,OAAO,CAAC,GACxD,gBAAgB,CAAC,WAAW,CAAC,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC3B,CAAC;AACJ,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,CAAC,EAAE,OAAO,WAAW,CAAC;IAC7B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAC7D,CAAC;AA0DF,qBAAa,uBAAwB,YAAW,YAAY;IAIxD,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAT/B,QAAQ,CAAC,EAAE,SAAS;IAEpB,YACmB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,MAAM,GAAE,SAA4B,EACpC,UAAU,GAAE,aAAiC,EAC7C,YAAY,GAAE,eAAwD,EACtE,YAAY,CAAC,EAAE,iBAAiB,YAAA,EAChC,OAAO,GAAE,kBAAoC,EAC7C,YAAY,GAAE,uBAA4B,EACzD;IAEE,KAAK,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CA6CzD;IAEK,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmOnF;IAEK,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CA0NlF;IAED,OAAO,CAAC,SAAS;CA8BlB"}
@@ -1,20 +1,23 @@
1
1
  import { execFile } from "node:child_process";
2
- import { lstat } from "node:fs/promises";
3
- import { isAbsolute, resolve } from "node:path";
2
+ import { lstat, realpath } from "node:fs/promises";
3
+ import { basename, resolve } from "node:path";
4
4
  import { promisify } from "node:util";
5
5
  import { sha256 } from "../../core/digest.js";
6
+ import { findGitOperations } from "../../core/git-operation-state.js";
7
+ import { measurePath } from "../../core/measure.js";
8
+ import { findMountBoundaries } from "../../core/mount-boundaries.js";
6
9
  import { findProcessesUsingPath, } from "../../core/process-ownership.js";
7
10
  import { parseWorktreePorcelain } from "./porcelain.js";
8
- import { parseGitStatusPorcelainV2 } from "./status.js";
11
+ import { listGitRefsForCommit } from "./refs.js";
12
+ import { countStatusSuppressedIndexEntries, parseGitStatusPorcelainV2, } from "./status.js";
9
13
  const execFileAsync = promisify(execFile);
10
- const OPERATION_MARKERS = [
11
- ["merge", "MERGE_HEAD"],
12
- ["rebase", "rebase-merge"],
13
- ["rebase", "rebase-apply"],
14
- ["cherry-pick", "CHERRY_PICK_HEAD"],
15
- ["revert", "REVERT_HEAD"],
16
- ["bisect", "BISECT_LOG"],
17
- ];
14
+ const DEFAULT_OPTIONS = {
15
+ maxEntries: 100_000,
16
+ measureBytes: true,
17
+ minAgeMinutes: 14 * 24 * 60,
18
+ quarantineTtlMinutes: 7 * 24 * 60,
19
+ platform: process.platform,
20
+ };
18
21
  async function defaultGitRunner(args) {
19
22
  const result = await execFileAsync("git", args, {
20
23
  encoding: "utf8",
@@ -62,13 +65,17 @@ export class GitWorktreeAuditAdapter {
62
65
  pathExists;
63
66
  processProbe;
64
67
  reachability;
68
+ options;
69
+ dependencies;
65
70
  id = "git";
66
- constructor(root, runGit = defaultGitRunner, pathExists = defaultPathExists, processProbe = (path) => findProcessesUsingPath(path), reachability) {
71
+ constructor(root, runGit = defaultGitRunner, pathExists = defaultPathExists, processProbe = (path) => findProcessesUsingPath(path), reachability, options = DEFAULT_OPTIONS, dependencies = {}) {
67
72
  this.root = root;
68
73
  this.runGit = runGit;
69
74
  this.pathExists = pathExists;
70
75
  this.processProbe = processProbe;
71
76
  this.reachability = reachability;
77
+ this.options = options;
78
+ this.dependencies = dependencies;
72
79
  }
73
80
  async probe(_context) {
74
81
  if (this.root === undefined) {
@@ -144,6 +151,16 @@ export class GitWorktreeAuditAdapter {
144
151
  let gitRefs = [];
145
152
  let gitRefInspectionComplete = false;
146
153
  let remotes = [];
154
+ let repositoryCommonDir;
155
+ let measurement;
156
+ let mountBoundaries = {
157
+ status: "unknown",
158
+ paths: [],
159
+ reason: "worktree does not exist",
160
+ };
161
+ let hasSubmodules = false;
162
+ let statusSuppressedEntries = 0;
163
+ let stats;
147
164
  const operations = new Set();
148
165
  let processOwnership = {
149
166
  status: "unknown",
@@ -152,6 +169,8 @@ export class GitWorktreeAuditAdapter {
152
169
  };
153
170
  if (exists) {
154
171
  try {
172
+ stats = await lstat(worktreePath);
173
+ await realpath(worktreePath);
155
174
  status = parseGitStatusPorcelainV2(await this.runGit([
156
175
  "-C",
157
176
  worktreePath,
@@ -160,51 +179,51 @@ export class GitWorktreeAuditAdapter {
160
179
  "--branch",
161
180
  "-z",
162
181
  "--untracked-files=all",
182
+ "--ignored=matching",
163
183
  ]));
164
184
  remotes = lines(await this.runGit(["-C", worktreePath, "remote"]));
185
+ const commonDirOutput = (await this.runGit([
186
+ "-C",
187
+ worktreePath,
188
+ "rev-parse",
189
+ "--path-format=absolute",
190
+ "--git-common-dir",
191
+ ])).trim();
192
+ repositoryCommonDir = resolve(worktreePath, commonDirOutput);
193
+ hasSubmodules = (await this.runGit(["-C", worktreePath, "ls-files", "-z", "--stage"]))
194
+ .split("\0")
195
+ .some((entry) => entry.startsWith("160000 "));
196
+ statusSuppressedEntries = countStatusSuppressedIndexEntries(await this.runGit(["-C", worktreePath, "ls-files", "-z", "-v"]));
197
+ if (this.options.measureBytes) {
198
+ measurement = await (this.dependencies.measure ?? measurePath)(worktreePath, {
199
+ maxEntries: this.options.maxEntries,
200
+ excludeRootEntries: [".git"],
201
+ ...(context.signal === undefined ? {} : { signal: context.signal }),
202
+ });
203
+ }
204
+ mountBoundaries = await (this.dependencies.mountProbe ?? findMountBoundaries)(worktreePath);
165
205
  const head = status.head ?? record.head;
166
206
  if (head !== undefined) {
167
- containingRefs = lines(await this.runGit([
168
- "-C",
169
- worktreePath,
170
- "for-each-ref",
171
- "--contains",
172
- head,
173
- "--format=%(refname)",
174
- "refs/heads",
175
- "refs/remotes",
176
- ]));
177
- const tagRefs = lines(await this.runGit([
178
- "-C",
179
- worktreePath,
180
- "for-each-ref",
181
- "--points-at",
182
- head,
183
- "--format=%(refname)",
184
- "refs/tags",
185
- ]));
207
+ const refs = await listGitRefsForCommit((args) => this.runGit(["-C", worktreePath, ...args]), head);
208
+ containingRefs = refs.containingRefs;
186
209
  gitRefs = [
187
210
  record.branch,
188
211
  branchRef(status.branch),
189
212
  upstreamRef(status.upstream),
190
- ...tagRefs,
213
+ ...refs.gitRefs,
191
214
  ]
192
215
  .filter((value) => value !== undefined)
193
216
  .filter((value, index, values) => values.indexOf(value) === index)
194
217
  .sort();
195
218
  gitRefInspectionComplete = true;
196
219
  }
197
- for (const [operation, marker] of OPERATION_MARKERS) {
198
- const reportedMarkerPath = (await this.runGit(["-C", worktreePath, "rev-parse", "--git-path", marker])).trim();
199
- const markerPath = reportedMarkerPath === "" || isAbsolute(reportedMarkerPath)
200
- ? reportedMarkerPath
201
- : resolve(worktreePath, reportedMarkerPath);
202
- if (markerPath !== "" && (await this.pathExists(markerPath))) {
203
- operations.add(operation);
204
- }
220
+ for (const operation of await findGitOperations(worktreePath, this.runGit, this.pathExists)) {
221
+ operations.add(operation);
205
222
  }
206
223
  processOwnership = await this.processProbe(worktreePath);
207
- if (processOwnership.status === "unknown") {
224
+ if (processOwnership.status === "unknown" ||
225
+ repositoryCommonDir === undefined ||
226
+ stats === undefined) {
208
227
  inspectionComplete = false;
209
228
  }
210
229
  }
@@ -227,6 +246,7 @@ export class GitWorktreeAuditAdapter {
227
246
  const modified = status?.modified ?? 0;
228
247
  const untracked = status?.untracked ?? 0;
229
248
  const conflicted = status?.conflicted ?? 0;
249
+ const ignored = status?.ignored ?? 0;
230
250
  resources.push({
231
251
  resource: {
232
252
  id: `git:git-worktree:${sha256(canonicalKey)}`,
@@ -248,11 +268,30 @@ export class GitWorktreeAuditAdapter {
248
268
  bare: record.bare,
249
269
  locked: record.locked,
250
270
  prunable: record.prunable,
271
+ repositoryCommonDir,
272
+ device: stats?.dev,
273
+ inode: stats?.ino,
274
+ mtimeMs: stats?.mtimeMs,
275
+ newestMtimeMs: measurement?.newestMtimeMs,
276
+ fingerprint: measurement?.fingerprint,
277
+ measurementTruncated: measurement?.truncated ?? !this.options.measureBytes,
278
+ specialEntries: measurement?.specialEntries,
279
+ mountBoundaries: measurement?.mountBoundaries,
280
+ mountBoundaryStatus: mountBoundaries.status,
281
+ mountBoundaryPaths: mountBoundaries.paths,
282
+ mountBoundaryReason: mountBoundaries.status === "unknown" ? mountBoundaries.reason : undefined,
283
+ ageMinutes: measurement === undefined
284
+ ? undefined
285
+ : Math.max(0, (context.now.getTime() - measurement.newestMtimeMs) / 60_000),
286
+ hasSubmodules,
287
+ platform: this.options.platform,
251
288
  staged,
252
289
  modified,
253
290
  untracked,
254
291
  conflicted,
255
- dirty: staged + modified + untracked + conflicted > 0,
292
+ ignored,
293
+ statusSuppressedEntries,
294
+ dirty: staged + modified + untracked + conflicted + ignored > 0,
256
295
  ahead,
257
296
  behind: status?.behind ?? 0,
258
297
  operations: [...operations].sort(),
@@ -272,6 +311,7 @@ export class GitWorktreeAuditAdapter {
272
311
  inspectionComplete,
273
312
  reportOnly: true,
274
313
  },
314
+ ...(measurement === undefined ? {} : { measuredBytes: measurement.bytes }),
275
315
  });
276
316
  }
277
317
  if (records.length === 0) {
@@ -290,6 +330,22 @@ export class GitWorktreeAuditAdapter {
290
330
  detail: "The main worktree is always protected.",
291
331
  });
292
332
  }
333
+ if (!["darwin", "linux"].includes(String(resource.facts.platform))) {
334
+ roots.push({
335
+ code: "worktree-mutation-unsupported",
336
+ source: "git",
337
+ observedAt,
338
+ detail: "Recoverable worktree quarantine is supported only on macOS and Linux.",
339
+ });
340
+ }
341
+ if (resource.facts.bare === true || resource.facts.prunable !== undefined) {
342
+ roots.push({
343
+ code: "worktree-registration-unsafe",
344
+ source: "git",
345
+ observedAt,
346
+ detail: "Bare or prunable worktree registrations are not quarantine candidates.",
347
+ });
348
+ }
293
349
  if (resource.facts.locked !== undefined) {
294
350
  roots.push({
295
351
  code: "git-lock",
@@ -303,7 +359,16 @@ export class GitWorktreeAuditAdapter {
303
359
  code: "dirty-worktree",
304
360
  source: "git",
305
361
  observedAt,
306
- detail: "Git reports staged, modified, conflicted, or untracked work.",
362
+ detail: "Git reports staged, modified, conflicted, untracked, or ignored work.",
363
+ });
364
+ }
365
+ if (typeof resource.facts.statusSuppressedEntries === "number" &&
366
+ resource.facts.statusSuppressedEntries > 0) {
367
+ roots.push({
368
+ code: "git-status-suppressed",
369
+ source: "git",
370
+ observedAt,
371
+ detail: "Git index flags suppress status visibility for one or more tracked paths.",
307
372
  });
308
373
  }
309
374
  if (Array.isArray(resource.facts.operations) && resource.facts.operations.length > 0) {
@@ -346,14 +411,76 @@ export class GitWorktreeAuditAdapter {
346
411
  detail: "No configured remote is available for reachability proof.",
347
412
  });
348
413
  }
349
- if (resource.facts.detached === true &&
350
- resource.facts.localReachable !== true &&
351
- resource.facts.remoteReachable !== true) {
414
+ if (resource.facts.detached === true) {
415
+ roots.push({
416
+ code: "detached-worktree",
417
+ source: "git",
418
+ observedAt,
419
+ detail: "Detached worktrees are outside the 0.3 quarantine boundary.",
420
+ });
421
+ }
422
+ if (resource.resource.path !== undefined &&
423
+ basename(resource.resource.path) === ".agentrinse-quarantine") {
424
+ roots.push({
425
+ code: "worktree-quarantine-path-reserved",
426
+ source: "git",
427
+ observedAt,
428
+ detail: "A worktree cannot use AgentRinse's reserved quarantine container path.",
429
+ });
430
+ }
431
+ if (typeof resource.facts.head !== "string" ||
432
+ typeof resource.facts.branch !== "string" ||
433
+ typeof resource.facts.repositoryCommonDir !== "string") {
352
434
  roots.push({
353
- code: "unreachable-detached-commit",
435
+ code: "worktree-identity-incomplete",
354
436
  source: "git",
355
437
  observedAt,
356
- detail: "The detached HEAD is not contained by a local or remote-tracking ref.",
438
+ detail: "Worktree HEAD, branch, or common Git directory could not be proven.",
439
+ });
440
+ }
441
+ if (resource.facts.hasSubmodules === true) {
442
+ roots.push({
443
+ code: "worktree-submodules",
444
+ source: "git",
445
+ observedAt,
446
+ detail: "Worktrees containing gitlink entries are not quarantine candidates.",
447
+ });
448
+ }
449
+ if (resource.measuredBytes === undefined ||
450
+ resource.facts.measurementTruncated === true ||
451
+ typeof resource.facts.fingerprint !== "string") {
452
+ roots.push({
453
+ code: "worktree-measurement-incomplete",
454
+ source: "git",
455
+ observedAt,
456
+ detail: "Worktree contents could not be measured completely.",
457
+ });
458
+ }
459
+ if ((typeof resource.facts.specialEntries === "number" && resource.facts.specialEntries > 0) ||
460
+ (typeof resource.facts.mountBoundaries === "number" && resource.facts.mountBoundaries > 0) ||
461
+ resource.facts.mountBoundaryStatus === "blocked") {
462
+ roots.push({
463
+ code: "worktree-filesystem-boundary",
464
+ source: "git",
465
+ observedAt,
466
+ detail: "Worktree contents include an unsupported filesystem entry or mount boundary.",
467
+ });
468
+ }
469
+ if (resource.facts.mountBoundaryStatus !== "clear") {
470
+ roots.push({
471
+ code: "worktree-mount-inspection-incomplete",
472
+ source: "git",
473
+ observedAt,
474
+ detail: "Filesystem mount boundaries could not be proven absent.",
475
+ });
476
+ }
477
+ if (typeof resource.facts.ageMinutes !== "number" ||
478
+ resource.facts.ageMinutes < this.options.minAgeMinutes) {
479
+ roots.push({
480
+ code: "recent-resource",
481
+ source: "git",
482
+ observedAt,
483
+ detail: `Worktree is newer than ${this.options.minAgeMinutes} minutes.`,
357
484
  });
358
485
  }
359
486
  if (resource.facts.inspectionComplete !== true) {
@@ -365,26 +492,60 @@ export class GitWorktreeAuditAdapter {
365
492
  });
366
493
  }
367
494
  roots.push(...(this.reachability?.rootsForResource(resource.resource, resource.facts, observedAt) ?? []));
368
- roots.push({
369
- code: "worktree-removal-unavailable",
370
- source: "git",
371
- observedAt,
372
- detail: "AgentRinse 0.2 reports reachability but does not remove worktrees.",
373
- });
374
495
  roots.sort((left, right) => left.code.localeCompare(right.code));
496
+ const eligible = resource.exists && roots.length === 0;
497
+ const candidateActions = eligible ? [this.actionFor(resource)] : [];
375
498
  return {
376
499
  schemaVersion: 1,
377
500
  findingId: `${resource.resource.id}:${sha256(context.auditId)}`,
378
501
  auditId: context.auditId,
379
502
  observedAt,
380
503
  resource: resource.resource,
381
- state: resource.exists && resource.facts.inspectionComplete === true ? "protected" : "unknown",
504
+ state: eligible
505
+ ? "eligible"
506
+ : resource.exists && resource.facts.inspectionComplete === true
507
+ ? "protected"
508
+ : "unknown",
382
509
  confidence: resource.exists && resource.facts.inspectionComplete === true ? "certain" : "unknown",
383
510
  roots,
384
511
  facts: resource.facts,
385
- candidateActions: [],
512
+ candidateActions,
513
+ ...(resource.measuredBytes === undefined
514
+ ? {}
515
+ : {
516
+ measuredBytes: resource.measuredBytes,
517
+ estimatedReclaimBytes: 0,
518
+ }),
386
519
  warnings: [],
387
520
  };
388
521
  }
522
+ actionFor(resource) {
523
+ const facts = resource.facts;
524
+ const branch = typeof facts.branch === "string" ? (branchRef(facts.branch) ?? facts.branch) : undefined;
525
+ const target = {
526
+ path: resource.resource.path,
527
+ repositoryCommonDir: String(facts.repositoryCommonDir),
528
+ head: String(facts.head),
529
+ ...(branch === undefined ? {} : { branch }),
530
+ device: Number(facts.device),
531
+ inode: Number(facts.inode),
532
+ mtimeMs: Number(facts.mtimeMs),
533
+ measuredBytes: resource.measuredBytes,
534
+ newestMtimeMs: Number(facts.newestMtimeMs),
535
+ fingerprint: String(facts.fingerprint),
536
+ };
537
+ return {
538
+ actionId: `worktree.quarantine:${sha256(JSON.stringify(target))}`,
539
+ type: "worktree.quarantine",
540
+ adapter: "git",
541
+ resourceId: resource.resource.id,
542
+ risk: "recoverable",
543
+ description: `Quarantine inactive linked worktree ${target.path}`,
544
+ expectedReclaimBytes: 0,
545
+ pendingQuarantineBytes: target.measuredBytes,
546
+ quarantineTtlMinutes: this.options.quarantineTtlMinutes,
547
+ target,
548
+ };
549
+ }
389
550
  }
390
551
  //# sourceMappingURL=adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/git/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/git/adapter.ts"],"names":[],"mappings":"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"}