agentskeptic 7.1.4 → 7.3.0
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 +43 -42
- package/config/marketing.json +2 -2
- package/dist/cli.js +5 -0
- package/dist/cli.js.map +1 -1
- package/dist/decisionGate.d.ts +2 -2
- package/dist/discovery-payload-v1.json +3 -1
- package/dist/execution-identity.v1.json +1 -1
- package/dist/outcomeCertificate.d.ts +2 -2
- package/dist/outcomeCertificate.d.ts.map +1 -1
- package/dist/publicDistribution.generated.d.ts +1 -1
- package/dist/publicDistribution.generated.js +1 -1
- package/dist/sdk/AgentSkeptic.d.ts +3 -3
- package/dist/sdk/_generated/openapi-types.d.ts +73 -14
- package/dist/sdk/_generated/openapi-types.d.ts.map +1 -1
- package/dist/sdk/outcomeCertificatePublicTypes.contract.test.d.ts +2 -0
- package/dist/sdk/outcomeCertificatePublicTypes.contract.test.d.ts.map +1 -0
- package/dist/sdk/outcomeCertificatePublicTypes.contract.test.js +16 -0
- package/dist/sdk/outcomeCertificatePublicTypes.contract.test.js.map +1 -0
- package/package.json +3 -2
- package/schemas/openapi-commercial-v1.in.yaml +150 -11
- package/schemas/openapi-commercial-v1.yaml +152 -13
- package/scripts/discovery-payload.lib.cjs +19 -2
- package/scripts/emit-primary-marketing.cjs +7 -5
- package/scripts/origin.cjs +12 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
openapi: "3.0.3"
|
|
2
2
|
info:
|
|
3
3
|
title: AgentSkeptic commercial license API
|
|
4
|
-
version: "7.
|
|
4
|
+
version: "7.3.0"
|
|
5
5
|
contact:
|
|
6
6
|
url: https://agentskeptic.com
|
|
7
7
|
x-agentskeptic-distribution:
|
|
@@ -14,8 +14,16 @@ info:
|
|
|
14
14
|
manifestSha256: "c5f23ec43576716c4b9a13e752cd2962a78bb4b4da1f9e521f911e15dfd80268"
|
|
15
15
|
description: "Read-only checks at verify time—not color.\n\nMachine-readable contract for license preflight used by the published npm CLI.\nBase URL is your deployed app origin (same as NEXT_PUBLIC_APP_URL).\n\nEvery path in this document returns an `x-request-id` response header on all status codes (echo a valid client `x-request-id` when supplied; otherwise server-generated). Non-2xx JSON bodies follow RFC 7807-style Problem Details (`type`, `title`, `status`, `detail`, optional `code`, `instance`) unless noted; `POST /api/v1/usage/reserve` denials additionally include legacy `allowed`, `code`, `message`, and optional `upgrade_url` for backward compatibility.\n\n**Breaking (agentskeptic 5.x):** Hosted enforcement ingestion uses `schema_version` 3 with `outcome_certificate` (Outcome Certificate v3 inner JSON, including `failureSpine`). Legacy `schema_version` 2 payloads with `outcome_certificate_v1` are rejected. `POST /api/v1/funnel/verify-outcome` requires `schema_version` 3 and `evidence_gap_primary`. `POST /api/public/verification-reports` accepts envelope `schemaVersion` 3 only. **HTTP 4xx/5xx** responses are **not** `failure-spine-v1` and are **not** Outcome Certificate-shaped; operational CLI errors use `cli-error-envelope` on stderr only.\n"
|
|
16
16
|
externalDocs:
|
|
17
|
-
description:
|
|
18
|
-
url: https://
|
|
17
|
+
description: Runtime truth-check integration guide for agentskeptic check and AgentSkeptic.check
|
|
18
|
+
url: https://github.com/jwekavanagh/agentskeptic/blob/main/docs/first-truth-check.md
|
|
19
|
+
x-agentskeptic-runtime-truth-check:
|
|
20
|
+
status: documented-outside-commercial-api
|
|
21
|
+
cli: agentskeptic check
|
|
22
|
+
sdk: AgentSkeptic.check
|
|
23
|
+
note: >
|
|
24
|
+
This OpenAPI file describes hosted commercial, reporting, and enforcement APIs. Runtime
|
|
25
|
+
truth checks are integrated through the CLI or SDK. Demo /api/verify routes are examples,
|
|
26
|
+
not the production hosted truth-check API.
|
|
19
27
|
servers:
|
|
20
28
|
- url: https://agentskeptic.com
|
|
21
29
|
description: Replace with your deployment origin
|
|
@@ -228,7 +236,14 @@ paths:
|
|
|
228
236
|
/api/v1/governance/export:
|
|
229
237
|
get:
|
|
230
238
|
operationId: exportGovernanceAuditBundle
|
|
231
|
-
summary: Export governance
|
|
239
|
+
summary: Export governance timeline JSON for one workflow (session auth)
|
|
240
|
+
description: >
|
|
241
|
+
**Breaking:** Returns GovernanceAuditBundleV3 only (schemaVersion 3). Includes governance window, lifecycle,
|
|
242
|
+
baselines, timeline rows, and slice-keyed evidenceSlices (per governance_evidence row: Outcome Certificate v3,
|
|
243
|
+
fingerprints, hostedExit, decisionCompleteness, truthCheckVerdict). Not equivalent to CLI --write-run-bundle
|
|
244
|
+
(NDJSON technical bundle) or full on-disk decision directories; see docs/decision-evidence-bundle.md.
|
|
245
|
+
If any referenced evidence row fails v3 validation or stored fingerprints disagree with recomputed hashes,
|
|
246
|
+
responds 500 CORRUPTED_EVIDENCE_ROW with a fixed JSON body (no degraded export).
|
|
232
247
|
parameters:
|
|
233
248
|
- name: workflow_id
|
|
234
249
|
in: query
|
|
@@ -249,11 +264,11 @@ paths:
|
|
|
249
264
|
format: date-time
|
|
250
265
|
responses:
|
|
251
266
|
"200":
|
|
252
|
-
description:
|
|
267
|
+
description: GovernanceAuditBundleV3 governance timeline + slice-keyed evidence
|
|
253
268
|
content:
|
|
254
269
|
application/json:
|
|
255
270
|
schema:
|
|
256
|
-
$ref: "#/components/schemas/
|
|
271
|
+
$ref: "#/components/schemas/GovernanceAuditBundleV3"
|
|
257
272
|
"400":
|
|
258
273
|
description: Invalid request
|
|
259
274
|
content:
|
|
@@ -266,6 +281,12 @@ paths:
|
|
|
266
281
|
application/json:
|
|
267
282
|
schema:
|
|
268
283
|
$ref: "#/components/schemas/ProblemDetails"
|
|
284
|
+
"500":
|
|
285
|
+
description: Referenced governance_evidence row failed validation or fingerprint invariant
|
|
286
|
+
content:
|
|
287
|
+
application/json:
|
|
288
|
+
schema:
|
|
289
|
+
$ref: "#/components/schemas/GovernanceExportCorruptedEvidenceRow"
|
|
269
290
|
/api/public/verification-reports:
|
|
270
291
|
post:
|
|
271
292
|
operationId: createPublicVerificationReport
|
|
@@ -647,14 +668,126 @@ components:
|
|
|
647
668
|
items:
|
|
648
669
|
type: object
|
|
649
670
|
additionalProperties: true
|
|
650
|
-
|
|
671
|
+
GovernanceExportCorruptedEvidenceRow:
|
|
651
672
|
type: object
|
|
652
|
-
|
|
653
|
-
|
|
673
|
+
additionalProperties: false
|
|
674
|
+
description: Hosted governance export — stored evidence invariant failure.
|
|
675
|
+
required: [code, evidence_id, message]
|
|
676
|
+
properties:
|
|
677
|
+
code:
|
|
678
|
+
type: string
|
|
679
|
+
const: CORRUPTED_EVIDENCE_ROW
|
|
680
|
+
evidence_id:
|
|
681
|
+
type: string
|
|
682
|
+
format: uuid
|
|
683
|
+
message:
|
|
684
|
+
type: string
|
|
685
|
+
const: "Stored evidence row failed certificate schema validation or fingerprints do not match stored columns."
|
|
686
|
+
GovernanceEvidenceFingerprints:
|
|
687
|
+
type: object
|
|
688
|
+
additionalProperties: false
|
|
689
|
+
required: [certificateSha256, materialTruthSha256]
|
|
690
|
+
properties:
|
|
691
|
+
certificateSha256:
|
|
692
|
+
type: string
|
|
693
|
+
materialTruthSha256:
|
|
694
|
+
type: string
|
|
695
|
+
HostedEvidenceExitDecisionV1:
|
|
696
|
+
type: object
|
|
697
|
+
additionalProperties: false
|
|
698
|
+
required: [schemaVersion, exitCode, cliConvention]
|
|
654
699
|
properties:
|
|
655
700
|
schemaVersion:
|
|
656
701
|
type: integer
|
|
657
|
-
const:
|
|
702
|
+
const: 1
|
|
703
|
+
exitCode:
|
|
704
|
+
type: integer
|
|
705
|
+
minimum: 0
|
|
706
|
+
maximum: 3
|
|
707
|
+
cliConvention:
|
|
708
|
+
type: string
|
|
709
|
+
const: outcome_certificate_v2
|
|
710
|
+
HostedDecisionEvidenceCompletenessArtifacts:
|
|
711
|
+
type: object
|
|
712
|
+
additionalProperties: false
|
|
713
|
+
required: [a4Present, a5Present, a5Required]
|
|
714
|
+
properties:
|
|
715
|
+
a4Present:
|
|
716
|
+
type: boolean
|
|
717
|
+
a5Present:
|
|
718
|
+
type: boolean
|
|
719
|
+
a5Required:
|
|
720
|
+
type: boolean
|
|
721
|
+
HostedDecisionEvidenceCompleteness:
|
|
722
|
+
type: object
|
|
723
|
+
additionalProperties: false
|
|
724
|
+
required: [status, artifacts]
|
|
725
|
+
properties:
|
|
726
|
+
status:
|
|
727
|
+
type: string
|
|
728
|
+
enum: [complete, partial, invalid]
|
|
729
|
+
artifacts:
|
|
730
|
+
$ref: "#/components/schemas/HostedDecisionEvidenceCompletenessArtifacts"
|
|
731
|
+
HostedEvidenceSliceV1:
|
|
732
|
+
type: object
|
|
733
|
+
additionalProperties: false
|
|
734
|
+
required:
|
|
735
|
+
- runId
|
|
736
|
+
- outcomeCertificate
|
|
737
|
+
- fingerprints
|
|
738
|
+
- hostedExit
|
|
739
|
+
- decisionCompleteness
|
|
740
|
+
- truthCheckVerdict
|
|
741
|
+
properties:
|
|
742
|
+
runId:
|
|
743
|
+
type: string
|
|
744
|
+
outcomeCertificate:
|
|
745
|
+
type: object
|
|
746
|
+
additionalProperties: true
|
|
747
|
+
description: Stored Outcome Certificate v3 (schema outcome-certificate-v3).
|
|
748
|
+
fingerprints:
|
|
749
|
+
$ref: "#/components/schemas/GovernanceEvidenceFingerprints"
|
|
750
|
+
hostedExit:
|
|
751
|
+
$ref: "#/components/schemas/HostedEvidenceExitDecisionV1"
|
|
752
|
+
decisionCompleteness:
|
|
753
|
+
$ref: "#/components/schemas/HostedDecisionEvidenceCompleteness"
|
|
754
|
+
truthCheckVerdict:
|
|
755
|
+
type: string
|
|
756
|
+
GovernanceBaselineAcceptedEvidenceV3:
|
|
757
|
+
type: object
|
|
758
|
+
additionalProperties: false
|
|
759
|
+
required: [evidenceSliceKey, runId, fingerprints, runKind]
|
|
760
|
+
properties:
|
|
761
|
+
evidenceSliceKey:
|
|
762
|
+
type: string
|
|
763
|
+
format: uuid
|
|
764
|
+
runId:
|
|
765
|
+
type: string
|
|
766
|
+
fingerprints:
|
|
767
|
+
$ref: "#/components/schemas/GovernanceEvidenceFingerprints"
|
|
768
|
+
runKind:
|
|
769
|
+
type: string
|
|
770
|
+
GovernanceAuditBundleV3:
|
|
771
|
+
type: object
|
|
772
|
+
additionalProperties: false
|
|
773
|
+
description: Hosted governance ledger export (breaking; replaces prior schemaVersion 2 governance export payloads).
|
|
774
|
+
required:
|
|
775
|
+
- schemaVersion
|
|
776
|
+
- generatedAt
|
|
777
|
+
- userId
|
|
778
|
+
- workflowId
|
|
779
|
+
- window
|
|
780
|
+
- lifecycle
|
|
781
|
+
- fsmTransitions
|
|
782
|
+
- verificationDecisions
|
|
783
|
+
- baseline
|
|
784
|
+
- events
|
|
785
|
+
- evidenceSlices
|
|
786
|
+
- baselineAcceptedEvidence
|
|
787
|
+
properties:
|
|
788
|
+
schemaVersion:
|
|
789
|
+
type: integer
|
|
790
|
+
const: 3
|
|
658
791
|
generatedAt:
|
|
659
792
|
type: string
|
|
660
793
|
format: date-time
|
|
@@ -664,6 +797,7 @@ components:
|
|
|
664
797
|
type: string
|
|
665
798
|
window:
|
|
666
799
|
type: object
|
|
800
|
+
additionalProperties: false
|
|
667
801
|
required: [from, to]
|
|
668
802
|
properties:
|
|
669
803
|
from:
|
|
@@ -695,10 +829,15 @@ components:
|
|
|
695
829
|
items:
|
|
696
830
|
type: object
|
|
697
831
|
additionalProperties: true
|
|
698
|
-
|
|
832
|
+
evidenceSlices:
|
|
699
833
|
type: object
|
|
700
|
-
additionalProperties:
|
|
701
|
-
|
|
834
|
+
additionalProperties:
|
|
835
|
+
$ref: "#/components/schemas/HostedEvidenceSliceV1"
|
|
836
|
+
baselineAcceptedEvidence:
|
|
837
|
+
nullable: true
|
|
838
|
+
anyOf:
|
|
839
|
+
- $ref: "#/components/schemas/GovernanceBaselineAcceptedEvidenceV3"
|
|
840
|
+
- type: "null"
|
|
702
841
|
ProblemDetails:
|
|
703
842
|
type: object
|
|
704
843
|
required: [type, title, status, detail]
|
|
@@ -30,6 +30,8 @@ const STDERR_TAIL_LINES = 20;
|
|
|
30
30
|
/** Max UTF-8 bytes of stdout parsed for Outcome Certificate JSON (`failureSpine` extraction). */
|
|
31
31
|
const MAX_STDOUT_PARSE_BYTES = 262144;
|
|
32
32
|
|
|
33
|
+
const { runtimeTruthCheckGuideBlobUrl } = require("./origin.cjs");
|
|
34
|
+
|
|
33
35
|
const REPO_ROOT = join(__dirname, "..");
|
|
34
36
|
const README_ADOPTION_START = "<!-- adoption-canonical:start -->";
|
|
35
37
|
const README_ADOPTION_END = "<!-- adoption-canonical:end -->";
|
|
@@ -141,6 +143,7 @@ function buildDiscoveryPayload(root) {
|
|
|
141
143
|
const anchors = pm;
|
|
142
144
|
const canonicalOrigin = normalizeOrigin(anchors.productionCanonicalOrigin);
|
|
143
145
|
const integrateUrl = `${canonicalOrigin}/integrate`;
|
|
146
|
+
const runtimeTruthCheckGuideUrl = runtimeTruthCheckGuideBlobUrl(String(anchors.gitRepositoryUrl));
|
|
144
147
|
const learnHubUrl = `${canonicalOrigin}/guides`;
|
|
145
148
|
const openapiSelfCanonical = `${canonicalOrigin}/openapi-commercial-v1.yaml`;
|
|
146
149
|
const { owner, repo } = parseGithubRepoFromUrl(anchors.gitRepositoryUrl);
|
|
@@ -149,6 +152,7 @@ function buildDiscoveryPayload(root) {
|
|
|
149
152
|
const integratorGuideSsotRaw = `https://raw.githubusercontent.com/${owner}/${repo}/refs/heads/${DISCOVERY_LLM_BRANCH}/docs/integrate.md`;
|
|
150
153
|
const openapiRaw = `https://raw.githubusercontent.com/${owner}/${repo}/refs/heads/${DISCOVERY_LLM_BRANCH}/schemas/openapi-commercial-v1.yaml`;
|
|
151
154
|
const cursorIntegrationDocRaw = `https://raw.githubusercontent.com/${owner}/${repo}/refs/heads/${DISCOVERY_LLM_BRANCH}/docs/cursor-integration.md`;
|
|
155
|
+
const decisionEvidenceBundleDocRaw = `https://raw.githubusercontent.com/${owner}/${repo}/refs/heads/${DISCOVERY_LLM_BRANCH}/docs/decision-evidence-bundle.md`;
|
|
152
156
|
const contractManifestCanonical = `${canonicalOrigin}/contract/v1.json`;
|
|
153
157
|
const contractManifestRaw = `https://raw.githubusercontent.com/${owner}/${repo}/refs/heads/${DISCOVERY_LLM_BRANCH}/schemas/contract/v1.json`;
|
|
154
158
|
const llms = /** @type {{ intentPhrases: string[]; notFor: string[]; relatedQueries: string[] }} */ (
|
|
@@ -162,6 +166,7 @@ function buildDiscoveryPayload(root) {
|
|
|
162
166
|
links: {
|
|
163
167
|
site: `${canonicalOrigin}/`,
|
|
164
168
|
integrate: integrateUrl,
|
|
169
|
+
runtimeTruthCheckGuide: runtimeTruthCheckGuideUrl,
|
|
165
170
|
learnHub: learnHubUrl,
|
|
166
171
|
openapiCanonical: openapiSelfCanonical,
|
|
167
172
|
openapiRaw,
|
|
@@ -171,6 +176,7 @@ function buildDiscoveryPayload(root) {
|
|
|
171
176
|
llmsBlob,
|
|
172
177
|
integratorGuideSsotRaw,
|
|
173
178
|
cursorIntegrationDocRaw,
|
|
179
|
+
decisionEvidenceBundleDocRaw,
|
|
174
180
|
contractManifestCanonical,
|
|
175
181
|
contractManifestRaw,
|
|
176
182
|
},
|
|
@@ -259,8 +265,9 @@ function renderLlmsTextFromPayload(payload) {
|
|
|
259
265
|
`- Integrator guide (v2 SSOT): ${links.integratorGuideSsotRaw}`,
|
|
260
266
|
`- Cursor integration (consumer rule): ${links.cursorIntegrationDocRaw}`,
|
|
261
267
|
`- First-run integration: ${integrateUrl}`,
|
|
268
|
+
`- Runtime truth-check (agentskeptic check / AgentSkeptic.check): ${links.runtimeTruthCheckGuide}`,
|
|
262
269
|
`- Learn: ${learnHubUrl}`,
|
|
263
|
-
`- OpenAPI (
|
|
270
|
+
`- OpenAPI (hosted commercial / reporting / enforcement): ${openapiSelfCanonical}`,
|
|
264
271
|
`- OpenAPI (repo raw): ${links.openapiRaw}`,
|
|
265
272
|
`- Source repository: ${links.repo}`,
|
|
266
273
|
`- npm package: ${links.npm}`,
|
|
@@ -268,6 +275,15 @@ function renderLlmsTextFromPayload(payload) {
|
|
|
268
275
|
`- Verification Contract Manifest (canonical): ${links.contractManifestCanonical}`,
|
|
269
276
|
`- Verification Contract Manifest (repo raw): ${links.contractManifestRaw}`,
|
|
270
277
|
"",
|
|
278
|
+
"## Evidence retention (progressive)",
|
|
279
|
+
"",
|
|
280
|
+
"- Default truth check: `agentskeptic check` — Outcome Certificate on stdout; no bundle files written unless you opt in.",
|
|
281
|
+
"- Decision evidence on disk: add `--proof <dir>` or `--write-decision-bundle <dir>`.",
|
|
282
|
+
"- Full local proof (technical + decision bundles): add `--write-run-bundle <dir>` alongside `--write-decision-bundle` (two output directories).",
|
|
283
|
+
"- Hosted commercial `GET /api/v1/governance/export` returns `GovernanceAuditBundleV3` (`schemaVersion: 3`) with slice-keyed `evidenceSlices` — not a CLI `decision bundle` / `write-run-bundle` directory.",
|
|
284
|
+
"",
|
|
285
|
+
`- Operational SSOT (artifact names, completeness, handoff zip recipe): ${links.decisionEvidenceBundleDocRaw}`,
|
|
286
|
+
"",
|
|
271
287
|
];
|
|
272
288
|
const base = lines.join("\n");
|
|
273
289
|
const { appendDiscoveryLlmsAppendix } = require("./discovery-acquisition.lib.cjs");
|
|
@@ -289,8 +305,9 @@ function renderCiSummaryMarkdownFromPayload(payload) {
|
|
|
289
305
|
"",
|
|
290
306
|
"- Canonical site: " + L.site,
|
|
291
307
|
"- Integrate: " + L.integrate,
|
|
308
|
+
"- Runtime truth-check (CLI/SDK): " + L.runtimeTruthCheckGuide,
|
|
292
309
|
"- Learn: " + L.learnHub,
|
|
293
|
-
"- OpenAPI: " + L.openapiCanonical,
|
|
310
|
+
"- OpenAPI (hosted commercial): " + L.openapiCanonical,
|
|
294
311
|
"- OpenAPI (repo raw): " + L.openapiRaw,
|
|
295
312
|
"- Cursor integration (consumer rule): " + L.cursorIntegrationDocRaw,
|
|
296
313
|
"- Repository: " + L.repo,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const { readFileSync, writeFileSync, mkdirSync } = require("node:fs");
|
|
4
4
|
const { join, dirname } = require("node:path");
|
|
5
|
-
const { normalize, assertNextPublicOriginParity, MARKETING_PATH } = require("./origin.cjs");
|
|
5
|
+
const { normalize, runtimeTruthCheckGuideBlobUrl, assertNextPublicOriginParity, MARKETING_PATH } = require("./origin.cjs");
|
|
6
6
|
|
|
7
7
|
const ROOT = join(__dirname, "..");
|
|
8
8
|
|
|
@@ -238,7 +238,8 @@ function syncPrimaryMarketing() {
|
|
|
238
238
|
const publicOriginNormalized = normalize(effectivePublicOrigin);
|
|
239
239
|
const openapiSelfEffective = `${publicOriginNormalized}/openapi-commercial-v1.yaml`;
|
|
240
240
|
|
|
241
|
-
const
|
|
241
|
+
const integrateLandingUrl = `${canonicalOrigin}/integrate`;
|
|
242
|
+
const integrateRuntimeTruthGuideUrl = runtimeTruthCheckGuideBlobUrl(anchors.gitRepositoryUrl);
|
|
242
243
|
|
|
243
244
|
const template = readFileSync(OPENAPI_IN, "utf8");
|
|
244
245
|
const pkgForVersion = JSON.parse(readFileSync(PKG_PATH, "utf8"));
|
|
@@ -252,7 +253,7 @@ function syncPrimaryMarketing() {
|
|
|
252
253
|
mid = mid.replace(PRODUCT_VERSION_TOKEN, JSON.stringify(productSemver));
|
|
253
254
|
mid = mid.replace("__IDENTITY_ONE_LINER__", escaped);
|
|
254
255
|
mid = mid.replace("__DISTRIBUTION_CONTACT_URL__", canonicalOrigin);
|
|
255
|
-
mid = mid.replace("__DISTRIBUTION_INTEGRATE_URL__",
|
|
256
|
+
mid = mid.replace("__DISTRIBUTION_INTEGRATE_URL__", integrateRuntimeTruthGuideUrl);
|
|
256
257
|
mid = mid.replace("__DISTRIBUTION_REPO_URL__", anchors.gitRepositoryUrl);
|
|
257
258
|
mid = mid.replace("__DISTRIBUTION_NPM_URL__", anchors.npmPackageUrl);
|
|
258
259
|
mid = mid.replace("__CONTRACT_URL__", contractPin.url);
|
|
@@ -324,8 +325,9 @@ function syncPrimaryMarketing() {
|
|
|
324
325
|
`- **Repository:** ${anchors.gitRepositoryUrl}`,
|
|
325
326
|
`- **npm package:** ${anchors.npmPackageUrl}`,
|
|
326
327
|
`- **Canonical site:** ${canonicalOrigin}`,
|
|
327
|
-
`- **Integrate:** ${
|
|
328
|
-
`- **
|
|
328
|
+
`- **Integrate:** ${integrateLandingUrl}`,
|
|
329
|
+
`- **Runtime truth-check (CLI / SDK):** ${integrateRuntimeTruthGuideUrl}`,
|
|
330
|
+
`- **OpenAPI (hosted commercial API):** ${openapiSelfCanonical}`,
|
|
329
331
|
`- **Verification Contract Manifest:** ${contractPin.url}`,
|
|
330
332
|
`- **llms.txt (agents, site):** ${canonicalOrigin}/llms.txt`,
|
|
331
333
|
`- **llms.txt (repo, raw):** ${pl.llmsRaw}`,
|
package/scripts/origin.cjs
CHANGED
|
@@ -31,6 +31,17 @@ function readProductionCanonicalOrigin() {
|
|
|
31
31
|
return String(pm.productionCanonicalOrigin);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Canonical browser URL for the repo markdown SSOT `docs/first-truth-check.md` (OpenAPI externalDocs + discovery).
|
|
36
|
+
* @param {string} gitRepositoryUrl e.g. https://github.com/org/repo or …/repo.git
|
|
37
|
+
*/
|
|
38
|
+
function runtimeTruthCheckGuideBlobUrl(gitRepositoryUrl) {
|
|
39
|
+
const base = String(gitRepositoryUrl)
|
|
40
|
+
.replace(/\.git$/i, "")
|
|
41
|
+
.replace(/\/$/, "");
|
|
42
|
+
return `${base}/blob/main/docs/first-truth-check.md`;
|
|
43
|
+
}
|
|
44
|
+
|
|
34
45
|
function assertNextPublicOriginParity() {
|
|
35
46
|
const canonicalFromJson = readProductionCanonicalOrigin();
|
|
36
47
|
const skip = process.env.NODE_ENV !== "production" || process.env.VERCEL_ENV === "preview";
|
|
@@ -45,6 +56,7 @@ function assertNextPublicOriginParity() {
|
|
|
45
56
|
|
|
46
57
|
module.exports = {
|
|
47
58
|
normalize,
|
|
59
|
+
runtimeTruthCheckGuideBlobUrl,
|
|
48
60
|
assertNextPublicOriginParity,
|
|
49
61
|
MARKETING_PATH,
|
|
50
62
|
/** @deprecated use MARKETING_PATH */
|