agentskeptic 3.1.0 → 3.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 CHANGED
@@ -336,6 +336,12 @@ Everything beyond core contract verification lives in **[`docs/agentskeptic.md`]
336
336
 
337
337
  ## Commercial CLI (npm) vs OSS (this repo)
338
338
 
339
+ <!-- codegen:buyer-truth:start:COMMERCIAL_ENTRY -->
340
+ **Commercial metering (published npm)** uses `AGENTSKEPTIC_API_KEY` + `POST /api/v1/usage/reserve` as documented in docs/commercial.md — account-pooled quota per billing month.
341
+
342
+ **OSS/unmetered CLI** for single-run verification: clone this repo and use the OSS build (`WF_BUILD_PROFILE=oss` / default `npm run build` artifact). State over-time `enforce` needs the commercial CLI and a paid entitlement.
343
+ <!-- codegen:buyer-truth:end:COMMERCIAL_ENTRY -->
344
+
339
345
  Canonical write-up: **[`docs/commercial.md`](docs/commercial.md)** (npm package, Stripe, keys, telemetry, validation, entitlements; operator metrics in **[`docs/funnel-observability.md`](docs/funnel-observability.md)**—disable with **`AGENTSKEPTIC_TELEMETRY=0`**). OSS builds in this repo run contract **`verify`** / **`quick`** without a license server for stateless runs. Stateful `agentskeptic enforce` and over-time guarantees require a commercial build per **[`docs/commercial-enforce-gate-normative.md`](docs/commercial-enforce-gate-normative.md)**. Example workflow: **[`examples/github-actions/agentskeptic-commercial.yml`](examples/github-actions/agentskeptic-commercial.yml)**.
340
346
 
341
347
  ## Status, contributing, security
@@ -49,9 +49,6 @@
49
49
  "{{INTEGRATE_URL}}",
50
50
  "{{ORIGIN}}/"
51
51
  ],
52
- "r2": {
53
- "frameworkMaturity": "CrewAI: full support. AutoGen: experimental. Works with any framework that can emit structured activity."
54
- },
55
52
  "site": {
56
53
  "integrate": {
57
54
  "title": "Get started",
@@ -86,12 +83,7 @@
86
83
  "integratePage": {
87
84
  "packLedCommand": "npx agentskeptic init --framework none --database sqlite --yes\n\n# Pack-led replay (after scaffold):\nnpx agentskeptic crossing \\\n --workflow-id YOUR_WORKFLOW_ID \\\n --events ./path/to/events.ndjson \\\n --registry ./path/to/tools.json \\\n --db ./path/to/readable.sqlite",
88
85
  "githubDeepLink": "https://github.com/jwekavanagh/agentskeptic/blob/main/docs/integrate.md",
89
- "githubFirstRunLink": "https://github.com/jwekavanagh/agentskeptic/blob/main/docs/integrate.md",
90
- "requirements": [
91
- "Node.js 22 or newer",
92
- "Read-only access to at least one queryable store (SQL, vectors, S3, Mongo, HTTP, etc.)",
93
- "Ability to emit or export structured tool activity as NDJSON"
94
- ]
86
+ "githubFirstRunLink": "https://github.com/jwekavanagh/agentskeptic/blob/main/docs/integrate.md"
95
87
  },
96
88
  "briefProblem": "Claims vs read-only; ROW_ABSENT.",
97
89
  "briefSections": [],
@@ -1,5 +1,5 @@
1
1
  export declare const PUBLIC_DISTRIBUTION_SSOT_BLOB_URL = "https://github.com/jwekavanagh/agentskeptic/blob/main/docs/public-distribution.md";
2
2
  export declare const PUBLIC_CANONICAL_SITE_ORIGIN = "https://agentskeptic.com";
3
- export declare const AGENTSKEPTIC_CLI_SEMVER = "3.1.0";
3
+ export declare const AGENTSKEPTIC_CLI_SEMVER = "3.3.0";
4
4
  export declare function formatDistributionFooter(): string;
5
5
  //# sourceMappingURL=publicDistribution.generated.d.ts.map
@@ -1,7 +1,7 @@
1
1
  // Generated by npm run emit-primary-marketing — do not hand edit.
2
2
  export const PUBLIC_DISTRIBUTION_SSOT_BLOB_URL = "https://github.com/jwekavanagh/agentskeptic/blob/main/docs/public-distribution.md";
3
3
  export const PUBLIC_CANONICAL_SITE_ORIGIN = "https://agentskeptic.com";
4
- export const AGENTSKEPTIC_CLI_SEMVER = "3.1.0";
4
+ export const AGENTSKEPTIC_CLI_SEMVER = "3.3.0";
5
5
  export function formatDistributionFooter() {
6
6
  return "Context: https://agentskeptic.com/database-truth-vs-traces\n"
7
7
  + "https://agentskeptic.com/integrate\n"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentskeptic",
3
- "version": "3.1.0",
3
+ "version": "3.3.0",
4
4
  "description": "AgentSkeptic compares agent claims with real downstream state — databases, APIs, object stores, and vector stores — and returns a clear verdict.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -72,6 +72,9 @@
72
72
  "sync-integrator-docs-embedded": "node scripts/sync-integrator-docs-embedded.mjs",
73
73
  "sync-epistemic-contract-website": "node scripts/sync-epistemic-contract-website.mjs",
74
74
  "check:epistemic-contract-structure": "node scripts/validate-epistemic-contract-structure.mjs",
75
+ "codegen:buyer-truth": "npm run codegen:buyer-truth -w agentskeptic-web",
76
+ "validate:buyer-truth-schema": "node scripts/validate-buyer-truth-schema.mjs",
77
+ "check:buyer-truth": "node scripts/check-buyer-truth.mjs",
75
78
  "check:partner-quickstart": "node scripts/check-partner-quickstart.mjs",
76
79
  "partner-quickstart": "node scripts/partner-quickstart-verify.mjs",
77
80
  "first-run-verify": "node scripts/partner-quickstart-verify.mjs",
@@ -0,0 +1,162 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://agentskeptic.dev/schemas/buyer-truth-v1.schema.json",
4
+ "title": "BuyerTruthV1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schemaVersion",
9
+ "projectionVersion",
10
+ "quota",
11
+ "frameworkClaims",
12
+ "frameworkFootnoteSuffix",
13
+ "verificationPaths",
14
+ "integrateRequirements",
15
+ "commercialEntryPoints",
16
+ "pricing",
17
+ "accountQuotaUrgency",
18
+ "securityQuickFactsBullets",
19
+ "canonicalHref",
20
+ "readmeSegments",
21
+ "homepageCopy"
22
+ ],
23
+ "properties": {
24
+ "schemaVersion": { "type": "integer", "const": 1 },
25
+ "projectionVersion": { "type": "integer", "minimum": 1 },
26
+ "quota": {
27
+ "type": "object",
28
+ "additionalProperties": false,
29
+ "required": ["model", "pooledExplanation"],
30
+ "properties": {
31
+ "model": { "type": "string", "const": "account_pooled" },
32
+ "pooledExplanation": { "type": "string", "minLength": 8 }
33
+ }
34
+ },
35
+ "frameworkClaims": {
36
+ "type": "array",
37
+ "items": {
38
+ "type": "object",
39
+ "additionalProperties": false,
40
+ "required": ["id", "displayName", "status"],
41
+ "properties": {
42
+ "id": { "type": "string" },
43
+ "displayName": { "type": "string" },
44
+ "status": {
45
+ "type": "string",
46
+ "enum": ["supported", "removed", "experimental"]
47
+ }
48
+ }
49
+ }
50
+ },
51
+ "frameworkFootnoteSuffix": { "type": "string" },
52
+ "verificationPaths": {
53
+ "type": "object",
54
+ "additionalProperties": false,
55
+ "required": ["quickSqlOnlyDisclaimer", "mechanismCalloutAppend"],
56
+ "properties": {
57
+ "quickSqlOnlyDisclaimer": { "type": "string" },
58
+ "mechanismCalloutAppend": { "type": "string" }
59
+ }
60
+ },
61
+ "integrateRequirements": {
62
+ "type": "array",
63
+ "items": { "type": "string" },
64
+ "minItems": 1
65
+ },
66
+ "commercialEntryPoints": {
67
+ "type": "object",
68
+ "additionalProperties": false,
69
+ "required": ["homeCommercialLeadMarkdown"],
70
+ "properties": {
71
+ "homeCommercialLeadMarkdown": { "type": "string" }
72
+ }
73
+ },
74
+ "pricing": {
75
+ "type": "object",
76
+ "additionalProperties": false,
77
+ "required": [
78
+ "pricingHeroSubtitleTemplate",
79
+ "pricingHeroSubtitleSecondary",
80
+ "paidVerificationTemplate",
81
+ "enforcementMarkdown",
82
+ "contractsMarkdown",
83
+ "localVerificationFootnote",
84
+ "comparisonRows"
85
+ ],
86
+ "properties": {
87
+ "pricingHeroSubtitleTemplate": { "type": "string" },
88
+ "pricingHeroSubtitleSecondary": { "type": "string" },
89
+ "paidVerificationTemplate": { "type": "string" },
90
+ "enforcementMarkdown": { "type": "string" },
91
+ "contractsMarkdown": { "type": "string" },
92
+ "localVerificationFootnote": { "type": "string" },
93
+ "comparisonRows": {
94
+ "type": "array",
95
+ "items": {
96
+ "type": "object",
97
+ "additionalProperties": false,
98
+ "required": ["featureKey", "featureDisplay", "cells"],
99
+ "properties": {
100
+ "featureKey": { "type": "string" },
101
+ "featureDisplay": { "type": "string" },
102
+ "cells": {
103
+ "type": "object",
104
+ "additionalProperties": { "type": "string" }
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }
110
+ },
111
+ "accountQuotaUrgency": {
112
+ "type": "object",
113
+ "additionalProperties": false,
114
+ "required": ["ok", "notice", "warning", "in_overage", "at_cap", "zero_usage"],
115
+ "properties": {
116
+ "ok": { "type": "string" },
117
+ "notice": { "type": "string" },
118
+ "warning": { "type": "string" },
119
+ "in_overage": { "type": "string" },
120
+ "at_cap": { "type": "string" },
121
+ "zero_usage": { "type": "string" }
122
+ }
123
+ },
124
+ "securityQuickFactsBullets": {
125
+ "type": "array",
126
+ "items": { "type": "string" },
127
+ "minItems": 4,
128
+ "maxItems": 4
129
+ },
130
+ "canonicalHref": {
131
+ "type": "object",
132
+ "additionalProperties": false,
133
+ "required": ["verificationSemantics", "commercialSsotDoc", "commercialBoundary"],
134
+ "properties": {
135
+ "verificationSemantics": { "type": "string", "pattern": "^https://" },
136
+ "commercialSsotDoc": { "type": "string", "pattern": "^https://" },
137
+ "commercialBoundary": { "type": "string", "pattern": "^https://" }
138
+ }
139
+ },
140
+ "readmeSegments": {
141
+ "type": "object",
142
+ "additionalProperties": false,
143
+ "required": ["commercialEntry"],
144
+ "properties": {
145
+ "commercialEntry": {
146
+ "type": "array",
147
+ "items": { "type": "string" },
148
+ "minItems": 1
149
+ }
150
+ }
151
+ },
152
+ "homepageCopy": {
153
+ "type": "object",
154
+ "additionalProperties": false,
155
+ "required": ["valueProposition", "mechanismWorksWith"],
156
+ "properties": {
157
+ "valueProposition": { "type": "string" },
158
+ "mechanismWorksWith": { "type": "string" }
159
+ }
160
+ }
161
+ }
162
+ }
@@ -12,6 +12,8 @@
12
12
  },
13
13
  "gating": {
14
14
  "gitPathspecs": [
15
+ "config/buyer-truth.v1.json",
16
+ "schemas/buyer-truth-v1.schema.json",
15
17
  "schemas/",
16
18
  "llms.txt",
17
19
  "README.md",
@@ -1,7 +1,7 @@
1
1
  openapi: "3.0.3"
2
2
  info:
3
3
  title: AgentSkeptic commercial license API
4
- version: "3.1.0"
4
+ version: "3.3.0"
5
5
  contact:
6
6
  url: https://agentskeptic.com
7
7
  x-agentskeptic-distribution:
@@ -70,7 +70,6 @@ function validateMarketingValue(m) {
70
70
  "readmeFold",
71
71
  "shareableTerminalDemo",
72
72
  "cliFollowupLines",
73
- "r2",
74
73
  "site",
75
74
  "integratePage",
76
75
  "problemIndex",
@@ -81,6 +80,11 @@ function validateMarketingValue(m) {
81
80
  throw new Error(`marketing: missing required key ${k}`);
82
81
  }
83
82
  }
83
+ if ("r2" in m) {
84
+ throw new Error(
85
+ "marketing: top-level key r2 removed — homepage framework footer is driven by config/buyer-truth.v1.json",
86
+ );
87
+ }
84
88
  if (!Array.isArray(m.keywords) || m.keywords.length === 0) {
85
89
  throw new Error("marketing: keywords must be a non-empty array");
86
90
  }
@@ -116,11 +120,10 @@ function validateMarketingValue(m) {
116
120
  if (!cmd.includes("tools.json")) {
117
121
  throw new Error("marketing: packLedCommand must reference tools.json");
118
122
  }
119
- if (!Array.isArray(m.integratePage.requirements) || m.integratePage.requirements.length < 1) {
120
- throw new Error("marketing: integratePage.requirements must be a non-empty array");
121
- }
122
- if (m.integratePage.requirements.length < 1 || m.integratePage.requirements.length > 5) {
123
- throw new Error("marketing: integratePage.requirements must have 1–5 items");
123
+ if ("requirements" in m.integratePage) {
124
+ throw new Error(
125
+ "marketing: integratePage.requirements removed — use Buyer Truth integrateRequirements (/integrate page)",
126
+ );
124
127
  }
125
128
  const v = String(m.visitorProblemAnswer);
126
129
  if (v.toLowerCase().includes("causality")) {