agentrinse 0.0.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 (174) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +153 -0
  3. package/dist/adapters/artifacts/adapter.d.ts +24 -0
  4. package/dist/adapters/artifacts/adapter.d.ts.map +1 -0
  5. package/dist/adapters/artifacts/adapter.js +342 -0
  6. package/dist/adapters/artifacts/adapter.js.map +1 -0
  7. package/dist/adapters/docker/adapter.d.ts +15 -0
  8. package/dist/adapters/docker/adapter.d.ts.map +1 -0
  9. package/dist/adapters/docker/adapter.js +121 -0
  10. package/dist/adapters/docker/adapter.js.map +1 -0
  11. package/dist/adapters/git/adapter.d.ts +15 -0
  12. package/dist/adapters/git/adapter.d.ts.map +1 -0
  13. package/dist/adapters/git/adapter.js +156 -0
  14. package/dist/adapters/git/adapter.js.map +1 -0
  15. package/dist/adapters/git/porcelain.d.ts +11 -0
  16. package/dist/adapters/git/porcelain.d.ts.map +1 -0
  17. package/dist/adapters/git/porcelain.js +54 -0
  18. package/dist/adapters/git/porcelain.js.map +1 -0
  19. package/dist/adapters/provider-adapter.d.ts +22 -0
  20. package/dist/adapters/provider-adapter.d.ts.map +1 -0
  21. package/dist/adapters/provider-adapter.js +178 -0
  22. package/dist/adapters/provider-adapter.js.map +1 -0
  23. package/dist/adapters/provider-specs.d.ts +16 -0
  24. package/dist/adapters/provider-specs.d.ts.map +1 -0
  25. package/dist/adapters/provider-specs.js +157 -0
  26. package/dist/adapters/provider-specs.js.map +1 -0
  27. package/dist/adapters/registry.d.ts +4 -0
  28. package/dist/adapters/registry.d.ts.map +1 -0
  29. package/dist/adapters/registry.js +28 -0
  30. package/dist/adapters/registry.js.map +1 -0
  31. package/dist/cli.d.ts +3 -0
  32. package/dist/cli.d.ts.map +1 -0
  33. package/dist/cli.js +8 -0
  34. package/dist/cli.js.map +1 -0
  35. package/dist/commands/adapters.d.ts +2 -0
  36. package/dist/commands/adapters.d.ts.map +1 -0
  37. package/dist/commands/adapters.js +17 -0
  38. package/dist/commands/adapters.js.map +1 -0
  39. package/dist/commands/apply.d.ts +15 -0
  40. package/dist/commands/apply.d.ts.map +1 -0
  41. package/dist/commands/apply.js +63 -0
  42. package/dist/commands/apply.js.map +1 -0
  43. package/dist/commands/audit.d.ts +13 -0
  44. package/dist/commands/audit.d.ts.map +1 -0
  45. package/dist/commands/audit.js +22 -0
  46. package/dist/commands/audit.js.map +1 -0
  47. package/dist/commands/plan.d.ts +12 -0
  48. package/dist/commands/plan.d.ts.map +1 -0
  49. package/dist/commands/plan.js +19 -0
  50. package/dist/commands/plan.js.map +1 -0
  51. package/dist/config/defaults.d.ts +3 -0
  52. package/dist/config/defaults.d.ts.map +1 -0
  53. package/dist/config/defaults.js +29 -0
  54. package/dist/config/defaults.js.map +1 -0
  55. package/dist/config/load.d.ts +3 -0
  56. package/dist/config/load.d.ts.map +1 -0
  57. package/dist/config/load.js +31 -0
  58. package/dist/config/load.js.map +1 -0
  59. package/dist/config/schema.d.ts +84 -0
  60. package/dist/config/schema.d.ts.map +1 -0
  61. package/dist/config/schema.js +108 -0
  62. package/dist/config/schema.js.map +1 -0
  63. package/dist/contracts/action.d.ts +109 -0
  64. package/dist/contracts/action.d.ts.map +1 -0
  65. package/dist/contracts/action.js +37 -0
  66. package/dist/contracts/action.js.map +1 -0
  67. package/dist/contracts/adapter.d.ts +21 -0
  68. package/dist/contracts/adapter.d.ts.map +1 -0
  69. package/dist/contracts/adapter.js +2 -0
  70. package/dist/contracts/adapter.js.map +1 -0
  71. package/dist/contracts/diagnostic.d.ts +21 -0
  72. package/dist/contracts/diagnostic.d.ts.map +1 -0
  73. package/dist/contracts/diagnostic.js +11 -0
  74. package/dist/contracts/diagnostic.js.map +1 -0
  75. package/dist/contracts/finding.d.ts +123 -0
  76. package/dist/contracts/finding.d.ts.map +1 -0
  77. package/dist/contracts/finding.js +35 -0
  78. package/dist/contracts/finding.js.map +1 -0
  79. package/dist/contracts/plan.d.ts +53 -0
  80. package/dist/contracts/plan.d.ts.map +1 -0
  81. package/dist/contracts/plan.js +56 -0
  82. package/dist/contracts/plan.js.map +1 -0
  83. package/dist/contracts/report.d.ts +177 -0
  84. package/dist/contracts/report.d.ts.map +1 -0
  85. package/dist/contracts/report.js +29 -0
  86. package/dist/contracts/report.js.map +1 -0
  87. package/dist/contracts/resource.d.ts +72 -0
  88. package/dist/contracts/resource.d.ts.map +1 -0
  89. package/dist/contracts/resource.js +33 -0
  90. package/dist/contracts/resource.js.map +1 -0
  91. package/dist/contracts/run.d.ts +108 -0
  92. package/dist/contracts/run.d.ts.map +1 -0
  93. package/dist/contracts/run.js +35 -0
  94. package/dist/contracts/run.js.map +1 -0
  95. package/dist/core/apply.d.ts +29 -0
  96. package/dist/core/apply.d.ts.map +1 -0
  97. package/dist/core/apply.js +120 -0
  98. package/dist/core/apply.js.map +1 -0
  99. package/dist/core/artifact-executor.d.ts +39 -0
  100. package/dist/core/artifact-executor.d.ts.map +1 -0
  101. package/dist/core/artifact-executor.js +200 -0
  102. package/dist/core/artifact-executor.js.map +1 -0
  103. package/dist/core/artifact-revalidation.d.ts +22 -0
  104. package/dist/core/artifact-revalidation.d.ts.map +1 -0
  105. package/dist/core/artifact-revalidation.js +113 -0
  106. package/dist/core/artifact-revalidation.js.map +1 -0
  107. package/dist/core/audit.d.ts +12 -0
  108. package/dist/core/audit.d.ts.map +1 -0
  109. package/dist/core/audit.js +41 -0
  110. package/dist/core/audit.js.map +1 -0
  111. package/dist/core/digest.d.ts +7 -0
  112. package/dist/core/digest.d.ts.map +1 -0
  113. package/dist/core/digest.js +21 -0
  114. package/dist/core/digest.js.map +1 -0
  115. package/dist/core/measure.d.ts +16 -0
  116. package/dist/core/measure.d.ts.map +1 -0
  117. package/dist/core/measure.js +79 -0
  118. package/dist/core/measure.js.map +1 -0
  119. package/dist/core/mount-boundaries.d.ts +21 -0
  120. package/dist/core/mount-boundaries.d.ts.map +1 -0
  121. package/dist/core/mount-boundaries.js +72 -0
  122. package/dist/core/mount-boundaries.js.map +1 -0
  123. package/dist/core/plan-verification.d.ts +10 -0
  124. package/dist/core/plan-verification.d.ts.map +1 -0
  125. package/dist/core/plan-verification.js +42 -0
  126. package/dist/core/plan-verification.js.map +1 -0
  127. package/dist/core/plan.d.ts +6 -0
  128. package/dist/core/plan.d.ts.map +1 -0
  129. package/dist/core/plan.js +40 -0
  130. package/dist/core/plan.js.map +1 -0
  131. package/dist/core/process-ownership.d.ts +27 -0
  132. package/dist/core/process-ownership.d.ts.map +1 -0
  133. package/dist/core/process-ownership.js +140 -0
  134. package/dist/core/process-ownership.js.map +1 -0
  135. package/dist/core/safety.d.ts +7 -0
  136. package/dist/core/safety.d.ts.map +1 -0
  137. package/dist/core/safety.js +50 -0
  138. package/dist/core/safety.js.map +1 -0
  139. package/dist/index.d.ts +9 -0
  140. package/dist/index.d.ts.map +1 -0
  141. package/dist/index.js +9 -0
  142. package/dist/index.js.map +1 -0
  143. package/dist/main.d.ts +4 -0
  144. package/dist/main.d.ts.map +1 -0
  145. package/dist/main.js +59 -0
  146. package/dist/main.js.map +1 -0
  147. package/dist/output.d.ts +4 -0
  148. package/dist/output.d.ts.map +1 -0
  149. package/dist/output.js +35 -0
  150. package/dist/output.js.map +1 -0
  151. package/dist/state/json-file.d.ts +4 -0
  152. package/dist/state/json-file.d.ts.map +1 -0
  153. package/dist/state/json-file.js +36 -0
  154. package/dist/state/json-file.js.map +1 -0
  155. package/dist/state/layout.d.ts +12 -0
  156. package/dist/state/layout.d.ts.map +1 -0
  157. package/dist/state/layout.js +20 -0
  158. package/dist/state/layout.js.map +1 -0
  159. package/dist/state/lock.d.ts +9 -0
  160. package/dist/state/lock.d.ts.map +1 -0
  161. package/dist/state/lock.js +93 -0
  162. package/dist/state/lock.js.map +1 -0
  163. package/dist/state/run-journal.d.ts +10 -0
  164. package/dist/state/run-journal.d.ts.map +1 -0
  165. package/dist/state/run-journal.js +57 -0
  166. package/dist/state/run-journal.js.map +1 -0
  167. package/dist/version.d.ts +2 -0
  168. package/dist/version.d.ts.map +1 -0
  169. package/dist/version.js +2 -0
  170. package/dist/version.js.map +1 -0
  171. package/package.json +73 -0
  172. package/schemas/audit.schema.json +424 -0
  173. package/schemas/plan.schema.json +184 -0
  174. package/schemas/run.schema.json +161 -0
@@ -0,0 +1,177 @@
1
+ import { z } from "zod";
2
+ export declare const adapterStatusSchema: z.ZodEnum<{
3
+ absent: "absent";
4
+ available: "available";
5
+ degraded: "degraded";
6
+ disabled: "disabled";
7
+ unsupported: "unsupported";
8
+ }>;
9
+ export declare const adapterProbeSchema: z.ZodObject<{
10
+ adapter: z.ZodString;
11
+ status: z.ZodEnum<{
12
+ absent: "absent";
13
+ available: "available";
14
+ degraded: "degraded";
15
+ disabled: "disabled";
16
+ unsupported: "unsupported";
17
+ }>;
18
+ version: z.ZodOptional<z.ZodString>;
19
+ root: z.ZodOptional<z.ZodString>;
20
+ detail: z.ZodString;
21
+ diagnostics: z.ZodArray<z.ZodObject<{
22
+ severity: z.ZodEnum<{
23
+ error: "error";
24
+ info: "info";
25
+ warning: "warning";
26
+ }>;
27
+ code: z.ZodString;
28
+ message: z.ZodString;
29
+ adapter: z.ZodOptional<z.ZodString>;
30
+ resourceId: z.ZodOptional<z.ZodString>;
31
+ remediation: z.ZodOptional<z.ZodString>;
32
+ }, z.core.$strip>>;
33
+ }, z.core.$strip>;
34
+ export declare const auditReportSchema: z.ZodObject<{
35
+ schemaVersion: z.ZodLiteral<1>;
36
+ auditId: z.ZodString;
37
+ startedAt: z.ZodString;
38
+ completedAt: z.ZodString;
39
+ home: z.ZodString;
40
+ probes: z.ZodArray<z.ZodObject<{
41
+ adapter: z.ZodString;
42
+ status: z.ZodEnum<{
43
+ absent: "absent";
44
+ available: "available";
45
+ degraded: "degraded";
46
+ disabled: "disabled";
47
+ unsupported: "unsupported";
48
+ }>;
49
+ version: z.ZodOptional<z.ZodString>;
50
+ root: z.ZodOptional<z.ZodString>;
51
+ detail: z.ZodString;
52
+ diagnostics: z.ZodArray<z.ZodObject<{
53
+ severity: z.ZodEnum<{
54
+ error: "error";
55
+ info: "info";
56
+ warning: "warning";
57
+ }>;
58
+ code: z.ZodString;
59
+ message: z.ZodString;
60
+ adapter: z.ZodOptional<z.ZodString>;
61
+ resourceId: z.ZodOptional<z.ZodString>;
62
+ remediation: z.ZodOptional<z.ZodString>;
63
+ }, z.core.$strip>>;
64
+ }, z.core.$strip>>;
65
+ findings: z.ZodArray<z.ZodObject<{
66
+ schemaVersion: z.ZodLiteral<1>;
67
+ findingId: z.ZodString;
68
+ auditId: z.ZodString;
69
+ observedAt: z.ZodString;
70
+ resource: z.ZodObject<{
71
+ id: z.ZodString;
72
+ adapter: z.ZodString;
73
+ kind: z.ZodEnum<{
74
+ "agent-database": "agent-database";
75
+ "agent-home": "agent-home";
76
+ "agent-log-store": "agent-log-store";
77
+ "agent-runtime": "agent-runtime";
78
+ "agent-session-store": "agent-session-store";
79
+ "agent-snapshot-store": "agent-snapshot-store";
80
+ "build-artifact": "build-artifact";
81
+ "docker-build-cache": "docker-build-cache";
82
+ "docker-container": "docker-container";
83
+ "docker-image": "docker-image";
84
+ "docker-network": "docker-network";
85
+ "docker-volume": "docker-volume";
86
+ "git-worktree": "git-worktree";
87
+ }>;
88
+ canonicalKey: z.ZodString;
89
+ displayName: z.ZodString;
90
+ path: z.ZodOptional<z.ZodString>;
91
+ externalId: z.ZodOptional<z.ZodString>;
92
+ }, z.core.$strip>;
93
+ state: z.ZodEnum<{
94
+ blocked: "blocked";
95
+ eligible: "eligible";
96
+ ignored: "ignored";
97
+ protected: "protected";
98
+ unknown: "unknown";
99
+ }>;
100
+ confidence: z.ZodEnum<{
101
+ certain: "certain";
102
+ high: "high";
103
+ low: "low";
104
+ medium: "medium";
105
+ unknown: "unknown";
106
+ }>;
107
+ roots: z.ZodArray<z.ZodObject<{
108
+ code: z.ZodString;
109
+ source: z.ZodString;
110
+ observedAt: z.ZodString;
111
+ detail: z.ZodString;
112
+ evidenceRef: z.ZodOptional<z.ZodString>;
113
+ }, z.core.$strip>>;
114
+ facts: z.ZodRecord<z.ZodString, z.ZodUnknown>;
115
+ candidateActions: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
116
+ actionId: z.ZodString;
117
+ type: z.ZodLiteral<"artifacts.remove">;
118
+ adapter: z.ZodLiteral<"artifacts">;
119
+ resourceId: z.ZodString;
120
+ risk: z.ZodLiteral<"safe">;
121
+ description: z.ZodString;
122
+ expectedReclaimBytes: z.ZodNumber;
123
+ target: z.ZodObject<{
124
+ path: z.ZodString;
125
+ projectRoot: z.ZodString;
126
+ name: z.ZodEnum<{
127
+ ".cache": ".cache";
128
+ ".next": ".next";
129
+ ".turbo": ".turbo";
130
+ ".venv": ".venv";
131
+ build: "build";
132
+ coverage: "coverage";
133
+ dist: "dist";
134
+ "dist-runtime": "dist-runtime";
135
+ node_modules: "node_modules";
136
+ target: "target";
137
+ }>;
138
+ device: z.ZodNumber;
139
+ inode: z.ZodNumber;
140
+ mtimeMs: z.ZodNumber;
141
+ measuredBytes: z.ZodNumber;
142
+ newestMtimeMs: z.ZodNumber;
143
+ fingerprint: z.ZodString;
144
+ }, z.core.$strip>;
145
+ }, z.core.$strip>], "type">>>;
146
+ measuredBytes: z.ZodOptional<z.ZodNumber>;
147
+ estimatedReclaimBytes: z.ZodOptional<z.ZodNumber>;
148
+ warnings: z.ZodArray<z.ZodObject<{
149
+ severity: z.ZodEnum<{
150
+ error: "error";
151
+ info: "info";
152
+ warning: "warning";
153
+ }>;
154
+ code: z.ZodString;
155
+ message: z.ZodString;
156
+ adapter: z.ZodOptional<z.ZodString>;
157
+ resourceId: z.ZodOptional<z.ZodString>;
158
+ remediation: z.ZodOptional<z.ZodString>;
159
+ }, z.core.$strip>>;
160
+ }, z.core.$strip>>;
161
+ diagnostics: z.ZodArray<z.ZodObject<{
162
+ severity: z.ZodEnum<{
163
+ error: "error";
164
+ info: "info";
165
+ warning: "warning";
166
+ }>;
167
+ code: z.ZodString;
168
+ message: z.ZodString;
169
+ adapter: z.ZodOptional<z.ZodString>;
170
+ resourceId: z.ZodOptional<z.ZodString>;
171
+ remediation: z.ZodOptional<z.ZodString>;
172
+ }, z.core.$strip>>;
173
+ }, z.core.$strip>;
174
+ export type AdapterStatus = z.infer<typeof adapterStatusSchema>;
175
+ export type AdapterProbe = z.infer<typeof adapterProbeSchema>;
176
+ export type AuditReport = z.infer<typeof auditReportSchema>;
177
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/contracts/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,mBAAmB;;;;;;EAM9B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;iBAO7B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAS5B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { z } from "zod";
2
+ import { diagnosticSchema } from "./diagnostic.js";
3
+ import { findingSchema } from "./finding.js";
4
+ export const adapterStatusSchema = z.enum([
5
+ "available",
6
+ "absent",
7
+ "degraded",
8
+ "disabled",
9
+ "unsupported",
10
+ ]);
11
+ export const adapterProbeSchema = z.object({
12
+ adapter: z.string().min(1),
13
+ status: adapterStatusSchema,
14
+ version: z.string().min(1).optional(),
15
+ root: z.string().min(1).optional(),
16
+ detail: z.string().min(1),
17
+ diagnostics: z.array(diagnosticSchema),
18
+ });
19
+ export const auditReportSchema = z.object({
20
+ schemaVersion: z.literal(1),
21
+ auditId: z.string().min(1),
22
+ startedAt: z.string().datetime(),
23
+ completedAt: z.string().datetime(),
24
+ home: z.string().min(1),
25
+ probes: z.array(adapterProbeSchema),
26
+ findings: z.array(findingSchema),
27
+ diagnostics: z.array(diagnosticSchema),
28
+ });
29
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/contracts/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC;IACxC,WAAW;IACX,QAAQ;IACR,UAAU;IACV,UAAU;IACV,aAAa;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,mBAAmB;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;IAChC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;CACvC,CAAC,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { z } from "zod";
2
+ export declare const resourceKindSchema: z.ZodEnum<{
3
+ "agent-database": "agent-database";
4
+ "agent-home": "agent-home";
5
+ "agent-log-store": "agent-log-store";
6
+ "agent-runtime": "agent-runtime";
7
+ "agent-session-store": "agent-session-store";
8
+ "agent-snapshot-store": "agent-snapshot-store";
9
+ "build-artifact": "build-artifact";
10
+ "docker-build-cache": "docker-build-cache";
11
+ "docker-container": "docker-container";
12
+ "docker-image": "docker-image";
13
+ "docker-network": "docker-network";
14
+ "docker-volume": "docker-volume";
15
+ "git-worktree": "git-worktree";
16
+ }>;
17
+ export declare const resourceRefSchema: z.ZodObject<{
18
+ id: z.ZodString;
19
+ adapter: z.ZodString;
20
+ kind: z.ZodEnum<{
21
+ "agent-database": "agent-database";
22
+ "agent-home": "agent-home";
23
+ "agent-log-store": "agent-log-store";
24
+ "agent-runtime": "agent-runtime";
25
+ "agent-session-store": "agent-session-store";
26
+ "agent-snapshot-store": "agent-snapshot-store";
27
+ "build-artifact": "build-artifact";
28
+ "docker-build-cache": "docker-build-cache";
29
+ "docker-container": "docker-container";
30
+ "docker-image": "docker-image";
31
+ "docker-network": "docker-network";
32
+ "docker-volume": "docker-volume";
33
+ "git-worktree": "git-worktree";
34
+ }>;
35
+ canonicalKey: z.ZodString;
36
+ displayName: z.ZodString;
37
+ path: z.ZodOptional<z.ZodString>;
38
+ externalId: z.ZodOptional<z.ZodString>;
39
+ }, z.core.$strip>;
40
+ export declare const resourceSnapshotSchema: z.ZodObject<{
41
+ resource: z.ZodObject<{
42
+ id: z.ZodString;
43
+ adapter: z.ZodString;
44
+ kind: z.ZodEnum<{
45
+ "agent-database": "agent-database";
46
+ "agent-home": "agent-home";
47
+ "agent-log-store": "agent-log-store";
48
+ "agent-runtime": "agent-runtime";
49
+ "agent-session-store": "agent-session-store";
50
+ "agent-snapshot-store": "agent-snapshot-store";
51
+ "build-artifact": "build-artifact";
52
+ "docker-build-cache": "docker-build-cache";
53
+ "docker-container": "docker-container";
54
+ "docker-image": "docker-image";
55
+ "docker-network": "docker-network";
56
+ "docker-volume": "docker-volume";
57
+ "git-worktree": "git-worktree";
58
+ }>;
59
+ canonicalKey: z.ZodString;
60
+ displayName: z.ZodString;
61
+ path: z.ZodOptional<z.ZodString>;
62
+ externalId: z.ZodOptional<z.ZodString>;
63
+ }, z.core.$strip>;
64
+ observedAt: z.ZodString;
65
+ exists: z.ZodBoolean;
66
+ measuredBytes: z.ZodOptional<z.ZodNumber>;
67
+ facts: z.ZodRecord<z.ZodString, z.ZodUnknown>;
68
+ }, z.core.$strip>;
69
+ export type ResourceKind = z.infer<typeof resourceKindSchema>;
70
+ export type ResourceRef = z.infer<typeof resourceRefSchema>;
71
+ export type ResourceSnapshot = z.infer<typeof resourceSnapshotSchema>;
72
+ //# sourceMappingURL=resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/contracts/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;EAc7B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;iBAQ5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMjC,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ export const resourceKindSchema = z.enum([
3
+ "git-worktree",
4
+ "build-artifact",
5
+ "agent-home",
6
+ "agent-session-store",
7
+ "agent-log-store",
8
+ "agent-database",
9
+ "agent-snapshot-store",
10
+ "agent-runtime",
11
+ "docker-container",
12
+ "docker-image",
13
+ "docker-network",
14
+ "docker-volume",
15
+ "docker-build-cache",
16
+ ]);
17
+ export const resourceRefSchema = z.object({
18
+ id: z.string().min(1),
19
+ adapter: z.string().min(1),
20
+ kind: resourceKindSchema,
21
+ canonicalKey: z.string().min(1),
22
+ displayName: z.string().min(1),
23
+ path: z.string().min(1).optional(),
24
+ externalId: z.string().min(1).optional(),
25
+ });
26
+ export const resourceSnapshotSchema = z.object({
27
+ resource: resourceRefSchema,
28
+ observedAt: z.string().datetime(),
29
+ exists: z.boolean(),
30
+ measuredBytes: z.number().int().nonnegative().optional(),
31
+ facts: z.record(z.string(), z.unknown()),
32
+ });
33
+ //# sourceMappingURL=resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/contracts/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC;IACvC,cAAc;IACd,gBAAgB;IAChB,YAAY;IACZ,qBAAqB;IACrB,iBAAiB;IACjB,gBAAgB;IAChB,sBAAsB;IACtB,eAAe;IACf,kBAAkB;IAClB,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,oBAAoB;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,kBAAkB;IACxB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,QAAQ,EAAE,iBAAiB;IAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACxD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;CACzC,CAAC,CAAC"}
@@ -0,0 +1,108 @@
1
+ import { z } from "zod";
2
+ export declare const actionExecutionStatusSchema: z.ZodEnum<{
3
+ applied: "applied";
4
+ applying: "applying";
5
+ failed: "failed";
6
+ "partially-applied": "partially-applied";
7
+ pending: "pending";
8
+ revalidating: "revalidating";
9
+ "rolled-back": "rolled-back";
10
+ "skipped-stale": "skipped-stale";
11
+ }>;
12
+ export declare const actionExecutionSchema: z.ZodObject<{
13
+ actionId: z.ZodString;
14
+ type: z.ZodLiteral<"artifacts.remove">;
15
+ status: z.ZodEnum<{
16
+ applied: "applied";
17
+ applying: "applying";
18
+ failed: "failed";
19
+ "partially-applied": "partially-applied";
20
+ pending: "pending";
21
+ revalidating: "revalidating";
22
+ "rolled-back": "rolled-back";
23
+ "skipped-stale": "skipped-stale";
24
+ }>;
25
+ startedAt: z.ZodOptional<z.ZodString>;
26
+ completedAt: z.ZodOptional<z.ZodString>;
27
+ reclaimedBytes: z.ZodOptional<z.ZodNumber>;
28
+ isolationPath: z.ZodOptional<z.ZodString>;
29
+ diagnostic: z.ZodOptional<z.ZodObject<{
30
+ severity: z.ZodEnum<{
31
+ error: "error";
32
+ info: "info";
33
+ warning: "warning";
34
+ }>;
35
+ code: z.ZodString;
36
+ message: z.ZodString;
37
+ adapter: z.ZodOptional<z.ZodString>;
38
+ resourceId: z.ZodOptional<z.ZodString>;
39
+ remediation: z.ZodOptional<z.ZodString>;
40
+ }, z.core.$strip>>;
41
+ }, z.core.$strip>;
42
+ export declare const runStatusSchema: z.ZodEnum<{
43
+ completed: "completed";
44
+ failed: "failed";
45
+ partial: "partial";
46
+ running: "running";
47
+ }>;
48
+ export declare const cleanupRunSchema: z.ZodObject<{
49
+ schemaVersion: z.ZodLiteral<1>;
50
+ runId: z.ZodString;
51
+ planId: z.ZodString;
52
+ startedAt: z.ZodString;
53
+ completedAt: z.ZodOptional<z.ZodString>;
54
+ status: z.ZodEnum<{
55
+ completed: "completed";
56
+ failed: "failed";
57
+ partial: "partial";
58
+ running: "running";
59
+ }>;
60
+ actions: z.ZodArray<z.ZodObject<{
61
+ actionId: z.ZodString;
62
+ type: z.ZodLiteral<"artifacts.remove">;
63
+ status: z.ZodEnum<{
64
+ applied: "applied";
65
+ applying: "applying";
66
+ failed: "failed";
67
+ "partially-applied": "partially-applied";
68
+ pending: "pending";
69
+ revalidating: "revalidating";
70
+ "rolled-back": "rolled-back";
71
+ "skipped-stale": "skipped-stale";
72
+ }>;
73
+ startedAt: z.ZodOptional<z.ZodString>;
74
+ completedAt: z.ZodOptional<z.ZodString>;
75
+ reclaimedBytes: z.ZodOptional<z.ZodNumber>;
76
+ isolationPath: z.ZodOptional<z.ZodString>;
77
+ diagnostic: z.ZodOptional<z.ZodObject<{
78
+ severity: z.ZodEnum<{
79
+ error: "error";
80
+ info: "info";
81
+ warning: "warning";
82
+ }>;
83
+ code: z.ZodString;
84
+ message: z.ZodString;
85
+ adapter: z.ZodOptional<z.ZodString>;
86
+ resourceId: z.ZodOptional<z.ZodString>;
87
+ remediation: z.ZodOptional<z.ZodString>;
88
+ }, z.core.$strip>>;
89
+ }, z.core.$strip>>;
90
+ reclaimedBytes: z.ZodNumber;
91
+ diagnostics: z.ZodArray<z.ZodObject<{
92
+ severity: z.ZodEnum<{
93
+ error: "error";
94
+ info: "info";
95
+ warning: "warning";
96
+ }>;
97
+ code: z.ZodString;
98
+ message: z.ZodString;
99
+ adapter: z.ZodOptional<z.ZodString>;
100
+ resourceId: z.ZodOptional<z.ZodString>;
101
+ remediation: z.ZodOptional<z.ZodString>;
102
+ }, z.core.$strip>>;
103
+ }, z.core.$strip>;
104
+ export type ActionExecutionStatus = z.infer<typeof actionExecutionStatusSchema>;
105
+ export type ActionExecution = z.infer<typeof actionExecutionSchema>;
106
+ export type RunStatus = z.infer<typeof runStatusSchema>;
107
+ export type CleanupRun = z.infer<typeof cleanupRunSchema>;
108
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/contracts/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,2BAA2B;;;;;;;;;EAStC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAShC,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;EAAwD,CAAC;AAErF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAU3B,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { z } from "zod";
2
+ import { diagnosticSchema } from "./diagnostic.js";
3
+ export const actionExecutionStatusSchema = z.enum([
4
+ "pending",
5
+ "revalidating",
6
+ "skipped-stale",
7
+ "applying",
8
+ "applied",
9
+ "failed",
10
+ "rolled-back",
11
+ "partially-applied",
12
+ ]);
13
+ export const actionExecutionSchema = z.object({
14
+ actionId: z.string().min(1),
15
+ type: z.literal("artifacts.remove"),
16
+ status: actionExecutionStatusSchema,
17
+ startedAt: z.string().datetime().optional(),
18
+ completedAt: z.string().datetime().optional(),
19
+ reclaimedBytes: z.number().int().nonnegative().optional(),
20
+ isolationPath: z.string().min(1).optional(),
21
+ diagnostic: diagnosticSchema.optional(),
22
+ });
23
+ export const runStatusSchema = z.enum(["running", "completed", "partial", "failed"]);
24
+ export const cleanupRunSchema = z.object({
25
+ schemaVersion: z.literal(1),
26
+ runId: z.string().min(1),
27
+ planId: z.string().min(1),
28
+ startedAt: z.string().datetime(),
29
+ completedAt: z.string().datetime().optional(),
30
+ status: runStatusSchema,
31
+ actions: z.array(actionExecutionSchema),
32
+ reclaimedBytes: z.number().int().nonnegative(),
33
+ diagnostics: z.array(diagnosticSchema),
34
+ });
35
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/contracts/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,IAAI,CAAC;IAChD,SAAS;IACT,cAAc;IACd,eAAe;IACf,UAAU;IACV,SAAS;IACT,QAAQ;IACR,aAAa;IACb,mBAAmB;CACpB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;IACnC,MAAM,EAAE,2BAA2B;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC3C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACzD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3C,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAErF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;IACvC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC9C,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;CACvC,CAAC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { type AgentRinseConfig } from "../config/schema.js";
2
+ import type { ArtifactRemoveAction } from "../contracts/action.js";
3
+ import type { CleanupPlan } from "../contracts/plan.js";
4
+ import type { CleanupRun } from "../contracts/run.js";
5
+ import { createRunJournal } from "../state/run-journal.js";
6
+ import { type ArtifactExecutionResult } from "./artifact-executor.js";
7
+ import { type ArtifactRevalidationResult } from "./artifact-revalidation.js";
8
+ export declare class ApplySafetyError extends Error {
9
+ readonly name = "ApplySafetyError";
10
+ }
11
+ export type ApplyResult = {
12
+ plan: CleanupPlan;
13
+ run: CleanupRun;
14
+ journalPath: string;
15
+ };
16
+ export type ApplyDependencies = {
17
+ clock?: () => Date;
18
+ createJournal?: typeof createRunJournal;
19
+ revalidate?: (action: ArtifactRemoveAction, home: string, config: AgentRinseConfig) => Promise<ArtifactRevalidationResult>;
20
+ execute?: (action: ArtifactRemoveAction, isolationId: string) => Promise<ArtifactExecutionResult>;
21
+ };
22
+ export type ApplyCleanupPlanOptions = {
23
+ input: unknown;
24
+ config: AgentRinseConfig;
25
+ stateRoot: string;
26
+ dependencies?: ApplyDependencies;
27
+ };
28
+ export declare function applyCleanupPlan(options: ApplyCleanupPlanOptions): Promise<ApplyResult>;
29
+ //# sourceMappingURL=apply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/core/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,4BAA4B,CAAC;AAKpC,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,SAAkB,IAAI,sBAAsB;CAC7C;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,UAAU,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,gBAAgB,CAAC;IACxC,UAAU,CAAC,EAAE,CACX,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,KACrB,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACnG,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,CA6H7F"}
@@ -0,0 +1,120 @@
1
+ import { agentRinseConfigSchema } from "../config/schema.js";
2
+ import { acquireApplyLock } from "../state/lock.js";
3
+ import { stateLayout } from "../state/layout.js";
4
+ import { createRunJournal } from "../state/run-journal.js";
5
+ import { ArtifactExecutionError, artifactIsolationPath, executeArtifactRemove, } from "./artifact-executor.js";
6
+ import { revalidateArtifactRemove, } from "./artifact-revalidation.js";
7
+ import { sha256 } from "./digest.js";
8
+ import { verifyCleanupPlan } from "./plan-verification.js";
9
+ import { isPathInside, resolvePhysicalPath } from "./safety.js";
10
+ export class ApplySafetyError extends Error {
11
+ name = "ApplySafetyError";
12
+ }
13
+ export async function applyCleanupPlan(options) {
14
+ const clock = options.dependencies?.clock ?? (() => new Date());
15
+ const config = agentRinseConfigSchema.parse(options.config);
16
+ const plan = verifyCleanupPlan(options.input, config, clock());
17
+ const layout = stateLayout(options.stateRoot);
18
+ const physicalStateRoot = await resolvePhysicalPath(layout.root);
19
+ for (const action of plan.actions) {
20
+ const physicalTarget = await resolvePhysicalPath(action.target.path);
21
+ if (isPathInside(action.target.path, layout.root) ||
22
+ isPathInside(physicalTarget, physicalStateRoot)) {
23
+ throw new ApplySafetyError(`state directory ${layout.root} must not be inside cleanup target ${action.target.path}`);
24
+ }
25
+ }
26
+ const lock = await acquireApplyLock(layout.locks, plan.planId);
27
+ try {
28
+ const journal = await (options.dependencies?.createJournal ?? createRunJournal)(layout.runs, plan, clock());
29
+ const runId = journal.snapshot().runId;
30
+ for (const action of plan.actions) {
31
+ const startedAt = clock().toISOString();
32
+ await journal.updateAction(action.actionId, {
33
+ status: "revalidating",
34
+ startedAt,
35
+ });
36
+ const revalidation = options.dependencies?.revalidate === undefined
37
+ ? await revalidateArtifactRemove(action, plan.home, config, { now: clock })
38
+ : await options.dependencies.revalidate(action, plan.home, config);
39
+ if (revalidation.status === "stale") {
40
+ await journal.updateAction(action.actionId, {
41
+ status: "skipped-stale",
42
+ completedAt: clock().toISOString(),
43
+ diagnostic: revalidation.diagnostic,
44
+ });
45
+ continue;
46
+ }
47
+ const authorizationCheckedAt = clock();
48
+ if (authorizationCheckedAt.getTime() >= Date.parse(plan.expiresAt)) {
49
+ await journal.updateAction(action.actionId, {
50
+ status: "skipped-stale",
51
+ completedAt: authorizationCheckedAt.toISOString(),
52
+ diagnostic: {
53
+ severity: "warning",
54
+ code: "PLAN_EXPIRED_DURING_APPLY",
55
+ message: `cleanup plan authorization expired at ${plan.expiresAt}`,
56
+ adapter: action.adapter,
57
+ resourceId: action.resourceId,
58
+ },
59
+ });
60
+ continue;
61
+ }
62
+ const isolationId = `${runId}-${sha256(action.actionId).slice(0, 12)}`;
63
+ const isolationPath = artifactIsolationPath(action, isolationId);
64
+ await journal.updateAction(action.actionId, {
65
+ status: "applying",
66
+ isolationPath,
67
+ });
68
+ let result;
69
+ try {
70
+ result = await (options.dependencies?.execute ??
71
+ ((selectedAction, selectedIsolationId) => executeArtifactRemove(selectedAction, {
72
+ id: () => selectedIsolationId,
73
+ maxEntries: config.audit.maxEntries,
74
+ authorization: {
75
+ expiresAtMs: Date.parse(plan.expiresAt),
76
+ now: clock,
77
+ },
78
+ })))(action, isolationId);
79
+ }
80
+ catch (error) {
81
+ const executionError = error instanceof ArtifactExecutionError ? error : undefined;
82
+ await journal.updateAction(action.actionId, {
83
+ status: executionError?.outcome ?? "failed",
84
+ completedAt: clock().toISOString(),
85
+ isolationPath: executionError?.isolationPath ?? isolationPath,
86
+ diagnostic: {
87
+ severity: executionError?.outcome === "skipped-stale" ? "warning" : "error",
88
+ code: executionError?.diagnosticCode ??
89
+ (executionError?.outcome === "skipped-stale"
90
+ ? "ARTIFACT_IDENTITY_CHANGED"
91
+ : executionError?.outcome === "partially-applied"
92
+ ? "ARTIFACT_PARTIALLY_APPLIED"
93
+ : executionError?.outcome === "rolled-back"
94
+ ? "ARTIFACT_ROLLED_BACK"
95
+ : "ARTIFACT_APPLY_FAILED"),
96
+ message: error instanceof Error ? error.message : String(error),
97
+ adapter: action.adapter,
98
+ resourceId: action.resourceId,
99
+ },
100
+ });
101
+ if (executionError?.outcome === "skipped-stale") {
102
+ continue;
103
+ }
104
+ break;
105
+ }
106
+ await journal.updateAction(action.actionId, {
107
+ status: "applied",
108
+ completedAt: clock().toISOString(),
109
+ reclaimedBytes: result.reclaimedBytes,
110
+ isolationPath: result.isolationPath,
111
+ });
112
+ }
113
+ const run = await journal.complete(clock());
114
+ return { plan, run, journalPath: journal.path };
115
+ }
116
+ finally {
117
+ await lock.release();
118
+ }
119
+ }
120
+ //# sourceMappingURL=apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/core/apply.ts"],"names":[],"mappings":"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"}