kevlar-4u 1.6.9 → 1.6.10

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 (43) hide show
  1. package/dist/__tests__/observations.test.d.ts +2 -0
  2. package/dist/__tests__/observations.test.d.ts.map +1 -0
  3. package/dist/__tests__/observations.test.js +357 -0
  4. package/dist/__tests__/observations.test.js.map +1 -0
  5. package/dist/execution/base.d.ts +2 -0
  6. package/dist/execution/base.d.ts.map +1 -1
  7. package/dist/execution/base.js +1 -0
  8. package/dist/execution/base.js.map +1 -1
  9. package/dist/execution/checkpoint.d.ts +73 -0
  10. package/dist/execution/checkpoint.d.ts.map +1 -0
  11. package/dist/execution/checkpoint.js +51 -0
  12. package/dist/execution/checkpoint.js.map +1 -0
  13. package/dist/execution/client.d.ts +62 -2
  14. package/dist/execution/client.d.ts.map +1 -1
  15. package/dist/execution/client.js +216 -19
  16. package/dist/execution/client.js.map +1 -1
  17. package/dist/execution/index.d.ts +30 -1
  18. package/dist/execution/index.d.ts.map +1 -1
  19. package/dist/execution/index.js +97 -3
  20. package/dist/execution/index.js.map +1 -1
  21. package/dist/execution/jsonParser.d.ts +2 -2
  22. package/dist/execution/observations.d.ts +58 -0
  23. package/dist/execution/observations.d.ts.map +1 -0
  24. package/dist/execution/observations.js +235 -0
  25. package/dist/execution/observations.js.map +1 -0
  26. package/dist/execution/plan.d.ts +123 -0
  27. package/dist/execution/plan.d.ts.map +1 -0
  28. package/dist/execution/plan.js +16 -0
  29. package/dist/execution/plan.js.map +1 -0
  30. package/dist/server.d.ts.map +1 -1
  31. package/dist/server.js +2 -0
  32. package/dist/server.js.map +1 -1
  33. package/dist/tools/continueWizardTool.d.ts +22 -0
  34. package/dist/tools/continueWizardTool.d.ts.map +1 -0
  35. package/dist/tools/continueWizardTool.js +185 -0
  36. package/dist/tools/continueWizardTool.js.map +1 -0
  37. package/dist/tools/index.d.ts.map +1 -1
  38. package/dist/tools/index.js +2 -0
  39. package/dist/tools/index.js.map +1 -1
  40. package/dist/tools/reviewContentWizardTool.d.ts.map +1 -1
  41. package/dist/tools/reviewContentWizardTool.js +134 -32
  42. package/dist/tools/reviewContentWizardTool.js.map +1 -1
  43. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=observations.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observations.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/observations.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,357 @@
1
+ import { describe, it, beforeEach, afterEach } from "node:test";
2
+ import assert from "node:assert/strict";
3
+ import * as fs from "fs";
4
+ import * as path from "path";
5
+ import * as os from "os";
6
+ import { setObservationCacheDir, recordHostStructuredObservation, recordCapabilityObservation, getHostStructuredObservation, listObservations, clearObservations, inferTaskClass, } from "../execution/observations.js";
7
+ let tmpDir;
8
+ let origForceEnv;
9
+ beforeEach(() => {
10
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "kevlar-obs-test-"));
11
+ setObservationCacheDir(tmpDir);
12
+ origForceEnv = process.env.KEVLAR_FORCE_HOST_STRUCTURED;
13
+ delete process.env.KEVLAR_FORCE_HOST_STRUCTURED;
14
+ });
15
+ afterEach(() => {
16
+ fs.rmSync(tmpDir, { recursive: true, force: true });
17
+ if (origForceEnv !== undefined) {
18
+ process.env.KEVLAR_FORCE_HOST_STRUCTURED = origForceEnv;
19
+ }
20
+ else {
21
+ delete process.env.KEVLAR_FORCE_HOST_STRUCTURED;
22
+ }
23
+ });
24
+ // ── Helpers ──────────────────────────────────────────────────────────────────
25
+ const FP_A = { name: "Claude", version: "1.0", transport: "stdio" };
26
+ const FP_B = { name: "Cursor", version: "0.5", transport: "stdio" };
27
+ function makeKey(fp, taskClass = "short", opts) {
28
+ return {
29
+ fingerprint: fp,
30
+ model: opts?.model,
31
+ protocolVersion: "kevlar-host-guided/v1",
32
+ taskClass,
33
+ locale: opts?.locale,
34
+ };
35
+ }
36
+ // ─────────────────────────────────────────────────────────────────────────────
37
+ // inferTaskClass
38
+ // ─────────────────────────────────────────────────────────────────────────────
39
+ describe("inferTaskClass", () => {
40
+ it("returns 'short' for empty/undefined content", () => {
41
+ assert.equal(inferTaskClass(undefined), "short");
42
+ assert.equal(inferTaskClass(""), "short");
43
+ });
44
+ it("returns 'short' for content < 800 chars", () => {
45
+ assert.equal(inferTaskClass("a".repeat(100)), "short");
46
+ assert.equal(inferTaskClass("a".repeat(799)), "short");
47
+ });
48
+ it("returns 'medium' for 800-2999 chars", () => {
49
+ assert.equal(inferTaskClass("a".repeat(800)), "medium");
50
+ assert.equal(inferTaskClass("a".repeat(2999)), "medium");
51
+ });
52
+ it("returns 'long' for >= 3000 chars", () => {
53
+ assert.equal(inferTaskClass("a".repeat(3000)), "long");
54
+ assert.equal(inferTaskClass("a".repeat(10000)), "long");
55
+ });
56
+ });
57
+ // ─────────────────────────────────────────────────────────────────────────────
58
+ // Basic Record + Lookup
59
+ // ─────────────────────────────────────────────────────────────────────────────
60
+ describe("recordHostStructuredObservation + getHostStructuredObservation", () => {
61
+ it("returns undefined when cache is empty", () => {
62
+ const result = getHostStructuredObservation(makeKey(FP_A));
63
+ assert.equal(result, undefined);
64
+ });
65
+ it("round-trips a positive observation", () => {
66
+ recordHostStructuredObservation({
67
+ key: makeKey(FP_A),
68
+ status: "format_verified",
69
+ reason: "kevlar_result_schema_matched",
70
+ });
71
+ const result = getHostStructuredObservation(makeKey(FP_A));
72
+ assert.ok(result);
73
+ assert.equal(result.status, "format_verified");
74
+ assert.equal(result.reason, "kevlar_result_schema_matched");
75
+ assert.ok(result.observedAt > 0);
76
+ assert.ok(result.expiresAt > result.observedAt);
77
+ });
78
+ it("round-trips a negative observation", () => {
79
+ recordHostStructuredObservation({
80
+ key: makeKey(FP_A, "medium"),
81
+ status: "unsupported",
82
+ reason: "host_rejected",
83
+ });
84
+ const result = getHostStructuredObservation(makeKey(FP_A, "medium"));
85
+ assert.ok(result);
86
+ assert.equal(result.status, "unsupported");
87
+ assert.equal(result.reason, "host_rejected");
88
+ });
89
+ });
90
+ // ─────────────────────────────────────────────────────────────────────────────
91
+ // TTL Expiry
92
+ // ─────────────────────────────────────────────────────────────────────────────
93
+ describe("TTL expiry", () => {
94
+ it("does not return expired observations", () => {
95
+ // Record an observation with 1h TTL (likely_output_truncated)
96
+ recordHostStructuredObservation({
97
+ key: makeKey(FP_A),
98
+ status: "failed",
99
+ reason: "likely_output_truncated",
100
+ });
101
+ // Manually backdate the observation in the cache file
102
+ const cachePath = path.join(tmpDir, "kevlar-observations.json");
103
+ const raw = JSON.parse(fs.readFileSync(cachePath, "utf-8"));
104
+ raw.observations[0].expiresAt = Date.now() - 1000; // expired 1s ago
105
+ fs.writeFileSync(cachePath, JSON.stringify(raw));
106
+ const result = getHostStructuredObservation(makeKey(FP_A));
107
+ assert.equal(result, undefined);
108
+ });
109
+ it("format_verified has 7-day TTL", () => {
110
+ recordHostStructuredObservation({
111
+ key: makeKey(FP_A),
112
+ status: "format_verified",
113
+ reason: "kevlar_result_schema_matched",
114
+ });
115
+ const cachePath = path.join(tmpDir, "kevlar-observations.json");
116
+ const raw = JSON.parse(fs.readFileSync(cachePath, "utf-8"));
117
+ const obs = raw.observations[0];
118
+ const ttl = obs.expiresAt - obs.observedAt;
119
+ assert.equal(ttl, 7 * 24 * 60 * 60 * 1000);
120
+ });
121
+ it("unsupported has 24h TTL", () => {
122
+ recordHostStructuredObservation({
123
+ key: makeKey(FP_A),
124
+ status: "unsupported",
125
+ reason: "host_rejected",
126
+ });
127
+ const cachePath = path.join(tmpDir, "kevlar-observations.json");
128
+ const raw = JSON.parse(fs.readFileSync(cachePath, "utf-8"));
129
+ const obs = raw.observations[0];
130
+ const ttl = obs.expiresAt - obs.observedAt;
131
+ assert.equal(ttl, 24 * 60 * 60 * 1000);
132
+ });
133
+ it("likely_output_truncated has 1h TTL", () => {
134
+ recordHostStructuredObservation({
135
+ key: makeKey(FP_A),
136
+ status: "failed",
137
+ reason: "likely_output_truncated",
138
+ });
139
+ const cachePath = path.join(tmpDir, "kevlar-observations.json");
140
+ const raw = JSON.parse(fs.readFileSync(cachePath, "utf-8"));
141
+ const obs = raw.observations[0];
142
+ const ttl = obs.expiresAt - obs.observedAt;
143
+ assert.equal(ttl, 1 * 60 * 60 * 1000);
144
+ });
145
+ });
146
+ // ─────────────────────────────────────────────────────────────────────────────
147
+ // Fingerprint Matching
148
+ // ─────────────────────────────────────────────────────────────────────────────
149
+ describe("fingerprint matching", () => {
150
+ it("does not match different fingerprints", () => {
151
+ recordHostStructuredObservation({
152
+ key: makeKey(FP_A),
153
+ status: "format_verified",
154
+ reason: "kevlar_result_schema_matched",
155
+ });
156
+ const result = getHostStructuredObservation(makeKey(FP_B));
157
+ assert.equal(result, undefined);
158
+ });
159
+ it("does not match different protocol versions", () => {
160
+ recordHostStructuredObservation({
161
+ key: { ...makeKey(FP_A), protocolVersion: "kevlar-host-guided/v1" },
162
+ status: "format_verified",
163
+ reason: "kevlar_result_schema_matched",
164
+ });
165
+ const result = getHostStructuredObservation({
166
+ ...makeKey(FP_A),
167
+ protocolVersion: "kevlar-host-guided/v2",
168
+ });
169
+ assert.equal(result, undefined);
170
+ });
171
+ it("does not match when models differ", () => {
172
+ recordHostStructuredObservation({
173
+ key: makeKey(FP_A, "short", { model: "gpt-4" }),
174
+ status: "format_verified",
175
+ reason: "kevlar_result_schema_matched",
176
+ });
177
+ const result = getHostStructuredObservation(makeKey(FP_A, "short", { model: "claude-3" }));
178
+ assert.equal(result, undefined);
179
+ });
180
+ it("matches when model is absent in both", () => {
181
+ recordHostStructuredObservation({
182
+ key: makeKey(FP_A), // no model
183
+ status: "format_verified",
184
+ reason: "kevlar_result_schema_matched",
185
+ });
186
+ const result = getHostStructuredObservation(makeKey(FP_A)); // no model
187
+ assert.ok(result);
188
+ assert.equal(result.status, "format_verified");
189
+ });
190
+ });
191
+ // ─────────────────────────────────────────────────────────────────────────────
192
+ // TaskClass Fuzzy Matching
193
+ // ─────────────────────────────────────────────────────────────────────────────
194
+ describe("taskClass matching", () => {
195
+ it("exact match: short matches short", () => {
196
+ recordHostStructuredObservation({
197
+ key: makeKey(FP_A, "short"),
198
+ status: "format_verified",
199
+ reason: "kevlar_result_schema_matched",
200
+ });
201
+ const result = getHostStructuredObservation(makeKey(FP_A, "short"));
202
+ assert.ok(result);
203
+ assert.equal(result.status, "format_verified");
204
+ });
205
+ it("heavier task observation satisfies lighter query (long → medium)", () => {
206
+ recordHostStructuredObservation({
207
+ key: makeKey(FP_A, "long"),
208
+ status: "format_verified",
209
+ reason: "kevlar_result_schema_matched",
210
+ });
211
+ const result = getHostStructuredObservation(makeKey(FP_A, "medium"));
212
+ assert.ok(result);
213
+ assert.equal(result.status, "format_verified");
214
+ });
215
+ it("heavier task observation satisfies lighter query (long → short)", () => {
216
+ recordHostStructuredObservation({
217
+ key: makeKey(FP_A, "long"),
218
+ status: "unsupported",
219
+ reason: "host_rejected",
220
+ });
221
+ const result = getHostStructuredObservation(makeKey(FP_A, "short"));
222
+ assert.ok(result);
223
+ assert.equal(result.status, "unsupported");
224
+ });
225
+ it("lighter task observation returns with isLighter flag (short → long)", () => {
226
+ recordHostStructuredObservation({
227
+ key: makeKey(FP_A, "short"),
228
+ status: "format_verified",
229
+ reason: "kevlar_result_schema_matched",
230
+ });
231
+ const result = getHostStructuredObservation(makeKey(FP_A, "long"));
232
+ assert.ok(result);
233
+ assert.equal(result.status, "format_verified");
234
+ assert.equal(result.isLighter, true);
235
+ });
236
+ it("prefers exact match over lighter match", () => {
237
+ // Record both a short (lighter) and a medium (exact) observation
238
+ recordHostStructuredObservation({
239
+ key: makeKey(FP_A, "short"),
240
+ status: "format_verified",
241
+ reason: "kevlar_result_schema_matched",
242
+ });
243
+ recordHostStructuredObservation({
244
+ key: makeKey(FP_A, "medium"),
245
+ status: "unsupported",
246
+ reason: "host_rejected",
247
+ });
248
+ // Query for medium → should get the exact medium match (unsupported), not the lighter short one
249
+ const result = getHostStructuredObservation(makeKey(FP_A, "medium"));
250
+ assert.ok(result);
251
+ assert.equal(result.status, "unsupported");
252
+ assert.equal(result.reason, "host_rejected");
253
+ });
254
+ });
255
+ // ─────────────────────────────────────────────────────────────────────────────
256
+ // KEVLAR_FORCE_HOST_STRUCTURED bypass
257
+ // ─────────────────────────────────────────────────────────────────────────────
258
+ describe("KEVLAR_FORCE_HOST_STRUCTURED bypass", () => {
259
+ it("getHostStructuredObservation returns undefined when env is set", () => {
260
+ recordHostStructuredObservation({
261
+ key: makeKey(FP_A),
262
+ status: "format_verified",
263
+ reason: "kevlar_result_schema_matched",
264
+ });
265
+ process.env.KEVLAR_FORCE_HOST_STRUCTURED = "true";
266
+ const result = getHostStructuredObservation(makeKey(FP_A));
267
+ assert.equal(result, undefined);
268
+ });
269
+ it("recordHostStructuredObservation does not persist when env is set", () => {
270
+ process.env.KEVLAR_FORCE_HOST_STRUCTURED = "true";
271
+ recordHostStructuredObservation({
272
+ key: makeKey(FP_A),
273
+ status: "format_verified",
274
+ reason: "kevlar_result_schema_matched",
275
+ });
276
+ // Remove env and check — cache should still be empty
277
+ delete process.env.KEVLAR_FORCE_HOST_STRUCTURED;
278
+ const result = getHostStructuredObservation(makeKey(FP_A));
279
+ assert.equal(result, undefined);
280
+ });
281
+ });
282
+ // ─────────────────────────────────────────────────────────────────────────────
283
+ // recordCapabilityObservation convenience wrapper
284
+ // ─────────────────────────────────────────────────────────────────────────────
285
+ describe("recordCapabilityObservation", () => {
286
+ it("creates a properly keyed observation", () => {
287
+ recordCapabilityObservation(FP_A, "medium", "format_verified", "kevlar_result_schema_matched", { model: "gpt-4", locale: "zh-CN" });
288
+ const result = getHostStructuredObservation(makeKey(FP_A, "medium", { model: "gpt-4", locale: "zh-CN" }));
289
+ assert.ok(result);
290
+ assert.equal(result.status, "format_verified");
291
+ });
292
+ it("records negative observation", () => {
293
+ recordCapabilityObservation(FP_B, "long", "unsupported", "host_rejected");
294
+ const result = getHostStructuredObservation(makeKey(FP_B, "long"));
295
+ assert.ok(result);
296
+ assert.equal(result.status, "unsupported");
297
+ assert.equal(result.reason, "host_rejected");
298
+ });
299
+ });
300
+ // ─────────────────────────────────────────────────────────────────────────────
301
+ // listObservations + clearObservations
302
+ // ─────────────────────────────────────────────────────────────────────────────
303
+ describe("listObservations + clearObservations", () => {
304
+ it("listObservations returns all non-expired entries", () => {
305
+ recordHostStructuredObservation({
306
+ key: makeKey(FP_A, "short"),
307
+ status: "format_verified",
308
+ reason: "kevlar_result_schema_matched",
309
+ });
310
+ recordHostStructuredObservation({
311
+ key: makeKey(FP_B, "long"),
312
+ status: "unsupported",
313
+ reason: "host_rejected",
314
+ });
315
+ const all = listObservations();
316
+ assert.equal(all.length, 2);
317
+ });
318
+ it("clearObservations removes all entries", () => {
319
+ recordHostStructuredObservation({
320
+ key: makeKey(FP_A),
321
+ status: "format_verified",
322
+ reason: "kevlar_result_schema_matched",
323
+ });
324
+ clearObservations();
325
+ const all = listObservations();
326
+ assert.equal(all.length, 0);
327
+ const result = getHostStructuredObservation(makeKey(FP_A));
328
+ assert.equal(result, undefined);
329
+ });
330
+ });
331
+ // ─────────────────────────────────────────────────────────────────────────────
332
+ // Purge on record (same fingerprint, different version)
333
+ // ─────────────────────────────────────────────────────────────────────────────
334
+ describe("purge on record", () => {
335
+ it("purges old version entries for same fingerprint when recording new version", () => {
336
+ const fpV1 = { name: "Claude", version: "1.0", transport: "stdio" };
337
+ const fpV2 = { name: "Claude", version: "2.0", transport: "stdio" };
338
+ recordHostStructuredObservation({
339
+ key: makeKey(fpV1),
340
+ status: "format_verified",
341
+ reason: "kevlar_result_schema_matched",
342
+ });
343
+ // Record new version — old one should be purged
344
+ recordHostStructuredObservation({
345
+ key: makeKey(fpV2),
346
+ status: "format_verified",
347
+ reason: "kevlar_result_schema_matched",
348
+ });
349
+ // Old version should not be found
350
+ const oldResult = getHostStructuredObservation(makeKey(fpV1));
351
+ assert.equal(oldResult, undefined);
352
+ // New version should be found
353
+ const newResult = getHostStructuredObservation(makeKey(fpV2));
354
+ assert.ok(newResult);
355
+ });
356
+ });
357
+ //# sourceMappingURL=observations.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observations.test.js","sourceRoot":"","sources":["../../src/__tests__/observations.test.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@
3
3
  */
4
4
  import type { Persona } from "../utils/parser.js";
5
5
  import type { DimensionsConfig } from "./dimensions.js";
6
+ export type { ExecutionBackend, ExecutionPlan, HostOrchestrationStrategy, HostStructuredCapabilityStatus, DispatchFailureReason, PreAuditContext, ClientFingerprint, TaskClass, StructuredObservationKey, HostStructuredObservation, SamplingExecutionPolicy, } from "./plan.js";
7
+ export { DEFAULT_SAMPLING_POLICY } from "./plan.js";
6
8
  export type ExecutionMode = "orchestration" | "mcp_sampling" | "direct_api" | "mcp_subagent";
7
9
  export type ResolveableMode = ExecutionMode | "auto";
8
10
  export interface BudgetPolicy {
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/execution/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/execution/base.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Base types and interfaces for Kevlar-4u execution modes
3
3
  */
4
+ export { DEFAULT_SAMPLING_POLICY } from "./plan.js";
4
5
  /** Build a MECP-compliant Frame envelope. */
5
6
  export function toFrame(source, destination, correlationId, type, payload, traceId) {
6
7
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/execution/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2FH,6CAA6C;AAC7C,MAAM,UAAU,OAAO,CACrB,MAAc,EACd,WAAmB,EACnB,aAAqB,EACrB,IAAmB,EACnB,OAAU,EACV,OAAgB;IAEhB,OAAO;QACL,MAAM;QACN,WAAW;QACX,aAAa;QACb,OAAO;QACP,IAAI;QACJ,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/execution/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyBH,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAwFpD,6CAA6C;AAC7C,MAAM,UAAU,OAAO,CACrB,MAAc,EACd,WAAmB,EACnB,aAAqB,EACrB,IAAmB,EACnB,OAAU,EACV,OAAgB;IAEhB,OAAO;QACL,MAAM;QACN,WAAW;QACX,aAAa;QACb,OAAO;QACP,IAAI;QACJ,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Checkpoint & Execution Transition System (v3)
3
+ *
4
+ * Defines the audit state machine checkpoints and the ExecutionTransition
5
+ * record that captures downgrade events when a structured collaboration
6
+ * attempt fails and Kevlar falls back to standard host orchestration.
7
+ */
8
+ import type { ExecutionPlan, DispatchFailureReason, ClientFingerprint, HostStructuredCapabilityStatus } from "./plan.js";
9
+ /**
10
+ * Key milestones in the review wizard state machine.
11
+ *
12
+ * Structured collaboration is initiated after `step0_completed`.
13
+ * If it fails, the state machine resumes from `step0_completed`
14
+ * with `strategy: "standard"`.
15
+ */
16
+ export type AuditCheckpoint = "initiated" | "step0_completed" | "preaudit_started" | "preaudit_completed" | "persona_inventory_completed";
17
+ /**
18
+ * Immutable record of a downgrade event.
19
+ *
20
+ * Created when a structured collaboration attempt fails and Kevlar
21
+ * switches to standard host orchestration. Appended to the
22
+ * executionTransitions log for observability.
23
+ */
24
+ export interface ExecutionTransition {
25
+ /** The ExecutionPlan before the downgrade. */
26
+ from: ExecutionPlan;
27
+ /** The ExecutionPlan after the downgrade. */
28
+ to: ExecutionPlan;
29
+ /** What caused the structured attempt to fail. */
30
+ reason: DispatchFailureReason;
31
+ /** Unix timestamp (ms) when the transition occurred. */
32
+ at: number;
33
+ /** Which checkpoint the state machine will resume from. */
34
+ checkpoint: AuditCheckpoint;
35
+ /** Fingerprint of the Host that was being used (for telemetry). */
36
+ clientFingerprint?: ClientFingerprint;
37
+ }
38
+ /**
39
+ * Minimal wizard state shape required by resumeFromStructuredFailure().
40
+ *
41
+ * This avoids circular imports by not depending on the full ReviewWizardState
42
+ * from the tools layer. Any wizard state that satisfies this interface
43
+ * can be passed to the resume function.
44
+ */
45
+ export interface StructuredFailureResumeState {
46
+ executionPlan?: ExecutionPlan;
47
+ checkpoint?: AuditCheckpoint;
48
+ structuredDowngraded?: boolean;
49
+ capabilityStatus?: HostStructuredCapabilityStatus;
50
+ executionTransitions?: ExecutionTransition[];
51
+ }
52
+ /**
53
+ * Recover from a failed structured collaboration attempt.
54
+ *
55
+ * - Switches executionPlan to `host_orchestration + standard`
56
+ * - Marks `structuredDowngraded = true` to prevent repeated attempts
57
+ * - Resets checkpoint to `step0_completed`
58
+ * - Sets capabilityStatus based on the failure reason
59
+ * - Appends an ExecutionTransition for observability
60
+ *
61
+ * The caller must separately handle:
62
+ * - Preserving Step 0 artifacts (preAuditContext, content, tier, etc.)
63
+ * - Cleaning structured attempt scratch fields
64
+ * - Restarting the audit pipeline from step0_completed
65
+ */
66
+ export declare function resumeFromStructuredFailure(state: StructuredFailureResumeState, reason: DispatchFailureReason): {
67
+ executionPlan: ExecutionPlan;
68
+ checkpoint: AuditCheckpoint;
69
+ structuredDowngraded: true;
70
+ capabilityStatus: HostStructuredCapabilityStatus;
71
+ executionTransitions: ExecutionTransition[];
72
+ };
73
+ //# sourceMappingURL=checkpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/execution/checkpoint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,8BAA8B,EAAE,MAAM,WAAW,CAAC;AAKzH;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,iBAAiB,GACjB,kBAAkB,GAClB,oBAAoB,GACpB,6BAA6B,CAAC;AAIlC;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,IAAI,EAAE,aAAa,CAAC;IACpB,6CAA6C;IAC7C,EAAE,EAAE,aAAa,CAAC;IAClB,kDAAkD;IAClD,MAAM,EAAE,qBAAqB,CAAC;IAC9B,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,2DAA2D;IAC3D,UAAU,EAAE,eAAe,CAAC;IAC5B,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAID;;;;;;GAMG;AACH,MAAM,WAAW,4BAA4B;IAC3C,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gBAAgB,CAAC,EAAE,8BAA8B,CAAC;IAClD,oBAAoB,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAC9C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,4BAA4B,EACnC,MAAM,EAAE,qBAAqB,GAC5B;IACD,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,eAAe,CAAC;IAC5B,oBAAoB,EAAE,IAAI,CAAC;IAC3B,gBAAgB,EAAE,8BAA8B,CAAC;IACjD,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;CAC7C,CA+BA"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Checkpoint & Execution Transition System (v3)
3
+ *
4
+ * Defines the audit state machine checkpoints and the ExecutionTransition
5
+ * record that captures downgrade events when a structured collaboration
6
+ * attempt fails and Kevlar falls back to standard host orchestration.
7
+ */
8
+ import { getClientFingerprint } from "./client.js";
9
+ /**
10
+ * Recover from a failed structured collaboration attempt.
11
+ *
12
+ * - Switches executionPlan to `host_orchestration + standard`
13
+ * - Marks `structuredDowngraded = true` to prevent repeated attempts
14
+ * - Resets checkpoint to `step0_completed`
15
+ * - Sets capabilityStatus based on the failure reason
16
+ * - Appends an ExecutionTransition for observability
17
+ *
18
+ * The caller must separately handle:
19
+ * - Preserving Step 0 artifacts (preAuditContext, content, tier, etc.)
20
+ * - Cleaning structured attempt scratch fields
21
+ * - Restarting the audit pipeline from step0_completed
22
+ */
23
+ export function resumeFromStructuredFailure(state, reason) {
24
+ const from = state.executionPlan ?? {
25
+ backend: "host_orchestration",
26
+ strategy: "structured",
27
+ };
28
+ const to = {
29
+ backend: "host_orchestration",
30
+ strategy: "standard",
31
+ };
32
+ const transition = {
33
+ from,
34
+ to,
35
+ reason,
36
+ at: Date.now(),
37
+ checkpoint: "step0_completed",
38
+ clientFingerprint: getClientFingerprint(),
39
+ };
40
+ return {
41
+ executionPlan: to,
42
+ checkpoint: "step0_completed",
43
+ structuredDowngraded: true,
44
+ capabilityStatus: reason === "host_rejected" ? "unsupported" : "failed",
45
+ executionTransitions: [
46
+ ...(state.executionTransitions ?? []),
47
+ transition,
48
+ ],
49
+ };
50
+ }
51
+ //# sourceMappingURL=checkpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/execution/checkpoint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AA2DnD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAmC,EACnC,MAA6B;IAQ7B,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,IAAI;QAClC,OAAO,EAAE,oBAA6B;QACtC,QAAQ,EAAE,YAAqB;KAChC,CAAC;IAEF,MAAM,EAAE,GAAkB;QACxB,OAAO,EAAE,oBAA6B;QACtC,QAAQ,EAAE,UAAmB;KAC9B,CAAC;IAEF,MAAM,UAAU,GAAwB;QACtC,IAAI;QACJ,EAAE;QACF,MAAM;QACN,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;QACd,UAAU,EAAE,iBAAiB;QAC7B,iBAAiB,EAAE,oBAAoB,EAAE;KAC1C,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,EAAE;QACjB,UAAU,EAAE,iBAAiB;QAC7B,oBAAoB,EAAE,IAAI;QAC1B,gBAAgB,EACd,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ;QACvD,oBAAoB,EAAE;YACpB,GAAG,CAAC,KAAK,CAAC,oBAAoB,IAAI,EAAE,CAAC;YACrC,UAAU;SACX;KACF,CAAC;AACJ,CAAC"}