agentrinse 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -16
- package/dist/adapters/git/adapter.d.ts +14 -1
- package/dist/adapters/git/adapter.d.ts.map +1 -1
- package/dist/adapters/git/adapter.js +217 -56
- package/dist/adapters/git/adapter.js.map +1 -1
- package/dist/adapters/git/refs.d.ts +6 -0
- package/dist/adapters/git/refs.d.ts.map +1 -0
- package/dist/adapters/git/refs.js +24 -0
- package/dist/adapters/git/refs.js.map +1 -0
- package/dist/adapters/git/status.d.ts +1 -0
- package/dist/adapters/git/status.d.ts.map +1 -1
- package/dist/adapters/git/status.js +6 -0
- package/dist/adapters/git/status.js.map +1 -1
- package/dist/adapters/registry.d.ts +2 -1
- package/dist/adapters/registry.d.ts.map +1 -1
- package/dist/adapters/registry.js +6 -2
- package/dist/adapters/registry.js.map +1 -1
- package/dist/commands/apply.d.ts.map +1 -1
- package/dist/commands/apply.js +4 -0
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/clean.d.ts +2 -0
- package/dist/commands/clean.d.ts.map +1 -1
- package/dist/commands/clean.js +9 -3
- package/dist/commands/clean.js.map +1 -1
- package/dist/commands/completion.d.ts.map +1 -1
- package/dist/commands/completion.js +3 -1
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/confirmation.d.ts +6 -0
- package/dist/commands/confirmation.d.ts.map +1 -0
- package/dist/commands/confirmation.js +21 -0
- package/dist/commands/confirmation.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +4 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/purge.d.ts +29 -0
- package/dist/commands/purge.d.ts.map +1 -0
- package/dist/commands/purge.js +168 -0
- package/dist/commands/purge.js.map +1 -0
- package/dist/commands/show.d.ts.map +1 -1
- package/dist/commands/show.js +14 -2
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/undo.d.ts +21 -0
- package/dist/commands/undo.d.ts.map +1 -0
- package/dist/commands/undo.js +66 -0
- package/dist/commands/undo.js.map +1 -0
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +4 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +4 -0
- package/dist/config/load.js.map +1 -1
- package/dist/config/schema.d.ts +4 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +18 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/contracts/action.d.ts +59 -0
- package/dist/contracts/action.d.ts.map +1 -1
- package/dist/contracts/action.js +28 -1
- package/dist/contracts/action.js.map +1 -1
- package/dist/contracts/finding.d.ts +22 -0
- package/dist/contracts/finding.d.ts.map +1 -1
- package/dist/contracts/plan.d.ts +23 -0
- package/dist/contracts/plan.d.ts.map +1 -1
- package/dist/contracts/plan.js +20 -1
- package/dist/contracts/plan.js.map +1 -1
- package/dist/contracts/quarantine.d.ts +79 -0
- package/dist/contracts/quarantine.d.ts.map +1 -0
- package/dist/contracts/quarantine.js +60 -0
- package/dist/contracts/quarantine.js.map +1 -0
- package/dist/contracts/report.d.ts +22 -0
- package/dist/contracts/report.d.ts.map +1 -1
- package/dist/contracts/run.d.ts +133 -5
- package/dist/contracts/run.d.ts.map +1 -1
- package/dist/contracts/run.js +17 -3
- package/dist/contracts/run.js.map +1 -1
- package/dist/core/apply.d.ts +8 -1
- package/dist/core/apply.d.ts.map +1 -1
- package/dist/core/apply.js +138 -48
- package/dist/core/apply.js.map +1 -1
- package/dist/core/git-operation-state.d.ts +3 -0
- package/dist/core/git-operation-state.d.ts.map +1 -0
- package/dist/core/git-operation-state.js +23 -0
- package/dist/core/git-operation-state.js.map +1 -0
- package/dist/core/measure.d.ts +1 -0
- package/dist/core/measure.d.ts.map +1 -1
- package/dist/core/measure.js +3 -0
- package/dist/core/measure.js.map +1 -1
- package/dist/core/no-clobber-rename.d.ts +2 -0
- package/dist/core/no-clobber-rename.d.ts.map +1 -0
- package/dist/core/no-clobber-rename.js +58 -0
- package/dist/core/no-clobber-rename.js.map +1 -0
- package/dist/core/plan.d.ts.map +1 -1
- package/dist/core/plan.js +1 -0
- package/dist/core/plan.js.map +1 -1
- package/dist/core/worktree-executor.d.ts +51 -0
- package/dist/core/worktree-executor.d.ts.map +1 -0
- package/dist/core/worktree-executor.js +676 -0
- package/dist/core/worktree-executor.js.map +1 -0
- package/dist/core/worktree-lock.d.ts +15 -0
- package/dist/core/worktree-lock.d.ts.map +1 -0
- package/dist/core/worktree-lock.js +139 -0
- package/dist/core/worktree-lock.js.map +1 -0
- package/dist/core/worktree-recovery.d.ts +37 -0
- package/dist/core/worktree-recovery.d.ts.map +1 -0
- package/dist/core/worktree-recovery.js +1018 -0
- package/dist/core/worktree-recovery.js.map +1 -0
- package/dist/core/worktree-revalidation.d.ts +25 -0
- package/dist/core/worktree-revalidation.d.ts.map +1 -0
- package/dist/core/worktree-revalidation.js +107 -0
- package/dist/core/worktree-revalidation.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +47 -0
- package/dist/main.js.map +1 -1
- package/dist/state/layout.d.ts +1 -0
- package/dist/state/layout.d.ts.map +1 -1
- package/dist/state/layout.js +1 -0
- package/dist/state/layout.js.map +1 -1
- package/dist/state/records.d.ts +6 -0
- package/dist/state/records.d.ts.map +1 -1
- package/dist/state/records.js +9 -1
- package/dist/state/records.js.map +1 -1
- package/dist/state/run-journal.d.ts.map +1 -1
- package/dist/state/run-journal.js +3 -0
- package/dist/state/run-journal.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -1
- package/schemas/audit.schema.json +112 -0
- package/schemas/plan.schema.json +117 -0
- package/schemas/quarantine.schema.json +238 -0
- package/schemas/run.schema.json +152 -54
|
@@ -1 +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
|
|
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"}
|
package/dist/contracts/plan.d.ts
CHANGED
|
@@ -45,8 +45,31 @@ export declare const cleanupPlanSchema: z.ZodObject<{
|
|
|
45
45
|
newestMtimeMs: z.ZodNumber;
|
|
46
46
|
fingerprint: z.ZodString;
|
|
47
47
|
}, z.core.$strip>;
|
|
48
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
49
|
+
actionId: z.ZodString;
|
|
50
|
+
type: z.ZodLiteral<"worktree.quarantine">;
|
|
51
|
+
adapter: z.ZodLiteral<"git">;
|
|
52
|
+
resourceId: z.ZodString;
|
|
53
|
+
risk: z.ZodLiteral<"recoverable">;
|
|
54
|
+
description: z.ZodString;
|
|
55
|
+
expectedReclaimBytes: z.ZodLiteral<0>;
|
|
56
|
+
pendingQuarantineBytes: z.ZodNumber;
|
|
57
|
+
quarantineTtlMinutes: z.ZodNumber;
|
|
58
|
+
target: z.ZodObject<{
|
|
59
|
+
path: z.ZodString;
|
|
60
|
+
repositoryCommonDir: z.ZodString;
|
|
61
|
+
head: z.ZodString;
|
|
62
|
+
branch: z.ZodOptional<z.ZodString>;
|
|
63
|
+
device: z.ZodNumber;
|
|
64
|
+
inode: z.ZodNumber;
|
|
65
|
+
mtimeMs: z.ZodNumber;
|
|
66
|
+
measuredBytes: z.ZodNumber;
|
|
67
|
+
newestMtimeMs: z.ZodNumber;
|
|
68
|
+
fingerprint: z.ZodString;
|
|
69
|
+
}, z.core.$strip>;
|
|
48
70
|
}, z.core.$strip>], "type">>;
|
|
49
71
|
expectedReclaimBytes: z.ZodNumber;
|
|
72
|
+
pendingQuarantineBytes: z.ZodOptional<z.ZodNumber>;
|
|
50
73
|
}, z.core.$strip>;
|
|
51
74
|
export type { ActionRisk, PlannedAction } from "./action.js";
|
|
52
75
|
export type CleanupPlan = z.infer<typeof cleanupPlanSchema>;
|
|
@@ -1 +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
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0E1B,CAAC;AAEL,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
package/dist/contracts/plan.js
CHANGED
|
@@ -14,11 +14,13 @@ export const cleanupPlanSchema = z
|
|
|
14
14
|
auditDigest: z.string().min(1),
|
|
15
15
|
actions: z.array(plannedActionSchema),
|
|
16
16
|
expectedReclaimBytes: z.number().int().nonnegative(),
|
|
17
|
+
pendingQuarantineBytes: z.number().int().nonnegative().optional(),
|
|
17
18
|
})
|
|
18
19
|
.superRefine((plan, context) => {
|
|
19
20
|
const actionIds = new Set();
|
|
20
21
|
const targetPaths = new Set();
|
|
21
22
|
let expectedReclaimBytes = 0;
|
|
23
|
+
let pendingQuarantineBytes = 0;
|
|
22
24
|
for (const [index, action] of plan.actions.entries()) {
|
|
23
25
|
if (actionIds.has(action.actionId)) {
|
|
24
26
|
context.addIssue({
|
|
@@ -36,7 +38,17 @@ export const cleanupPlanSchema = z
|
|
|
36
38
|
});
|
|
37
39
|
}
|
|
38
40
|
targetPaths.add(action.target.path);
|
|
39
|
-
if (action.
|
|
41
|
+
if (action.type === "worktree.quarantine") {
|
|
42
|
+
if (action.pendingQuarantineBytes !== action.target.measuredBytes) {
|
|
43
|
+
context.addIssue({
|
|
44
|
+
code: "custom",
|
|
45
|
+
message: "quarantine estimate must match the measured target bytes",
|
|
46
|
+
path: ["actions", index, "pendingQuarantineBytes"],
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
pendingQuarantineBytes += action.pendingQuarantineBytes;
|
|
50
|
+
}
|
|
51
|
+
else if (action.expectedReclaimBytes !== action.target.measuredBytes) {
|
|
40
52
|
context.addIssue({
|
|
41
53
|
code: "custom",
|
|
42
54
|
message: "action reclaim estimate must match the measured target bytes",
|
|
@@ -52,5 +64,12 @@ export const cleanupPlanSchema = z
|
|
|
52
64
|
path: ["expectedReclaimBytes"],
|
|
53
65
|
});
|
|
54
66
|
}
|
|
67
|
+
if ((plan.pendingQuarantineBytes ?? 0) !== pendingQuarantineBytes) {
|
|
68
|
+
context.addIssue({
|
|
69
|
+
code: "custom",
|
|
70
|
+
message: "plan pending quarantine bytes must equal the sum of recoverable actions",
|
|
71
|
+
path: ["pendingQuarantineBytes"],
|
|
72
|
+
});
|
|
73
|
+
}
|
|
55
74
|
});
|
|
56
75
|
//# sourceMappingURL=plan.js.map
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/contracts/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const quarantineEntryIdSchema: z.ZodString;
|
|
3
|
+
export declare function quarantineRecoveryRef(runId: string, resourceId: string): string;
|
|
4
|
+
export declare const quarantineStatusSchema: z.ZodEnum<{
|
|
5
|
+
moved: "moved";
|
|
6
|
+
partial: "partial";
|
|
7
|
+
preparing: "preparing";
|
|
8
|
+
purged: "purged";
|
|
9
|
+
purging: "purging";
|
|
10
|
+
quarantined: "quarantined";
|
|
11
|
+
"recovery-ref-created": "recovery-ref-created";
|
|
12
|
+
restored: "restored";
|
|
13
|
+
restoring: "restoring";
|
|
14
|
+
}>;
|
|
15
|
+
export declare const quarantineEntrySchema: z.ZodObject<{
|
|
16
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
17
|
+
entryId: z.ZodString;
|
|
18
|
+
runId: z.ZodString;
|
|
19
|
+
actionId: z.ZodString;
|
|
20
|
+
resourceId: z.ZodString;
|
|
21
|
+
status: z.ZodEnum<{
|
|
22
|
+
moved: "moved";
|
|
23
|
+
partial: "partial";
|
|
24
|
+
preparing: "preparing";
|
|
25
|
+
purged: "purged";
|
|
26
|
+
purging: "purging";
|
|
27
|
+
quarantined: "quarantined";
|
|
28
|
+
"recovery-ref-created": "recovery-ref-created";
|
|
29
|
+
restored: "restored";
|
|
30
|
+
restoring: "restoring";
|
|
31
|
+
}>;
|
|
32
|
+
originalPath: z.ZodString;
|
|
33
|
+
quarantinePath: z.ZodString;
|
|
34
|
+
recoveryRef: z.ZodString;
|
|
35
|
+
createdAt: z.ZodString;
|
|
36
|
+
expiresAt: z.ZodString;
|
|
37
|
+
measurementMaxEntries: z.ZodNumber;
|
|
38
|
+
target: z.ZodObject<{
|
|
39
|
+
path: z.ZodString;
|
|
40
|
+
repositoryCommonDir: z.ZodString;
|
|
41
|
+
head: z.ZodString;
|
|
42
|
+
branch: z.ZodOptional<z.ZodString>;
|
|
43
|
+
device: z.ZodNumber;
|
|
44
|
+
inode: z.ZodNumber;
|
|
45
|
+
mtimeMs: z.ZodNumber;
|
|
46
|
+
measuredBytes: z.ZodNumber;
|
|
47
|
+
newestMtimeMs: z.ZodNumber;
|
|
48
|
+
fingerprint: z.ZodString;
|
|
49
|
+
}, z.core.$strip>;
|
|
50
|
+
quarantineIdentity: z.ZodOptional<z.ZodObject<{
|
|
51
|
+
path: z.ZodString;
|
|
52
|
+
repositoryCommonDir: z.ZodString;
|
|
53
|
+
head: z.ZodString;
|
|
54
|
+
branch: z.ZodOptional<z.ZodString>;
|
|
55
|
+
device: z.ZodNumber;
|
|
56
|
+
inode: z.ZodNumber;
|
|
57
|
+
mtimeMs: z.ZodNumber;
|
|
58
|
+
measuredBytes: z.ZodNumber;
|
|
59
|
+
newestMtimeMs: z.ZodNumber;
|
|
60
|
+
fingerprint: z.ZodString;
|
|
61
|
+
}, z.core.$strip>>;
|
|
62
|
+
restoredAt: z.ZodOptional<z.ZodString>;
|
|
63
|
+
purgedAt: z.ZodOptional<z.ZodString>;
|
|
64
|
+
diagnostic: z.ZodOptional<z.ZodObject<{
|
|
65
|
+
severity: z.ZodEnum<{
|
|
66
|
+
error: "error";
|
|
67
|
+
info: "info";
|
|
68
|
+
warning: "warning";
|
|
69
|
+
}>;
|
|
70
|
+
code: z.ZodString;
|
|
71
|
+
message: z.ZodString;
|
|
72
|
+
adapter: z.ZodOptional<z.ZodString>;
|
|
73
|
+
resourceId: z.ZodOptional<z.ZodString>;
|
|
74
|
+
remediation: z.ZodOptional<z.ZodString>;
|
|
75
|
+
}, z.core.$strip>>;
|
|
76
|
+
}, z.core.$strip>;
|
|
77
|
+
export type QuarantineStatus = z.infer<typeof quarantineStatusSchema>;
|
|
78
|
+
export type QuarantineEntry = z.infer<typeof quarantineEntrySchema>;
|
|
79
|
+
//# sourceMappingURL=quarantine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quarantine.d.ts","sourceRoot":"","sources":["../../src/contracts/quarantine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,uBAAuB,aAE6C,CAAC;AAElF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAG/E;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;;EAUjC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsC9B,CAAC;AAEL,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { diagnosticSchema } from "./diagnostic.js";
|
|
4
|
+
import { worktreeIdentitySchema } from "./action.js";
|
|
5
|
+
export const quarantineEntryIdSchema = z
|
|
6
|
+
.string()
|
|
7
|
+
.regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/u, "entry ID must be filename-safe");
|
|
8
|
+
export function quarantineRecoveryRef(runId, resourceId) {
|
|
9
|
+
const resourceHash = createHash("sha256").update(resourceId).digest("hex").slice(0, 16);
|
|
10
|
+
return `refs/agentrinse/quarantine/${runId}/${resourceHash}`;
|
|
11
|
+
}
|
|
12
|
+
export const quarantineStatusSchema = z.enum([
|
|
13
|
+
"preparing",
|
|
14
|
+
"recovery-ref-created",
|
|
15
|
+
"moved",
|
|
16
|
+
"quarantined",
|
|
17
|
+
"restoring",
|
|
18
|
+
"restored",
|
|
19
|
+
"purging",
|
|
20
|
+
"purged",
|
|
21
|
+
"partial",
|
|
22
|
+
]);
|
|
23
|
+
export const quarantineEntrySchema = z
|
|
24
|
+
.object({
|
|
25
|
+
schemaVersion: z.literal(1),
|
|
26
|
+
entryId: quarantineEntryIdSchema,
|
|
27
|
+
runId: quarantineEntryIdSchema,
|
|
28
|
+
actionId: z.string().min(1),
|
|
29
|
+
resourceId: z.string().min(1),
|
|
30
|
+
status: quarantineStatusSchema,
|
|
31
|
+
originalPath: z.string().min(1),
|
|
32
|
+
quarantinePath: z.string().min(1),
|
|
33
|
+
recoveryRef: z.string().startsWith("refs/agentrinse/quarantine/"),
|
|
34
|
+
createdAt: z.string().datetime(),
|
|
35
|
+
expiresAt: z.string().datetime(),
|
|
36
|
+
measurementMaxEntries: z.number().int().positive().max(1_000_000),
|
|
37
|
+
target: worktreeIdentitySchema,
|
|
38
|
+
quarantineIdentity: worktreeIdentitySchema.optional(),
|
|
39
|
+
restoredAt: z.string().datetime().optional(),
|
|
40
|
+
purgedAt: z.string().datetime().optional(),
|
|
41
|
+
diagnostic: diagnosticSchema.optional(),
|
|
42
|
+
})
|
|
43
|
+
.superRefine((entry, context) => {
|
|
44
|
+
if (entry.recoveryRef !== quarantineRecoveryRef(entry.runId, entry.resourceId)) {
|
|
45
|
+
context.addIssue({
|
|
46
|
+
code: "custom",
|
|
47
|
+
message: "recovery ref must match the quarantine run and resource",
|
|
48
|
+
path: ["recoveryRef"],
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
if (["quarantined", "restoring", "purging", "purged"].includes(entry.status) &&
|
|
52
|
+
entry.quarantineIdentity === undefined) {
|
|
53
|
+
context.addIssue({
|
|
54
|
+
code: "custom",
|
|
55
|
+
message: "completed quarantine state requires post-repair identity",
|
|
56
|
+
path: ["quarantineIdentity"],
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
//# sourceMappingURL=quarantine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quarantine.js","sourceRoot":"","sources":["../../src/contracts/quarantine.ts"],"names":[],"mappings":"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"}
|
|
@@ -142,6 +142,28 @@ export declare const auditReportSchema: z.ZodObject<{
|
|
|
142
142
|
newestMtimeMs: z.ZodNumber;
|
|
143
143
|
fingerprint: z.ZodString;
|
|
144
144
|
}, z.core.$strip>;
|
|
145
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
146
|
+
actionId: z.ZodString;
|
|
147
|
+
type: z.ZodLiteral<"worktree.quarantine">;
|
|
148
|
+
adapter: z.ZodLiteral<"git">;
|
|
149
|
+
resourceId: z.ZodString;
|
|
150
|
+
risk: z.ZodLiteral<"recoverable">;
|
|
151
|
+
description: z.ZodString;
|
|
152
|
+
expectedReclaimBytes: z.ZodLiteral<0>;
|
|
153
|
+
pendingQuarantineBytes: z.ZodNumber;
|
|
154
|
+
quarantineTtlMinutes: z.ZodNumber;
|
|
155
|
+
target: z.ZodObject<{
|
|
156
|
+
path: z.ZodString;
|
|
157
|
+
repositoryCommonDir: z.ZodString;
|
|
158
|
+
head: z.ZodString;
|
|
159
|
+
branch: z.ZodOptional<z.ZodString>;
|
|
160
|
+
device: z.ZodNumber;
|
|
161
|
+
inode: z.ZodNumber;
|
|
162
|
+
mtimeMs: z.ZodNumber;
|
|
163
|
+
measuredBytes: z.ZodNumber;
|
|
164
|
+
newestMtimeMs: z.ZodNumber;
|
|
165
|
+
fingerprint: z.ZodString;
|
|
166
|
+
}, z.core.$strip>;
|
|
145
167
|
}, z.core.$strip>], "type">>>;
|
|
146
168
|
measuredBytes: z.ZodOptional<z.ZodNumber>;
|
|
147
169
|
estimatedReclaimBytes: z.ZodOptional<z.ZodNumber>;
|
|
@@ -1 +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
|
|
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"}
|
package/dist/contracts/run.d.ts
CHANGED
|
@@ -9,9 +9,8 @@ export declare const actionExecutionStatusSchema: z.ZodEnum<{
|
|
|
9
9
|
"rolled-back": "rolled-back";
|
|
10
10
|
"skipped-stale": "skipped-stale";
|
|
11
11
|
}>;
|
|
12
|
-
export declare const
|
|
12
|
+
export declare const artifactActionExecutionSchema: z.ZodObject<{
|
|
13
13
|
actionId: z.ZodString;
|
|
14
|
-
type: z.ZodLiteral<"artifacts.remove">;
|
|
15
14
|
status: z.ZodEnum<{
|
|
16
15
|
applied: "applied";
|
|
17
16
|
applying: "applying";
|
|
@@ -25,7 +24,36 @@ export declare const actionExecutionSchema: z.ZodObject<{
|
|
|
25
24
|
startedAt: z.ZodOptional<z.ZodString>;
|
|
26
25
|
completedAt: z.ZodOptional<z.ZodString>;
|
|
27
26
|
reclaimedBytes: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
diagnostic: z.ZodOptional<z.ZodObject<{
|
|
28
|
+
severity: z.ZodEnum<{
|
|
29
|
+
error: "error";
|
|
30
|
+
info: "info";
|
|
31
|
+
warning: "warning";
|
|
32
|
+
}>;
|
|
33
|
+
code: z.ZodString;
|
|
34
|
+
message: z.ZodString;
|
|
35
|
+
adapter: z.ZodOptional<z.ZodString>;
|
|
36
|
+
resourceId: z.ZodOptional<z.ZodString>;
|
|
37
|
+
remediation: z.ZodOptional<z.ZodString>;
|
|
38
|
+
}, z.core.$strip>>;
|
|
39
|
+
type: z.ZodLiteral<"artifacts.remove">;
|
|
28
40
|
isolationPath: z.ZodOptional<z.ZodString>;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
export declare const worktreeActionExecutionSchema: z.ZodObject<{
|
|
43
|
+
actionId: z.ZodString;
|
|
44
|
+
status: z.ZodEnum<{
|
|
45
|
+
applied: "applied";
|
|
46
|
+
applying: "applying";
|
|
47
|
+
failed: "failed";
|
|
48
|
+
"partially-applied": "partially-applied";
|
|
49
|
+
pending: "pending";
|
|
50
|
+
revalidating: "revalidating";
|
|
51
|
+
"rolled-back": "rolled-back";
|
|
52
|
+
"skipped-stale": "skipped-stale";
|
|
53
|
+
}>;
|
|
54
|
+
startedAt: z.ZodOptional<z.ZodString>;
|
|
55
|
+
completedAt: z.ZodOptional<z.ZodString>;
|
|
56
|
+
reclaimedBytes: z.ZodOptional<z.ZodNumber>;
|
|
29
57
|
diagnostic: z.ZodOptional<z.ZodObject<{
|
|
30
58
|
severity: z.ZodEnum<{
|
|
31
59
|
error: "error";
|
|
@@ -38,7 +66,74 @@ export declare const actionExecutionSchema: z.ZodObject<{
|
|
|
38
66
|
resourceId: z.ZodOptional<z.ZodString>;
|
|
39
67
|
remediation: z.ZodOptional<z.ZodString>;
|
|
40
68
|
}, z.core.$strip>>;
|
|
69
|
+
type: z.ZodLiteral<"worktree.quarantine">;
|
|
70
|
+
quarantineEntryId: z.ZodOptional<z.ZodString>;
|
|
71
|
+
quarantinePath: z.ZodOptional<z.ZodString>;
|
|
72
|
+
recoveryRef: z.ZodOptional<z.ZodString>;
|
|
73
|
+
quarantinedBytes: z.ZodOptional<z.ZodNumber>;
|
|
41
74
|
}, z.core.$strip>;
|
|
75
|
+
export declare const actionExecutionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
76
|
+
actionId: z.ZodString;
|
|
77
|
+
status: z.ZodEnum<{
|
|
78
|
+
applied: "applied";
|
|
79
|
+
applying: "applying";
|
|
80
|
+
failed: "failed";
|
|
81
|
+
"partially-applied": "partially-applied";
|
|
82
|
+
pending: "pending";
|
|
83
|
+
revalidating: "revalidating";
|
|
84
|
+
"rolled-back": "rolled-back";
|
|
85
|
+
"skipped-stale": "skipped-stale";
|
|
86
|
+
}>;
|
|
87
|
+
startedAt: z.ZodOptional<z.ZodString>;
|
|
88
|
+
completedAt: z.ZodOptional<z.ZodString>;
|
|
89
|
+
reclaimedBytes: z.ZodOptional<z.ZodNumber>;
|
|
90
|
+
diagnostic: z.ZodOptional<z.ZodObject<{
|
|
91
|
+
severity: z.ZodEnum<{
|
|
92
|
+
error: "error";
|
|
93
|
+
info: "info";
|
|
94
|
+
warning: "warning";
|
|
95
|
+
}>;
|
|
96
|
+
code: z.ZodString;
|
|
97
|
+
message: z.ZodString;
|
|
98
|
+
adapter: z.ZodOptional<z.ZodString>;
|
|
99
|
+
resourceId: z.ZodOptional<z.ZodString>;
|
|
100
|
+
remediation: z.ZodOptional<z.ZodString>;
|
|
101
|
+
}, z.core.$strip>>;
|
|
102
|
+
type: z.ZodLiteral<"artifacts.remove">;
|
|
103
|
+
isolationPath: z.ZodOptional<z.ZodString>;
|
|
104
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
105
|
+
actionId: z.ZodString;
|
|
106
|
+
status: z.ZodEnum<{
|
|
107
|
+
applied: "applied";
|
|
108
|
+
applying: "applying";
|
|
109
|
+
failed: "failed";
|
|
110
|
+
"partially-applied": "partially-applied";
|
|
111
|
+
pending: "pending";
|
|
112
|
+
revalidating: "revalidating";
|
|
113
|
+
"rolled-back": "rolled-back";
|
|
114
|
+
"skipped-stale": "skipped-stale";
|
|
115
|
+
}>;
|
|
116
|
+
startedAt: z.ZodOptional<z.ZodString>;
|
|
117
|
+
completedAt: z.ZodOptional<z.ZodString>;
|
|
118
|
+
reclaimedBytes: z.ZodOptional<z.ZodNumber>;
|
|
119
|
+
diagnostic: z.ZodOptional<z.ZodObject<{
|
|
120
|
+
severity: z.ZodEnum<{
|
|
121
|
+
error: "error";
|
|
122
|
+
info: "info";
|
|
123
|
+
warning: "warning";
|
|
124
|
+
}>;
|
|
125
|
+
code: z.ZodString;
|
|
126
|
+
message: z.ZodString;
|
|
127
|
+
adapter: z.ZodOptional<z.ZodString>;
|
|
128
|
+
resourceId: z.ZodOptional<z.ZodString>;
|
|
129
|
+
remediation: z.ZodOptional<z.ZodString>;
|
|
130
|
+
}, z.core.$strip>>;
|
|
131
|
+
type: z.ZodLiteral<"worktree.quarantine">;
|
|
132
|
+
quarantineEntryId: z.ZodOptional<z.ZodString>;
|
|
133
|
+
quarantinePath: z.ZodOptional<z.ZodString>;
|
|
134
|
+
recoveryRef: z.ZodOptional<z.ZodString>;
|
|
135
|
+
quarantinedBytes: z.ZodOptional<z.ZodNumber>;
|
|
136
|
+
}, z.core.$strip>], "type">;
|
|
42
137
|
export declare const runStatusSchema: z.ZodEnum<{
|
|
43
138
|
completed: "completed";
|
|
44
139
|
failed: "failed";
|
|
@@ -59,9 +154,8 @@ export declare const cleanupRunSchema: z.ZodObject<{
|
|
|
59
154
|
partial: "partial";
|
|
60
155
|
running: "running";
|
|
61
156
|
}>;
|
|
62
|
-
actions: z.ZodArray<z.ZodObject<{
|
|
157
|
+
actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
63
158
|
actionId: z.ZodString;
|
|
64
|
-
type: z.ZodLiteral<"artifacts.remove">;
|
|
65
159
|
status: z.ZodEnum<{
|
|
66
160
|
applied: "applied";
|
|
67
161
|
applying: "applying";
|
|
@@ -75,7 +169,35 @@ export declare const cleanupRunSchema: z.ZodObject<{
|
|
|
75
169
|
startedAt: z.ZodOptional<z.ZodString>;
|
|
76
170
|
completedAt: z.ZodOptional<z.ZodString>;
|
|
77
171
|
reclaimedBytes: z.ZodOptional<z.ZodNumber>;
|
|
172
|
+
diagnostic: z.ZodOptional<z.ZodObject<{
|
|
173
|
+
severity: z.ZodEnum<{
|
|
174
|
+
error: "error";
|
|
175
|
+
info: "info";
|
|
176
|
+
warning: "warning";
|
|
177
|
+
}>;
|
|
178
|
+
code: z.ZodString;
|
|
179
|
+
message: z.ZodString;
|
|
180
|
+
adapter: z.ZodOptional<z.ZodString>;
|
|
181
|
+
resourceId: z.ZodOptional<z.ZodString>;
|
|
182
|
+
remediation: z.ZodOptional<z.ZodString>;
|
|
183
|
+
}, z.core.$strip>>;
|
|
184
|
+
type: z.ZodLiteral<"artifacts.remove">;
|
|
78
185
|
isolationPath: z.ZodOptional<z.ZodString>;
|
|
186
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
187
|
+
actionId: z.ZodString;
|
|
188
|
+
status: z.ZodEnum<{
|
|
189
|
+
applied: "applied";
|
|
190
|
+
applying: "applying";
|
|
191
|
+
failed: "failed";
|
|
192
|
+
"partially-applied": "partially-applied";
|
|
193
|
+
pending: "pending";
|
|
194
|
+
revalidating: "revalidating";
|
|
195
|
+
"rolled-back": "rolled-back";
|
|
196
|
+
"skipped-stale": "skipped-stale";
|
|
197
|
+
}>;
|
|
198
|
+
startedAt: z.ZodOptional<z.ZodString>;
|
|
199
|
+
completedAt: z.ZodOptional<z.ZodString>;
|
|
200
|
+
reclaimedBytes: z.ZodOptional<z.ZodNumber>;
|
|
79
201
|
diagnostic: z.ZodOptional<z.ZodObject<{
|
|
80
202
|
severity: z.ZodEnum<{
|
|
81
203
|
error: "error";
|
|
@@ -88,8 +210,14 @@ export declare const cleanupRunSchema: z.ZodObject<{
|
|
|
88
210
|
resourceId: z.ZodOptional<z.ZodString>;
|
|
89
211
|
remediation: z.ZodOptional<z.ZodString>;
|
|
90
212
|
}, z.core.$strip>>;
|
|
91
|
-
|
|
213
|
+
type: z.ZodLiteral<"worktree.quarantine">;
|
|
214
|
+
quarantineEntryId: z.ZodOptional<z.ZodString>;
|
|
215
|
+
quarantinePath: z.ZodOptional<z.ZodString>;
|
|
216
|
+
recoveryRef: z.ZodOptional<z.ZodString>;
|
|
217
|
+
quarantinedBytes: z.ZodOptional<z.ZodNumber>;
|
|
218
|
+
}, z.core.$strip>], "type">>;
|
|
92
219
|
reclaimedBytes: z.ZodNumber;
|
|
220
|
+
quarantinedBytes: z.ZodOptional<z.ZodNumber>;
|
|
93
221
|
diagnostics: z.ZodArray<z.ZodObject<{
|
|
94
222
|
severity: z.ZodEnum<{
|
|
95
223
|
error: "error";
|
|
@@ -1 +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
|
|
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;AAWH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGxC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMxC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAGhC,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;EAAuE,CAAC;AAEpG,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAW3B,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"}
|
package/dist/contracts/run.js
CHANGED
|
@@ -10,16 +10,29 @@ export const actionExecutionStatusSchema = z.enum([
|
|
|
10
10
|
"rolled-back",
|
|
11
11
|
"partially-applied",
|
|
12
12
|
]);
|
|
13
|
-
|
|
13
|
+
const actionExecutionBaseSchema = z.object({
|
|
14
14
|
actionId: z.string().min(1),
|
|
15
|
-
type: z.literal("artifacts.remove"),
|
|
16
15
|
status: actionExecutionStatusSchema,
|
|
17
16
|
startedAt: z.string().datetime().optional(),
|
|
18
17
|
completedAt: z.string().datetime().optional(),
|
|
19
18
|
reclaimedBytes: z.number().int().nonnegative().optional(),
|
|
20
|
-
isolationPath: z.string().min(1).optional(),
|
|
21
19
|
diagnostic: diagnosticSchema.optional(),
|
|
22
20
|
});
|
|
21
|
+
export const artifactActionExecutionSchema = actionExecutionBaseSchema.extend({
|
|
22
|
+
type: z.literal("artifacts.remove"),
|
|
23
|
+
isolationPath: z.string().min(1).optional(),
|
|
24
|
+
});
|
|
25
|
+
export const worktreeActionExecutionSchema = actionExecutionBaseSchema.extend({
|
|
26
|
+
type: z.literal("worktree.quarantine"),
|
|
27
|
+
quarantineEntryId: z.string().min(1).optional(),
|
|
28
|
+
quarantinePath: z.string().min(1).optional(),
|
|
29
|
+
recoveryRef: z.string().min(1).optional(),
|
|
30
|
+
quarantinedBytes: z.number().int().nonnegative().optional(),
|
|
31
|
+
});
|
|
32
|
+
export const actionExecutionSchema = z.discriminatedUnion("type", [
|
|
33
|
+
artifactActionExecutionSchema,
|
|
34
|
+
worktreeActionExecutionSchema,
|
|
35
|
+
]);
|
|
23
36
|
export const runStatusSchema = z.enum(["running", "completed", "partial", "failed", "interrupted"]);
|
|
24
37
|
export const cleanupRunSchema = z.object({
|
|
25
38
|
schemaVersion: z.literal(1),
|
|
@@ -30,6 +43,7 @@ export const cleanupRunSchema = z.object({
|
|
|
30
43
|
status: runStatusSchema,
|
|
31
44
|
actions: z.array(actionExecutionSchema),
|
|
32
45
|
reclaimedBytes: z.number().int().nonnegative(),
|
|
46
|
+
quarantinedBytes: z.number().int().nonnegative().optional(),
|
|
33
47
|
diagnostics: z.array(diagnosticSchema),
|
|
34
48
|
});
|
|
35
49
|
//# sourceMappingURL=run.js.map
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/contracts/run.ts"],"names":[],"mappings":"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"}
|
package/dist/core/apply.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { type AgentRinseConfig } from "../config/schema.js";
|
|
2
|
-
import type { ArtifactRemoveAction } from "../contracts/action.js";
|
|
2
|
+
import type { ArtifactRemoveAction, WorktreeQuarantineAction } from "../contracts/action.js";
|
|
3
3
|
import type { CleanupPlan } from "../contracts/plan.js";
|
|
4
4
|
import type { CleanupRun } from "../contracts/run.js";
|
|
5
5
|
import { createRunJournal } from "../state/run-journal.js";
|
|
6
6
|
import { type ArtifactExecutionResult } from "./artifact-executor.js";
|
|
7
7
|
import { type ArtifactRevalidationResult } from "./artifact-revalidation.js";
|
|
8
|
+
import { type ExecuteWorktreeQuarantineOptions, type WorktreeExecutionResult } from "./worktree-executor.js";
|
|
9
|
+
import { type WorktreeRevalidationResult } from "./worktree-revalidation.js";
|
|
10
|
+
import type { RootEvidence } from "../contracts/finding.js";
|
|
8
11
|
export declare class ApplySafetyError extends Error {
|
|
9
12
|
readonly name = "ApplySafetyError";
|
|
10
13
|
}
|
|
@@ -16,8 +19,12 @@ export type ApplyResult = {
|
|
|
16
19
|
export type ApplyDependencies = {
|
|
17
20
|
clock?: () => Date;
|
|
18
21
|
createJournal?: typeof createRunJournal;
|
|
22
|
+
loadCurrentConfig?: () => Promise<AgentRinseConfig>;
|
|
19
23
|
revalidate?: (action: ArtifactRemoveAction, home: string, config: AgentRinseConfig) => Promise<ArtifactRevalidationResult>;
|
|
20
24
|
execute?: (action: ArtifactRemoveAction, isolationId: string) => Promise<ArtifactExecutionResult>;
|
|
25
|
+
revalidateWorktree?: (action: WorktreeQuarantineAction, home: string, config: AgentRinseConfig) => Promise<WorktreeRevalidationResult>;
|
|
26
|
+
executeWorktree?: (action: WorktreeQuarantineAction, options: ExecuteWorktreeQuarantineOptions) => Promise<WorktreeExecutionResult>;
|
|
27
|
+
worktreeProtectionRoots?: (action: WorktreeQuarantineAction, home: string, config: AgentRinseConfig, now: Date) => Promise<RootEvidence[]>;
|
|
21
28
|
};
|
|
22
29
|
export type ApplyCleanupPlanOptions = {
|
|
23
30
|
input: unknown;
|
package/dist/core/apply.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/core/apply.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/core/apply.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,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,OAAO,EAKL,KAAK,gCAAgC,EACrC,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,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,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACpD,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;IAClG,kBAAkB,CAAC,EAAE,CACnB,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,KACrB,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACzC,eAAe,CAAC,EAAE,CAChB,MAAM,EAAE,wBAAwB,EAChC,OAAO,EAAE,gCAAgC,KACtC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACtC,uBAAuB,CAAC,EAAE,CACxB,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,IAAI,KACN,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAWF,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,CA0Q7F"}
|