agentskeptic 0.1.5 → 0.1.7
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 +41 -99
- 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 +139 -34
- 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.d.ts +7 -2
- package/dist/commercial/licensePreflight.d.ts.map +1 -1
- package/dist/commercial/licensePreflight.js +6 -5
- package/dist/commercial/licensePreflight.js.map +1 -1
- package/dist/commercial/licensePreflight.test.js +70 -21
- package/dist/commercial/licensePreflight.test.js.map +1 -1
- package/dist/commercial/postVerifyOutcomeBeacon.d.ts +13 -0
- package/dist/commercial/postVerifyOutcomeBeacon.d.ts.map +1 -0
- package/dist/commercial/postVerifyOutcomeBeacon.js +33 -0
- package/dist/commercial/postVerifyOutcomeBeacon.js.map +1 -0
- package/dist/commercial/quickVerifyFunnelTerminalStatus.d.ts +5 -0
- package/dist/commercial/quickVerifyFunnelTerminalStatus.d.ts.map +1 -0
- package/dist/commercial/quickVerifyFunnelTerminalStatus.js +11 -0
- package/dist/commercial/quickVerifyFunnelTerminalStatus.js.map +1 -0
- package/dist/commercial/verifyWorkloadClassify.d.ts +17 -0
- package/dist/commercial/verifyWorkloadClassify.d.ts.map +1 -0
- package/dist/commercial/verifyWorkloadClassify.js +47 -0
- package/dist/commercial/verifyWorkloadClassify.js.map +1 -0
- package/dist/commercial/verifyWorkloadClassify.test.d.ts +2 -0
- package/dist/commercial/verifyWorkloadClassify.test.d.ts.map +1 -0
- package/dist/commercial/verifyWorkloadClassify.test.js +45 -0
- package/dist/commercial/verifyWorkloadClassify.test.js.map +1 -0
- 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/publicDistribution.generated.d.ts +2 -0
- package/dist/publicDistribution.generated.d.ts.map +1 -1
- package/dist/publicDistribution.generated.js +2 -0
- package/dist/publicDistribution.generated.js.map +1 -1
- package/dist/quickVerify/buildQuickContractEventsNdjson.d.ts +6 -0
- package/dist/quickVerify/buildQuickContractEventsNdjson.d.ts.map +1 -1
- package/dist/quickVerify/buildQuickContractEventsNdjson.js +33 -14
- package/dist/quickVerify/buildQuickContractEventsNdjson.js.map +1 -1
- package/dist/quickVerify/buildSyntheticRowParams.d.ts +7 -0
- package/dist/quickVerify/buildSyntheticRowParams.d.ts.map +1 -0
- package/dist/quickVerify/buildSyntheticRowParams.js +13 -0
- package/dist/quickVerify/buildSyntheticRowParams.js.map +1 -0
- package/dist/quickVerify/buildSyntheticRowParams.test.d.ts +2 -0
- package/dist/quickVerify/buildSyntheticRowParams.test.d.ts.map +1 -0
- package/dist/quickVerify/buildSyntheticRowParams.test.js +19 -0
- package/dist/quickVerify/buildSyntheticRowParams.test.js.map +1 -0
- package/dist/quickVerify/exportTool.d.ts +12 -1
- package/dist/quickVerify/exportTool.d.ts.map +1 -1
- package/dist/quickVerify/exportTool.js +45 -0
- package/dist/quickVerify/exportTool.js.map +1 -1
- package/dist/quickVerify/flatKeyToJsonPointer.d.ts +16 -0
- package/dist/quickVerify/flatKeyToJsonPointer.d.ts.map +1 -0
- package/dist/quickVerify/flatKeyToJsonPointer.js +44 -0
- package/dist/quickVerify/flatKeyToJsonPointer.js.map +1 -0
- package/dist/quickVerify/flatKeyToJsonPointer.test.d.ts +2 -0
- package/dist/quickVerify/flatKeyToJsonPointer.test.d.ts.map +1 -0
- package/dist/quickVerify/flatKeyToJsonPointer.test.js +19 -0
- package/dist/quickVerify/flatKeyToJsonPointer.test.js.map +1 -0
- 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 +1 -0
- package/dist/quickVerify/ingest.d.ts.map +1 -1
- package/dist/quickVerify/ingest.js +44 -1
- package/dist/quickVerify/ingest.js.map +1 -1
- package/dist/quickVerify/planRowUnit.pointer-promotion.test.d.ts +2 -0
- package/dist/quickVerify/planRowUnit.pointer-promotion.test.d.ts.map +1 -0
- package/dist/quickVerify/planRowUnit.pointer-promotion.test.js +30 -0
- package/dist/quickVerify/planRowUnit.pointer-promotion.test.js.map +1 -0
- package/dist/quickVerify/quickParamPointerNegatives.test.d.ts +2 -0
- package/dist/quickVerify/quickParamPointerNegatives.test.d.ts.map +1 -0
- package/dist/quickVerify/quickParamPointerNegatives.test.js +25 -0
- package/dist/quickVerify/quickParamPointerNegatives.test.js.map +1 -0
- package/dist/quickVerify/quickParamPointerPromotionGoldens.test.d.ts +2 -0
- package/dist/quickVerify/quickParamPointerPromotionGoldens.test.d.ts.map +1 -0
- package/dist/quickVerify/quickParamPointerPromotionGoldens.test.js +34 -0
- package/dist/quickVerify/quickParamPointerPromotionGoldens.test.js.map +1 -0
- package/dist/quickVerify/quickParamPointerReplay.test.d.ts +2 -0
- package/dist/quickVerify/quickParamPointerReplay.test.d.ts.map +1 -0
- package/dist/quickVerify/quickParamPointerReplay.test.js +23 -0
- package/dist/quickVerify/quickParamPointerReplay.test.js.map +1 -0
- 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 +2 -2
- package/dist/quickVerify/quickVerifyScope.d.ts.map +1 -1
- package/dist/quickVerify/quickVerifyScope.js +2 -2
- package/dist/quickVerify/quickVerifyScope.js.map +1 -1
- package/dist/quickVerify/rowUnit.d.ts +8 -0
- package/dist/quickVerify/rowUnit.d.ts.map +1 -1
- package/dist/quickVerify/rowUnit.js +17 -2
- package/dist/quickVerify/rowUnit.js.map +1 -1
- package/dist/quickVerify/runQuickVerify.d.ts.map +1 -1
- package/dist/quickVerify/runQuickVerify.js +102 -11
- 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/quickVerify/verificationRequestFingerprint.d.ts +6 -0
- package/dist/quickVerify/verificationRequestFingerprint.d.ts.map +1 -0
- package/dist/quickVerify/verificationRequestFingerprint.js +23 -0
- package/dist/quickVerify/verificationRequestFingerprint.js.map +1 -0
- package/dist/quickVerify/verificationRequestFingerprint.test.d.ts +2 -0
- package/dist/quickVerify/verificationRequestFingerprint.test.d.ts.map +1 -0
- package/dist/quickVerify/verificationRequestFingerprint.test.js +26 -0
- package/dist/quickVerify/verificationRequestFingerprint.test.js.map +1 -0
- 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 +18 -0
- package/dist/standardVerifyWorkflowCli.d.ts.map +1 -1
- package/dist/standardVerifyWorkflowCli.js +45 -25
- package/dist/standardVerifyWorkflowCli.js.map +1 -1
- package/dist/telemetry/cliInstallId.d.ts +8 -0
- package/dist/telemetry/cliInstallId.d.ts.map +1 -0
- package/dist/telemetry/cliInstallId.js +72 -0
- package/dist/telemetry/cliInstallId.js.map +1 -0
- package/dist/telemetry/fetchWithTimeout.d.ts +6 -0
- package/dist/telemetry/fetchWithTimeout.d.ts.map +1 -0
- package/dist/telemetry/fetchWithTimeout.js +15 -0
- package/dist/telemetry/fetchWithTimeout.js.map +1 -0
- package/dist/telemetry/maybeEmitOssClaimTicketUrl.d.ts +8 -0
- package/dist/telemetry/maybeEmitOssClaimTicketUrl.d.ts.map +1 -0
- package/dist/telemetry/maybeEmitOssClaimTicketUrl.js +22 -0
- package/dist/telemetry/maybeEmitOssClaimTicketUrl.js.map +1 -0
- package/dist/telemetry/ossClaimOrigin.d.ts +6 -0
- package/dist/telemetry/ossClaimOrigin.d.ts.map +1 -0
- package/dist/telemetry/ossClaimOrigin.js +9 -0
- package/dist/telemetry/ossClaimOrigin.js.map +1 -0
- package/dist/telemetry/ossClaimOrigin.test.d.ts +2 -0
- package/dist/telemetry/ossClaimOrigin.test.d.ts.map +1 -0
- package/dist/telemetry/ossClaimOrigin.test.js +9 -0
- package/dist/telemetry/ossClaimOrigin.test.js.map +1 -0
- package/dist/telemetry/postOssClaimTicket.d.ts +14 -0
- package/dist/telemetry/postOssClaimTicket.d.ts.map +1 -0
- package/dist/telemetry/postOssClaimTicket.js +42 -0
- package/dist/telemetry/postOssClaimTicket.js.map +1 -0
- package/dist/telemetry/postProductActivationEvent.d.ts +25 -0
- package/dist/telemetry/postProductActivationEvent.d.ts.map +1 -0
- package/dist/telemetry/postProductActivationEvent.js +71 -0
- package/dist/telemetry/postProductActivationEvent.js.map +1 -0
- package/dist/telemetry/postProductActivationEvent.test.d.ts +2 -0
- package/dist/telemetry/postProductActivationEvent.test.d.ts.map +1 -0
- package/dist/telemetry/postProductActivationEvent.test.js +65 -0
- package/dist/telemetry/postProductActivationEvent.test.js.map +1 -0
- package/dist/telemetry/productActivationHeaders.d.ts +5 -0
- package/dist/telemetry/productActivationHeaders.d.ts.map +1 -0
- package/dist/telemetry/productActivationHeaders.js +5 -0
- package/dist/telemetry/productActivationHeaders.js.map +1 -0
- package/dist/telemetry/resolveTelemetrySource.d.ts +7 -0
- package/dist/telemetry/resolveTelemetrySource.d.ts.map +1 -0
- package/dist/telemetry/resolveTelemetrySource.js +10 -0
- package/dist/telemetry/resolveTelemetrySource.js.map +1 -0
- package/package.json +19 -9
- package/schemas/bootstrap-pack-input-v1.schema.json +61 -0
- package/schemas/quick-verify-report.schema.json +3 -3
|
@@ -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
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
2
3
|
import { readFileSync, statSync } from "fs";
|
|
3
4
|
import path from "path";
|
|
4
5
|
import { CLI_OPERATIONAL_CODES, cliErrorEnvelope, formatOperationalMessage, } from "./failureCatalog.js";
|
|
@@ -8,7 +9,7 @@ import { loadEventsForWorkflow } from "./loadEvents.js";
|
|
|
8
9
|
import { verifyWorkflow } from "./pipeline.js";
|
|
9
10
|
import { argValue, argValues, parseBatchVerifyCliArgs, parseQuickCliArgs } from "./cliArgv.js";
|
|
10
11
|
import { ENFORCE_OSS_GATE_MESSAGE, runEnforce } from "./enforceCli.js";
|
|
11
|
-
import {
|
|
12
|
+
import { CLI_EXITED_AFTER_ERROR, emitVerifyWorkflowCliJsonAndExitByStatus, runStandardVerifyWorkflowCliToTerminalResult, } from "./standardVerifyWorkflowCli.js";
|
|
12
13
|
import { formatRegistryValidationHumanReport, validateToolsRegistry, } from "./registryValidation.js";
|
|
13
14
|
import { loadSchemaValidator } from "./schemaLoad.js";
|
|
14
15
|
import { TruthLayerError } from "./truthLayerError.js";
|
|
@@ -30,10 +31,16 @@ import { runQuickVerifyToValidatedReport } from "./quickVerify/runQuickVerify.js
|
|
|
30
31
|
import { checkAssuranceReportStale } from "./assurance/checkStale.js";
|
|
31
32
|
import { runAssuranceFromManifest } from "./assurance/runAssurance.js";
|
|
32
33
|
import { runLicensePreflightIfNeeded } from "./commercial/licensePreflight.js";
|
|
34
|
+
import { postVerifyOutcomeBeacon } from "./commercial/postVerifyOutcomeBeacon.js";
|
|
35
|
+
import { quickVerifyVerdictToTerminalStatus } from "./commercial/quickVerifyFunnelTerminalStatus.js";
|
|
36
|
+
import { classifyBatchVerifyWorkload, classifyQuickVerifyWorkload, } from "./commercial/verifyWorkloadClassify.js";
|
|
33
37
|
import { LICENSE_PREFLIGHT_ENABLED } from "./generated/commercialBuildFlags.js";
|
|
34
38
|
import { runBatchCiLockFromRestArgs, runQuickCiLockFromRestArgs } from "./ciLockWorkflow.js";
|
|
35
39
|
import { formatDistributionFooter } from "./distributionFooter.js";
|
|
36
40
|
import { postPublicVerificationReport } from "./shareReport/postPublicVerificationReport.js";
|
|
41
|
+
import { runBootstrapSubcommand } from "./bootstrap/runBootstrapSubcommand.js";
|
|
42
|
+
import { maybeEmitOssClaimTicketUrlToStderr } from "./telemetry/maybeEmitOssClaimTicketUrl.js";
|
|
43
|
+
import { postProductActivationEvent } from "./telemetry/postProductActivationEvent.js";
|
|
37
44
|
function usageQuick() {
|
|
38
45
|
return `Usage:
|
|
39
46
|
agentskeptic quick --input <path> (--postgres-url <url> | --db <sqlitePath>) --export-registry <path>
|
|
@@ -57,6 +64,9 @@ function usageVerify() {
|
|
|
57
64
|
agentskeptic quick --input <path> (--postgres-url <url> | --db <sqlitePath>) --export-registry <path> [--emit-events <path>] [--workflow-id <id>]
|
|
58
65
|
(zero-config path; structured tool activity + read-only SQL; see docs/quick-verify-normative.md)
|
|
59
66
|
|
|
67
|
+
agentskeptic bootstrap --input <path> (--db <sqlitePath> | --postgres-url <url>) --out <path>
|
|
68
|
+
(BootstrapPackInput v1 JSON → contract pack + in-process verify; see docs/bootstrap-pack-normative.md)
|
|
69
|
+
|
|
60
70
|
agentskeptic --workflow-id <id> --events <path> --registry <path> --db <sqlitePath>
|
|
61
71
|
agentskeptic --workflow-id <id> --events <path> --registry <path> --postgres-url <url>
|
|
62
72
|
|
|
@@ -409,8 +419,12 @@ async function runQuickSubcommand(args) {
|
|
|
409
419
|
throw e;
|
|
410
420
|
}
|
|
411
421
|
const { inputPath, exportPath, emitEventsPath, workflowIdQuick, dbPath, postgresUrl, shareReportOrigin } = pq;
|
|
422
|
+
const activationRunId = process.env.AGENTSKEPTIC_RUN_ID?.trim() ||
|
|
423
|
+
process.env.WORKFLOW_VERIFIER_RUN_ID?.trim() ||
|
|
424
|
+
randomUUID();
|
|
425
|
+
let quickPreflight;
|
|
412
426
|
try {
|
|
413
|
-
await runLicensePreflightIfNeeded("verify");
|
|
427
|
+
quickPreflight = await runLicensePreflightIfNeeded("verify", { runId: activationRunId });
|
|
414
428
|
}
|
|
415
429
|
catch (e) {
|
|
416
430
|
if (e instanceof TruthLayerError) {
|
|
@@ -430,6 +444,20 @@ async function runQuickSubcommand(args) {
|
|
|
430
444
|
writeCliError(CLI_OPERATIONAL_CODES.CLI_USAGE, `Cannot read --input: ${msg}`);
|
|
431
445
|
process.exit(3);
|
|
432
446
|
}
|
|
447
|
+
const quickBuildProfile = LICENSE_PREFLIGHT_ENABLED ? "commercial" : "oss";
|
|
448
|
+
const quickWorkloadClass = classifyQuickVerifyWorkload({
|
|
449
|
+
inputPath: inputPath,
|
|
450
|
+
sqlitePath: dbPath ?? undefined,
|
|
451
|
+
postgresUrl: postgresUrl ?? undefined,
|
|
452
|
+
});
|
|
453
|
+
await postProductActivationEvent({
|
|
454
|
+
phase: "verify_started",
|
|
455
|
+
run_id: activationRunId,
|
|
456
|
+
issued_at: new Date().toISOString(),
|
|
457
|
+
workload_class: quickWorkloadClass,
|
|
458
|
+
subcommand: "quick_verify",
|
|
459
|
+
build_profile: quickBuildProfile,
|
|
460
|
+
});
|
|
433
461
|
let registryUtf8;
|
|
434
462
|
let report;
|
|
435
463
|
let contractExports = [];
|
|
@@ -452,6 +480,15 @@ async function runQuickSubcommand(args) {
|
|
|
452
480
|
writeCliError(CLI_OPERATIONAL_CODES.INTERNAL_ERROR, formatOperationalMessage(msg));
|
|
453
481
|
process.exit(3);
|
|
454
482
|
}
|
|
483
|
+
await postProductActivationEvent({
|
|
484
|
+
phase: "verify_outcome",
|
|
485
|
+
run_id: activationRunId,
|
|
486
|
+
issued_at: new Date().toISOString(),
|
|
487
|
+
workload_class: quickWorkloadClass,
|
|
488
|
+
subcommand: "quick_verify",
|
|
489
|
+
build_profile: quickBuildProfile,
|
|
490
|
+
terminal_status: quickVerifyVerdictToTerminalStatus(report.verdict),
|
|
491
|
+
});
|
|
455
492
|
try {
|
|
456
493
|
atomicWriteUtf8File(path.resolve(exportPath), registryUtf8);
|
|
457
494
|
}
|
|
@@ -504,6 +541,19 @@ async function runQuickSubcommand(args) {
|
|
|
504
541
|
}
|
|
505
542
|
console.error(human);
|
|
506
543
|
process.stderr.write(formatDistributionFooter());
|
|
544
|
+
await maybeEmitOssClaimTicketUrlToStderr({
|
|
545
|
+
run_id: activationRunId,
|
|
546
|
+
terminal_status: quickVerifyVerdictToTerminalStatus(report.verdict),
|
|
547
|
+
workload_class: quickWorkloadClass,
|
|
548
|
+
subcommand: "quick_verify",
|
|
549
|
+
build_profile: quickBuildProfile,
|
|
550
|
+
});
|
|
551
|
+
await postVerifyOutcomeBeacon({
|
|
552
|
+
runId: quickPreflight.runId,
|
|
553
|
+
terminal_status: quickVerifyVerdictToTerminalStatus(report.verdict),
|
|
554
|
+
workload_class: quickWorkloadClass,
|
|
555
|
+
subcommand: "quick_verify",
|
|
556
|
+
});
|
|
507
557
|
if (report.verdict === "pass")
|
|
508
558
|
process.exit(0);
|
|
509
559
|
if (report.verdict === "fail")
|
|
@@ -877,6 +927,10 @@ async function main() {
|
|
|
877
927
|
await runQuickSubcommand(args.slice(1));
|
|
878
928
|
return;
|
|
879
929
|
}
|
|
930
|
+
if (args[0] === "bootstrap") {
|
|
931
|
+
await runBootstrapSubcommand(args.slice(1));
|
|
932
|
+
return;
|
|
933
|
+
}
|
|
880
934
|
if (args[0] === "verify-bundle-signature") {
|
|
881
935
|
runVerifyBundleSignatureSubcommand(args.slice(1));
|
|
882
936
|
return;
|
|
@@ -946,8 +1000,12 @@ async function main() {
|
|
|
946
1000
|
}
|
|
947
1001
|
throw e;
|
|
948
1002
|
}
|
|
1003
|
+
const batchActivationRunId = process.env.AGENTSKEPTIC_RUN_ID?.trim() ||
|
|
1004
|
+
process.env.WORKFLOW_VERIFIER_RUN_ID?.trim() ||
|
|
1005
|
+
randomUUID();
|
|
1006
|
+
let batchPreflight;
|
|
949
1007
|
try {
|
|
950
|
-
await runLicensePreflightIfNeeded("verify");
|
|
1008
|
+
batchPreflight = await runLicensePreflightIfNeeded("verify", { runId: batchActivationRunId });
|
|
951
1009
|
}
|
|
952
1010
|
catch (e) {
|
|
953
1011
|
if (e instanceof TruthLayerError) {
|
|
@@ -957,38 +1015,85 @@ async function main() {
|
|
|
957
1015
|
throw e;
|
|
958
1016
|
}
|
|
959
1017
|
const suppressTruthToStderr = parsedBatch.noTruthReport || parsedBatch.shareReportOrigin !== undefined;
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
registryPath: parsedBatch.registryPath,
|
|
966
|
-
database: parsedBatch.database,
|
|
967
|
-
verificationPolicy: parsedBatch.verificationPolicy,
|
|
968
|
-
...(suppressTruthToStderr ?
|
|
969
|
-
{ truthReport: () => { } }
|
|
970
|
-
: {
|
|
971
|
-
truthReport: (report) => {
|
|
972
|
-
process.stderr.write(`${report}\n`);
|
|
973
|
-
process.stderr.write(formatDistributionFooter());
|
|
974
|
-
},
|
|
975
|
-
}),
|
|
976
|
-
}),
|
|
977
|
-
maybeWriteBundle: parsedBatch.writeRunBundleDir === undefined
|
|
978
|
-
? undefined
|
|
979
|
-
: (result) => writeRunBundleCli(parsedBatch.writeRunBundleDir, readFileSync(path.resolve(parsedBatch.eventsPath)), result, parsedBatch.signPrivateKeyPath),
|
|
980
|
-
io: {
|
|
981
|
-
consoleLog: (line) => {
|
|
982
|
-
console.log(line);
|
|
983
|
-
},
|
|
984
|
-
stderrLine: (line) => {
|
|
985
|
-
console.error(line);
|
|
986
|
-
},
|
|
987
|
-
exit: (code) => {
|
|
988
|
-
process.exit(code);
|
|
989
|
-
},
|
|
990
|
-
},
|
|
1018
|
+
const batchBuildProfile = LICENSE_PREFLIGHT_ENABLED ? "commercial" : "oss";
|
|
1019
|
+
const batchWorkloadClass = classifyBatchVerifyWorkload({
|
|
1020
|
+
eventsPath: parsedBatch.eventsPath,
|
|
1021
|
+
registryPath: parsedBatch.registryPath,
|
|
1022
|
+
database: parsedBatch.database,
|
|
991
1023
|
});
|
|
1024
|
+
await postProductActivationEvent({
|
|
1025
|
+
phase: "verify_started",
|
|
1026
|
+
run_id: batchActivationRunId,
|
|
1027
|
+
issued_at: new Date().toISOString(),
|
|
1028
|
+
workload_class: batchWorkloadClass,
|
|
1029
|
+
subcommand: "batch_verify",
|
|
1030
|
+
build_profile: batchBuildProfile,
|
|
1031
|
+
});
|
|
1032
|
+
const batchIo = {
|
|
1033
|
+
consoleLog: (line) => {
|
|
1034
|
+
console.log(line);
|
|
1035
|
+
},
|
|
1036
|
+
stderrLine: (line) => {
|
|
1037
|
+
console.error(line);
|
|
1038
|
+
},
|
|
1039
|
+
exit: (code) => {
|
|
1040
|
+
process.exit(code);
|
|
1041
|
+
},
|
|
1042
|
+
};
|
|
1043
|
+
try {
|
|
1044
|
+
const result = await runStandardVerifyWorkflowCliToTerminalResult({
|
|
1045
|
+
shareReportOrigin: parsedBatch.shareReportOrigin,
|
|
1046
|
+
runVerify: () => verifyWorkflow({
|
|
1047
|
+
workflowId: parsedBatch.workflowId,
|
|
1048
|
+
eventsPath: parsedBatch.eventsPath,
|
|
1049
|
+
registryPath: parsedBatch.registryPath,
|
|
1050
|
+
database: parsedBatch.database,
|
|
1051
|
+
verificationPolicy: parsedBatch.verificationPolicy,
|
|
1052
|
+
...(suppressTruthToStderr ?
|
|
1053
|
+
{ truthReport: () => { } }
|
|
1054
|
+
: {
|
|
1055
|
+
truthReport: (report) => {
|
|
1056
|
+
process.stderr.write(`${report}\n`);
|
|
1057
|
+
process.stderr.write(formatDistributionFooter());
|
|
1058
|
+
},
|
|
1059
|
+
}),
|
|
1060
|
+
}),
|
|
1061
|
+
maybeWriteBundle: parsedBatch.writeRunBundleDir === undefined
|
|
1062
|
+
? undefined
|
|
1063
|
+
: (wfResult) => writeRunBundleCli(parsedBatch.writeRunBundleDir, readFileSync(path.resolve(parsedBatch.eventsPath)), wfResult, parsedBatch.signPrivateKeyPath),
|
|
1064
|
+
io: batchIo,
|
|
1065
|
+
});
|
|
1066
|
+
await postProductActivationEvent({
|
|
1067
|
+
phase: "verify_outcome",
|
|
1068
|
+
run_id: batchActivationRunId,
|
|
1069
|
+
issued_at: new Date().toISOString(),
|
|
1070
|
+
workload_class: batchWorkloadClass,
|
|
1071
|
+
subcommand: "batch_verify",
|
|
1072
|
+
build_profile: batchBuildProfile,
|
|
1073
|
+
terminal_status: result.status,
|
|
1074
|
+
});
|
|
1075
|
+
if (!parsedBatch.noTruthReport) {
|
|
1076
|
+
await maybeEmitOssClaimTicketUrlToStderr({
|
|
1077
|
+
run_id: batchActivationRunId,
|
|
1078
|
+
terminal_status: result.status,
|
|
1079
|
+
workload_class: batchWorkloadClass,
|
|
1080
|
+
subcommand: "batch_verify",
|
|
1081
|
+
build_profile: batchBuildProfile,
|
|
1082
|
+
});
|
|
1083
|
+
}
|
|
1084
|
+
await postVerifyOutcomeBeacon({
|
|
1085
|
+
runId: batchPreflight.runId,
|
|
1086
|
+
terminal_status: result.status,
|
|
1087
|
+
workload_class: batchWorkloadClass,
|
|
1088
|
+
subcommand: "batch_verify",
|
|
1089
|
+
});
|
|
1090
|
+
emitVerifyWorkflowCliJsonAndExitByStatus(result, batchIo);
|
|
1091
|
+
}
|
|
1092
|
+
catch (e) {
|
|
1093
|
+
if (e instanceof Error && e.message === CLI_EXITED_AFTER_ERROR)
|
|
1094
|
+
return;
|
|
1095
|
+
throw e;
|
|
1096
|
+
}
|
|
992
1097
|
}
|
|
993
1098
|
void main().catch((e) => {
|
|
994
1099
|
const msg = e instanceof Error ? e.message : String(e);
|