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.
- package/LICENSE +21 -0
- package/README.md +153 -0
- package/dist/adapters/artifacts/adapter.d.ts +24 -0
- package/dist/adapters/artifacts/adapter.d.ts.map +1 -0
- package/dist/adapters/artifacts/adapter.js +342 -0
- package/dist/adapters/artifacts/adapter.js.map +1 -0
- package/dist/adapters/docker/adapter.d.ts +15 -0
- package/dist/adapters/docker/adapter.d.ts.map +1 -0
- package/dist/adapters/docker/adapter.js +121 -0
- package/dist/adapters/docker/adapter.js.map +1 -0
- package/dist/adapters/git/adapter.d.ts +15 -0
- package/dist/adapters/git/adapter.d.ts.map +1 -0
- package/dist/adapters/git/adapter.js +156 -0
- package/dist/adapters/git/adapter.js.map +1 -0
- package/dist/adapters/git/porcelain.d.ts +11 -0
- package/dist/adapters/git/porcelain.d.ts.map +1 -0
- package/dist/adapters/git/porcelain.js +54 -0
- package/dist/adapters/git/porcelain.js.map +1 -0
- package/dist/adapters/provider-adapter.d.ts +22 -0
- package/dist/adapters/provider-adapter.d.ts.map +1 -0
- package/dist/adapters/provider-adapter.js +178 -0
- package/dist/adapters/provider-adapter.js.map +1 -0
- package/dist/adapters/provider-specs.d.ts +16 -0
- package/dist/adapters/provider-specs.d.ts.map +1 -0
- package/dist/adapters/provider-specs.js +157 -0
- package/dist/adapters/provider-specs.js.map +1 -0
- package/dist/adapters/registry.d.ts +4 -0
- package/dist/adapters/registry.d.ts.map +1 -0
- package/dist/adapters/registry.js +28 -0
- package/dist/adapters/registry.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +8 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/adapters.d.ts +2 -0
- package/dist/commands/adapters.d.ts.map +1 -0
- package/dist/commands/adapters.js +17 -0
- package/dist/commands/adapters.js.map +1 -0
- package/dist/commands/apply.d.ts +15 -0
- package/dist/commands/apply.d.ts.map +1 -0
- package/dist/commands/apply.js +63 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/audit.d.ts +13 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +22 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/plan.d.ts +12 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +19 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/config/defaults.d.ts +3 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +29 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/load.d.ts +3 -0
- package/dist/config/load.d.ts.map +1 -0
- package/dist/config/load.js +31 -0
- package/dist/config/load.js.map +1 -0
- package/dist/config/schema.d.ts +84 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +108 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/contracts/action.d.ts +109 -0
- package/dist/contracts/action.d.ts.map +1 -0
- package/dist/contracts/action.js +37 -0
- package/dist/contracts/action.js.map +1 -0
- package/dist/contracts/adapter.d.ts +21 -0
- package/dist/contracts/adapter.d.ts.map +1 -0
- package/dist/contracts/adapter.js +2 -0
- package/dist/contracts/adapter.js.map +1 -0
- package/dist/contracts/diagnostic.d.ts +21 -0
- package/dist/contracts/diagnostic.d.ts.map +1 -0
- package/dist/contracts/diagnostic.js +11 -0
- package/dist/contracts/diagnostic.js.map +1 -0
- package/dist/contracts/finding.d.ts +123 -0
- package/dist/contracts/finding.d.ts.map +1 -0
- package/dist/contracts/finding.js +35 -0
- package/dist/contracts/finding.js.map +1 -0
- package/dist/contracts/plan.d.ts +53 -0
- package/dist/contracts/plan.d.ts.map +1 -0
- package/dist/contracts/plan.js +56 -0
- package/dist/contracts/plan.js.map +1 -0
- package/dist/contracts/report.d.ts +177 -0
- package/dist/contracts/report.d.ts.map +1 -0
- package/dist/contracts/report.js +29 -0
- package/dist/contracts/report.js.map +1 -0
- package/dist/contracts/resource.d.ts +72 -0
- package/dist/contracts/resource.d.ts.map +1 -0
- package/dist/contracts/resource.js +33 -0
- package/dist/contracts/resource.js.map +1 -0
- package/dist/contracts/run.d.ts +108 -0
- package/dist/contracts/run.d.ts.map +1 -0
- package/dist/contracts/run.js +35 -0
- package/dist/contracts/run.js.map +1 -0
- package/dist/core/apply.d.ts +29 -0
- package/dist/core/apply.d.ts.map +1 -0
- package/dist/core/apply.js +120 -0
- package/dist/core/apply.js.map +1 -0
- package/dist/core/artifact-executor.d.ts +39 -0
- package/dist/core/artifact-executor.d.ts.map +1 -0
- package/dist/core/artifact-executor.js +200 -0
- package/dist/core/artifact-executor.js.map +1 -0
- package/dist/core/artifact-revalidation.d.ts +22 -0
- package/dist/core/artifact-revalidation.d.ts.map +1 -0
- package/dist/core/artifact-revalidation.js +113 -0
- package/dist/core/artifact-revalidation.js.map +1 -0
- package/dist/core/audit.d.ts +12 -0
- package/dist/core/audit.d.ts.map +1 -0
- package/dist/core/audit.js +41 -0
- package/dist/core/audit.js.map +1 -0
- package/dist/core/digest.d.ts +7 -0
- package/dist/core/digest.d.ts.map +1 -0
- package/dist/core/digest.js +21 -0
- package/dist/core/digest.js.map +1 -0
- package/dist/core/measure.d.ts +16 -0
- package/dist/core/measure.d.ts.map +1 -0
- package/dist/core/measure.js +79 -0
- package/dist/core/measure.js.map +1 -0
- package/dist/core/mount-boundaries.d.ts +21 -0
- package/dist/core/mount-boundaries.d.ts.map +1 -0
- package/dist/core/mount-boundaries.js +72 -0
- package/dist/core/mount-boundaries.js.map +1 -0
- package/dist/core/plan-verification.d.ts +10 -0
- package/dist/core/plan-verification.d.ts.map +1 -0
- package/dist/core/plan-verification.js +42 -0
- package/dist/core/plan-verification.js.map +1 -0
- package/dist/core/plan.d.ts +6 -0
- package/dist/core/plan.d.ts.map +1 -0
- package/dist/core/plan.js +40 -0
- package/dist/core/plan.js.map +1 -0
- package/dist/core/process-ownership.d.ts +27 -0
- package/dist/core/process-ownership.d.ts.map +1 -0
- package/dist/core/process-ownership.js +140 -0
- package/dist/core/process-ownership.js.map +1 -0
- package/dist/core/safety.d.ts +7 -0
- package/dist/core/safety.d.ts.map +1 -0
- package/dist/core/safety.js +50 -0
- package/dist/core/safety.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +4 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +59 -0
- package/dist/main.js.map +1 -0
- package/dist/output.d.ts +4 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +35 -0
- package/dist/output.js.map +1 -0
- package/dist/state/json-file.d.ts +4 -0
- package/dist/state/json-file.d.ts.map +1 -0
- package/dist/state/json-file.js +36 -0
- package/dist/state/json-file.js.map +1 -0
- package/dist/state/layout.d.ts +12 -0
- package/dist/state/layout.d.ts.map +1 -0
- package/dist/state/layout.js +20 -0
- package/dist/state/layout.js.map +1 -0
- package/dist/state/lock.d.ts +9 -0
- package/dist/state/lock.d.ts.map +1 -0
- package/dist/state/lock.js +93 -0
- package/dist/state/lock.js.map +1 -0
- package/dist/state/run-journal.d.ts +10 -0
- package/dist/state/run-journal.d.ts.map +1 -0
- package/dist/state/run-journal.js +57 -0
- package/dist/state/run-journal.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/package.json +73 -0
- package/schemas/audit.schema.json +424 -0
- package/schemas/plan.schema.json +184 -0
- 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 @@
|
|
|
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":"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"}
|