agentskeptic 0.1.5 → 0.1.6
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 +2 -2
- package/dist/bootstrap/bootstrapReadmeTemplate.d.ts +3 -0
- package/dist/bootstrap/bootstrapReadmeTemplate.d.ts.map +1 -0
- package/dist/bootstrap/bootstrapReadmeTemplate.js +17 -0
- package/dist/bootstrap/bootstrapReadmeTemplate.js.map +1 -0
- package/dist/bootstrap/parseBootstrapPackInput.d.ts +16 -0
- package/dist/bootstrap/parseBootstrapPackInput.d.ts.map +1 -0
- package/dist/bootstrap/parseBootstrapPackInput.js +95 -0
- package/dist/bootstrap/parseBootstrapPackInput.js.map +1 -0
- package/dist/bootstrap/parseBootstrapPackInput.test.d.ts +2 -0
- package/dist/bootstrap/parseBootstrapPackInput.test.d.ts.map +1 -0
- package/dist/bootstrap/parseBootstrapPackInput.test.js +46 -0
- package/dist/bootstrap/parseBootstrapPackInput.test.js.map +1 -0
- package/dist/bootstrap/runBootstrapSubcommand.d.ts +9 -0
- package/dist/bootstrap/runBootstrapSubcommand.d.ts.map +1 -0
- package/dist/bootstrap/runBootstrapSubcommand.js +263 -0
- package/dist/bootstrap/runBootstrapSubcommand.js.map +1 -0
- package/dist/bootstrap/synthesizeQuickInputFromOpenAiV1.d.ts +6 -0
- package/dist/bootstrap/synthesizeQuickInputFromOpenAiV1.d.ts.map +1 -0
- package/dist/bootstrap/synthesizeQuickInputFromOpenAiV1.js +16 -0
- package/dist/bootstrap/synthesizeQuickInputFromOpenAiV1.js.map +1 -0
- package/dist/cli.js +8 -0
- package/dist/cli.js.map +1 -1
- package/dist/cliOperationalCodes.d.ts +7 -0
- package/dist/cliOperationalCodes.d.ts.map +1 -1
- package/dist/cliOperationalCodes.js +7 -0
- package/dist/cliOperationalCodes.js.map +1 -1
- package/dist/commercial/licensePreflight.test.js +47 -18
- package/dist/commercial/licensePreflight.test.js.map +1 -1
- package/dist/debugServer.d.ts +2 -0
- package/dist/debugServer.d.ts.map +1 -1
- package/dist/debugServer.js +13 -12
- package/dist/debugServer.js.map +1 -1
- package/dist/debugServer.test.js +31 -2
- package/dist/debugServer.test.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/loadEvents.d.ts +2 -0
- package/dist/loadEvents.d.ts.map +1 -1
- package/dist/loadEvents.js +11 -0
- package/dist/loadEvents.js.map +1 -1
- package/dist/operationalDisposition.d.ts +56 -0
- package/dist/operationalDisposition.d.ts.map +1 -1
- package/dist/operationalDisposition.js +56 -0
- package/dist/operationalDisposition.js.map +1 -1
- package/dist/quickVerify/buildQuickContractEventsNdjson.d.ts +5 -0
- package/dist/quickVerify/buildQuickContractEventsNdjson.d.ts.map +1 -1
- package/dist/quickVerify/buildQuickContractEventsNdjson.js +27 -14
- package/dist/quickVerify/buildQuickContractEventsNdjson.js.map +1 -1
- package/dist/quickVerify/exportTool.d.ts +7 -1
- package/dist/quickVerify/exportTool.d.ts.map +1 -1
- package/dist/quickVerify/exportTool.js +26 -0
- package/dist/quickVerify/exportTool.js.map +1 -1
- package/dist/quickVerify/formatQuickVerifyHumanReport.js +1 -1
- package/dist/quickVerify/formatQuickVerifyHumanReport.js.map +1 -1
- package/dist/quickVerify/formatQuickVerifyHumanReport.test.js +2 -2
- package/dist/quickVerify/formatQuickVerifyHumanReport.test.js.map +1 -1
- package/dist/quickVerify/ingest.d.ts.map +1 -1
- package/dist/quickVerify/ingest.js +43 -0
- package/dist/quickVerify/ingest.js.map +1 -1
- package/dist/quickVerify/quickVerifyProductTruth.d.ts +5 -1
- package/dist/quickVerify/quickVerifyProductTruth.d.ts.map +1 -1
- package/dist/quickVerify/quickVerifyProductTruth.js +6 -0
- package/dist/quickVerify/quickVerifyProductTruth.js.map +1 -1
- package/dist/quickVerify/quickVerifyScope.d.ts +1 -1
- package/dist/quickVerify/quickVerifyScope.d.ts.map +1 -1
- package/dist/quickVerify/quickVerifyScope.js +1 -1
- package/dist/quickVerify/quickVerifyScope.js.map +1 -1
- package/dist/quickVerify/runQuickVerify.d.ts.map +1 -1
- package/dist/quickVerify/runQuickVerify.js +35 -8
- package/dist/quickVerify/runQuickVerify.js.map +1 -1
- package/dist/quickVerify/tableScoring.d.ts.map +1 -1
- package/dist/quickVerify/tableScoring.js +6 -1
- package/dist/quickVerify/tableScoring.js.map +1 -1
- package/dist/schemaLoad.d.ts +1 -1
- package/dist/schemaLoad.d.ts.map +1 -1
- package/dist/schemaLoad.js +2 -0
- package/dist/schemaLoad.js.map +1 -1
- package/dist/standardVerifyWorkflowCli.d.ts +5 -0
- package/dist/standardVerifyWorkflowCli.d.ts.map +1 -1
- package/dist/standardVerifyWorkflowCli.js +14 -7
- package/dist/standardVerifyWorkflowCli.js.map +1 -1
- package/package.json +16 -7
- package/schemas/bootstrap-pack-input-v1.schema.json +61 -0
- package/schemas/quick-verify-report.schema.json +2 -2
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<!-- discovery-readme-title:end -->
|
|
4
4
|
|
|
5
5
|
<!-- discovery-acquisition-fold:start -->
|
|
6
|
-
##
|
|
6
|
+
## Ship with database truth, not trace color.
|
|
7
7
|
|
|
8
8
|
AgentSkeptic answers with read-only SQL at verification time—not with trace success flags or chat narratives.
|
|
9
9
|
|
|
@@ -52,7 +52,7 @@ steps:
|
|
|
52
52
|
}
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
[
|
|
55
|
+
[Product brief (traces vs database)](https://agentskeptic.com/database-truth-vs-traces)
|
|
56
56
|
<!-- discovery-acquisition-fold:end -->
|
|
57
57
|
|
|
58
58
|
**One-sentence value:** Read-only SQL checks that your database **at verification time** matches **expectations derived from structured tool activity**—not whether a trace step “succeeded.”
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrapReadmeTemplate.d.ts","sourceRoot":"","sources":["../../src/bootstrap/bootstrapReadmeTemplate.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAcvE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Fixed template for README.bootstrap.md (workflowId substituted). */
|
|
2
|
+
export function buildBootstrapReadmeMarkdown(workflowId) {
|
|
3
|
+
return `# Bootstrap pack (generated)
|
|
4
|
+
|
|
5
|
+
This directory was produced by \`agentskeptic bootstrap\`.
|
|
6
|
+
|
|
7
|
+
\`quick-report.json\` is a full Quick Verify report and remains **provisional** (see \`productTruth\` in that JSON). For contract verification against the same database you used for bootstrap:
|
|
8
|
+
|
|
9
|
+
\`\`\`bash
|
|
10
|
+
agentskeptic verify --workflow-id ${workflowId} --events ./events.ndjson --registry ./tools.json --db <path-to-same-sqlite.db>
|
|
11
|
+
\`\`\`
|
|
12
|
+
|
|
13
|
+
Use \`--postgres-url\` instead of \`--db\` when verifying against Postgres.
|
|
14
|
+
|
|
15
|
+
`;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=bootstrapReadmeTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrapReadmeTemplate.js","sourceRoot":"","sources":["../../src/bootstrap/bootstrapReadmeTemplate.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,MAAM,UAAU,4BAA4B,CAAC,UAAkB;IAC7D,OAAO;;;;;;;oCAO2B,UAAU;;;;;CAK7C,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type ParsedBootstrapPackInput = {
|
|
2
|
+
workflowId: string;
|
|
3
|
+
toolCalls: Array<{
|
|
4
|
+
id: string;
|
|
5
|
+
function: {
|
|
6
|
+
name: string;
|
|
7
|
+
arguments: string;
|
|
8
|
+
};
|
|
9
|
+
}>;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Parse and validate `BootstrapPackInput` v1 per docs/bootstrap-pack-normative.md.
|
|
13
|
+
* @throws TruthLayerError with BOOTSTRAP_* codes
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseBootstrapPackInputJson(rawUtf8: string): ParsedBootstrapPackInput;
|
|
16
|
+
//# sourceMappingURL=parseBootstrapPackInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseBootstrapPackInput.d.ts","sourceRoot":"","sources":["../../src/bootstrap/parseBootstrapPackInput.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC,CAAC;CACJ,CAAC;AAMF;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB,CAoHrF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { CLI_OPERATIONAL_CODES } from "../cliOperationalCodes.js";
|
|
2
|
+
import { loadSchemaValidator } from "../schemaLoad.js";
|
|
3
|
+
import { TruthLayerError } from "../truthLayerError.js";
|
|
4
|
+
function isPlainObject(v) {
|
|
5
|
+
return v !== null && typeof v === "object" && !Array.isArray(v);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Parse and validate `BootstrapPackInput` v1 per docs/bootstrap-pack-normative.md.
|
|
9
|
+
* @throws TruthLayerError with BOOTSTRAP_* codes
|
|
10
|
+
*/
|
|
11
|
+
export function parseBootstrapPackInputJson(rawUtf8) {
|
|
12
|
+
let parsed;
|
|
13
|
+
try {
|
|
14
|
+
parsed = JSON.parse(rawUtf8);
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
18
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_INPUT_INVALID, `Bootstrap input is not valid JSON: ${msg}`);
|
|
19
|
+
}
|
|
20
|
+
const validate = loadSchemaValidator("bootstrap-pack-input-v1");
|
|
21
|
+
if (!validate(parsed)) {
|
|
22
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_INPUT_INVALID, JSON.stringify(validate.errors ?? []));
|
|
23
|
+
}
|
|
24
|
+
const root = parsed;
|
|
25
|
+
const workflowId = root.workflowId;
|
|
26
|
+
if (typeof workflowId !== "string") {
|
|
27
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_INPUT_INVALID, "workflowId must be a string.");
|
|
28
|
+
}
|
|
29
|
+
const oc = root.openaiChatCompletion;
|
|
30
|
+
if (!isPlainObject(oc)) {
|
|
31
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_INPUT_INVALID, "openaiChatCompletion must be an object.");
|
|
32
|
+
}
|
|
33
|
+
const choices = oc.choices;
|
|
34
|
+
if (!Array.isArray(choices) || choices.length < 1) {
|
|
35
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_INPUT_INVALID, "choices must be a non-empty array.");
|
|
36
|
+
}
|
|
37
|
+
const c0 = choices[0];
|
|
38
|
+
if (!isPlainObject(c0)) {
|
|
39
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_INPUT_INVALID, "choices[0] must be an object.");
|
|
40
|
+
}
|
|
41
|
+
const message = c0.message;
|
|
42
|
+
if (!isPlainObject(message)) {
|
|
43
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_INPUT_INVALID, "choices[0].message must be an object.");
|
|
44
|
+
}
|
|
45
|
+
const toolCallsRaw = message.tool_calls;
|
|
46
|
+
if (!Array.isArray(toolCallsRaw)) {
|
|
47
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_INPUT_INVALID, "choices[0].message.tool_calls must be an array.");
|
|
48
|
+
}
|
|
49
|
+
if (toolCallsRaw.length === 0) {
|
|
50
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_NO_TOOL_CALLS, "tool_calls is empty.");
|
|
51
|
+
}
|
|
52
|
+
const toolCalls = [];
|
|
53
|
+
for (let i = 0; i < toolCallsRaw.length; i++) {
|
|
54
|
+
const tc = toolCallsRaw[i];
|
|
55
|
+
if (!isPlainObject(tc)) {
|
|
56
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_INPUT_INVALID, `tool_calls[${i}] must be an object.`);
|
|
57
|
+
}
|
|
58
|
+
if (tc.type !== "function") {
|
|
59
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_INPUT_INVALID, `tool_calls[${i}].type must be "function".`);
|
|
60
|
+
}
|
|
61
|
+
const id = tc.id;
|
|
62
|
+
if (typeof id !== "string" || id.length === 0) {
|
|
63
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_INPUT_INVALID, `tool_calls[${i}].id must be a non-empty string.`);
|
|
64
|
+
}
|
|
65
|
+
const fn = tc.function;
|
|
66
|
+
if (!isPlainObject(fn)) {
|
|
67
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_INPUT_INVALID, `tool_calls[${i}].function must be an object.`);
|
|
68
|
+
}
|
|
69
|
+
const name = fn.name;
|
|
70
|
+
const argsStr = fn.arguments;
|
|
71
|
+
if (typeof name !== "string" || name.length === 0) {
|
|
72
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_INPUT_INVALID, `tool_calls[${i}].function.name must be a non-empty string.`);
|
|
73
|
+
}
|
|
74
|
+
if (typeof argsStr !== "string") {
|
|
75
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_INPUT_INVALID, `tool_calls[${i}].function.arguments must be a string.`);
|
|
76
|
+
}
|
|
77
|
+
let argsParsed;
|
|
78
|
+
try {
|
|
79
|
+
argsParsed = JSON.parse(argsStr);
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
83
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_TOOL_CALL_ARGUMENTS_INVALID, `JSON.parse(function.arguments) failed (tool_calls[i] i=${i}): ${msg}`);
|
|
84
|
+
}
|
|
85
|
+
if (argsParsed === null || typeof argsParsed !== "object" || Array.isArray(argsParsed)) {
|
|
86
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_TOOL_CALL_ARGUMENTS_INVALID, `function.arguments must parse to a JSON object, not array or primitive (tool_calls[i] i=${i}).`);
|
|
87
|
+
}
|
|
88
|
+
toolCalls.push({
|
|
89
|
+
id,
|
|
90
|
+
function: { name, arguments: argsStr },
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return { workflowId, toolCalls };
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=parseBootstrapPackInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseBootstrapPackInput.js","sourceRoot":"","sources":["../../src/bootstrap/parseBootstrapPackInput.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseBootstrapPackInput.test.d.ts","sourceRoot":"","sources":["../../src/bootstrap/parseBootstrapPackInput.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
import { CLI_OPERATIONAL_CODES } from "../cliOperationalCodes.js";
|
|
5
|
+
import { TruthLayerError } from "../truthLayerError.js";
|
|
6
|
+
import { parseBootstrapPackInputJson } from "./parseBootstrapPackInput.js";
|
|
7
|
+
import { synthesizeQuickInputUtf8FromOpenAiV1 } from "./synthesizeQuickInputFromOpenAiV1.js";
|
|
8
|
+
const root = process.cwd();
|
|
9
|
+
const goldenInput = readFileSync(path.join(root, "test", "fixtures", "bootstrap-pack", "input.json"), "utf8");
|
|
10
|
+
describe("parseBootstrapPackInputJson", () => {
|
|
11
|
+
it("parses fixture and preserves tool call arguments verbatim", () => {
|
|
12
|
+
const p = parseBootstrapPackInputJson(goldenInput);
|
|
13
|
+
expect(p.workflowId).toBe("wf_bootstrap_fixture");
|
|
14
|
+
expect(p.toolCalls).toHaveLength(1);
|
|
15
|
+
expect(p.toolCalls[0].function.name).toBe("crm.upsert_contact");
|
|
16
|
+
expect(p.toolCalls[0].function.arguments).toBe('{"recordId":"c_ok","fields":{"name":"Alice","status":"active"}}');
|
|
17
|
+
});
|
|
18
|
+
it("rejects empty tool_calls", () => {
|
|
19
|
+
const raw = readFileSync(path.join(root, "test", "fixtures", "bootstrap-pack", "input-empty-tool-calls.json"), "utf8");
|
|
20
|
+
expect(() => parseBootstrapPackInputJson(raw)).toThrow(TruthLayerError);
|
|
21
|
+
try {
|
|
22
|
+
parseBootstrapPackInputJson(raw);
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
expect(e.code).toBe(CLI_OPERATIONAL_CODES.BOOTSTRAP_NO_TOOL_CALLS);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
describe("synthesizeQuickInputUtf8FromOpenAiV1", () => {
|
|
30
|
+
it("emits one NDJSON line per tool call with stable key order", () => {
|
|
31
|
+
const p = parseBootstrapPackInputJson(goldenInput);
|
|
32
|
+
const utf8 = synthesizeQuickInputUtf8FromOpenAiV1(p);
|
|
33
|
+
const lines = utf8.trim().split("\n");
|
|
34
|
+
expect(lines).toHaveLength(1);
|
|
35
|
+
const line = JSON.parse(lines[0]);
|
|
36
|
+
expect(line.tool_calls).toHaveLength(1);
|
|
37
|
+
expect(line.tool_calls[0].id).toBe("call_fixture_1");
|
|
38
|
+
expect(line.tool_calls[0].type).toBe("function");
|
|
39
|
+
expect(line.tool_calls[0].function.name).toBe("crm.upsert_contact");
|
|
40
|
+
expect(JSON.parse(line.tool_calls[0].function.arguments)).toEqual({
|
|
41
|
+
recordId: "c_ok",
|
|
42
|
+
fields: { name: "Alice", status: "active" },
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=parseBootstrapPackInput.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseBootstrapPackInput.test.js","sourceRoot":"","sources":["../../src/bootstrap/parseBootstrapPackInput.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type ParsedBootstrapCli = {
|
|
2
|
+
inputPath: string;
|
|
3
|
+
outPath: string;
|
|
4
|
+
dbPath: string | undefined;
|
|
5
|
+
postgresUrl: string | undefined;
|
|
6
|
+
};
|
|
7
|
+
export declare function parseBootstrapCliArgs(args: string[]): ParsedBootstrapCli;
|
|
8
|
+
export declare function runBootstrapSubcommand(args: string[]): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=runBootstrapSubcommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runBootstrapSubcommand.d.ts","sourceRoot":"","sources":["../../src/bootstrap/runBootstrapSubcommand.ts"],"names":[],"mappings":"AAuEA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAiBxE;AAcD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmM1E"}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, rmSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { runLicensePreflightIfNeeded } from "../commercial/licensePreflight.js";
|
|
4
|
+
import { CLI_OPERATIONAL_CODES } from "../cliOperationalCodes.js";
|
|
5
|
+
import { cliErrorEnvelope, formatOperationalMessage, } from "../failureCatalog.js";
|
|
6
|
+
import { verifyWorkflow } from "../pipeline.js";
|
|
7
|
+
import { loadSchemaValidator } from "../schemaLoad.js";
|
|
8
|
+
import { TruthLayerError } from "../truthLayerError.js";
|
|
9
|
+
import { formatDistributionFooter } from "../distributionFooter.js";
|
|
10
|
+
import { atomicWriteUtf8File } from "../quickVerify/atomicWrite.js";
|
|
11
|
+
import { buildQuickContractEventsNdjson } from "../quickVerify/buildQuickContractEventsNdjson.js";
|
|
12
|
+
import { stableStringify } from "../quickVerify/canonicalJson.js";
|
|
13
|
+
import { runQuickVerifyToValidatedReport } from "../quickVerify/runQuickVerify.js";
|
|
14
|
+
import { emitVerifyWorkflowCliJsonAndExitByStatus } from "../standardVerifyWorkflowCli.js";
|
|
15
|
+
import { buildBootstrapReadmeMarkdown } from "./bootstrapReadmeTemplate.js";
|
|
16
|
+
import { parseBootstrapPackInputJson } from "./parseBootstrapPackInput.js";
|
|
17
|
+
import { synthesizeQuickInputUtf8FromOpenAiV1 } from "./synthesizeQuickInputFromOpenAiV1.js";
|
|
18
|
+
import { argValue } from "../cliArgv.js";
|
|
19
|
+
const ALLOWED_BOOTSTRAP_FLAGS = new Set([
|
|
20
|
+
"--input",
|
|
21
|
+
"--out",
|
|
22
|
+
"--db",
|
|
23
|
+
"--postgres-url",
|
|
24
|
+
"--help",
|
|
25
|
+
"-h",
|
|
26
|
+
]);
|
|
27
|
+
function usageBootstrap() {
|
|
28
|
+
return `Usage:
|
|
29
|
+
agentskeptic bootstrap --input <path> (--db <sqlitePath> | --postgres-url <url>) --out <path>
|
|
30
|
+
|
|
31
|
+
Builds a contract pack (events.ndjson, tools.json, quick-report.json, README.bootstrap.md) from
|
|
32
|
+
BootstrapPackInput v1 JSON + read-only SQL, then replays contract verify in-process.
|
|
33
|
+
|
|
34
|
+
Exit codes:
|
|
35
|
+
0 Quick pass with exports and contract verify complete (stdout: bootstrap result envelope; stderr empty)
|
|
36
|
+
1 contract verify inconsistent (stdout/stderr: same as agentskeptic verify)
|
|
37
|
+
2 Quick not pass / no exports / contract verify incomplete (stderr: JSON envelope for quick-path; else same as verify)
|
|
38
|
+
3 operational failure (stderr: JSON envelope)
|
|
39
|
+
|
|
40
|
+
--help, -h print this message and exit 0
|
|
41
|
+
|
|
42
|
+
Normative: docs/bootstrap-pack-normative.md`;
|
|
43
|
+
}
|
|
44
|
+
function assertBootstrapArgsWellFormed(args) {
|
|
45
|
+
for (let i = 0; i < args.length; i++) {
|
|
46
|
+
const a = args[i];
|
|
47
|
+
if (a === "-h" || a === "--help")
|
|
48
|
+
continue;
|
|
49
|
+
if (!a.startsWith("--")) {
|
|
50
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_USAGE, `Unexpected argument: ${a}`);
|
|
51
|
+
}
|
|
52
|
+
if (!ALLOWED_BOOTSTRAP_FLAGS.has(a)) {
|
|
53
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_USAGE, `Unknown option: ${a}`);
|
|
54
|
+
}
|
|
55
|
+
if (a === "--input" || a === "--out" || a === "--db" || a === "--postgres-url") {
|
|
56
|
+
const v = args[i + 1];
|
|
57
|
+
if (v === undefined || v.startsWith("--")) {
|
|
58
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_USAGE, `Missing value after ${a}.`);
|
|
59
|
+
}
|
|
60
|
+
i++;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export function parseBootstrapCliArgs(args) {
|
|
65
|
+
assertBootstrapArgsWellFormed(args);
|
|
66
|
+
const inputPath = argValue(args, "--input");
|
|
67
|
+
const outPath = argValue(args, "--out");
|
|
68
|
+
const dbPath = argValue(args, "--db");
|
|
69
|
+
const postgresUrl = argValue(args, "--postgres-url");
|
|
70
|
+
if (!inputPath || !outPath) {
|
|
71
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_USAGE, "Missing --input or --out.");
|
|
72
|
+
}
|
|
73
|
+
const dbCount = (dbPath ? 1 : 0) + (postgresUrl ? 1 : 0);
|
|
74
|
+
if (dbCount !== 1) {
|
|
75
|
+
throw new TruthLayerError(CLI_OPERATIONAL_CODES.BOOTSTRAP_USAGE, "Provide exactly one of --db or --postgres-url.");
|
|
76
|
+
}
|
|
77
|
+
return { inputPath, outPath, dbPath, postgresUrl };
|
|
78
|
+
}
|
|
79
|
+
function writeBootstrapCliError(code, message) {
|
|
80
|
+
console.error(cliErrorEnvelope(code, formatOperationalMessage(message)));
|
|
81
|
+
}
|
|
82
|
+
function cleanupOutDir(outResolved) {
|
|
83
|
+
try {
|
|
84
|
+
rmSync(outResolved, { recursive: true, force: true });
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
/* best-effort */
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export async function runBootstrapSubcommand(args) {
|
|
91
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
92
|
+
console.log(usageBootstrap());
|
|
93
|
+
process.exit(0);
|
|
94
|
+
}
|
|
95
|
+
let parsed;
|
|
96
|
+
try {
|
|
97
|
+
parsed = parseBootstrapCliArgs(args);
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
if (e instanceof TruthLayerError) {
|
|
101
|
+
writeBootstrapCliError(e.code, e.message);
|
|
102
|
+
process.exit(3);
|
|
103
|
+
}
|
|
104
|
+
throw e;
|
|
105
|
+
}
|
|
106
|
+
const outResolved = path.resolve(parsed.outPath);
|
|
107
|
+
if (existsSync(outResolved)) {
|
|
108
|
+
writeBootstrapCliError(CLI_OPERATIONAL_CODES.BOOTSTRAP_OUT_EXISTS, `--out already exists: ${outResolved}`);
|
|
109
|
+
process.exit(3);
|
|
110
|
+
}
|
|
111
|
+
let rawInput;
|
|
112
|
+
try {
|
|
113
|
+
rawInput = readFileSync(path.resolve(parsed.inputPath), "utf8");
|
|
114
|
+
}
|
|
115
|
+
catch (e) {
|
|
116
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
117
|
+
writeBootstrapCliError(CLI_OPERATIONAL_CODES.BOOTSTRAP_USAGE, `Cannot read --input: ${msg}`);
|
|
118
|
+
process.exit(3);
|
|
119
|
+
}
|
|
120
|
+
let packInput;
|
|
121
|
+
try {
|
|
122
|
+
packInput = parseBootstrapPackInputJson(rawInput);
|
|
123
|
+
}
|
|
124
|
+
catch (e) {
|
|
125
|
+
if (e instanceof TruthLayerError) {
|
|
126
|
+
writeBootstrapCliError(e.code, e.message);
|
|
127
|
+
process.exit(3);
|
|
128
|
+
}
|
|
129
|
+
throw e;
|
|
130
|
+
}
|
|
131
|
+
try {
|
|
132
|
+
await runLicensePreflightIfNeeded("verify");
|
|
133
|
+
}
|
|
134
|
+
catch (e) {
|
|
135
|
+
if (e instanceof TruthLayerError) {
|
|
136
|
+
writeBootstrapCliError(e.code, e.message);
|
|
137
|
+
process.exit(3);
|
|
138
|
+
}
|
|
139
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
140
|
+
writeBootstrapCliError(CLI_OPERATIONAL_CODES.INTERNAL_ERROR, formatOperationalMessage(msg));
|
|
141
|
+
process.exit(3);
|
|
142
|
+
}
|
|
143
|
+
mkdirSync(outResolved, { recursive: false });
|
|
144
|
+
const database = parsed.postgresUrl
|
|
145
|
+
? { kind: "postgres", connectionString: parsed.postgresUrl }
|
|
146
|
+
: { kind: "sqlite", path: path.resolve(parsed.dbPath) };
|
|
147
|
+
const inputUtf8 = synthesizeQuickInputUtf8FromOpenAiV1(packInput);
|
|
148
|
+
let report;
|
|
149
|
+
let registryUtf8;
|
|
150
|
+
let contractExports;
|
|
151
|
+
try {
|
|
152
|
+
const out = await runQuickVerifyToValidatedReport({
|
|
153
|
+
inputUtf8,
|
|
154
|
+
postgresUrl: parsed.postgresUrl ?? undefined,
|
|
155
|
+
sqlitePath: parsed.dbPath !== undefined ? path.resolve(parsed.dbPath) : undefined,
|
|
156
|
+
});
|
|
157
|
+
report = out.report;
|
|
158
|
+
registryUtf8 = out.registryUtf8;
|
|
159
|
+
contractExports = out.contractExports;
|
|
160
|
+
}
|
|
161
|
+
catch (e) {
|
|
162
|
+
cleanupOutDir(outResolved);
|
|
163
|
+
if (e instanceof TruthLayerError) {
|
|
164
|
+
writeBootstrapCliError(e.code, e.message);
|
|
165
|
+
process.exit(3);
|
|
166
|
+
}
|
|
167
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
168
|
+
writeBootstrapCliError(CLI_OPERATIONAL_CODES.INTERNAL_ERROR, formatOperationalMessage(msg));
|
|
169
|
+
process.exit(3);
|
|
170
|
+
}
|
|
171
|
+
if (report.verdict !== "pass") {
|
|
172
|
+
cleanupOutDir(outResolved);
|
|
173
|
+
writeBootstrapCliError(CLI_OPERATIONAL_CODES.BOOTSTRAP_QUICK_NOT_PASS, `Quick Verify verdict was "${report.verdict}" (expected pass).`);
|
|
174
|
+
process.exit(2);
|
|
175
|
+
}
|
|
176
|
+
if (contractExports.length === 0) {
|
|
177
|
+
cleanupOutDir(outResolved);
|
|
178
|
+
writeBootstrapCliError(CLI_OPERATIONAL_CODES.BOOTSTRAP_NO_EXPORTABLE_TOOLS, "Quick Verify produced zero exportable tools for contract replay.");
|
|
179
|
+
process.exit(2);
|
|
180
|
+
}
|
|
181
|
+
const eventsPath = path.join(outResolved, "events.ndjson");
|
|
182
|
+
const toolsPath = path.join(outResolved, "tools.json");
|
|
183
|
+
const quickReportPath = path.join(outResolved, "quick-report.json");
|
|
184
|
+
const readmePath = path.join(outResolved, "README.bootstrap.md");
|
|
185
|
+
try {
|
|
186
|
+
atomicWriteUtf8File(toolsPath, registryUtf8);
|
|
187
|
+
atomicWriteUtf8File(eventsPath, buildQuickContractEventsNdjson({
|
|
188
|
+
workflowId: packInput.workflowId,
|
|
189
|
+
exports: contractExports,
|
|
190
|
+
}));
|
|
191
|
+
atomicWriteUtf8File(quickReportPath, `${stableStringify(report)}\n`);
|
|
192
|
+
atomicWriteUtf8File(readmePath, buildBootstrapReadmeMarkdown(packInput.workflowId));
|
|
193
|
+
}
|
|
194
|
+
catch (e) {
|
|
195
|
+
cleanupOutDir(outResolved);
|
|
196
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
197
|
+
writeBootstrapCliError(CLI_OPERATIONAL_CODES.INTERNAL_ERROR, formatOperationalMessage(`pack write: ${msg}`));
|
|
198
|
+
process.exit(3);
|
|
199
|
+
}
|
|
200
|
+
let truthBuffered = "";
|
|
201
|
+
let result;
|
|
202
|
+
try {
|
|
203
|
+
result = await verifyWorkflow({
|
|
204
|
+
workflowId: packInput.workflowId,
|
|
205
|
+
eventsPath,
|
|
206
|
+
registryPath: toolsPath,
|
|
207
|
+
database,
|
|
208
|
+
truthReport: (r) => {
|
|
209
|
+
truthBuffered = r;
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
catch (e) {
|
|
214
|
+
cleanupOutDir(outResolved);
|
|
215
|
+
if (e instanceof TruthLayerError) {
|
|
216
|
+
writeBootstrapCliError(e.code, e.message);
|
|
217
|
+
process.exit(3);
|
|
218
|
+
}
|
|
219
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
220
|
+
writeBootstrapCliError(CLI_OPERATIONAL_CODES.INTERNAL_ERROR, formatOperationalMessage(msg));
|
|
221
|
+
process.exit(3);
|
|
222
|
+
}
|
|
223
|
+
const validateResult = loadSchemaValidator("workflow-result");
|
|
224
|
+
if (!validateResult(result)) {
|
|
225
|
+
cleanupOutDir(outResolved);
|
|
226
|
+
writeBootstrapCliError(CLI_OPERATIONAL_CODES.WORKFLOW_RESULT_SCHEMA_INVALID, JSON.stringify(validateResult.errors ?? []));
|
|
227
|
+
process.exit(3);
|
|
228
|
+
}
|
|
229
|
+
if (result.status === "complete") {
|
|
230
|
+
const envelope = {
|
|
231
|
+
schemaVersion: 1,
|
|
232
|
+
kind: "agentskeptic_bootstrap_result",
|
|
233
|
+
workflowId: packInput.workflowId,
|
|
234
|
+
outDir: outResolved,
|
|
235
|
+
quickVerdict: "pass",
|
|
236
|
+
verifyStatus: "complete",
|
|
237
|
+
exportedToolCount: contractExports.length,
|
|
238
|
+
};
|
|
239
|
+
try {
|
|
240
|
+
process.stdout.write(`${JSON.stringify(envelope)}\n`);
|
|
241
|
+
}
|
|
242
|
+
catch (e) {
|
|
243
|
+
cleanupOutDir(outResolved);
|
|
244
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
245
|
+
writeBootstrapCliError(CLI_OPERATIONAL_CODES.INTERNAL_ERROR, formatOperationalMessage(`stdout: ${msg}`));
|
|
246
|
+
process.exit(3);
|
|
247
|
+
}
|
|
248
|
+
process.exit(0);
|
|
249
|
+
}
|
|
250
|
+
process.stderr.write(`${truthBuffered}\n`);
|
|
251
|
+
process.stderr.write(formatDistributionFooter());
|
|
252
|
+
const exitWithCleanup = (code) => {
|
|
253
|
+
cleanupOutDir(outResolved);
|
|
254
|
+
process.exit(code);
|
|
255
|
+
};
|
|
256
|
+
emitVerifyWorkflowCliJsonAndExitByStatus(result, {
|
|
257
|
+
consoleLog: (line) => {
|
|
258
|
+
console.log(line);
|
|
259
|
+
},
|
|
260
|
+
exit: exitWithCleanup,
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=runBootstrapSubcommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runBootstrapSubcommand.js","sourceRoot":"","sources":["../../src/bootstrap/runBootstrapSubcommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ParsedBootstrapPackInput } from "./parseBootstrapPackInput.js";
|
|
2
|
+
/**
|
|
3
|
+
* Deterministic NDJSON UTF-8 for Quick ingest (one wrapped tool_calls object per line).
|
|
4
|
+
*/
|
|
5
|
+
export declare function synthesizeQuickInputUtf8FromOpenAiV1(input: ParsedBootstrapPackInput): string;
|
|
6
|
+
//# sourceMappingURL=synthesizeQuickInputFromOpenAiV1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synthesizeQuickInputFromOpenAiV1.d.ts","sourceRoot":"","sources":["../../src/bootstrap/synthesizeQuickInputFromOpenAiV1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAE7E;;GAEG;AACH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM,CAa5F"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic NDJSON UTF-8 for Quick ingest (one wrapped tool_calls object per line).
|
|
3
|
+
*/
|
|
4
|
+
export function synthesizeQuickInputUtf8FromOpenAiV1(input) {
|
|
5
|
+
const lines = input.toolCalls.map((tc) => JSON.stringify({
|
|
6
|
+
tool_calls: [
|
|
7
|
+
{
|
|
8
|
+
id: tc.id,
|
|
9
|
+
type: "function",
|
|
10
|
+
function: { name: tc.function.name, arguments: tc.function.arguments },
|
|
11
|
+
},
|
|
12
|
+
],
|
|
13
|
+
}));
|
|
14
|
+
return `${lines.join("\n")}\n`;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=synthesizeQuickInputFromOpenAiV1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synthesizeQuickInputFromOpenAiV1.js","sourceRoot":"","sources":["../../src/bootstrap/synthesizeQuickInputFromOpenAiV1.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,oCAAoC,CAAC,KAA+B;IAClF,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACvC,IAAI,CAAC,SAAS,CAAC;QACb,UAAU,EAAE;YACV;gBACE,EAAE,EAAE,EAAE,CAAC,EAAE;gBACT,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE;aACvE;SACF;KACF,CAAC,CACH,CAAC;IACF,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -34,6 +34,7 @@ import { LICENSE_PREFLIGHT_ENABLED } from "./generated/commercialBuildFlags.js";
|
|
|
34
34
|
import { runBatchCiLockFromRestArgs, runQuickCiLockFromRestArgs } from "./ciLockWorkflow.js";
|
|
35
35
|
import { formatDistributionFooter } from "./distributionFooter.js";
|
|
36
36
|
import { postPublicVerificationReport } from "./shareReport/postPublicVerificationReport.js";
|
|
37
|
+
import { runBootstrapSubcommand } from "./bootstrap/runBootstrapSubcommand.js";
|
|
37
38
|
function usageQuick() {
|
|
38
39
|
return `Usage:
|
|
39
40
|
agentskeptic quick --input <path> (--postgres-url <url> | --db <sqlitePath>) --export-registry <path>
|
|
@@ -57,6 +58,9 @@ function usageVerify() {
|
|
|
57
58
|
agentskeptic quick --input <path> (--postgres-url <url> | --db <sqlitePath>) --export-registry <path> [--emit-events <path>] [--workflow-id <id>]
|
|
58
59
|
(zero-config path; structured tool activity + read-only SQL; see docs/quick-verify-normative.md)
|
|
59
60
|
|
|
61
|
+
agentskeptic bootstrap --input <path> (--db <sqlitePath> | --postgres-url <url>) --out <path>
|
|
62
|
+
(BootstrapPackInput v1 JSON → contract pack + in-process verify; see docs/bootstrap-pack-normative.md)
|
|
63
|
+
|
|
60
64
|
agentskeptic --workflow-id <id> --events <path> --registry <path> --db <sqlitePath>
|
|
61
65
|
agentskeptic --workflow-id <id> --events <path> --registry <path> --postgres-url <url>
|
|
62
66
|
|
|
@@ -877,6 +881,10 @@ async function main() {
|
|
|
877
881
|
await runQuickSubcommand(args.slice(1));
|
|
878
882
|
return;
|
|
879
883
|
}
|
|
884
|
+
if (args[0] === "bootstrap") {
|
|
885
|
+
await runBootstrapSubcommand(args.slice(1));
|
|
886
|
+
return;
|
|
887
|
+
}
|
|
880
888
|
if (args[0] === "verify-bundle-signature") {
|
|
881
889
|
runVerifyBundleSignatureSubcommand(args.slice(1));
|
|
882
890
|
return;
|