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,108 @@
1
+ import { isAbsolute, join, relative, resolve } from "node:path";
2
+ import { z } from "zod";
3
+ import { artifactNameSchema } from "../contracts/action.js";
4
+ export const adapterIdSchema = z.enum([
5
+ "codex",
6
+ "claude",
7
+ "cursor",
8
+ "copilot",
9
+ "zed",
10
+ "opencode",
11
+ "grok",
12
+ "git",
13
+ "docker",
14
+ ]);
15
+ const adapterConfigSchema = z.object({
16
+ enabled: z.boolean(),
17
+ root: z.string().min(1).optional(),
18
+ });
19
+ export const artifactProjectSchema = z.object({
20
+ root: z.string().min(1).refine(isAbsolute, "artifact project root must be absolute"),
21
+ names: z
22
+ .array(artifactNameSchema)
23
+ .min(1)
24
+ .refine((names) => new Set(names).size === names.length, "artifact names must be unique"),
25
+ });
26
+ function isInside(root, candidate) {
27
+ const result = relative(resolve(root), resolve(candidate));
28
+ return result === "" || (!result.startsWith("..") && !isAbsolute(result));
29
+ }
30
+ export const agentRinseConfigSchema = z
31
+ .object({
32
+ schemaVersion: z.literal(1),
33
+ adapters: z.partialRecord(adapterIdSchema, adapterConfigSchema.partial()).default(() => ({})),
34
+ audit: z
35
+ .object({
36
+ maxEntries: z.number().int().positive().max(1_000_000).default(100_000),
37
+ measureBytes: z.boolean().default(true),
38
+ })
39
+ .default(() => ({ maxEntries: 100_000, measureBytes: true })),
40
+ artifacts: z
41
+ .object({
42
+ projects: z.array(artifactProjectSchema).default([]),
43
+ minAgeMinutes: z
44
+ .number()
45
+ .int()
46
+ .nonnegative()
47
+ .default(24 * 60),
48
+ minBytes: z
49
+ .number()
50
+ .int()
51
+ .nonnegative()
52
+ .default(64 * 1024 * 1024),
53
+ processCheck: z.literal("required").default("required"),
54
+ })
55
+ .default(() => ({
56
+ projects: [],
57
+ minAgeMinutes: 24 * 60,
58
+ minBytes: 64 * 1024 * 1024,
59
+ processCheck: "required",
60
+ })),
61
+ plan: z
62
+ .object({
63
+ ttlMinutes: z
64
+ .number()
65
+ .int()
66
+ .positive()
67
+ .max(24 * 60)
68
+ .default(30),
69
+ maxRisk: z.enum(["safe", "recoverable", "destructive", "experimental"]).default("safe"),
70
+ })
71
+ .default(() => ({ ttlMinutes: 30, maxRisk: "safe" })),
72
+ })
73
+ .superRefine((config, context) => {
74
+ const roots = new Set();
75
+ const targets = [];
76
+ for (const [projectIndex, project] of config.artifacts.projects.entries()) {
77
+ const root = resolve(project.root);
78
+ if (roots.has(root)) {
79
+ context.addIssue({
80
+ code: "custom",
81
+ message: "artifact project roots must be unique",
82
+ path: ["artifacts", "projects", projectIndex, "root"],
83
+ });
84
+ }
85
+ roots.add(root);
86
+ for (const name of project.names) {
87
+ targets.push({
88
+ path: resolve(join(root, name)),
89
+ projectIndex,
90
+ });
91
+ }
92
+ }
93
+ for (let left = 0; left < targets.length; left += 1) {
94
+ for (let right = left + 1; right < targets.length; right += 1) {
95
+ const first = targets[left];
96
+ const second = targets[right];
97
+ if (isInside(first.path, second.path) || isInside(second.path, first.path)) {
98
+ context.addIssue({
99
+ code: "custom",
100
+ message: "artifact cleanup targets must not overlap",
101
+ path: ["artifacts", "projects", second.projectIndex],
102
+ });
103
+ }
104
+ }
105
+ }
106
+ });
107
+ export { artifactNameSchema };
108
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ import { z } from "zod";
2
+ export declare const actionRiskSchema: z.ZodEnum<{
3
+ destructive: "destructive";
4
+ experimental: "experimental";
5
+ recoverable: "recoverable";
6
+ safe: "safe";
7
+ }>;
8
+ export declare const artifactNameSchema: z.ZodEnum<{
9
+ ".cache": ".cache";
10
+ ".next": ".next";
11
+ ".turbo": ".turbo";
12
+ ".venv": ".venv";
13
+ build: "build";
14
+ coverage: "coverage";
15
+ dist: "dist";
16
+ "dist-runtime": "dist-runtime";
17
+ node_modules: "node_modules";
18
+ target: "target";
19
+ }>;
20
+ export declare const pathIdentitySchema: z.ZodObject<{
21
+ path: z.ZodString;
22
+ projectRoot: z.ZodString;
23
+ name: z.ZodEnum<{
24
+ ".cache": ".cache";
25
+ ".next": ".next";
26
+ ".turbo": ".turbo";
27
+ ".venv": ".venv";
28
+ build: "build";
29
+ coverage: "coverage";
30
+ dist: "dist";
31
+ "dist-runtime": "dist-runtime";
32
+ node_modules: "node_modules";
33
+ target: "target";
34
+ }>;
35
+ device: z.ZodNumber;
36
+ inode: z.ZodNumber;
37
+ mtimeMs: z.ZodNumber;
38
+ measuredBytes: z.ZodNumber;
39
+ newestMtimeMs: z.ZodNumber;
40
+ fingerprint: z.ZodString;
41
+ }, z.core.$strip>;
42
+ export declare const artifactRemoveActionSchema: z.ZodObject<{
43
+ actionId: z.ZodString;
44
+ type: z.ZodLiteral<"artifacts.remove">;
45
+ adapter: z.ZodLiteral<"artifacts">;
46
+ resourceId: z.ZodString;
47
+ risk: z.ZodLiteral<"safe">;
48
+ description: z.ZodString;
49
+ expectedReclaimBytes: z.ZodNumber;
50
+ target: z.ZodObject<{
51
+ path: z.ZodString;
52
+ projectRoot: z.ZodString;
53
+ name: z.ZodEnum<{
54
+ ".cache": ".cache";
55
+ ".next": ".next";
56
+ ".turbo": ".turbo";
57
+ ".venv": ".venv";
58
+ build: "build";
59
+ coverage: "coverage";
60
+ dist: "dist";
61
+ "dist-runtime": "dist-runtime";
62
+ node_modules: "node_modules";
63
+ target: "target";
64
+ }>;
65
+ device: z.ZodNumber;
66
+ inode: z.ZodNumber;
67
+ mtimeMs: z.ZodNumber;
68
+ measuredBytes: z.ZodNumber;
69
+ newestMtimeMs: z.ZodNumber;
70
+ fingerprint: z.ZodString;
71
+ }, z.core.$strip>;
72
+ }, z.core.$strip>;
73
+ export declare const plannedActionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
74
+ actionId: z.ZodString;
75
+ type: z.ZodLiteral<"artifacts.remove">;
76
+ adapter: z.ZodLiteral<"artifacts">;
77
+ resourceId: z.ZodString;
78
+ risk: z.ZodLiteral<"safe">;
79
+ description: z.ZodString;
80
+ expectedReclaimBytes: z.ZodNumber;
81
+ target: z.ZodObject<{
82
+ path: z.ZodString;
83
+ projectRoot: z.ZodString;
84
+ name: z.ZodEnum<{
85
+ ".cache": ".cache";
86
+ ".next": ".next";
87
+ ".turbo": ".turbo";
88
+ ".venv": ".venv";
89
+ build: "build";
90
+ coverage: "coverage";
91
+ dist: "dist";
92
+ "dist-runtime": "dist-runtime";
93
+ node_modules: "node_modules";
94
+ target: "target";
95
+ }>;
96
+ device: z.ZodNumber;
97
+ inode: z.ZodNumber;
98
+ mtimeMs: z.ZodNumber;
99
+ measuredBytes: z.ZodNumber;
100
+ newestMtimeMs: z.ZodNumber;
101
+ fingerprint: z.ZodString;
102
+ }, z.core.$strip>;
103
+ }, z.core.$strip>], "type">;
104
+ export type ActionRisk = z.infer<typeof actionRiskSchema>;
105
+ export type ArtifactName = z.infer<typeof artifactNameSchema>;
106
+ export type PathIdentity = z.infer<typeof pathIdentitySchema>;
107
+ export type ArtifactRemoveAction = z.infer<typeof artifactRemoveActionSchema>;
108
+ export type PlannedAction = z.infer<typeof plannedActionSchema>;
109
+ //# sourceMappingURL=action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/contracts/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;;;EAAiE,CAAC;AAE/F,eAAO,MAAM,kBAAkB;;;;;;;;;;;EAW7B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;iBAU7B,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBASrC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAA6D,CAAC;AAE9F,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { z } from "zod";
2
+ export const actionRiskSchema = z.enum(["safe", "recoverable", "destructive", "experimental"]);
3
+ export const artifactNameSchema = z.enum([
4
+ "node_modules",
5
+ "dist",
6
+ "dist-runtime",
7
+ "build",
8
+ ".next",
9
+ ".turbo",
10
+ ".cache",
11
+ "coverage",
12
+ "target",
13
+ ".venv",
14
+ ]);
15
+ export const pathIdentitySchema = z.object({
16
+ path: z.string().min(1),
17
+ projectRoot: z.string().min(1),
18
+ name: artifactNameSchema,
19
+ device: z.number().int().nonnegative(),
20
+ inode: z.number().int().nonnegative(),
21
+ mtimeMs: z.number().finite(),
22
+ measuredBytes: z.number().int().nonnegative(),
23
+ newestMtimeMs: z.number().finite(),
24
+ fingerprint: z.string().regex(/^[a-f0-9]{64}$/),
25
+ });
26
+ export const artifactRemoveActionSchema = z.object({
27
+ actionId: z.string().min(1),
28
+ type: z.literal("artifacts.remove"),
29
+ adapter: z.literal("artifacts"),
30
+ resourceId: z.string().min(1),
31
+ risk: z.literal("safe"),
32
+ description: z.string().min(1),
33
+ expectedReclaimBytes: z.number().int().nonnegative(),
34
+ target: pathIdentitySchema,
35
+ });
36
+ export const plannedActionSchema = z.discriminatedUnion("type", [artifactRemoveActionSchema]);
37
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/contracts/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;AAE/F,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC;IACvC,cAAc;IACd,MAAM;IACN,cAAc;IACd,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE;IAC5B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC7C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC;CAChD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACpD,MAAM,EAAE,kBAAkB;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { Diagnostic } from "./diagnostic.js";
2
+ import type { Finding } from "./finding.js";
3
+ import type { AdapterProbe } from "./report.js";
4
+ import type { ResourceSnapshot } from "./resource.js";
5
+ export type AuditContext = {
6
+ home: string;
7
+ now: Date;
8
+ auditId: string;
9
+ signal?: AbortSignal;
10
+ };
11
+ export type CollectionResult = {
12
+ resources: ResourceSnapshot[];
13
+ diagnostics: Diagnostic[];
14
+ };
15
+ export interface AuditAdapter {
16
+ readonly id: string;
17
+ probe(context: AuditContext): Promise<AdapterProbe>;
18
+ collect(context: AuditContext, probe: AdapterProbe): Promise<CollectionResult>;
19
+ classify(context: AuditContext, resource: ResourceSnapshot): Promise<Finding>;
20
+ }
21
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/contracts/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,IAAI,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACpD,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/E,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/contracts/adapter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { z } from "zod";
2
+ export declare const diagnosticSeveritySchema: z.ZodEnum<{
3
+ error: "error";
4
+ info: "info";
5
+ warning: "warning";
6
+ }>;
7
+ export declare const diagnosticSchema: z.ZodObject<{
8
+ severity: z.ZodEnum<{
9
+ error: "error";
10
+ info: "info";
11
+ warning: "warning";
12
+ }>;
13
+ code: z.ZodString;
14
+ message: z.ZodString;
15
+ adapter: z.ZodOptional<z.ZodString>;
16
+ resourceId: z.ZodOptional<z.ZodString>;
17
+ remediation: z.ZodOptional<z.ZodString>;
18
+ }, z.core.$strip>;
19
+ export type DiagnosticSeverity = z.infer<typeof diagnosticSeveritySchema>;
20
+ export type Diagnostic = z.infer<typeof diagnosticSchema>;
21
+ //# sourceMappingURL=diagnostic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic.d.ts","sourceRoot":"","sources":["../../src/contracts/diagnostic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,wBAAwB;;;;EAAuC,CAAC;AAE7E,eAAO,MAAM,gBAAgB;;;;;;;;;;;iBAO3B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { z } from "zod";
2
+ export const diagnosticSeveritySchema = z.enum(["info", "warning", "error"]);
3
+ export const diagnosticSchema = z.object({
4
+ severity: diagnosticSeveritySchema,
5
+ code: z.string().min(1),
6
+ message: z.string().min(1),
7
+ adapter: z.string().min(1).optional(),
8
+ resourceId: z.string().min(1).optional(),
9
+ remediation: z.string().min(1).optional(),
10
+ });
11
+ //# sourceMappingURL=diagnostic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic.js","sourceRoot":"","sources":["../../src/contracts/diagnostic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAE7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,QAAQ,EAAE,wBAAwB;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC"}
@@ -0,0 +1,123 @@
1
+ import { z } from "zod";
2
+ export declare const findingStateSchema: z.ZodEnum<{
3
+ blocked: "blocked";
4
+ eligible: "eligible";
5
+ ignored: "ignored";
6
+ protected: "protected";
7
+ unknown: "unknown";
8
+ }>;
9
+ export declare const findingConfidenceSchema: z.ZodEnum<{
10
+ certain: "certain";
11
+ high: "high";
12
+ low: "low";
13
+ medium: "medium";
14
+ unknown: "unknown";
15
+ }>;
16
+ export declare const rootEvidenceSchema: z.ZodObject<{
17
+ code: z.ZodString;
18
+ source: z.ZodString;
19
+ observedAt: z.ZodString;
20
+ detail: z.ZodString;
21
+ evidenceRef: z.ZodOptional<z.ZodString>;
22
+ }, z.core.$strip>;
23
+ export declare const findingSchema: z.ZodObject<{
24
+ schemaVersion: z.ZodLiteral<1>;
25
+ findingId: z.ZodString;
26
+ auditId: z.ZodString;
27
+ observedAt: z.ZodString;
28
+ resource: z.ZodObject<{
29
+ id: z.ZodString;
30
+ adapter: z.ZodString;
31
+ kind: z.ZodEnum<{
32
+ "agent-database": "agent-database";
33
+ "agent-home": "agent-home";
34
+ "agent-log-store": "agent-log-store";
35
+ "agent-runtime": "agent-runtime";
36
+ "agent-session-store": "agent-session-store";
37
+ "agent-snapshot-store": "agent-snapshot-store";
38
+ "build-artifact": "build-artifact";
39
+ "docker-build-cache": "docker-build-cache";
40
+ "docker-container": "docker-container";
41
+ "docker-image": "docker-image";
42
+ "docker-network": "docker-network";
43
+ "docker-volume": "docker-volume";
44
+ "git-worktree": "git-worktree";
45
+ }>;
46
+ canonicalKey: z.ZodString;
47
+ displayName: z.ZodString;
48
+ path: z.ZodOptional<z.ZodString>;
49
+ externalId: z.ZodOptional<z.ZodString>;
50
+ }, z.core.$strip>;
51
+ state: z.ZodEnum<{
52
+ blocked: "blocked";
53
+ eligible: "eligible";
54
+ ignored: "ignored";
55
+ protected: "protected";
56
+ unknown: "unknown";
57
+ }>;
58
+ confidence: z.ZodEnum<{
59
+ certain: "certain";
60
+ high: "high";
61
+ low: "low";
62
+ medium: "medium";
63
+ unknown: "unknown";
64
+ }>;
65
+ roots: z.ZodArray<z.ZodObject<{
66
+ code: z.ZodString;
67
+ source: z.ZodString;
68
+ observedAt: z.ZodString;
69
+ detail: z.ZodString;
70
+ evidenceRef: z.ZodOptional<z.ZodString>;
71
+ }, z.core.$strip>>;
72
+ facts: z.ZodRecord<z.ZodString, z.ZodUnknown>;
73
+ candidateActions: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
74
+ actionId: z.ZodString;
75
+ type: z.ZodLiteral<"artifacts.remove">;
76
+ adapter: z.ZodLiteral<"artifacts">;
77
+ resourceId: z.ZodString;
78
+ risk: z.ZodLiteral<"safe">;
79
+ description: z.ZodString;
80
+ expectedReclaimBytes: z.ZodNumber;
81
+ target: z.ZodObject<{
82
+ path: z.ZodString;
83
+ projectRoot: z.ZodString;
84
+ name: z.ZodEnum<{
85
+ ".cache": ".cache";
86
+ ".next": ".next";
87
+ ".turbo": ".turbo";
88
+ ".venv": ".venv";
89
+ build: "build";
90
+ coverage: "coverage";
91
+ dist: "dist";
92
+ "dist-runtime": "dist-runtime";
93
+ node_modules: "node_modules";
94
+ target: "target";
95
+ }>;
96
+ device: z.ZodNumber;
97
+ inode: z.ZodNumber;
98
+ mtimeMs: z.ZodNumber;
99
+ measuredBytes: z.ZodNumber;
100
+ newestMtimeMs: z.ZodNumber;
101
+ fingerprint: z.ZodString;
102
+ }, z.core.$strip>;
103
+ }, z.core.$strip>], "type">>>;
104
+ measuredBytes: z.ZodOptional<z.ZodNumber>;
105
+ estimatedReclaimBytes: z.ZodOptional<z.ZodNumber>;
106
+ warnings: z.ZodArray<z.ZodObject<{
107
+ severity: z.ZodEnum<{
108
+ error: "error";
109
+ info: "info";
110
+ warning: "warning";
111
+ }>;
112
+ code: z.ZodString;
113
+ message: z.ZodString;
114
+ adapter: z.ZodOptional<z.ZodString>;
115
+ resourceId: z.ZodOptional<z.ZodString>;
116
+ remediation: z.ZodOptional<z.ZodString>;
117
+ }, z.core.$strip>>;
118
+ }, z.core.$strip>;
119
+ export type FindingState = z.infer<typeof findingStateSchema>;
120
+ export type FindingConfidence = z.infer<typeof findingConfidenceSchema>;
121
+ export type RootEvidence = z.infer<typeof rootEvidenceSchema>;
122
+ export type Finding = z.infer<typeof findingSchema>;
123
+ //# sourceMappingURL=finding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finding.d.ts","sourceRoot":"","sources":["../../src/contracts/finding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,kBAAkB;;;;;;EAM7B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;EAA0D,CAAC;AAE/F,eAAO,MAAM,kBAAkB;;;;;;iBAM7B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAcxB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { z } from "zod";
2
+ import { plannedActionSchema } from "./action.js";
3
+ import { diagnosticSchema } from "./diagnostic.js";
4
+ import { resourceRefSchema } from "./resource.js";
5
+ export const findingStateSchema = z.enum([
6
+ "protected",
7
+ "eligible",
8
+ "blocked",
9
+ "unknown",
10
+ "ignored",
11
+ ]);
12
+ export const findingConfidenceSchema = z.enum(["certain", "high", "medium", "low", "unknown"]);
13
+ export const rootEvidenceSchema = z.object({
14
+ code: z.string().min(1),
15
+ source: z.string().min(1),
16
+ observedAt: z.string().datetime(),
17
+ detail: z.string().min(1),
18
+ evidenceRef: z.string().min(1).optional(),
19
+ });
20
+ export const findingSchema = z.object({
21
+ schemaVersion: z.literal(1),
22
+ findingId: z.string().min(1),
23
+ auditId: z.string().min(1),
24
+ observedAt: z.string().datetime(),
25
+ resource: resourceRefSchema,
26
+ state: findingStateSchema,
27
+ confidence: findingConfidenceSchema,
28
+ roots: z.array(rootEvidenceSchema),
29
+ facts: z.record(z.string(), z.unknown()),
30
+ candidateActions: z.array(plannedActionSchema).default([]),
31
+ measuredBytes: z.number().int().nonnegative().optional(),
32
+ estimatedReclaimBytes: z.number().int().nonnegative().optional(),
33
+ warnings: z.array(diagnosticSchema),
34
+ });
35
+ //# sourceMappingURL=finding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finding.js","sourceRoot":"","sources":["../../src/contracts/finding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC;IACvC,WAAW;IACX,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AAE/F,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,QAAQ,EAAE,iBAAiB;IAC3B,KAAK,EAAE,kBAAkB;IACzB,UAAU,EAAE,uBAAuB;IACnC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IAClC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACxC,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1D,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACxD,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAChE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;CACpC,CAAC,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { z } from "zod";
2
+ export declare const cleanupPlanSchema: z.ZodObject<{
3
+ schemaVersion: z.ZodLiteral<1>;
4
+ planId: z.ZodString;
5
+ auditId: z.ZodString;
6
+ home: z.ZodString;
7
+ createdAt: z.ZodString;
8
+ expiresAt: z.ZodString;
9
+ policyVersion: z.ZodLiteral<1>;
10
+ riskCeiling: z.ZodEnum<{
11
+ destructive: "destructive";
12
+ experimental: "experimental";
13
+ recoverable: "recoverable";
14
+ safe: "safe";
15
+ }>;
16
+ configDigest: z.ZodString;
17
+ auditDigest: z.ZodString;
18
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
19
+ actionId: z.ZodString;
20
+ type: z.ZodLiteral<"artifacts.remove">;
21
+ adapter: z.ZodLiteral<"artifacts">;
22
+ resourceId: z.ZodString;
23
+ risk: z.ZodLiteral<"safe">;
24
+ description: z.ZodString;
25
+ expectedReclaimBytes: z.ZodNumber;
26
+ target: z.ZodObject<{
27
+ path: z.ZodString;
28
+ projectRoot: z.ZodString;
29
+ name: z.ZodEnum<{
30
+ ".cache": ".cache";
31
+ ".next": ".next";
32
+ ".turbo": ".turbo";
33
+ ".venv": ".venv";
34
+ build: "build";
35
+ coverage: "coverage";
36
+ dist: "dist";
37
+ "dist-runtime": "dist-runtime";
38
+ node_modules: "node_modules";
39
+ target: "target";
40
+ }>;
41
+ device: z.ZodNumber;
42
+ inode: z.ZodNumber;
43
+ mtimeMs: z.ZodNumber;
44
+ measuredBytes: z.ZodNumber;
45
+ newestMtimeMs: z.ZodNumber;
46
+ fingerprint: z.ZodString;
47
+ }, z.core.$strip>;
48
+ }, z.core.$strip>], "type">>;
49
+ expectedReclaimBytes: z.ZodNumber;
50
+ }, z.core.$strip>;
51
+ export type { ActionRisk, PlannedAction } from "./action.js";
52
+ export type CleanupPlan = z.infer<typeof cleanupPlanSchema>;
53
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/contracts/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwD1B,CAAC;AAEL,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { z } from "zod";
2
+ import { actionRiskSchema, plannedActionSchema } from "./action.js";
3
+ export const cleanupPlanSchema = z
4
+ .object({
5
+ schemaVersion: z.literal(1),
6
+ planId: z.string().min(1),
7
+ auditId: z.string().min(1),
8
+ home: z.string().min(1),
9
+ createdAt: z.string().datetime(),
10
+ expiresAt: z.string().datetime(),
11
+ policyVersion: z.literal(1),
12
+ riskCeiling: actionRiskSchema,
13
+ configDigest: z.string().min(1),
14
+ auditDigest: z.string().min(1),
15
+ actions: z.array(plannedActionSchema),
16
+ expectedReclaimBytes: z.number().int().nonnegative(),
17
+ })
18
+ .superRefine((plan, context) => {
19
+ const actionIds = new Set();
20
+ const targetPaths = new Set();
21
+ let expectedReclaimBytes = 0;
22
+ for (const [index, action] of plan.actions.entries()) {
23
+ if (actionIds.has(action.actionId)) {
24
+ context.addIssue({
25
+ code: "custom",
26
+ message: "cleanup plan contains a duplicate actionId",
27
+ path: ["actions", index, "actionId"],
28
+ });
29
+ }
30
+ actionIds.add(action.actionId);
31
+ if (targetPaths.has(action.target.path)) {
32
+ context.addIssue({
33
+ code: "custom",
34
+ message: "cleanup plan contains duplicate target paths",
35
+ path: ["actions", index, "target", "path"],
36
+ });
37
+ }
38
+ targetPaths.add(action.target.path);
39
+ if (action.expectedReclaimBytes !== action.target.measuredBytes) {
40
+ context.addIssue({
41
+ code: "custom",
42
+ message: "action reclaim estimate must match the measured target bytes",
43
+ path: ["actions", index, "expectedReclaimBytes"],
44
+ });
45
+ }
46
+ expectedReclaimBytes += action.expectedReclaimBytes;
47
+ }
48
+ if (expectedReclaimBytes !== plan.expectedReclaimBytes) {
49
+ context.addIssue({
50
+ code: "custom",
51
+ message: "plan reclaim estimate must equal the sum of its actions",
52
+ path: ["expectedReclaimBytes"],
53
+ });
54
+ }
55
+ });
56
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/contracts/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEpE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3B,WAAW,EAAE,gBAAgB;IAC7B,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,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;IACrC,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;CACrD,CAAC;KACD,WAAW,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;IAC7B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAE7B,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACrD,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,QAAQ,CAAC;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,4CAA4C;gBACrD,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC;aACrC,CAAC,CAAC;QACL,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE/B,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,QAAQ,CAAC;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,8CAA8C;gBACvD,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,MAAM,CAAC,oBAAoB,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAChE,OAAO,CAAC,QAAQ,CAAC;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,8DAA8D;gBACvE,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,sBAAsB,CAAC;aACjD,CAAC,CAAC;QACL,CAAC;QACD,oBAAoB,IAAI,MAAM,CAAC,oBAAoB,CAAC;IACtD,CAAC;IAED,IAAI,oBAAoB,KAAK,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACvD,OAAO,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,yDAAyD;YAClE,IAAI,EAAE,CAAC,sBAAsB,CAAC;SAC/B,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}