@imricci/zaker 0.1.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 (100) hide show
  1. package/dist/commands/align.d.ts +3 -0
  2. package/dist/commands/align.js +28 -0
  3. package/dist/commands/align.js.map +1 -0
  4. package/dist/commands/audit.d.ts +3 -0
  5. package/dist/commands/audit.js +59 -0
  6. package/dist/commands/audit.js.map +1 -0
  7. package/dist/commands/confirm.d.ts +3 -0
  8. package/dist/commands/confirm.js +22 -0
  9. package/dist/commands/confirm.js.map +1 -0
  10. package/dist/commands/dialog.d.ts +9 -0
  11. package/dist/commands/dialog.js +396 -0
  12. package/dist/commands/dialog.js.map +1 -0
  13. package/dist/commands/init.d.ts +3 -0
  14. package/dist/commands/init.js +31 -0
  15. package/dist/commands/init.js.map +1 -0
  16. package/dist/commands/models.d.ts +9 -0
  17. package/dist/commands/models.js +65 -0
  18. package/dist/commands/models.js.map +1 -0
  19. package/dist/commands/plan.d.ts +3 -0
  20. package/dist/commands/plan.js +69 -0
  21. package/dist/commands/plan.js.map +1 -0
  22. package/dist/commands/run.d.ts +40 -0
  23. package/dist/commands/run.js +310 -0
  24. package/dist/commands/run.js.map +1 -0
  25. package/dist/commands/status.d.ts +3 -0
  26. package/dist/commands/status.js +39 -0
  27. package/dist/commands/status.js.map +1 -0
  28. package/dist/commands/tui.d.ts +14 -0
  29. package/dist/commands/tui.js +394 -0
  30. package/dist/commands/tui.js.map +1 -0
  31. package/dist/core/auditor.d.ts +13 -0
  32. package/dist/core/auditor.js +122 -0
  33. package/dist/core/auditor.js.map +1 -0
  34. package/dist/core/c3fi.d.ts +10 -0
  35. package/dist/core/c3fi.js +305 -0
  36. package/dist/core/c3fi.js.map +1 -0
  37. package/dist/core/challenge.d.ts +8 -0
  38. package/dist/core/challenge.js +29 -0
  39. package/dist/core/challenge.js.map +1 -0
  40. package/dist/core/checkpoint.d.ts +20 -0
  41. package/dist/core/checkpoint.js +192 -0
  42. package/dist/core/checkpoint.js.map +1 -0
  43. package/dist/core/execution-provider.d.ts +2 -0
  44. package/dist/core/execution-provider.js +125 -0
  45. package/dist/core/execution-provider.js.map +1 -0
  46. package/dist/core/executor.d.ts +16 -0
  47. package/dist/core/executor.js +68 -0
  48. package/dist/core/executor.js.map +1 -0
  49. package/dist/core/memory.d.ts +11 -0
  50. package/dist/core/memory.js +105 -0
  51. package/dist/core/memory.js.map +1 -0
  52. package/dist/core/planner.d.ts +146 -0
  53. package/dist/core/planner.js +152 -0
  54. package/dist/core/planner.js.map +1 -0
  55. package/dist/core/preflight.d.ts +6 -0
  56. package/dist/core/preflight.js +140 -0
  57. package/dist/core/preflight.js.map +1 -0
  58. package/dist/core/provider-onboarding.d.ts +12 -0
  59. package/dist/core/provider-onboarding.js +32 -0
  60. package/dist/core/provider-onboarding.js.map +1 -0
  61. package/dist/core/run-loop.d.ts +32 -0
  62. package/dist/core/run-loop.js +205 -0
  63. package/dist/core/run-loop.js.map +1 -0
  64. package/dist/core/scope.d.ts +3 -0
  65. package/dist/core/scope.js +75 -0
  66. package/dist/core/scope.js.map +1 -0
  67. package/dist/core/types.d.ts +288 -0
  68. package/dist/core/types.js +11 -0
  69. package/dist/core/types.js.map +1 -0
  70. package/dist/core/verdict-panel.d.ts +29 -0
  71. package/dist/core/verdict-panel.js +120 -0
  72. package/dist/core/verdict-panel.js.map +1 -0
  73. package/dist/core/verifier.d.ts +2 -0
  74. package/dist/core/verifier.js +47 -0
  75. package/dist/core/verifier.js.map +1 -0
  76. package/dist/index.d.ts +2 -0
  77. package/dist/index.js +43 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/infra/config.d.ts +36 -0
  80. package/dist/infra/config.js +397 -0
  81. package/dist/infra/config.js.map +1 -0
  82. package/dist/infra/git.d.ts +6 -0
  83. package/dist/infra/git.js +35 -0
  84. package/dist/infra/git.js.map +1 -0
  85. package/dist/infra/hashing.d.ts +1 -0
  86. package/dist/infra/hashing.js +8 -0
  87. package/dist/infra/hashing.js.map +1 -0
  88. package/dist/infra/intent.d.ts +30 -0
  89. package/dist/infra/intent.js +357 -0
  90. package/dist/infra/intent.js.map +1 -0
  91. package/dist/infra/memory.d.ts +10 -0
  92. package/dist/infra/memory.js +94 -0
  93. package/dist/infra/memory.js.map +1 -0
  94. package/dist/infra/model-catalog.d.ts +27 -0
  95. package/dist/infra/model-catalog.js +273 -0
  96. package/dist/infra/model-catalog.js.map +1 -0
  97. package/dist/infra/process.d.ts +12 -0
  98. package/dist/infra/process.js +32 -0
  99. package/dist/infra/process.js.map +1 -0
  100. package/package.json +39 -0
@@ -0,0 +1,394 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.executeTuiPipeline = executeTuiPipeline;
7
+ exports.registerTuiCommand = registerTuiCommand;
8
+ const promises_1 = require("node:fs/promises");
9
+ const node_path_1 = require("node:path");
10
+ const node_readline_1 = __importDefault(require("node:readline"));
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const verdict_panel_1 = require("../core/verdict-panel");
13
+ const intent_1 = require("../infra/intent");
14
+ const run_1 = require("./run");
15
+ const SESSION_SCHEMA_VERSION = "molo.tui.session.v1";
16
+ const DEFAULT_SESSION_PATH = ".molo/tui_session.json";
17
+ function now() {
18
+ return new Date().toISOString();
19
+ }
20
+ function estimateTokensFromTraces(traces) {
21
+ const material = traces
22
+ .map((trace) => JSON.stringify(trace.input ?? "") + JSON.stringify(trace.output ?? ""))
23
+ .join("");
24
+ return Math.ceil(material.length / 4);
25
+ }
26
+ function dedupeStrings(values) {
27
+ return [...new Set(values.map((value) => value.trim()).filter((value) => value.length > 0))];
28
+ }
29
+ function buildSummary(output, currentStage) {
30
+ const checkpoint = output.checkpoint;
31
+ const panel = (0, verdict_panel_1.buildVerdictPanel)(output.finalAuditResult, checkpoint);
32
+ return {
33
+ verdict: output.interpretation.verdict,
34
+ stage: currentStage,
35
+ rule_hits: panel.rule_hits,
36
+ changed_files: panel.changed_files,
37
+ tests_passed: panel.tests_passed,
38
+ tests_total: panel.tests_total,
39
+ test_status: panel.test_status,
40
+ risk_hit: panel.risk_hit,
41
+ audit_conclusion: panel.audit_conclusion,
42
+ reason_code: panel.reason_code,
43
+ retry_allowed: panel.retry_allowed,
44
+ retry_reason: panel.retry_reason,
45
+ challenge_type: panel.challenge_type,
46
+ objections: panel.objections,
47
+ required_evidence: panel.required_evidence,
48
+ trigger_rule: panel.trigger_rule,
49
+ evidence_refs: panel.evidence_refs,
50
+ skill_statuses: panel.skill_statuses,
51
+ token_estimate: estimateTokensFromTraces(output.modelTraces),
52
+ cloud_plan_calls: checkpoint?.budget.cloud_plan_calls ?? 0,
53
+ cloud_audit_calls: checkpoint?.budget.cloud_audit_calls ?? 0,
54
+ challenge_used: checkpoint?.budget.challenge_used ?? 0
55
+ };
56
+ }
57
+ async function readSessionSnapshot(sessionPath) {
58
+ try {
59
+ const raw = await (0, promises_1.readFile)(sessionPath, "utf8");
60
+ const parsed = JSON.parse(raw);
61
+ if (parsed.schema_version !== SESSION_SCHEMA_VERSION) {
62
+ return null;
63
+ }
64
+ return parsed;
65
+ }
66
+ catch {
67
+ return null;
68
+ }
69
+ }
70
+ async function writeSessionSnapshot(sessionPath, snapshot) {
71
+ await (0, promises_1.mkdir)((0, node_path_1.dirname)(sessionPath), { recursive: true });
72
+ await (0, promises_1.writeFile)(sessionPath, `${JSON.stringify(snapshot, null, 2)}\n`, "utf8");
73
+ }
74
+ class TuiRenderer {
75
+ description;
76
+ sessionPath;
77
+ hold;
78
+ viewMode;
79
+ startedAt;
80
+ stage = "onboarding";
81
+ lastStageMessage = "";
82
+ summary;
83
+ traces = [];
84
+ checkpoint;
85
+ finalAudit;
86
+ status = "running";
87
+ keypressBound = false;
88
+ waitResolve = null;
89
+ constructor(description, sessionPath, hold, initialView = "default") {
90
+ this.description = description;
91
+ this.sessionPath = sessionPath;
92
+ this.hold = hold;
93
+ this.viewMode = initialView;
94
+ this.startedAt = now();
95
+ this.summary = {
96
+ verdict: "RUNNING",
97
+ stage: "onboarding",
98
+ rule_hits: [],
99
+ changed_files: 0,
100
+ tests_passed: 0,
101
+ tests_total: 0,
102
+ test_status: "PENDING",
103
+ risk_hit: "未知",
104
+ audit_conclusion: "等待审计",
105
+ reason_code: "PENDING",
106
+ retry_allowed: false,
107
+ retry_reason: "retry blocked by rule PENDING",
108
+ objections: [],
109
+ required_evidence: [],
110
+ trigger_rule: "PENDING",
111
+ evidence_refs: [],
112
+ skill_statuses: [],
113
+ token_estimate: 0,
114
+ cloud_plan_calls: 0,
115
+ cloud_audit_calls: 0,
116
+ challenge_used: 0
117
+ };
118
+ }
119
+ async restoreFromSnapshot(snapshot) {
120
+ this.viewMode = snapshot.view_mode;
121
+ this.status = snapshot.status;
122
+ this.summary = snapshot.summary;
123
+ this.stage = snapshot.summary.stage || this.stage;
124
+ this.lastStageMessage = snapshot.last_stage_message ?? "";
125
+ this.checkpoint = snapshot.checkpoint;
126
+ this.finalAudit = snapshot.final_audit;
127
+ this.traces = snapshot.model_traces ?? [];
128
+ this.render();
129
+ }
130
+ async start() {
131
+ this.bindKeypress();
132
+ await this.persist();
133
+ this.render();
134
+ }
135
+ hooks() {
136
+ return {
137
+ onStage: async (event) => {
138
+ await this.updateStage(event);
139
+ },
140
+ onChallenge: async (interpretation) => {
141
+ this.summary.objections = dedupeStrings([
142
+ ...this.summary.objections,
143
+ ...interpretation.lines.slice(1)
144
+ ]);
145
+ this.render();
146
+ await this.persist();
147
+ },
148
+ onModelTrace: async (trace) => {
149
+ this.traces = this.traces
150
+ .filter((entry) => !(entry.kind === trace.kind && entry.started_at === trace.started_at))
151
+ .concat(trace);
152
+ this.summary.token_estimate = estimateTokensFromTraces(this.traces);
153
+ this.render();
154
+ await this.persist();
155
+ }
156
+ };
157
+ }
158
+ async updateStage(event) {
159
+ this.stage = event.stage;
160
+ this.summary.stage = event.stage;
161
+ this.lastStageMessage = event.message;
162
+ if (event.status === "failed") {
163
+ this.status = "failed";
164
+ }
165
+ this.render();
166
+ await this.persist();
167
+ }
168
+ async complete(output) {
169
+ this.summary = buildSummary(output, this.stage);
170
+ this.checkpoint = output.checkpoint;
171
+ this.finalAudit = output.finalAuditResult;
172
+ this.traces = output.modelTraces;
173
+ this.status = output.interpretation.verdict === "FAIL" ? "failed" : "completed";
174
+ this.summary.token_estimate = estimateTokensFromTraces(this.traces);
175
+ this.render();
176
+ await this.persist();
177
+ }
178
+ async fail(message) {
179
+ this.status = "failed";
180
+ this.summary.verdict = "FAIL";
181
+ this.summary.audit_conclusion = message;
182
+ this.summary.reason_code = "RUN_PIPELINE_ERROR";
183
+ this.summary.trigger_rule = "RUN_PIPELINE_ERROR";
184
+ this.render();
185
+ await this.persist();
186
+ }
187
+ async finish() {
188
+ if (this.hold) {
189
+ await this.waitForQuit();
190
+ }
191
+ this.unbindKeypress();
192
+ }
193
+ bindKeypress() {
194
+ if (this.keypressBound || !process.stdin.isTTY) {
195
+ return;
196
+ }
197
+ node_readline_1.default.emitKeypressEvents(process.stdin);
198
+ process.stdin.setRawMode(true);
199
+ process.stdin.on("keypress", this.onKeypress);
200
+ this.keypressBound = true;
201
+ }
202
+ unbindKeypress() {
203
+ if (!this.keypressBound || !process.stdin.isTTY) {
204
+ return;
205
+ }
206
+ process.stdin.off("keypress", this.onKeypress);
207
+ process.stdin.setRawMode(false);
208
+ this.keypressBound = false;
209
+ }
210
+ onKeypress = (_str, key) => {
211
+ if (key.ctrl && key.name === "c") {
212
+ this.unbindKeypress();
213
+ process.exit(130);
214
+ }
215
+ if (key.name === "q") {
216
+ this.waitResolve?.();
217
+ this.waitResolve = null;
218
+ return;
219
+ }
220
+ if (key.name === "1") {
221
+ this.viewMode = "default";
222
+ this.render();
223
+ return;
224
+ }
225
+ if (key.name === "2") {
226
+ this.viewMode = "detail";
227
+ this.render();
228
+ return;
229
+ }
230
+ if (key.name === "3") {
231
+ this.viewMode = "debug";
232
+ this.render();
233
+ }
234
+ };
235
+ waitForQuit() {
236
+ return new Promise((resolve) => {
237
+ this.waitResolve = resolve;
238
+ });
239
+ }
240
+ async persist() {
241
+ const snapshot = {
242
+ schema_version: SESSION_SCHEMA_VERSION,
243
+ status: this.status,
244
+ description: this.description,
245
+ started_at: this.startedAt,
246
+ updated_at: now(),
247
+ view_mode: this.viewMode,
248
+ summary: this.summary,
249
+ checkpoint: this.checkpoint,
250
+ final_audit: this.finalAudit,
251
+ model_traces: this.traces,
252
+ last_stage_message: this.lastStageMessage
253
+ };
254
+ await writeSessionSnapshot(this.sessionPath, snapshot);
255
+ }
256
+ render() {
257
+ if (!process.stdout.isTTY) {
258
+ return;
259
+ }
260
+ process.stdout.write("\x1Bc");
261
+ const lines = [];
262
+ lines.push(chalk_1.default.bold("MOLO TUI"));
263
+ lines.push(`View: ${this.viewMode} (1=Default 2=Detail 3=Debug, q=Quit)`);
264
+ lines.push(`Session: ${this.status}`);
265
+ lines.push(`Stage: ${this.stage}`);
266
+ lines.push(`Message: ${this.lastStageMessage || "-"}`);
267
+ lines.push("");
268
+ if (this.viewMode === "default") {
269
+ lines.push(chalk_1.default.bold("Default View"));
270
+ lines.push(`Verdict: ${this.summary.verdict}`);
271
+ lines.push(`Rule Hits: ${this.summary.rule_hits.join(", ") || "-"}`);
272
+ lines.push(`Changed Files: ${this.summary.changed_files}`);
273
+ lines.push(`Test Status: ${this.summary.test_status} (${this.summary.tests_passed}/${this.summary.tests_total})`);
274
+ lines.push(`Risk Hit: ${this.summary.risk_hit}`);
275
+ lines.push(`Retry: ${this.summary.retry_allowed ? "YES" : "NO"} (${this.summary.retry_reason})`);
276
+ lines.push(`Audit: ${this.summary.audit_conclusion}`);
277
+ lines.push("Skills:");
278
+ for (const item of this.summary.skill_statuses) {
279
+ lines.push(`- ${item.skill}: ${item.status} (${item.detail})`);
280
+ }
281
+ if (this.summary.skill_statuses.length === 0) {
282
+ lines.push("- 无");
283
+ }
284
+ lines.push(`Token Est.: ${this.summary.token_estimate} | Cloud(plan=${this.summary.cloud_plan_calls}, audit=${this.summary.cloud_audit_calls})`);
285
+ }
286
+ else if (this.viewMode === "detail") {
287
+ lines.push(chalk_1.default.bold("Audit Detail View"));
288
+ lines.push(`Trigger Rule: ${this.summary.trigger_rule}`);
289
+ lines.push(`Reason Code: ${this.summary.reason_code}`);
290
+ lines.push(`Challenge Type: ${this.summary.challenge_type ?? "-"}`);
291
+ lines.push("Objections:");
292
+ for (const item of this.summary.objections) {
293
+ lines.push(`- ${item}`);
294
+ }
295
+ if (this.summary.objections.length === 0) {
296
+ lines.push("- 无");
297
+ }
298
+ lines.push("Required Evidence:");
299
+ for (const item of this.summary.required_evidence) {
300
+ lines.push(`- ${item}`);
301
+ }
302
+ if (this.summary.required_evidence.length === 0) {
303
+ lines.push("- 无");
304
+ }
305
+ lines.push("Files:");
306
+ for (const file of this.checkpoint?.changed_files ?? []) {
307
+ lines.push(`- ${file}`);
308
+ }
309
+ if ((this.checkpoint?.changed_files ?? []).length === 0) {
310
+ lines.push("- 无");
311
+ }
312
+ lines.push("Evidence Refs:");
313
+ for (const ref of this.summary.evidence_refs) {
314
+ lines.push(`- ${ref}`);
315
+ }
316
+ lines.push(`Retry Allowed: ${this.summary.retry_allowed ? "YES" : "NO"}`);
317
+ lines.push(`Retry Reason: ${this.summary.retry_reason}`);
318
+ }
319
+ else {
320
+ lines.push(chalk_1.default.bold("Debug View"));
321
+ lines.push("Raw Model Trace:");
322
+ lines.push(JSON.stringify(this.traces, null, 2));
323
+ lines.push("");
324
+ lines.push("Raw Final Audit:");
325
+ lines.push(JSON.stringify(this.finalAudit ?? null, null, 2));
326
+ lines.push("");
327
+ lines.push("Checkpoint:");
328
+ lines.push(JSON.stringify(this.checkpoint ?? null, null, 2));
329
+ }
330
+ process.stdout.write(`${lines.join("\n")}\n`);
331
+ }
332
+ }
333
+ async function executeTuiPipeline(description, options, cwd = process.cwd()) {
334
+ if (!options.intentBinding) {
335
+ throw new Error("intent binding is required for TUI execution.");
336
+ }
337
+ if (!process.stdout.isTTY || !process.stdin.isTTY) {
338
+ console.log(chalk_1.default.yellow("TTY unavailable, fallback to CLI pipeline."));
339
+ return (0, run_1.runPipeline)(description, options.sopOut, options.checkpointOut, cwd, {
340
+ intentBinding: options.intentBinding
341
+ });
342
+ }
343
+ const sessionPath = (0, node_path_1.resolve)(cwd, options.session);
344
+ const snapshot = options.resume
345
+ ? await readSessionSnapshot(sessionPath)
346
+ : null;
347
+ const renderer = new TuiRenderer(description, sessionPath, Boolean(options.hold), snapshot?.view_mode ?? "default");
348
+ await renderer.start();
349
+ if (snapshot) {
350
+ await renderer.restoreFromSnapshot(snapshot);
351
+ }
352
+ try {
353
+ const output = await (0, run_1.runPipeline)(description, options.sopOut, options.checkpointOut, cwd, { quiet: true, hooks: renderer.hooks(), intentBinding: options.intentBinding });
354
+ await renderer.complete(output);
355
+ return output;
356
+ }
357
+ catch (error) {
358
+ const message = error instanceof Error ? error.message : String(error);
359
+ await renderer.fail(message);
360
+ throw error;
361
+ }
362
+ finally {
363
+ await renderer.finish();
364
+ }
365
+ }
366
+ function registerTuiCommand(program) {
367
+ program
368
+ .command("tui")
369
+ .description("interactive structured verdict TUI for confirmed intent")
370
+ .option("-o, --sop-out <path>", "sop output path", "sop.json")
371
+ .option("-c, --checkpoint-out <path>", "checkpoint output path", "checkpoint.json")
372
+ .option("-s, --session <path>", "tui session path", DEFAULT_SESSION_PATH)
373
+ .option("--resume", "resume from previous session snapshot", false)
374
+ .option("--hold", "hold final TUI screen until q is pressed", false)
375
+ .action(async (options) => {
376
+ const cwd = process.cwd();
377
+ const started = await (0, intent_1.startConfirmedRun)(cwd);
378
+ const runOptions = {
379
+ ...options,
380
+ intentBinding: started.binding
381
+ };
382
+ let verdict = "FAIL";
383
+ let checkpointId;
384
+ try {
385
+ const output = await executeTuiPipeline((0, intent_1.buildIntentExecutionDescription)(started.intent), runOptions, cwd);
386
+ verdict = output.interpretation.verdict;
387
+ checkpointId = output.checkpoint?.checkpoint_id;
388
+ }
389
+ finally {
390
+ await (0, intent_1.finishRunCycle)(verdict, checkpointId, cwd);
391
+ }
392
+ });
393
+ }
394
+ //# sourceMappingURL=tui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/commands/tui.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { AuditResult, Checkpoint, Verdict } from "./types";
2
+ export interface InterpretedAudit {
3
+ verdict: Verdict;
4
+ lines: string[];
5
+ exitCode: number;
6
+ }
7
+ export interface AuditInterpretOptions {
8
+ allowChallenge?: boolean;
9
+ }
10
+ export declare function guardCheckpointForAudit(checkpoint: Checkpoint): InterpretedAudit | null;
11
+ export declare function normalizeAuditResult(input: unknown): AuditResult;
12
+ export declare function interpretAuditResult(input: unknown, options?: AuditInterpretOptions): InterpretedAudit;
13
+ export declare function humanInterventionResult(message: string): InterpretedAudit;
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.guardCheckpointForAudit = guardCheckpointForAudit;
4
+ exports.normalizeAuditResult = normalizeAuditResult;
5
+ exports.interpretAuditResult = interpretAuditResult;
6
+ exports.humanInterventionResult = humanInterventionResult;
7
+ const zod_1 = require("zod");
8
+ const types_1 = require("./types");
9
+ const CHALLENGE_TYPES = ["C1", "C2", "C3", "C3-FI", "C4", "C5", "C6"];
10
+ const challengeTypeSchema = zod_1.z.enum(CHALLENGE_TYPES);
11
+ const auditChallengeSchema = zod_1.z.object({
12
+ challenge_id: zod_1.z.string().min(1),
13
+ type: challengeTypeSchema,
14
+ fingerprint: zod_1.z.string().min(1),
15
+ instruction: zod_1.z.string().min(1),
16
+ remaining_budget: zod_1.z.number().int().min(0).optional(),
17
+ remediation_patches: zod_1.z.array(zod_1.z.string()).default([])
18
+ });
19
+ const auditResultSchema = zod_1.z
20
+ .object({
21
+ schema_version: zod_1.z.literal(types_1.AUDIT_SCHEMA_VERSION),
22
+ verdict: zod_1.z.enum(["PASS", "CHALLENGE", "FAIL"]),
23
+ reason_code: zod_1.z.string().min(1),
24
+ message: zod_1.z.string(),
25
+ challenge: auditChallengeSchema.optional()
26
+ })
27
+ .superRefine((value, ctx) => {
28
+ if (value.verdict === "CHALLENGE" && !value.challenge) {
29
+ ctx.addIssue({
30
+ code: zod_1.z.ZodIssueCode.custom,
31
+ message: "challenge payload is required when verdict=CHALLENGE",
32
+ path: ["challenge"]
33
+ });
34
+ }
35
+ });
36
+ function guardCheckpointForAudit(checkpoint) {
37
+ if (!checkpoint.runner_attestation) {
38
+ return {
39
+ verdict: "FAIL",
40
+ lines: ["FAIL", "Missing runner_attestation in checkpoint."],
41
+ exitCode: 1
42
+ };
43
+ }
44
+ if (!checkpoint.runner_attestation.metadata) {
45
+ return {
46
+ verdict: "FAIL",
47
+ lines: ["FAIL", "Missing runner_attestation.metadata in checkpoint."],
48
+ exitCode: 1
49
+ };
50
+ }
51
+ if (!checkpoint.intent_id || !checkpoint.intent_sha256 || !checkpoint.intent_confirmed_at) {
52
+ return {
53
+ verdict: "FAIL",
54
+ lines: ["FAIL", "Missing intent binding fields in checkpoint."],
55
+ exitCode: 1
56
+ };
57
+ }
58
+ return null;
59
+ }
60
+ function normalizeAuditResult(input) {
61
+ const parsed = auditResultSchema.parse(input);
62
+ const challenge = parsed.challenge
63
+ ? {
64
+ challenge_id: parsed.challenge.challenge_id,
65
+ type: parsed.challenge.type,
66
+ fingerprint: parsed.challenge.fingerprint,
67
+ instruction: parsed.challenge.instruction,
68
+ remaining_budget: parsed.challenge.remaining_budget,
69
+ remediation_patches: parsed.challenge.remediation_patches
70
+ }
71
+ : undefined;
72
+ return {
73
+ schema_version: parsed.schema_version,
74
+ verdict: parsed.verdict,
75
+ reason_code: parsed.reason_code,
76
+ message: parsed.message,
77
+ challenge
78
+ };
79
+ }
80
+ function interpretAuditResult(input, options = {}) {
81
+ const allowChallenge = options.allowChallenge ?? true;
82
+ const result = normalizeAuditResult(input);
83
+ if (result.verdict === "PASS") {
84
+ return {
85
+ verdict: "PASS",
86
+ lines: ["PASS", result.message || "Audit passed."],
87
+ exitCode: 0
88
+ };
89
+ }
90
+ if (result.verdict === "CHALLENGE" && allowChallenge) {
91
+ const challengeReason = result.challenge?.instruction || "Challenge requested.";
92
+ return {
93
+ verdict: "CHALLENGE",
94
+ lines: ["CHALLENGE", result.message || challengeReason, challengeReason],
95
+ exitCode: 2
96
+ };
97
+ }
98
+ if (result.verdict === "CHALLENGE" && !allowChallenge) {
99
+ return {
100
+ verdict: "FAIL",
101
+ lines: [
102
+ "FAIL",
103
+ "CHALLENGE is disabled in current mode.",
104
+ result.message || result.challenge?.instruction || "Challenge requested."
105
+ ],
106
+ exitCode: 1
107
+ };
108
+ }
109
+ return {
110
+ verdict: "FAIL",
111
+ lines: ["FAIL", result.message || "Audit failed."],
112
+ exitCode: 1
113
+ };
114
+ }
115
+ function humanInterventionResult(message) {
116
+ return {
117
+ verdict: "FAIL",
118
+ lines: ["FAIL", "HUMAN_INTERVENTION_REQUIRED", message],
119
+ exitCode: 1
120
+ };
121
+ }
122
+ //# sourceMappingURL=auditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auditor.js","sourceRoot":"","sources":["../../src/core/auditor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { RunnerCommandSignature, VerificationReport, C3FIReport } from "./types";
2
+ export interface C3FIOptions {
3
+ changedFiles: string[];
4
+ verificationCommands: RunnerCommandSignature[];
5
+ initialVerification: VerificationReport;
6
+ riskPathsFile: string;
7
+ cwd?: string;
8
+ }
9
+ export declare function createSkippedC3FIReport(reason: string): C3FIReport;
10
+ export declare function runC3FaultInjection(options: C3FIOptions): Promise<C3FIReport>;