agentskeptic 0.1.9 → 0.2.1
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 +67 -0
- package/dist/agentRunBundle.js +1 -2
- package/dist/agentRunBundle.js.map +1 -1
- package/dist/agentRunRecord.d.ts +5 -0
- package/dist/agentRunRecord.d.ts.map +1 -1
- package/dist/agentRunRecord.js +5 -0
- package/dist/agentRunRecord.js.map +1 -1
- package/dist/bootstrap/bootstrapCliArgs.d.ts +8 -0
- package/dist/bootstrap/bootstrapCliArgs.d.ts.map +1 -0
- package/dist/bootstrap/bootstrapCliArgs.js +47 -0
- package/dist/bootstrap/bootstrapCliArgs.js.map +1 -0
- package/dist/bootstrap/executeBootstrapPack.d.ts +32 -0
- package/dist/bootstrap/executeBootstrapPack.d.ts.map +1 -0
- package/dist/bootstrap/executeBootstrapPack.js +208 -0
- package/dist/bootstrap/executeBootstrapPack.js.map +1 -0
- package/dist/bootstrap/runBootstrapSubcommand.d.ts +3 -7
- package/dist/bootstrap/runBootstrapSubcommand.d.ts.map +1 -1
- package/dist/bootstrap/runBootstrapSubcommand.js +22 -202
- package/dist/bootstrap/runBootstrapSubcommand.js.map +1 -1
- package/dist/cli/lockOrchestration.d.ts.map +1 -1
- package/dist/cli/lockOrchestration.js +36 -0
- package/dist/cli/lockOrchestration.js.map +1 -1
- package/dist/cli/runFunnelAnonSet.d.ts +18 -0
- package/dist/cli/runFunnelAnonSet.d.ts.map +1 -0
- package/dist/cli/runFunnelAnonSet.js +113 -0
- package/dist/cli/runFunnelAnonSet.js.map +1 -0
- package/dist/cli.js +55 -111
- package/dist/cli.js.map +1 -1
- package/dist/cliOperationalCodes.d.ts +1 -0
- package/dist/cliOperationalCodes.d.ts.map +1 -1
- package/dist/cliOperationalCodes.js +1 -0
- package/dist/cliOperationalCodes.js.map +1 -1
- package/dist/commercial/postVerifyOutcomeBeacon.d.ts +1 -1
- package/dist/commercial/postVerifyOutcomeBeacon.d.ts.map +1 -1
- package/dist/crossing/crossingDecisionReadyFooter.d.ts +3 -0
- package/dist/crossing/crossingDecisionReadyFooter.d.ts.map +1 -0
- package/dist/crossing/crossingDecisionReadyFooter.js +3 -0
- package/dist/crossing/crossingDecisionReadyFooter.js.map +1 -0
- package/dist/crossing/runCrossingSubcommand.d.ts +2 -0
- package/dist/crossing/runCrossingSubcommand.d.ts.map +1 -0
- package/dist/crossing/runCrossingSubcommand.js +177 -0
- package/dist/crossing/runCrossingSubcommand.js.map +1 -0
- package/dist/debugCorpus.d.ts +2 -5
- package/dist/debugCorpus.d.ts.map +1 -1
- package/dist/debugCorpus.js +2 -5
- package/dist/debugCorpus.js.map +1 -1
- package/dist/funnel/workflowLineageClassify.d.ts +18 -0
- package/dist/funnel/workflowLineageClassify.d.ts.map +1 -0
- package/dist/funnel/workflowLineageClassify.js +29 -0
- package/dist/funnel/workflowLineageClassify.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/operationalDisposition.d.ts +8 -0
- package/dist/operationalDisposition.d.ts.map +1 -1
- package/dist/operationalDisposition.js +8 -0
- package/dist/operationalDisposition.js.map +1 -1
- package/dist/publicDistribution.generated.d.ts +1 -1
- package/dist/publicDistribution.generated.d.ts.map +1 -1
- package/dist/publicDistribution.generated.js +2 -1
- package/dist/publicDistribution.generated.js.map +1 -1
- package/dist/telemetry/cliInstallId.d.ts +12 -0
- package/dist/telemetry/cliInstallId.d.ts.map +1 -1
- package/dist/telemetry/cliInstallId.js +46 -8
- package/dist/telemetry/cliInstallId.js.map +1 -1
- package/dist/telemetry/maybeEmitOssClaimTicketUrl.d.ts +1 -1
- package/dist/telemetry/maybeEmitOssClaimTicketUrl.d.ts.map +1 -1
- package/dist/telemetry/maybeEmitOssClaimTicketUrl.js +24 -6
- package/dist/telemetry/maybeEmitOssClaimTicketUrl.js.map +1 -1
- package/dist/telemetry/openHandoffUrlInOsBrowser.d.ts +9 -0
- package/dist/telemetry/openHandoffUrlInOsBrowser.d.ts.map +1 -0
- package/dist/telemetry/openHandoffUrlInOsBrowser.js +24 -0
- package/dist/telemetry/openHandoffUrlInOsBrowser.js.map +1 -0
- package/dist/telemetry/postOssClaimContinuation.d.ts +5 -0
- package/dist/telemetry/postOssClaimContinuation.d.ts.map +1 -0
- package/dist/telemetry/postOssClaimContinuation.js +30 -0
- package/dist/telemetry/postOssClaimContinuation.js.map +1 -0
- package/dist/telemetry/postOssClaimTicket.d.ts +13 -3
- package/dist/telemetry/postOssClaimTicket.d.ts.map +1 -1
- package/dist/telemetry/postOssClaimTicket.js +36 -7
- package/dist/telemetry/postOssClaimTicket.js.map +1 -1
- package/dist/telemetry/postProductActivationEvent.d.ts +5 -2
- package/dist/telemetry/postProductActivationEvent.d.ts.map +1 -1
- package/dist/telemetry/postProductActivationEvent.js +9 -4
- package/dist/telemetry/postProductActivationEvent.js.map +1 -1
- package/dist/telemetry/postProductActivationEvent.test.js +7 -1
- package/dist/telemetry/postProductActivationEvent.test.js.map +1 -1
- package/dist/verify/batchVerifyTelemetrySubcommand.d.ts +8 -0
- package/dist/verify/batchVerifyTelemetrySubcommand.d.ts.map +1 -0
- package/dist/verify/batchVerifyTelemetrySubcommand.js +141 -0
- package/dist/verify/batchVerifyTelemetrySubcommand.js.map +1 -0
- package/dist/verifyAgentskeptic.d.ts +15 -0
- package/dist/verifyAgentskeptic.d.ts.map +1 -0
- package/dist/verifyAgentskeptic.js +39 -0
- package/dist/verifyAgentskeptic.js.map +1 -0
- package/dist/verifyAgentskeptic.test.d.ts +2 -0
- package/dist/verifyAgentskeptic.test.d.ts.map +1 -0
- package/dist/verifyAgentskeptic.test.js +88 -0
- package/dist/verifyAgentskeptic.test.js.map +1 -0
- package/dist/verifyRunBundleSignature.d.ts.map +1 -1
- package/dist/verifyRunBundleSignature.js +1 -2
- package/dist/verifyRunBundleSignature.js.map +1 -1
- package/package.json +11 -8
- package/scripts/discovery-payload.lib.cjs +27 -1
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { parseBatchVerifyCliArgs } from "../cliArgv.js";
|
|
5
|
+
import { cliErrorEnvelope, formatOperationalMessage, } from "../failureCatalog.js";
|
|
6
|
+
import { verifyWorkflow } from "../pipeline.js";
|
|
7
|
+
import { TruthLayerError } from "../truthLayerError.js";
|
|
8
|
+
import { writeRunBundleCli } from "../writeRunBundleCli.js";
|
|
9
|
+
import { runLicensePreflightIfNeeded } from "../commercial/licensePreflight.js";
|
|
10
|
+
import { postVerifyOutcomeBeacon } from "../commercial/postVerifyOutcomeBeacon.js";
|
|
11
|
+
import { classifyBatchVerifyWorkload } from "../commercial/verifyWorkloadClassify.js";
|
|
12
|
+
import { LICENSE_PREFLIGHT_ENABLED } from "../generated/commercialBuildFlags.js";
|
|
13
|
+
import { formatDistributionFooter } from "../distributionFooter.js";
|
|
14
|
+
import { maybeEmitOssClaimTicketUrlToStderr } from "../telemetry/maybeEmitOssClaimTicketUrl.js";
|
|
15
|
+
import { classifyWorkflowLineage } from "../funnel/workflowLineageClassify.js";
|
|
16
|
+
import { postProductActivationEvent } from "../telemetry/postProductActivationEvent.js";
|
|
17
|
+
import { CLI_EXITED_AFTER_ERROR, emitVerifyWorkflowCliJsonAndExitByStatus, runStandardVerifyWorkflowCliToTerminalResult, } from "../standardVerifyWorkflowCli.js";
|
|
18
|
+
function writeCliError(code, message) {
|
|
19
|
+
console.error(cliErrorEnvelope(code, formatOperationalMessage(message)));
|
|
20
|
+
}
|
|
21
|
+
export async function runBatchVerifyWithTelemetrySubcommand(batchArgs, opts) {
|
|
22
|
+
let parsedBatch;
|
|
23
|
+
try {
|
|
24
|
+
parsedBatch = parseBatchVerifyCliArgs(batchArgs);
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
if (e instanceof TruthLayerError) {
|
|
28
|
+
writeCliError(e.code, e.message);
|
|
29
|
+
process.exit(3);
|
|
30
|
+
}
|
|
31
|
+
throw e;
|
|
32
|
+
}
|
|
33
|
+
const batchActivationRunId = process.env.AGENTSKEPTIC_RUN_ID?.trim() ||
|
|
34
|
+
process.env.WORKFLOW_VERIFIER_RUN_ID?.trim() ||
|
|
35
|
+
randomUUID();
|
|
36
|
+
let batchPreflight;
|
|
37
|
+
try {
|
|
38
|
+
batchPreflight = await runLicensePreflightIfNeeded("verify", { runId: batchActivationRunId });
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
if (e instanceof TruthLayerError) {
|
|
42
|
+
writeCliError(e.code, e.message);
|
|
43
|
+
process.exit(3);
|
|
44
|
+
}
|
|
45
|
+
throw e;
|
|
46
|
+
}
|
|
47
|
+
const suppressTruthToStderr = parsedBatch.noTruthReport || parsedBatch.shareReportOrigin !== undefined;
|
|
48
|
+
const batchBuildProfile = LICENSE_PREFLIGHT_ENABLED ? "commercial" : "oss";
|
|
49
|
+
const batchWorkloadClass = classifyBatchVerifyWorkload({
|
|
50
|
+
eventsPath: parsedBatch.eventsPath,
|
|
51
|
+
registryPath: parsedBatch.registryPath,
|
|
52
|
+
database: parsedBatch.database,
|
|
53
|
+
});
|
|
54
|
+
if (opts.rejectBundled && batchWorkloadClass === "bundled_examples") {
|
|
55
|
+
process.stderr.write("INTEGRATOR_OWNED_GATE: integrator-owned contract verify rejects workload_class=bundled_examples (shipped example paths).\n" +
|
|
56
|
+
"bundled_examples: use standard batch verify for demos, or pass integrator-owned --events, --registry, and --db paths. See docs/first-run-integration.md.\n");
|
|
57
|
+
process.exit(2);
|
|
58
|
+
}
|
|
59
|
+
const batchLineage = classifyWorkflowLineage({
|
|
60
|
+
subcommand: opts.telemetrySubcommand,
|
|
61
|
+
workloadClass: batchWorkloadClass,
|
|
62
|
+
workflowId: parsedBatch.workflowId,
|
|
63
|
+
});
|
|
64
|
+
await postProductActivationEvent({
|
|
65
|
+
phase: "verify_started",
|
|
66
|
+
run_id: batchActivationRunId,
|
|
67
|
+
issued_at: new Date().toISOString(),
|
|
68
|
+
workload_class: batchWorkloadClass,
|
|
69
|
+
workflow_lineage: batchLineage,
|
|
70
|
+
subcommand: opts.telemetrySubcommand,
|
|
71
|
+
build_profile: batchBuildProfile,
|
|
72
|
+
});
|
|
73
|
+
const batchIo = {
|
|
74
|
+
consoleLog: (line) => {
|
|
75
|
+
console.log(line);
|
|
76
|
+
},
|
|
77
|
+
stderrLine: (line) => {
|
|
78
|
+
console.error(line);
|
|
79
|
+
},
|
|
80
|
+
exit: (code) => {
|
|
81
|
+
process.exit(code);
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
try {
|
|
85
|
+
const result = await runStandardVerifyWorkflowCliToTerminalResult({
|
|
86
|
+
shareReportOrigin: parsedBatch.shareReportOrigin,
|
|
87
|
+
runVerify: () => verifyWorkflow({
|
|
88
|
+
workflowId: parsedBatch.workflowId,
|
|
89
|
+
eventsPath: parsedBatch.eventsPath,
|
|
90
|
+
registryPath: parsedBatch.registryPath,
|
|
91
|
+
database: parsedBatch.database,
|
|
92
|
+
verificationPolicy: parsedBatch.verificationPolicy,
|
|
93
|
+
...(suppressTruthToStderr ?
|
|
94
|
+
{ truthReport: () => { } }
|
|
95
|
+
: {
|
|
96
|
+
truthReport: (report) => {
|
|
97
|
+
process.stderr.write(`${report}\n`);
|
|
98
|
+
process.stderr.write(formatDistributionFooter());
|
|
99
|
+
},
|
|
100
|
+
}),
|
|
101
|
+
}),
|
|
102
|
+
maybeWriteBundle: parsedBatch.writeRunBundleDir === undefined
|
|
103
|
+
? undefined
|
|
104
|
+
: (wfResult) => writeRunBundleCli(parsedBatch.writeRunBundleDir, readFileSync(path.resolve(parsedBatch.eventsPath)), wfResult, parsedBatch.signPrivateKeyPath),
|
|
105
|
+
io: batchIo,
|
|
106
|
+
});
|
|
107
|
+
await postProductActivationEvent({
|
|
108
|
+
phase: "verify_outcome",
|
|
109
|
+
run_id: batchActivationRunId,
|
|
110
|
+
issued_at: new Date().toISOString(),
|
|
111
|
+
workload_class: batchWorkloadClass,
|
|
112
|
+
workflow_lineage: batchLineage,
|
|
113
|
+
subcommand: opts.telemetrySubcommand,
|
|
114
|
+
build_profile: batchBuildProfile,
|
|
115
|
+
terminal_status: result.status,
|
|
116
|
+
});
|
|
117
|
+
if (!parsedBatch.noTruthReport) {
|
|
118
|
+
await maybeEmitOssClaimTicketUrlToStderr({
|
|
119
|
+
run_id: batchActivationRunId,
|
|
120
|
+
terminal_status: result.status,
|
|
121
|
+
workload_class: batchWorkloadClass,
|
|
122
|
+
subcommand: opts.telemetrySubcommand,
|
|
123
|
+
build_profile: batchBuildProfile,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
await postVerifyOutcomeBeacon({
|
|
127
|
+
runId: batchPreflight.runId,
|
|
128
|
+
terminal_status: result.status,
|
|
129
|
+
workload_class: batchWorkloadClass,
|
|
130
|
+
subcommand: opts.telemetrySubcommand,
|
|
131
|
+
});
|
|
132
|
+
opts.stderrAppendBeforeStdout?.(result);
|
|
133
|
+
emitVerifyWorkflowCliJsonAndExitByStatus(result, batchIo);
|
|
134
|
+
}
|
|
135
|
+
catch (e) {
|
|
136
|
+
if (e instanceof Error && e.message === CLI_EXITED_AFTER_ERROR)
|
|
137
|
+
return;
|
|
138
|
+
throw e;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=batchVerifyTelemetrySubcommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batchVerifyTelemetrySubcommand.js","sourceRoot":"","sources":["../../src/verify/batchVerifyTelemetrySubcommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { WorkflowResult } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default adoption path: reads `agentskeptic/events.ndjson` and `agentskeptic/tools.json`
|
|
4
|
+
* under `projectRoot`, verifies `workflowId` against `databaseUrl` (SQLite path or postgres URL).
|
|
5
|
+
* For arbitrary paths use `verifyWorkflow` instead.
|
|
6
|
+
*/
|
|
7
|
+
export declare function verifyAgentskeptic(options: {
|
|
8
|
+
workflowId: string;
|
|
9
|
+
databaseUrl: string;
|
|
10
|
+
projectRoot?: string;
|
|
11
|
+
}): Promise<{
|
|
12
|
+
ok: boolean;
|
|
13
|
+
result: WorkflowResult;
|
|
14
|
+
}>;
|
|
15
|
+
//# sourceMappingURL=verifyAgentskeptic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifyAgentskeptic.d.ts","sourceRoot":"","sources":["../src/verifyAgentskeptic.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAajD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAAC,CA0BnD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { verifyWorkflow } from "./pipeline.js";
|
|
4
|
+
import { TruthLayerError } from "./truthLayerError.js";
|
|
5
|
+
const POSTGRES_URL_RE = /^postgres(ql)?:\/\//i;
|
|
6
|
+
const PROJECT_LAYOUT_MISSING = "PROJECT_VERIFICATION_LAYOUT_MISSING";
|
|
7
|
+
function verificationDatabaseFromUrl(databaseUrl, projectRoot) {
|
|
8
|
+
if (POSTGRES_URL_RE.test(databaseUrl)) {
|
|
9
|
+
return { kind: "postgres", connectionString: databaseUrl };
|
|
10
|
+
}
|
|
11
|
+
return { kind: "sqlite", path: path.resolve(projectRoot, databaseUrl) };
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Default adoption path: reads `agentskeptic/events.ndjson` and `agentskeptic/tools.json`
|
|
15
|
+
* under `projectRoot`, verifies `workflowId` against `databaseUrl` (SQLite path or postgres URL).
|
|
16
|
+
* For arbitrary paths use `verifyWorkflow` instead.
|
|
17
|
+
*/
|
|
18
|
+
export async function verifyAgentskeptic(options) {
|
|
19
|
+
const projectRoot = options.projectRoot ?? process.cwd();
|
|
20
|
+
const resolvedRoot = path.resolve(projectRoot);
|
|
21
|
+
const agentskepticDir = path.join(resolvedRoot, "agentskeptic");
|
|
22
|
+
const eventsPath = path.join(agentskepticDir, "events.ndjson");
|
|
23
|
+
const registryPath = path.join(agentskepticDir, "tools.json");
|
|
24
|
+
if (!existsSync(eventsPath) || !existsSync(registryPath)) {
|
|
25
|
+
throw new TruthLayerError(PROJECT_LAYOUT_MISSING, `${eventsPath}, ${registryPath}`);
|
|
26
|
+
}
|
|
27
|
+
const database = verificationDatabaseFromUrl(options.databaseUrl, resolvedRoot);
|
|
28
|
+
const result = await verifyWorkflow({
|
|
29
|
+
workflowId: options.workflowId,
|
|
30
|
+
eventsPath,
|
|
31
|
+
registryPath,
|
|
32
|
+
database,
|
|
33
|
+
logStep: () => { },
|
|
34
|
+
truthReport: () => { },
|
|
35
|
+
});
|
|
36
|
+
const ok = result.status === "complete";
|
|
37
|
+
return { ok, result };
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=verifyAgentskeptic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifyAgentskeptic.js","sourceRoot":"","sources":["../src/verifyAgentskeptic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAE/C,MAAM,sBAAsB,GAAG,qCAA8C,CAAC;AAE9E,SAAS,2BAA2B,CAAC,WAAmB,EAAE,WAAmB;IAC3E,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAIxC;IACC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAE9D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,eAAe,CACvB,sBAAsB,EACtB,GAAG,UAAU,KAAK,YAAY,EAAE,CACjC,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,2BAA2B,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,UAAU;QACV,YAAY;QACZ,QAAQ;QACR,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;QACjB,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;KACtB,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC;IACxC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifyAgentskeptic.test.d.ts","sourceRoot":"","sources":["../src/verifyAgentskeptic.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { mkdirSync, mkdtempSync, copyFileSync, readFileSync, rmSync, unlinkSync } from "node:fs";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import path, { dirname, join } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { DatabaseSync } from "node:sqlite";
|
|
6
|
+
import { describe, expect, it } from "vitest";
|
|
7
|
+
import { TruthLayerError } from "./truthLayerError.js";
|
|
8
|
+
import { verifyAgentskeptic } from "./verifyAgentskeptic.js";
|
|
9
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const repoRoot = join(__dirname, "..");
|
|
11
|
+
function seedTempProject() {
|
|
12
|
+
const dir = mkdtempSync(join(tmpdir(), "as-verify-facade-"));
|
|
13
|
+
const agentskepticDir = join(dir, "agentskeptic");
|
|
14
|
+
mkdirSync(agentskepticDir, { recursive: true });
|
|
15
|
+
copyFileSync(join(repoRoot, "examples", "events.ndjson"), join(agentskepticDir, "events.ndjson"));
|
|
16
|
+
copyFileSync(join(repoRoot, "examples", "tools.json"), join(agentskepticDir, "tools.json"));
|
|
17
|
+
const dbPath = join(dir, "demo.db");
|
|
18
|
+
const seed = readFileSync(join(repoRoot, "examples", "seed.sql"), "utf8");
|
|
19
|
+
const db = new DatabaseSync(dbPath);
|
|
20
|
+
db.exec(seed);
|
|
21
|
+
db.close();
|
|
22
|
+
return dir;
|
|
23
|
+
}
|
|
24
|
+
describe("verifyAgentskeptic", () => {
|
|
25
|
+
it("wf_complete: ok true and status complete", async () => {
|
|
26
|
+
const projectRoot = seedTempProject();
|
|
27
|
+
try {
|
|
28
|
+
const dbPath = join(projectRoot, "demo.db");
|
|
29
|
+
const { ok, result } = await verifyAgentskeptic({
|
|
30
|
+
workflowId: "wf_complete",
|
|
31
|
+
databaseUrl: dbPath,
|
|
32
|
+
projectRoot,
|
|
33
|
+
});
|
|
34
|
+
expect(result.status).toBe("complete");
|
|
35
|
+
expect(ok).toBe(true);
|
|
36
|
+
expect(ok === (result.status === "complete")).toBe(true);
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
rmSync(projectRoot, { recursive: true, force: true });
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
it("wf_missing: ok false and status inconsistent", async () => {
|
|
43
|
+
const projectRoot = seedTempProject();
|
|
44
|
+
try {
|
|
45
|
+
const dbPath = join(projectRoot, "demo.db");
|
|
46
|
+
const { ok, result } = await verifyAgentskeptic({
|
|
47
|
+
workflowId: "wf_missing",
|
|
48
|
+
databaseUrl: dbPath,
|
|
49
|
+
projectRoot,
|
|
50
|
+
});
|
|
51
|
+
expect(result.status).toBe("inconsistent");
|
|
52
|
+
expect(ok).toBe(false);
|
|
53
|
+
expect(ok === (result.status === "complete")).toBe(true);
|
|
54
|
+
expect(result.steps[0]?.status).toBe("missing");
|
|
55
|
+
expect(result.steps[0]?.reasons[0]?.code).toBe("ROW_ABSENT");
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
rmSync(projectRoot, { recursive: true, force: true });
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
it("throws when agentskeptic/tools.json is missing", async () => {
|
|
62
|
+
const projectRoot = seedTempProject();
|
|
63
|
+
try {
|
|
64
|
+
unlinkSync(join(projectRoot, "agentskeptic", "tools.json"));
|
|
65
|
+
await expect(verifyAgentskeptic({
|
|
66
|
+
workflowId: "wf_complete",
|
|
67
|
+
databaseUrl: join(projectRoot, "demo.db"),
|
|
68
|
+
projectRoot,
|
|
69
|
+
})).rejects.toThrow(TruthLayerError);
|
|
70
|
+
try {
|
|
71
|
+
await verifyAgentskeptic({
|
|
72
|
+
workflowId: "wf_complete",
|
|
73
|
+
databaseUrl: join(projectRoot, "demo.db"),
|
|
74
|
+
projectRoot,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
expect(e).toBeInstanceOf(TruthLayerError);
|
|
79
|
+
const msg = String(e.message);
|
|
80
|
+
expect(msg).toContain(path.normalize(join(projectRoot, "agentskeptic", "tools.json")));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
rmSync(projectRoot, { recursive: true, force: true });
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=verifyAgentskeptic.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifyAgentskeptic.test.js","sourceRoot":"","sources":["../src/verifyAgentskeptic.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyRunBundleSignature.d.ts","sourceRoot":"","sources":["../src/verifyRunBundleSignature.ts"],"names":[],"mappings":"AAGA,OAAO,EAUL,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"verifyRunBundleSignature.d.ts","sourceRoot":"","sources":["../src/verifyRunBundleSignature.ts"],"names":[],"mappings":"AAGA,OAAO,EAUL,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAC;AAYnC,MAAM,MAAM,wBAAwB,GAChC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAS9D;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,uBAAuB,EAAE,MAAM,GAC9B,wBAAwB,CAgJ1B"}
|
|
@@ -2,9 +2,8 @@ import { createPublicKey, verify } from "node:crypto";
|
|
|
2
2
|
import { existsSync, readFileSync } from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { BUNDLE_SIGNATURE_ARTIFACT_INTEGRITY, BUNDLE_SIGNATURE_CRYPTO_INVALID, BUNDLE_SIGNATURE_MANIFEST_INVALID, BUNDLE_SIGNATURE_MANIFEST_UNSUPPORTED_VERSION, BUNDLE_SIGNATURE_MISSING_ARTIFACT, BUNDLE_SIGNATURE_PUBLIC_KEY_MISMATCH, BUNDLE_SIGNATURE_SIDECAR_INVALID, BUNDLE_SIGNATURE_SIGNED_HASH_MISMATCH, BUNDLE_SIGNATURE_UNSIGNED_MANIFEST, } from "./bundleSignatureCodes.js";
|
|
5
|
-
import { sha256Hex } from "./agentRunRecord.js";
|
|
5
|
+
import { sha256Hex, AGENT_RUN_FILENAME, EVENTS_FILENAME, WORKFLOW_RESULT_FILENAME, WORKFLOW_RESULT_SIG_FILENAME, } from "./agentRunRecord.js";
|
|
6
6
|
import { loadSchemaValidator } from "./schemaLoad.js";
|
|
7
|
-
import { AGENT_RUN_FILENAME, EVENTS_FILENAME, WORKFLOW_RESULT_FILENAME, WORKFLOW_RESULT_SIG_FILENAME, } from "./debugCorpus.js";
|
|
8
7
|
import { normalizeSpkiPemForSidecar } from "./workflowResultSignature.js";
|
|
9
8
|
const validateV2 = loadSchemaValidator("agent-run-record-v2");
|
|
10
9
|
const validateSidecar = loadSchemaValidator("workflow-result-signature");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyRunBundleSignature.js","sourceRoot":"","sources":["../src/verifyRunBundleSignature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,mCAAmC,EACnC,+BAA+B,EAC/B,iCAAiC,EACjC,6CAA6C,EAC7C,iCAAiC,EACjC,oCAAoC,EACpC,gCAAgC,EAChC,qCAAqC,EACrC,kCAAkC,GAEnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,
|
|
1
|
+
{"version":3,"file":"verifyRunBundleSignature.js","sourceRoot":"","sources":["../src/verifyRunBundleSignature.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentskeptic",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Traces say success while rows are missing or wrong. AgentSkeptic runs read-only SQL at verification time on Postgres or SQLite—ground truth from structured tool activity, not trace color alone.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
|
+
"x-agentskeptic-decision-ready-contract": "1",
|
|
7
8
|
"workspaces": [
|
|
8
9
|
"website"
|
|
9
10
|
],
|
|
@@ -24,13 +25,14 @@
|
|
|
24
25
|
"start": "npm run build && node scripts/demo.mjs",
|
|
25
26
|
"dev": "npm run dev -w agentskeptic-web",
|
|
26
27
|
"test:vitest": "vitest run",
|
|
27
|
-
"
|
|
28
|
+
"verify:decision-readiness": "npm run test:vitest -w agentskeptic-web -- __tests__/githubHeadingSlug.contract.test.ts __tests__/integrateActivationNorthStar.contract.test.ts __tests__/integrate-page-completion-semantics.contract.test.tsx __tests__/growth-metrics-ssot.contract.test.ts __tests__/repo-reference-integrity.growth-observability.test.ts",
|
|
29
|
+
"test:node:sqlite": "node scripts/assert-dependency-security-pins.mjs && node --test --test-force-exit test/reconciler.sqlite.test.mjs test/pipeline.sqlite.test.mjs test/withWorkflowVerification.test.mjs test/workflowTruthReport.test.mjs test/cli.test.mjs test/post-product-activation-install-id.test.mjs test/workflow-lineage-classify.test.mjs test/resolve-telemetry-source.test.mjs test/github-workflows-agentskeptic-telemetry-env.test.mjs test/maybe-emit-oss-claim-telemetry-off.test.mjs test/first-run-verify-output.integration.test.mjs test/stable-failure-consistency.test.mjs test/workflow-result-consumer-contract.test.mjs test/workflow-result-stdout-version.test.mjs test/docs-relational-ssot.test.mjs test/tools-registry-relational-surface.test.mjs test/docs-contract.test.mjs test/docs-commercial-enforce-gate-normative.test.mjs test/docs-remediation-doctrine.test.mjs test/bundle-signature-fixture.test.mjs test/bundle-signature-codes-doc.test.mjs test/bundle-signature-cli-write.test.mjs test/quick-verify.sqlite.test.mjs test/bootstrap-pack.test.mjs test/crossing-cli.test.mjs test/quickVerifyPostbuildGate.test.mjs test/npm-scripts-contract.test.mjs test/langgraph-reference-emitter-before-cli-spawn.test.mjs test/removed-script-names-ban.test.mjs test/docs-workflow-result-normative-prose.test.mjs test/enforce-oss-forbidden.test.mjs test/oss-output-lock-batch.test.mjs test/lock-success-monetized-footer.integration.test.mjs test/docs-enforce-stream-contract.test.mjs test/docs-quick-enforce-link.test.mjs test/commercial-pricing-policy-parity.test.mjs test/discovery-payload.test.mjs test/redaction-rules.test.mjs test/indexable-guide-paths-fs.contract.test.mjs test/npm-pack-discovery-scripts.test.mjs test/registry-metadata-parity.test.mjs test/docs-related-exists-export-ssot-negative.mjs test/quick-param-pointer.gates.test.mjs test/dependency-security-pins.schema.contract.test.mjs test/drizzle-identifier-safety.contract.test.mjs test/assert-destructive-postgres-urls.test.mjs test/readme-wedge-inevitability.test.mjs test/adoption-complete-surface-parity.test.mjs test/adoption-epistemics-contract.test.mjs test/integrate-spine-contract.test.mjs test/integrate-spine-ssot-fixtures.test.mjs test/integrate-route-copy-absence.test.mjs test/adoption-validation-registry.test.mjs test/decision-ready-surfaces-manifest.test.mjs test/oss-legacy-handoff-ban.test.mjs test/sync-adoption-canonical-to-llms.test.mjs test/verify-agentskeptic-consumer.e2e.test.mjs",
|
|
28
30
|
"test:postgres": "node scripts/pg-ci-init.mjs && node --test --test-force-exit test/postgres-session-readonly.test.mjs test/postgres-privilege.test.mjs test/pipeline.postgres.test.mjs test/ci-workflow-truth-postgres-contract.test.mjs test/quick-verify.postgres.test.mjs",
|
|
29
31
|
"test:workflow-truth-contract": "node --test --test-force-exit test/ci-workflow-truth-postgres-contract.test.mjs",
|
|
30
32
|
"validate-ttfv": "node scripts/validate-ttfv.mjs",
|
|
31
|
-
"test": "npm run build && npm run test:vitest && npm run test:vitest -w agentskeptic-web -- __tests__/langgraph-reference-primacy.dom.test.tsx __tests__/oss-claim-client-flow.dom.test.tsx && npm run test:node:sqlite && node scripts/first-run.mjs && npm run partner-quickstart && node scripts/langgraph-reference-verify.mjs && node test/partner-quickstart.adversarial.mjs && npm run check:partner-quickstart-ssot && node dist/cli.js assurance run --manifest examples/assurance/manifest.json && node scripts/commercial-enforce-test-harness.mjs && npm run build && npm run validate-ttfv && node scripts/related-exists-export-user-outcome.mjs",
|
|
33
|
+
"test": "npm run build && npm run check:epistemic-contract-structure && npm run test:vitest && npm run test:vitest -w agentskeptic-web -- __tests__/langgraph-reference-primacy.dom.test.tsx __tests__/oss-claim-client-flow.dom.test.tsx __tests__/integrate-page-completion-semantics.contract.test.tsx && npm run test:node:sqlite && node scripts/first-run.mjs && node scripts/validate-adoption-complete.mjs && node --test test/validate-adoption-complete-failure.test.mjs && node scripts/validate-adoption-complete.mjs && npm run partner-quickstart && node scripts/validate-integrate-spine.mjs && node scripts/validate-integrator-onboarding-shape.mjs && node scripts/langgraph-reference-verify.mjs && node test/partner-quickstart.adversarial.mjs && npm run check:partner-quickstart-ssot && node dist/cli.js assurance run --manifest examples/assurance/manifest.json && node scripts/commercial-enforce-test-harness.mjs && npm run build && npm run validate-ttfv && node scripts/related-exists-export-user-outcome.mjs",
|
|
32
34
|
"test:debug-ui": "playwright test",
|
|
33
|
-
"test:ci": "npm run build && npm run test:vitest && npm run test:vitest -w agentskeptic-web -- __tests__/langgraph-reference-primacy.dom.test.tsx __tests__/oss-claim-client-flow.dom.test.tsx && npm run test:node:sqlite && node scripts/first-run.mjs && npm run partner-quickstart && node scripts/langgraph-reference-verify.mjs && node test/partner-quickstart.adversarial.mjs && npm run check:partner-quickstart-ssot && node dist/cli.js assurance run --manifest examples/assurance/manifest.json && npm run test:postgres && node scripts/run-partner-quickstart-postgres-ci.mjs && node scripts/commercial-enforce-test-harness.mjs --require-postgres && npx playwright install chromium && npm run test:debug-ui && npm run build && npm run validate-ttfv && node scripts/related-exists-export-user-outcome.mjs",
|
|
35
|
+
"test:ci": "npm run build && npm run check:epistemic-contract-structure && npm run test:vitest && npm run test:vitest -w agentskeptic-web -- __tests__/langgraph-reference-primacy.dom.test.tsx __tests__/oss-claim-client-flow.dom.test.tsx __tests__/integrate-page-completion-semantics.contract.test.tsx && npm run test:node:sqlite && node scripts/first-run.mjs && node scripts/validate-adoption-complete.mjs && node --test test/validate-adoption-complete-failure.test.mjs && node scripts/validate-adoption-complete.mjs && npm run partner-quickstart && node scripts/validate-integrate-spine.mjs && node scripts/validate-integrator-onboarding-shape.mjs && node scripts/langgraph-reference-verify.mjs && node test/partner-quickstart.adversarial.mjs && npm run check:partner-quickstart-ssot && node dist/cli.js assurance run --manifest examples/assurance/manifest.json && npm run test:postgres && node scripts/run-partner-quickstart-postgres-ci.mjs && node scripts/commercial-enforce-test-harness.mjs --require-postgres && npx playwright install chromium && npm run test:debug-ui && npm run build && npm run validate-ttfv && node scripts/related-exists-export-user-outcome.mjs",
|
|
34
36
|
"example:workflow-hook": "npm run build && node examples/workflow-runner.mjs",
|
|
35
37
|
"agentskeptic": "node dist/cli.js",
|
|
36
38
|
"migrate:workflow-result-v11": "npm run build && node scripts/migrate-workflow-result-v11.mjs",
|
|
@@ -39,22 +41,23 @@
|
|
|
39
41
|
"migrate:workflow-result-v15": "npm run build && node scripts/migrate-workflow-result-v15.mjs",
|
|
40
42
|
"check:commercial-ssot": "node scripts/check-commercial-plans-ssot.mjs",
|
|
41
43
|
"stripe-bootstrap": "node scripts/stripe-bootstrap.mjs",
|
|
42
|
-
"export:telemetry-daily-pack": "node scripts/export-telemetry-daily-pack.mjs",
|
|
43
44
|
"validate-commercial": "node scripts/validate-commercial-funnel.mjs",
|
|
44
45
|
"pack-smoke": "node scripts/pack-smoke-commercial.mjs",
|
|
45
|
-
"sync:public-product-anchors": "node scripts/public-product-anchors.cjs && node scripts/assert-discovery-public-files.mjs",
|
|
46
|
-
"distribution:consumer-pipeline": "node scripts/distribution-consumer-pipeline.mjs",
|
|
46
|
+
"sync:public-product-anchors": "node scripts/public-product-anchors.cjs && node scripts/sync-adoption-canonical-to-llms.mjs && node scripts/assert-discovery-public-files.mjs",
|
|
47
47
|
"check:discovery-acquisition": "node scripts/validate-discovery-acquisition.mjs",
|
|
48
48
|
"verify:web-marketing-copy": "node scripts/run-verify-web-marketing-copy.mjs",
|
|
49
|
-
"check:public-product-anchors": "node scripts/public-product-anchors.cjs --check",
|
|
49
|
+
"check:public-product-anchors": "node scripts/public-product-anchors.cjs --check && node scripts/sync-adoption-canonical-to-llms.mjs --check",
|
|
50
50
|
"generate:integrate-activation-shell": "node scripts/generate-integrate-activation-shell.mjs",
|
|
51
51
|
"check:integrate-activation-shell": "node scripts/generate-integrate-activation-shell.mjs --check",
|
|
52
52
|
"validate:activation-spine": "node scripts/validate-activation-spine.mjs",
|
|
53
|
+
"validate:integrator-onboarding-shape": "node scripts/validate-integrator-onboarding-shape.mjs",
|
|
53
54
|
"test:commercial-layer": "node scripts/validate-commercial-funnel.mjs",
|
|
54
55
|
"build:website": "npm run build && npm run build -w agentskeptic-web",
|
|
55
56
|
"check:web-demo-prereqs": "node scripts/check-web-demo-prereqs.mjs",
|
|
56
57
|
"generate:partner-quickstart-commands": "node scripts/generate-partner-quickstart-commands.mjs",
|
|
57
58
|
"sync-integrator-docs-embedded": "node scripts/sync-integrator-docs-embedded.mjs",
|
|
59
|
+
"sync-epistemic-contract-website": "node scripts/sync-epistemic-contract-website.mjs",
|
|
60
|
+
"check:epistemic-contract-structure": "node scripts/validate-epistemic-contract-structure.mjs",
|
|
58
61
|
"check:partner-quickstart-ssot": "node scripts/check-partner-quickstart-ssot.mjs",
|
|
59
62
|
"partner-quickstart": "node scripts/partner-quickstart-verify.mjs",
|
|
60
63
|
"first-run-verify": "node scripts/partner-quickstart-verify.mjs",
|
|
@@ -27,6 +27,21 @@ const MAX_SUMMARY_UTF8_BYTES = 65536;
|
|
|
27
27
|
const MAX_PR_BODY_UTF8_BYTES = 10240;
|
|
28
28
|
const STDERR_TAIL_LINES = 20;
|
|
29
29
|
|
|
30
|
+
const REPO_ROOT = join(__dirname, "..");
|
|
31
|
+
const README_ADOPTION_START = "<!-- adoption-canonical:start -->";
|
|
32
|
+
const README_ADOPTION_END = "<!-- adoption-canonical:end -->";
|
|
33
|
+
|
|
34
|
+
function extractReadmeAdoptionExcerptForLlms() {
|
|
35
|
+
const readme = readFileSync(join(REPO_ROOT, "README.md"), "utf8");
|
|
36
|
+
const i = readme.indexOf(README_ADOPTION_START);
|
|
37
|
+
const j = readme.indexOf(README_ADOPTION_END);
|
|
38
|
+
if (i < 0 || j < 0 || j <= i) return "";
|
|
39
|
+
return readme
|
|
40
|
+
.slice(i + README_ADOPTION_START.length, j)
|
|
41
|
+
.replace(/^\r?\n/, "")
|
|
42
|
+
.replace(/\r?\n$/, "");
|
|
43
|
+
}
|
|
44
|
+
|
|
30
45
|
/**
|
|
31
46
|
* @param {string} gitRepositoryUrl
|
|
32
47
|
* @returns {{ owner: string, repo: string }}
|
|
@@ -180,11 +195,22 @@ function renderLlmsTextFromPayload(payload) {
|
|
|
180
195
|
const integrateUrl = links.integrate;
|
|
181
196
|
const learnHubUrl = links.learnHub;
|
|
182
197
|
const openapiSelfCanonical = links.openapiCanonical;
|
|
198
|
+
const adoptionExcerpt = extractReadmeAdoptionExcerptForLlms();
|
|
199
|
+
const adoptionLlmsBlock =
|
|
200
|
+
adoptionExcerpt.length > 0
|
|
201
|
+
? [
|
|
202
|
+
"<!-- adoption-canonical-llms:start -->",
|
|
203
|
+
adoptionExcerpt,
|
|
204
|
+
"<!-- adoption-canonical-llms:end -->",
|
|
205
|
+
String(payload.identityOneLiner),
|
|
206
|
+
].join("\n")
|
|
207
|
+
: String(payload.identityOneLiner);
|
|
183
208
|
const lines = [
|
|
184
209
|
"# AgentSkeptic",
|
|
185
210
|
"",
|
|
186
211
|
"## Summary",
|
|
187
|
-
|
|
212
|
+
"",
|
|
213
|
+
adoptionLlmsBlock,
|
|
188
214
|
"",
|
|
189
215
|
"## Primary links",
|
|
190
216
|
`- Canonical site: ${links.site}`,
|