agentskeptic 0.1.1 → 0.1.2

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/LICENSE +21 -21
  2. package/README.md +342 -342
  3. package/dist/cli.js +157 -157
  4. package/dist/debug-ui/app.css +188 -188
  5. package/dist/debug-ui/app.js +245 -245
  6. package/dist/debug-ui/index.html +79 -79
  7. package/dist/enforceCli.js +11 -11
  8. package/dist/planTransition.test.js +235 -235
  9. package/dist/planTransitionPathHarvest.test.js +116 -116
  10. package/dist/quickVerify/postgresCatalog.js +53 -53
  11. package/package.json +1 -1
  12. package/schemas/agent-run-record-v1.schema.json +51 -51
  13. package/schemas/agent-run-record-v2.schema.json +61 -61
  14. package/schemas/assurance-manifest-v1.schema.json +28 -28
  15. package/schemas/assurance-run-report-v1.schema.json +28 -28
  16. package/schemas/ci-lock-v1.schema.json +163 -163
  17. package/schemas/cli-error-envelope.schema.json +48 -48
  18. package/schemas/event.schema.json +111 -111
  19. package/schemas/execution-trace-view.schema.json +122 -122
  20. package/schemas/plan-validation-core.schema.json +95 -95
  21. package/schemas/quick-verify-report.schema.json +251 -251
  22. package/schemas/registry-validation-result.schema.json +99 -99
  23. package/schemas/run-comparison-report.schema.json +513 -513
  24. package/schemas/tools-registry-export.schema.json +9 -9
  25. package/schemas/tools-registry.schema.json +284 -284
  26. package/schemas/workflow-engine-result.schema.json +591 -591
  27. package/schemas/workflow-result-compare-input.schema.json +15 -15
  28. package/schemas/workflow-result-signature.schema.json +20 -20
  29. package/schemas/workflow-result-v9.schema.json +85 -85
  30. package/schemas/workflow-result.schema.json +80 -80
  31. package/schemas/workflow-truth-report.schema.json +761 -761
  32. package/dist/failureOriginSchemaEnum.test.d.ts +0 -2
  33. package/dist/failureOriginSchemaEnum.test.d.ts.map +0 -1
  34. package/dist/failureOriginSchemaEnum.test.js +0 -21
  35. package/dist/failureOriginSchemaEnum.test.js.map +0 -1
  36. package/dist/failureOriginSchemaParity.test.d.ts +0 -2
  37. package/dist/failureOriginSchemaParity.test.d.ts.map +0 -1
  38. package/dist/failureOriginSchemaParity.test.js +0 -33
  39. package/dist/failureOriginSchemaParity.test.js.map +0 -1
  40. package/dist/slice6.compare.ac.test.d.ts +0 -2
  41. package/dist/slice6.compare.ac.test.d.ts.map +0 -1
  42. package/dist/slice6.compare.ac.test.js +0 -81
  43. package/dist/slice6.compare.ac.test.js.map +0 -1
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=failureOriginSchemaEnum.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"failureOriginSchemaEnum.test.d.ts","sourceRoot":"","sources":["../src/failureOriginSchemaEnum.test.ts"],"names":[],"mappings":""}
@@ -1,21 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { readFileSync } from "fs";
3
- import path from "path";
4
- import { fileURLToPath } from "url";
5
- import { FAILURE_ORIGINS } from "./failureOriginTypes.js";
6
- const root = path.join(path.dirname(fileURLToPath(import.meta.url)), "..");
7
- function enumFromWorkflowTruthSchema() {
8
- const raw = readFileSync(path.join(root, "schemas", "workflow-truth-report.schema.json"), "utf8");
9
- const j = JSON.parse(raw);
10
- const e = j.$defs?.failureOrigin?.enum;
11
- if (!Array.isArray(e))
12
- throw new Error("missing failureOrigin enum in workflow-truth-report.schema.json");
13
- return e;
14
- }
15
- describe("failureOriginSchemaEnum", () => {
16
- it("FAILURE_ORIGINS matches workflow-truth-report $defs.failureOrigin.enum (order-independent)", () => {
17
- const schemaEnum = enumFromWorkflowTruthSchema();
18
- expect([...FAILURE_ORIGINS].sort()).toEqual([...schemaEnum].sort());
19
- });
20
- });
21
- //# sourceMappingURL=failureOriginSchemaEnum.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"failureOriginSchemaEnum.test.js","sourceRoot":"","sources":["../src/failureOriginSchemaEnum.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAE3E,SAAS,2BAA2B;IAClC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,mCAAmC,CAAC,EAAE,MAAM,CAAC,CAAC;IAClG,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAEvB,CAAC;IACF,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IAC1G,OAAO,CAAC,CAAC;AACX,CAAC;AAED,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,4FAA4F,EAAE,GAAG,EAAE;QACpG,MAAM,UAAU,GAAG,2BAA2B,EAAE,CAAC;QACjD,MAAM,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=failureOriginSchemaParity.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"failureOriginSchemaParity.test.d.ts","sourceRoot":"","sources":["../src/failureOriginSchemaParity.test.ts"],"names":[],"mappings":""}
@@ -1,33 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { readFileSync } from "fs";
3
- import path from "path";
4
- import { fileURLToPath } from "url";
5
- import { FAILURE_ORIGINS } from "./failureOriginTypes.js";
6
- const root = path.join(path.dirname(fileURLToPath(import.meta.url)), "..");
7
- function enumFromWorkflowTruthSchema() {
8
- const raw = readFileSync(path.join(root, "schemas", "workflow-truth-report.schema.json"), "utf8");
9
- const j = JSON.parse(raw);
10
- const e = j.$defs?.failureOrigin?.enum;
11
- if (!Array.isArray(e))
12
- throw new Error("missing failureOrigin enum in workflow-truth-report.schema.json");
13
- return [...e].sort((a, b) => a.localeCompare(b));
14
- }
15
- function enumFromCliErrorSchema() {
16
- const raw = readFileSync(path.join(root, "schemas", "cli-error-envelope.schema.json"), "utf8");
17
- const j = JSON.parse(raw);
18
- const e = j.properties?.failureDiagnosis?.properties?.primaryOrigin?.enum;
19
- if (!Array.isArray(e))
20
- throw new Error("missing primaryOrigin enum in cli-error-envelope.schema.json");
21
- return [...e].sort((a, b) => a.localeCompare(b));
22
- }
23
- describe("FailureOrigin JSON Schema parity", () => {
24
- it("workflow-truth-report failureOrigin enum matches FAILURE_ORIGINS tuple", () => {
25
- const fromSchema = enumFromWorkflowTruthSchema();
26
- const fromTs = [...FAILURE_ORIGINS].sort((a, b) => a.localeCompare(b));
27
- expect(fromSchema).toEqual(fromTs);
28
- });
29
- it("cli-error-envelope primaryOrigin enum matches FAILURE_ORIGINS tuple", () => {
30
- expect(enumFromCliErrorSchema()).toEqual([...FAILURE_ORIGINS].sort((a, b) => a.localeCompare(b)));
31
- });
32
- });
33
- //# sourceMappingURL=failureOriginSchemaParity.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"failureOriginSchemaParity.test.js","sourceRoot":"","sources":["../src/failureOriginSchemaParity.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAE3E,SAAS,2BAA2B;IAClC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,mCAAmC,CAAC,EAAE,MAAM,CAAC,CAAC;IAClG,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAEvB,CAAC;IACF,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IAC1G,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,sBAAsB;IAC7B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,gCAAgC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/F,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAMvB,CAAC;IACF,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC;IAC1E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACvG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,UAAU,GAAG,2BAA2B,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,CAAC,sBAAsB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=slice6.compare.ac.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slice6.compare.ac.test.d.ts","sourceRoot":"","sources":["../src/slice6.compare.ac.test.ts"],"names":[],"mappings":""}
@@ -1,81 +0,0 @@
1
- import { readFileSync } from "node:fs";
2
- import { dirname, join } from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- import { describe, expect, it } from "vitest";
5
- import { buildRunComparisonReport } from "./runComparison.js";
6
- import { loadSchemaValidator } from "./schemaLoad.js";
7
- import { createEmptyVerificationRunContext } from "./verificationRunContext.js";
8
- import { finalizeEmittedWorkflowResult } from "./workflowTruthReport.js";
9
- const __dirname = dirname(fileURLToPath(import.meta.url));
10
- const root = join(__dirname, "..");
11
- function sqlRowStep(seq, toolId, keyValue, verified) {
12
- return {
13
- seq,
14
- toolId,
15
- intendedEffect: { narrative: "" },
16
- observedExecution: { paramsCanonical: "{}" },
17
- verificationRequest: {
18
- kind: "sql_row",
19
- table: "contacts",
20
- keyColumn: "id",
21
- keyValue,
22
- requiredFields: {},
23
- },
24
- status: verified ? "verified" : "missing",
25
- reasons: verified ? [] : [{ code: "ROW_ABSENT", message: "absent" }],
26
- evidenceSummary: verified ? {} : { rowCount: 0 },
27
- repeatObservationCount: 1,
28
- evaluatedObservationOrdinal: 1,
29
- ...(verified ? {} : { failureDiagnostic: "workflow_execution" }),
30
- };
31
- }
32
- function wf(steps, id = "wf_slice6_ac") {
33
- const bad = steps.some((s) => s.status !== "verified");
34
- const engine = {
35
- schemaVersion: 7,
36
- workflowId: id,
37
- status: bad ? "inconsistent" : "complete",
38
- runLevelReasons: [],
39
- verificationPolicy: {
40
- consistencyMode: "strong",
41
- verificationWindowMs: 0,
42
- pollIntervalMs: 0,
43
- },
44
- eventSequenceIntegrity: { kind: "normal" },
45
- verificationRunContext: createEmptyVerificationRunContext(),
46
- steps,
47
- };
48
- return finalizeEmittedWorkflowResult(engine);
49
- }
50
- describe("Slice 6 compare acceptance tests", () => {
51
- const v = loadSchemaValidator("run-comparison-report");
52
- it("AC_9_1_multi_run_compare_emits_schema_v4", () => {
53
- const r0 = wf([sqlRowStep(0, "t", "a", true)]);
54
- const r1 = wf([sqlRowStep(0, "t", "a", true)]);
55
- const r2 = wf([sqlRowStep(0, "t", "a", true)]);
56
- const report = buildRunComparisonReport([r0, r1, r2], ["r0", "r1", "r2"]);
57
- expect(report.schemaVersion).toBe(4);
58
- expect(report.runs).toHaveLength(3);
59
- expect(v(report)).toBe(true);
60
- });
61
- it("AC_9_2_compareHighlights_match_fixture", () => {
62
- const r0 = wf([sqlRowStep(0, "t1", "a", true), sqlRowStep(1, "t1", "b", true)]);
63
- const r1 = wf([sqlRowStep(0, "t1", "b", true), sqlRowStep(1, "t1", "a", false)]);
64
- const report = buildRunComparisonReport([r0, r1], ["r0", "r1"]);
65
- expect(v(report)).toBe(true);
66
- expect(report.compareHighlights.introducedLogicalStepKeys).toContain("sql_row|contacts|id|a");
67
- expect(report.compareHighlights.resolvedLogicalStepKeys.length).toBeGreaterThanOrEqual(0);
68
- });
69
- it("AC_9_4_headlineVerdict_window_pairwise_divergence", () => {
70
- const r0 = wf([sqlRowStep(0, "t", "a", true)]);
71
- const r1 = wf([sqlRowStep(0, "t", "a", false)]);
72
- const r2 = wf([sqlRowStep(0, "t", "a", true)]);
73
- const report = buildRunComparisonReport([r0, r1, r2], ["r0", "r1", "r2"]);
74
- expect(report.reliabilityAssessment.windowTrend).toBe("unchanged");
75
- expect(report.reliabilityAssessment.pairwiseTrend).toBe("improving");
76
- const golden = JSON.parse(readFileSync(join(root, "test/fixtures/debug-ui-slice6/headline-ac-9-4.json"), "utf8"));
77
- expect(report.reliabilityAssessment.headlineVerdict).toBe(golden.headlineVerdict);
78
- expect(report.reliabilityAssessment.headlineRationale).toBe(golden.headlineRationale);
79
- });
80
- });
81
- //# sourceMappingURL=slice6.compare.ac.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slice6.compare.ac.test.js","sourceRoot":"","sources":["../src/slice6.compare.ac.test.ts"],"names":[],"mappings":"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"}