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.
Files changed (196) hide show
  1. package/README.md +41 -99
  2. package/dist/bootstrap/bootstrapReadmeTemplate.d.ts +3 -0
  3. package/dist/bootstrap/bootstrapReadmeTemplate.d.ts.map +1 -0
  4. package/dist/bootstrap/bootstrapReadmeTemplate.js +17 -0
  5. package/dist/bootstrap/bootstrapReadmeTemplate.js.map +1 -0
  6. package/dist/bootstrap/parseBootstrapPackInput.d.ts +16 -0
  7. package/dist/bootstrap/parseBootstrapPackInput.d.ts.map +1 -0
  8. package/dist/bootstrap/parseBootstrapPackInput.js +95 -0
  9. package/dist/bootstrap/parseBootstrapPackInput.js.map +1 -0
  10. package/dist/bootstrap/parseBootstrapPackInput.test.d.ts +2 -0
  11. package/dist/bootstrap/parseBootstrapPackInput.test.d.ts.map +1 -0
  12. package/dist/bootstrap/parseBootstrapPackInput.test.js +46 -0
  13. package/dist/bootstrap/parseBootstrapPackInput.test.js.map +1 -0
  14. package/dist/bootstrap/runBootstrapSubcommand.d.ts +9 -0
  15. package/dist/bootstrap/runBootstrapSubcommand.d.ts.map +1 -0
  16. package/dist/bootstrap/runBootstrapSubcommand.js +263 -0
  17. package/dist/bootstrap/runBootstrapSubcommand.js.map +1 -0
  18. package/dist/bootstrap/synthesizeQuickInputFromOpenAiV1.d.ts +6 -0
  19. package/dist/bootstrap/synthesizeQuickInputFromOpenAiV1.d.ts.map +1 -0
  20. package/dist/bootstrap/synthesizeQuickInputFromOpenAiV1.js +16 -0
  21. package/dist/bootstrap/synthesizeQuickInputFromOpenAiV1.js.map +1 -0
  22. package/dist/cli.js +139 -34
  23. package/dist/cli.js.map +1 -1
  24. package/dist/cliOperationalCodes.d.ts +7 -0
  25. package/dist/cliOperationalCodes.d.ts.map +1 -1
  26. package/dist/cliOperationalCodes.js +7 -0
  27. package/dist/cliOperationalCodes.js.map +1 -1
  28. package/dist/commercial/licensePreflight.d.ts +7 -2
  29. package/dist/commercial/licensePreflight.d.ts.map +1 -1
  30. package/dist/commercial/licensePreflight.js +6 -5
  31. package/dist/commercial/licensePreflight.js.map +1 -1
  32. package/dist/commercial/licensePreflight.test.js +70 -21
  33. package/dist/commercial/licensePreflight.test.js.map +1 -1
  34. package/dist/commercial/postVerifyOutcomeBeacon.d.ts +13 -0
  35. package/dist/commercial/postVerifyOutcomeBeacon.d.ts.map +1 -0
  36. package/dist/commercial/postVerifyOutcomeBeacon.js +33 -0
  37. package/dist/commercial/postVerifyOutcomeBeacon.js.map +1 -0
  38. package/dist/commercial/quickVerifyFunnelTerminalStatus.d.ts +5 -0
  39. package/dist/commercial/quickVerifyFunnelTerminalStatus.d.ts.map +1 -0
  40. package/dist/commercial/quickVerifyFunnelTerminalStatus.js +11 -0
  41. package/dist/commercial/quickVerifyFunnelTerminalStatus.js.map +1 -0
  42. package/dist/commercial/verifyWorkloadClassify.d.ts +17 -0
  43. package/dist/commercial/verifyWorkloadClassify.d.ts.map +1 -0
  44. package/dist/commercial/verifyWorkloadClassify.js +47 -0
  45. package/dist/commercial/verifyWorkloadClassify.js.map +1 -0
  46. package/dist/commercial/verifyWorkloadClassify.test.d.ts +2 -0
  47. package/dist/commercial/verifyWorkloadClassify.test.d.ts.map +1 -0
  48. package/dist/commercial/verifyWorkloadClassify.test.js +45 -0
  49. package/dist/commercial/verifyWorkloadClassify.test.js.map +1 -0
  50. package/dist/debugServer.d.ts +2 -0
  51. package/dist/debugServer.d.ts.map +1 -1
  52. package/dist/debugServer.js +13 -12
  53. package/dist/debugServer.js.map +1 -1
  54. package/dist/debugServer.test.js +31 -2
  55. package/dist/debugServer.test.js.map +1 -1
  56. package/dist/index.d.ts +1 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +1 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/loadEvents.d.ts +2 -0
  61. package/dist/loadEvents.d.ts.map +1 -1
  62. package/dist/loadEvents.js +11 -0
  63. package/dist/loadEvents.js.map +1 -1
  64. package/dist/operationalDisposition.d.ts +56 -0
  65. package/dist/operationalDisposition.d.ts.map +1 -1
  66. package/dist/operationalDisposition.js +56 -0
  67. package/dist/operationalDisposition.js.map +1 -1
  68. package/dist/publicDistribution.generated.d.ts +2 -0
  69. package/dist/publicDistribution.generated.d.ts.map +1 -1
  70. package/dist/publicDistribution.generated.js +2 -0
  71. package/dist/publicDistribution.generated.js.map +1 -1
  72. package/dist/quickVerify/buildQuickContractEventsNdjson.d.ts +6 -0
  73. package/dist/quickVerify/buildQuickContractEventsNdjson.d.ts.map +1 -1
  74. package/dist/quickVerify/buildQuickContractEventsNdjson.js +33 -14
  75. package/dist/quickVerify/buildQuickContractEventsNdjson.js.map +1 -1
  76. package/dist/quickVerify/buildSyntheticRowParams.d.ts +7 -0
  77. package/dist/quickVerify/buildSyntheticRowParams.d.ts.map +1 -0
  78. package/dist/quickVerify/buildSyntheticRowParams.js +13 -0
  79. package/dist/quickVerify/buildSyntheticRowParams.js.map +1 -0
  80. package/dist/quickVerify/buildSyntheticRowParams.test.d.ts +2 -0
  81. package/dist/quickVerify/buildSyntheticRowParams.test.d.ts.map +1 -0
  82. package/dist/quickVerify/buildSyntheticRowParams.test.js +19 -0
  83. package/dist/quickVerify/buildSyntheticRowParams.test.js.map +1 -0
  84. package/dist/quickVerify/exportTool.d.ts +12 -1
  85. package/dist/quickVerify/exportTool.d.ts.map +1 -1
  86. package/dist/quickVerify/exportTool.js +45 -0
  87. package/dist/quickVerify/exportTool.js.map +1 -1
  88. package/dist/quickVerify/flatKeyToJsonPointer.d.ts +16 -0
  89. package/dist/quickVerify/flatKeyToJsonPointer.d.ts.map +1 -0
  90. package/dist/quickVerify/flatKeyToJsonPointer.js +44 -0
  91. package/dist/quickVerify/flatKeyToJsonPointer.js.map +1 -0
  92. package/dist/quickVerify/flatKeyToJsonPointer.test.d.ts +2 -0
  93. package/dist/quickVerify/flatKeyToJsonPointer.test.d.ts.map +1 -0
  94. package/dist/quickVerify/flatKeyToJsonPointer.test.js +19 -0
  95. package/dist/quickVerify/flatKeyToJsonPointer.test.js.map +1 -0
  96. package/dist/quickVerify/formatQuickVerifyHumanReport.js +1 -1
  97. package/dist/quickVerify/formatQuickVerifyHumanReport.js.map +1 -1
  98. package/dist/quickVerify/formatQuickVerifyHumanReport.test.js +2 -2
  99. package/dist/quickVerify/formatQuickVerifyHumanReport.test.js.map +1 -1
  100. package/dist/quickVerify/ingest.d.ts +1 -0
  101. package/dist/quickVerify/ingest.d.ts.map +1 -1
  102. package/dist/quickVerify/ingest.js +44 -1
  103. package/dist/quickVerify/ingest.js.map +1 -1
  104. package/dist/quickVerify/planRowUnit.pointer-promotion.test.d.ts +2 -0
  105. package/dist/quickVerify/planRowUnit.pointer-promotion.test.d.ts.map +1 -0
  106. package/dist/quickVerify/planRowUnit.pointer-promotion.test.js +30 -0
  107. package/dist/quickVerify/planRowUnit.pointer-promotion.test.js.map +1 -0
  108. package/dist/quickVerify/quickParamPointerNegatives.test.d.ts +2 -0
  109. package/dist/quickVerify/quickParamPointerNegatives.test.d.ts.map +1 -0
  110. package/dist/quickVerify/quickParamPointerNegatives.test.js +25 -0
  111. package/dist/quickVerify/quickParamPointerNegatives.test.js.map +1 -0
  112. package/dist/quickVerify/quickParamPointerPromotionGoldens.test.d.ts +2 -0
  113. package/dist/quickVerify/quickParamPointerPromotionGoldens.test.d.ts.map +1 -0
  114. package/dist/quickVerify/quickParamPointerPromotionGoldens.test.js +34 -0
  115. package/dist/quickVerify/quickParamPointerPromotionGoldens.test.js.map +1 -0
  116. package/dist/quickVerify/quickParamPointerReplay.test.d.ts +2 -0
  117. package/dist/quickVerify/quickParamPointerReplay.test.d.ts.map +1 -0
  118. package/dist/quickVerify/quickParamPointerReplay.test.js +23 -0
  119. package/dist/quickVerify/quickParamPointerReplay.test.js.map +1 -0
  120. package/dist/quickVerify/quickVerifyProductTruth.d.ts +5 -1
  121. package/dist/quickVerify/quickVerifyProductTruth.d.ts.map +1 -1
  122. package/dist/quickVerify/quickVerifyProductTruth.js +6 -0
  123. package/dist/quickVerify/quickVerifyProductTruth.js.map +1 -1
  124. package/dist/quickVerify/quickVerifyScope.d.ts +2 -2
  125. package/dist/quickVerify/quickVerifyScope.d.ts.map +1 -1
  126. package/dist/quickVerify/quickVerifyScope.js +2 -2
  127. package/dist/quickVerify/quickVerifyScope.js.map +1 -1
  128. package/dist/quickVerify/rowUnit.d.ts +8 -0
  129. package/dist/quickVerify/rowUnit.d.ts.map +1 -1
  130. package/dist/quickVerify/rowUnit.js +17 -2
  131. package/dist/quickVerify/rowUnit.js.map +1 -1
  132. package/dist/quickVerify/runQuickVerify.d.ts.map +1 -1
  133. package/dist/quickVerify/runQuickVerify.js +102 -11
  134. package/dist/quickVerify/runQuickVerify.js.map +1 -1
  135. package/dist/quickVerify/tableScoring.d.ts.map +1 -1
  136. package/dist/quickVerify/tableScoring.js +6 -1
  137. package/dist/quickVerify/tableScoring.js.map +1 -1
  138. package/dist/quickVerify/verificationRequestFingerprint.d.ts +6 -0
  139. package/dist/quickVerify/verificationRequestFingerprint.d.ts.map +1 -0
  140. package/dist/quickVerify/verificationRequestFingerprint.js +23 -0
  141. package/dist/quickVerify/verificationRequestFingerprint.js.map +1 -0
  142. package/dist/quickVerify/verificationRequestFingerprint.test.d.ts +2 -0
  143. package/dist/quickVerify/verificationRequestFingerprint.test.d.ts.map +1 -0
  144. package/dist/quickVerify/verificationRequestFingerprint.test.js +26 -0
  145. package/dist/quickVerify/verificationRequestFingerprint.test.js.map +1 -0
  146. package/dist/schemaLoad.d.ts +1 -1
  147. package/dist/schemaLoad.d.ts.map +1 -1
  148. package/dist/schemaLoad.js +2 -0
  149. package/dist/schemaLoad.js.map +1 -1
  150. package/dist/standardVerifyWorkflowCli.d.ts +18 -0
  151. package/dist/standardVerifyWorkflowCli.d.ts.map +1 -1
  152. package/dist/standardVerifyWorkflowCli.js +45 -25
  153. package/dist/standardVerifyWorkflowCli.js.map +1 -1
  154. package/dist/telemetry/cliInstallId.d.ts +8 -0
  155. package/dist/telemetry/cliInstallId.d.ts.map +1 -0
  156. package/dist/telemetry/cliInstallId.js +72 -0
  157. package/dist/telemetry/cliInstallId.js.map +1 -0
  158. package/dist/telemetry/fetchWithTimeout.d.ts +6 -0
  159. package/dist/telemetry/fetchWithTimeout.d.ts.map +1 -0
  160. package/dist/telemetry/fetchWithTimeout.js +15 -0
  161. package/dist/telemetry/fetchWithTimeout.js.map +1 -0
  162. package/dist/telemetry/maybeEmitOssClaimTicketUrl.d.ts +8 -0
  163. package/dist/telemetry/maybeEmitOssClaimTicketUrl.d.ts.map +1 -0
  164. package/dist/telemetry/maybeEmitOssClaimTicketUrl.js +22 -0
  165. package/dist/telemetry/maybeEmitOssClaimTicketUrl.js.map +1 -0
  166. package/dist/telemetry/ossClaimOrigin.d.ts +6 -0
  167. package/dist/telemetry/ossClaimOrigin.d.ts.map +1 -0
  168. package/dist/telemetry/ossClaimOrigin.js +9 -0
  169. package/dist/telemetry/ossClaimOrigin.js.map +1 -0
  170. package/dist/telemetry/ossClaimOrigin.test.d.ts +2 -0
  171. package/dist/telemetry/ossClaimOrigin.test.d.ts.map +1 -0
  172. package/dist/telemetry/ossClaimOrigin.test.js +9 -0
  173. package/dist/telemetry/ossClaimOrigin.test.js.map +1 -0
  174. package/dist/telemetry/postOssClaimTicket.d.ts +14 -0
  175. package/dist/telemetry/postOssClaimTicket.d.ts.map +1 -0
  176. package/dist/telemetry/postOssClaimTicket.js +42 -0
  177. package/dist/telemetry/postOssClaimTicket.js.map +1 -0
  178. package/dist/telemetry/postProductActivationEvent.d.ts +25 -0
  179. package/dist/telemetry/postProductActivationEvent.d.ts.map +1 -0
  180. package/dist/telemetry/postProductActivationEvent.js +71 -0
  181. package/dist/telemetry/postProductActivationEvent.js.map +1 -0
  182. package/dist/telemetry/postProductActivationEvent.test.d.ts +2 -0
  183. package/dist/telemetry/postProductActivationEvent.test.d.ts.map +1 -0
  184. package/dist/telemetry/postProductActivationEvent.test.js +65 -0
  185. package/dist/telemetry/postProductActivationEvent.test.js.map +1 -0
  186. package/dist/telemetry/productActivationHeaders.d.ts +5 -0
  187. package/dist/telemetry/productActivationHeaders.d.ts.map +1 -0
  188. package/dist/telemetry/productActivationHeaders.js +5 -0
  189. package/dist/telemetry/productActivationHeaders.js.map +1 -0
  190. package/dist/telemetry/resolveTelemetrySource.d.ts +7 -0
  191. package/dist/telemetry/resolveTelemetrySource.d.ts.map +1 -0
  192. package/dist/telemetry/resolveTelemetrySource.js +10 -0
  193. package/dist/telemetry/resolveTelemetrySource.js.map +1 -0
  194. package/package.json +19 -9
  195. package/schemas/bootstrap-pack-input-v1.schema.json +61 -0
  196. 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":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EACL,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,wCAAwC,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,SAAS;IACT,OAAO;IACP,MAAM;IACN,gBAAgB;IAChB,QAAQ;IACR,IAAI;CACL,CAAC,CAAC;AAEH,SAAS,cAAc;IACrB,OAAO;;;;;;;;;;;;;;4CAcmC,CAAC;AAC7C,CAAC;AAED,SAAS,6BAA6B,CAAC,IAAc;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACnB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,QAAQ;YAAE,SAAS;QAC3C,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,eAAe,CAAC,qBAAqB,CAAC,eAAe,EAAE,wBAAwB,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,eAAe,CAAC,qBAAqB,CAAC,eAAe,EAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,gBAAgB,EAAE,CAAC;YAC/E,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,eAAe,CAAC,qBAAqB,CAAC,eAAe,EAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC;YAChG,CAAC;YACD,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;AACH,CAAC;AASD,MAAM,UAAU,qBAAqB,CAAC,IAAc;IAClD,6BAA6B,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACrD,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,eAAe,CAAC,qBAAqB,CAAC,eAAe,EAAE,2BAA2B,CAAC,CAAC;IAChG,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,eAAe,CACvB,qBAAqB,CAAC,eAAe,EACrC,gDAAgD,CACjD,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY,EAAE,OAAe;IAC3D,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,aAAa,CAAC,WAAmB;IACxC,IAAI,CAAC;QACH,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAc;IACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;YACjC,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,sBAAsB,CACpB,qBAAqB,CAAC,oBAAoB,EAC1C,yBAAyB,WAAW,EAAE,CACvC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,sBAAsB,CAAC,qBAAqB,CAAC,eAAe,EAAE,wBAAwB,GAAG,EAAE,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,SAAyD,CAAC;IAC9D,IAAI,CAAC;QACH,SAAS,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;YACjC,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;IAED,IAAI,CAAC;QACH,MAAM,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;YACjC,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,sBAAsB,CAAC,qBAAqB,CAAC,cAAc,EAAE,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAyB,MAAM,CAAC,WAAW;QACvD,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,CAAC,WAAW,EAAE;QAC5D,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,CAAC,EAAE,CAAC;IAE3D,MAAM,SAAS,GAAG,oCAAoC,CAAC,SAAS,CAAC,CAAC;IAElE,IAAI,MAA6E,CAAC;IAClF,IAAI,YAAoB,CAAC;IACzB,IAAI,eAA+F,CAAC;IACpG,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,+BAA+B,CAAC;YAChD,SAAS;YACT,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;YAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SAClF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACpB,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;QAChC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;IACxC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,aAAa,CAAC,WAAW,CAAC,CAAC;QAC3B,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;YACjC,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,sBAAsB,CAAC,qBAAqB,CAAC,cAAc,EAAE,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QAC9B,aAAa,CAAC,WAAW,CAAC,CAAC;QAC3B,sBAAsB,CACpB,qBAAqB,CAAC,wBAAwB,EAC9C,6BAA6B,MAAM,CAAC,OAAO,oBAAoB,CAChE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC3B,sBAAsB,CACpB,qBAAqB,CAAC,6BAA6B,EACnD,kEAAkE,CACnE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IAEjE,IAAI,CAAC;QACH,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC7C,mBAAmB,CACjB,UAAU,EACV,8BAA8B,CAAC;YAC7B,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,OAAO,EAAE,eAAe;SACzB,CAAC,CACH,CAAC;QACF,mBAAmB,CAAC,eAAe,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrE,mBAAmB,CAAC,UAAU,EAAE,4BAA4B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,aAAa,CAAC,WAAW,CAAC,CAAC;QAC3B,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,sBAAsB,CAAC,qBAAqB,CAAC,cAAc,EAAE,wBAAwB,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,MAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,cAAc,CAAC;YAC5B,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,UAAU;YACV,YAAY,EAAE,SAAS;YACvB,QAAQ;YACR,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;gBACjB,aAAa,GAAG,CAAC,CAAC;YACpB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,aAAa,CAAC,WAAW,CAAC,CAAC;QAC3B,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;YACjC,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,sBAAsB,CAAC,qBAAqB,CAAC,cAAc,EAAE,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,cAAc,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IAC9D,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,aAAa,CAAC,WAAW,CAAC,CAAC;QAC3B,sBAAsB,CACpB,qBAAqB,CAAC,8BAA8B,EACpD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,IAAI,EAAE,CAAC,CAC5C,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG;YACf,aAAa,EAAE,CAAC;YAChB,IAAI,EAAE,+BAA+B;YACrC,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,MAAM,EAAE,WAAW;YACnB,YAAY,EAAE,MAAM;YACpB,YAAY,EAAE,UAAU;YACxB,iBAAiB,EAAE,eAAe,CAAC,MAAM;SAC1C,CAAC;QACF,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,aAAa,CAAC,WAAW,CAAC,CAAC;YAC3B,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,sBAAsB,CAAC,qBAAqB,CAAC,cAAc,EAAE,wBAAwB,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;YACzG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,aAAa,IAAI,CAAC,CAAC;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,CAAC,IAAY,EAAQ,EAAE;QAC7C,aAAa,CAAC,WAAW,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC;IACF,wCAAwC,CAAC,MAAM,EAAE;QAC/C,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,IAAI,EAAE,eAAe;KACtB,CAAC,CAAC;AACL,CAAC"}
@@ -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 { runStandardVerifyWorkflowCliFlow } from "./standardVerifyWorkflowCli.js";
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
- await runStandardVerifyWorkflowCliFlow({
961
- shareReportOrigin: parsedBatch.shareReportOrigin,
962
- runVerify: () => verifyWorkflow({
963
- workflowId: parsedBatch.workflowId,
964
- eventsPath: parsedBatch.eventsPath,
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);