agentskeptic 0.1.6 → 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 (136) hide show
  1. package/README.md +41 -99
  2. package/dist/cli.js +131 -34
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commercial/licensePreflight.d.ts +7 -2
  5. package/dist/commercial/licensePreflight.d.ts.map +1 -1
  6. package/dist/commercial/licensePreflight.js +6 -5
  7. package/dist/commercial/licensePreflight.js.map +1 -1
  8. package/dist/commercial/licensePreflight.test.js +23 -3
  9. package/dist/commercial/licensePreflight.test.js.map +1 -1
  10. package/dist/commercial/postVerifyOutcomeBeacon.d.ts +13 -0
  11. package/dist/commercial/postVerifyOutcomeBeacon.d.ts.map +1 -0
  12. package/dist/commercial/postVerifyOutcomeBeacon.js +33 -0
  13. package/dist/commercial/postVerifyOutcomeBeacon.js.map +1 -0
  14. package/dist/commercial/quickVerifyFunnelTerminalStatus.d.ts +5 -0
  15. package/dist/commercial/quickVerifyFunnelTerminalStatus.d.ts.map +1 -0
  16. package/dist/commercial/quickVerifyFunnelTerminalStatus.js +11 -0
  17. package/dist/commercial/quickVerifyFunnelTerminalStatus.js.map +1 -0
  18. package/dist/commercial/verifyWorkloadClassify.d.ts +17 -0
  19. package/dist/commercial/verifyWorkloadClassify.d.ts.map +1 -0
  20. package/dist/commercial/verifyWorkloadClassify.js +47 -0
  21. package/dist/commercial/verifyWorkloadClassify.js.map +1 -0
  22. package/dist/commercial/verifyWorkloadClassify.test.d.ts +2 -0
  23. package/dist/commercial/verifyWorkloadClassify.test.d.ts.map +1 -0
  24. package/dist/commercial/verifyWorkloadClassify.test.js +45 -0
  25. package/dist/commercial/verifyWorkloadClassify.test.js.map +1 -0
  26. package/dist/publicDistribution.generated.d.ts +2 -0
  27. package/dist/publicDistribution.generated.d.ts.map +1 -1
  28. package/dist/publicDistribution.generated.js +2 -0
  29. package/dist/publicDistribution.generated.js.map +1 -1
  30. package/dist/quickVerify/buildQuickContractEventsNdjson.d.ts +1 -0
  31. package/dist/quickVerify/buildQuickContractEventsNdjson.d.ts.map +1 -1
  32. package/dist/quickVerify/buildQuickContractEventsNdjson.js +11 -5
  33. package/dist/quickVerify/buildQuickContractEventsNdjson.js.map +1 -1
  34. package/dist/quickVerify/buildSyntheticRowParams.d.ts +7 -0
  35. package/dist/quickVerify/buildSyntheticRowParams.d.ts.map +1 -0
  36. package/dist/quickVerify/buildSyntheticRowParams.js +13 -0
  37. package/dist/quickVerify/buildSyntheticRowParams.js.map +1 -0
  38. package/dist/quickVerify/buildSyntheticRowParams.test.d.ts +2 -0
  39. package/dist/quickVerify/buildSyntheticRowParams.test.d.ts.map +1 -0
  40. package/dist/quickVerify/buildSyntheticRowParams.test.js +19 -0
  41. package/dist/quickVerify/buildSyntheticRowParams.test.js.map +1 -0
  42. package/dist/quickVerify/exportTool.d.ts +5 -0
  43. package/dist/quickVerify/exportTool.d.ts.map +1 -1
  44. package/dist/quickVerify/exportTool.js +19 -0
  45. package/dist/quickVerify/exportTool.js.map +1 -1
  46. package/dist/quickVerify/flatKeyToJsonPointer.d.ts +16 -0
  47. package/dist/quickVerify/flatKeyToJsonPointer.d.ts.map +1 -0
  48. package/dist/quickVerify/flatKeyToJsonPointer.js +44 -0
  49. package/dist/quickVerify/flatKeyToJsonPointer.js.map +1 -0
  50. package/dist/quickVerify/flatKeyToJsonPointer.test.d.ts +2 -0
  51. package/dist/quickVerify/flatKeyToJsonPointer.test.d.ts.map +1 -0
  52. package/dist/quickVerify/flatKeyToJsonPointer.test.js +19 -0
  53. package/dist/quickVerify/flatKeyToJsonPointer.test.js.map +1 -0
  54. package/dist/quickVerify/ingest.d.ts +1 -0
  55. package/dist/quickVerify/ingest.d.ts.map +1 -1
  56. package/dist/quickVerify/ingest.js +1 -1
  57. package/dist/quickVerify/ingest.js.map +1 -1
  58. package/dist/quickVerify/planRowUnit.pointer-promotion.test.d.ts +2 -0
  59. package/dist/quickVerify/planRowUnit.pointer-promotion.test.d.ts.map +1 -0
  60. package/dist/quickVerify/planRowUnit.pointer-promotion.test.js +30 -0
  61. package/dist/quickVerify/planRowUnit.pointer-promotion.test.js.map +1 -0
  62. package/dist/quickVerify/quickParamPointerNegatives.test.d.ts +2 -0
  63. package/dist/quickVerify/quickParamPointerNegatives.test.d.ts.map +1 -0
  64. package/dist/quickVerify/quickParamPointerNegatives.test.js +25 -0
  65. package/dist/quickVerify/quickParamPointerNegatives.test.js.map +1 -0
  66. package/dist/quickVerify/quickParamPointerPromotionGoldens.test.d.ts +2 -0
  67. package/dist/quickVerify/quickParamPointerPromotionGoldens.test.d.ts.map +1 -0
  68. package/dist/quickVerify/quickParamPointerPromotionGoldens.test.js +34 -0
  69. package/dist/quickVerify/quickParamPointerPromotionGoldens.test.js.map +1 -0
  70. package/dist/quickVerify/quickParamPointerReplay.test.d.ts +2 -0
  71. package/dist/quickVerify/quickParamPointerReplay.test.d.ts.map +1 -0
  72. package/dist/quickVerify/quickParamPointerReplay.test.js +23 -0
  73. package/dist/quickVerify/quickParamPointerReplay.test.js.map +1 -0
  74. package/dist/quickVerify/quickVerifyScope.d.ts +1 -1
  75. package/dist/quickVerify/quickVerifyScope.js +1 -1
  76. package/dist/quickVerify/rowUnit.d.ts +8 -0
  77. package/dist/quickVerify/rowUnit.d.ts.map +1 -1
  78. package/dist/quickVerify/rowUnit.js +17 -2
  79. package/dist/quickVerify/rowUnit.js.map +1 -1
  80. package/dist/quickVerify/runQuickVerify.d.ts.map +1 -1
  81. package/dist/quickVerify/runQuickVerify.js +69 -5
  82. package/dist/quickVerify/runQuickVerify.js.map +1 -1
  83. package/dist/quickVerify/verificationRequestFingerprint.d.ts +6 -0
  84. package/dist/quickVerify/verificationRequestFingerprint.d.ts.map +1 -0
  85. package/dist/quickVerify/verificationRequestFingerprint.js +23 -0
  86. package/dist/quickVerify/verificationRequestFingerprint.js.map +1 -0
  87. package/dist/quickVerify/verificationRequestFingerprint.test.d.ts +2 -0
  88. package/dist/quickVerify/verificationRequestFingerprint.test.d.ts.map +1 -0
  89. package/dist/quickVerify/verificationRequestFingerprint.test.js +26 -0
  90. package/dist/quickVerify/verificationRequestFingerprint.test.js.map +1 -0
  91. package/dist/standardVerifyWorkflowCli.d.ts +13 -0
  92. package/dist/standardVerifyWorkflowCli.d.ts.map +1 -1
  93. package/dist/standardVerifyWorkflowCli.js +32 -19
  94. package/dist/standardVerifyWorkflowCli.js.map +1 -1
  95. package/dist/telemetry/cliInstallId.d.ts +8 -0
  96. package/dist/telemetry/cliInstallId.d.ts.map +1 -0
  97. package/dist/telemetry/cliInstallId.js +72 -0
  98. package/dist/telemetry/cliInstallId.js.map +1 -0
  99. package/dist/telemetry/fetchWithTimeout.d.ts +6 -0
  100. package/dist/telemetry/fetchWithTimeout.d.ts.map +1 -0
  101. package/dist/telemetry/fetchWithTimeout.js +15 -0
  102. package/dist/telemetry/fetchWithTimeout.js.map +1 -0
  103. package/dist/telemetry/maybeEmitOssClaimTicketUrl.d.ts +8 -0
  104. package/dist/telemetry/maybeEmitOssClaimTicketUrl.d.ts.map +1 -0
  105. package/dist/telemetry/maybeEmitOssClaimTicketUrl.js +22 -0
  106. package/dist/telemetry/maybeEmitOssClaimTicketUrl.js.map +1 -0
  107. package/dist/telemetry/ossClaimOrigin.d.ts +6 -0
  108. package/dist/telemetry/ossClaimOrigin.d.ts.map +1 -0
  109. package/dist/telemetry/ossClaimOrigin.js +9 -0
  110. package/dist/telemetry/ossClaimOrigin.js.map +1 -0
  111. package/dist/telemetry/ossClaimOrigin.test.d.ts +2 -0
  112. package/dist/telemetry/ossClaimOrigin.test.d.ts.map +1 -0
  113. package/dist/telemetry/ossClaimOrigin.test.js +9 -0
  114. package/dist/telemetry/ossClaimOrigin.test.js.map +1 -0
  115. package/dist/telemetry/postOssClaimTicket.d.ts +14 -0
  116. package/dist/telemetry/postOssClaimTicket.d.ts.map +1 -0
  117. package/dist/telemetry/postOssClaimTicket.js +42 -0
  118. package/dist/telemetry/postOssClaimTicket.js.map +1 -0
  119. package/dist/telemetry/postProductActivationEvent.d.ts +25 -0
  120. package/dist/telemetry/postProductActivationEvent.d.ts.map +1 -0
  121. package/dist/telemetry/postProductActivationEvent.js +71 -0
  122. package/dist/telemetry/postProductActivationEvent.js.map +1 -0
  123. package/dist/telemetry/postProductActivationEvent.test.d.ts +2 -0
  124. package/dist/telemetry/postProductActivationEvent.test.d.ts.map +1 -0
  125. package/dist/telemetry/postProductActivationEvent.test.js +65 -0
  126. package/dist/telemetry/postProductActivationEvent.test.js.map +1 -0
  127. package/dist/telemetry/productActivationHeaders.d.ts +5 -0
  128. package/dist/telemetry/productActivationHeaders.d.ts.map +1 -0
  129. package/dist/telemetry/productActivationHeaders.js +5 -0
  130. package/dist/telemetry/productActivationHeaders.js.map +1 -0
  131. package/dist/telemetry/resolveTelemetrySource.d.ts +7 -0
  132. package/dist/telemetry/resolveTelemetrySource.d.ts.map +1 -0
  133. package/dist/telemetry/resolveTelemetrySource.js +10 -0
  134. package/dist/telemetry/resolveTelemetrySource.js.map +1 -0
  135. package/package.json +7 -6
  136. package/schemas/quick-verify-report.schema.json +1 -1
@@ -0,0 +1,22 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { LICENSE_PREFLIGHT_ENABLED } from "../generated/commercialBuildFlags.js";
3
+ import { resolveOssClaimApiOrigin } from "./ossClaimOrigin.js";
4
+ import { postOssClaimTicket } from "./postOssClaimTicket.js";
5
+ export async function maybeEmitOssClaimTicketUrlToStderr(input) {
6
+ if (LICENSE_PREFLIGHT_ENABLED)
7
+ return;
8
+ if (process.env.AGENTSKEPTIC_OSS_CLAIM_STDERR?.trim() === "0")
9
+ return;
10
+ if (process.env.AGENTSKEPTIC_TELEMETRY?.trim() === "0")
11
+ return;
12
+ const claim_secret = randomBytes(32).toString("hex");
13
+ const issued_at = new Date().toISOString();
14
+ const ok = await postOssClaimTicket({ claim_secret, issued_at, ...input });
15
+ if (!ok) {
16
+ console.error("[agentskeptic] Could not register a claim link (network). When you are online, run verify again to get a new link, or sign in at the product site without this shortcut.");
17
+ return;
18
+ }
19
+ const url = `${resolveOssClaimApiOrigin()}/claim#${claim_secret}`;
20
+ console.error(`[agentskeptic] Link this verification run to your account (same browser): ${url}`);
21
+ }
22
+ //# sourceMappingURL=maybeEmitOssClaimTicketUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maybeEmitOssClaimTicketUrl.js","sourceRoot":"","sources":["../../src/telemetry/maybeEmitOssClaimTicketUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,KAMxD;IACC,IAAI,yBAAyB;QAAE,OAAO;IACtC,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,IAAI,EAAE,KAAK,GAAG;QAAE,OAAO;IACtE,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,KAAK,GAAG;QAAE,OAAO;IAE/D,MAAM,YAAY,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,EAAE,GAAG,MAAM,kBAAkB,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,CAAC,KAAK,CACX,0KAA0K,CAC3K,CAAC;QACF,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,wBAAwB,EAAE,UAAU,YAAY,EAAE,CAAC;IAClE,OAAO,CAAC,KAAK,CAAC,6EAA6E,GAAG,EAAE,CAAC,CAAC;AACpG,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * OSS claim-ticket POST base (v1): canonical public site origin only — no env overrides.
3
+ * Normative: docs/oss-account-claim-ssot.md
4
+ */
5
+ export declare function resolveOssClaimApiOrigin(): string;
6
+ //# sourceMappingURL=ossClaimOrigin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ossClaimOrigin.d.ts","sourceRoot":"","sources":["../../src/telemetry/ossClaimOrigin.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD"}
@@ -0,0 +1,9 @@
1
+ import { PUBLIC_CANONICAL_SITE_ORIGIN } from "../publicDistribution.generated.js";
2
+ /**
3
+ * OSS claim-ticket POST base (v1): canonical public site origin only — no env overrides.
4
+ * Normative: docs/oss-account-claim-ssot.md
5
+ */
6
+ export function resolveOssClaimApiOrigin() {
7
+ return PUBLIC_CANONICAL_SITE_ORIGIN.replace(/\/$/, "");
8
+ }
9
+ //# sourceMappingURL=ossClaimOrigin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ossClaimOrigin.js","sourceRoot":"","sources":["../../src/telemetry/ossClaimOrigin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAElF;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,4BAA4B,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ossClaimOrigin.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ossClaimOrigin.test.d.ts","sourceRoot":"","sources":["../../src/telemetry/ossClaimOrigin.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { PUBLIC_CANONICAL_SITE_ORIGIN } from "../publicDistribution.generated.js";
3
+ import { resolveOssClaimApiOrigin } from "./ossClaimOrigin.js";
4
+ describe("resolveOssClaimApiOrigin", () => {
5
+ it("matches trimmed PUBLIC_CANONICAL_SITE_ORIGIN", () => {
6
+ expect(resolveOssClaimApiOrigin()).toBe(PUBLIC_CANONICAL_SITE_ORIGIN.replace(/\/$/, ""));
7
+ });
8
+ });
9
+ //# sourceMappingURL=ossClaimOrigin.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ossClaimOrigin.test.js","sourceRoot":"","sources":["../../src/telemetry/ossClaimOrigin.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,wBAAwB,EAAE,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ export type PostOssClaimTicketInput = {
2
+ claim_secret: string;
3
+ run_id: string;
4
+ issued_at: string;
5
+ terminal_status: "complete" | "inconsistent" | "incomplete";
6
+ workload_class: "bundled_examples" | "non_bundled";
7
+ subcommand: "batch_verify" | "quick_verify";
8
+ build_profile: "oss" | "commercial";
9
+ };
10
+ /**
11
+ * Best-effort POST /api/oss/claim-ticket to canonical origin. Returns whether server accepted (204).
12
+ */
13
+ export declare function postOssClaimTicket(input: PostOssClaimTicketInput): Promise<boolean>;
14
+ //# sourceMappingURL=postOssClaimTicket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postOssClaimTicket.d.ts","sourceRoot":"","sources":["../../src/telemetry/postOssClaimTicket.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,UAAU,GAAG,cAAc,GAAG,YAAY,CAAC;IAC5D,cAAc,EAAE,kBAAkB,GAAG,aAAa,CAAC;IACnD,UAAU,EAAE,cAAc,GAAG,cAAc,CAAC;IAC5C,aAAa,EAAE,KAAK,GAAG,YAAY,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,CAkCzF"}
@@ -0,0 +1,42 @@
1
+ import { AGENTSKEPTIC_CLI_SEMVER } from "../publicDistribution.generated.js";
2
+ import { fetchWithTimeout } from "./fetchWithTimeout.js";
3
+ import { PRODUCT_ACTIVATION_CLI_PRODUCT_HEADER, PRODUCT_ACTIVATION_CLI_PRODUCT_VALUE, PRODUCT_ACTIVATION_CLI_VERSION_HEADER, } from "./productActivationHeaders.js";
4
+ import { resolveOssClaimApiOrigin } from "./ossClaimOrigin.js";
5
+ import { resolveTelemetrySource } from "./resolveTelemetrySource.js";
6
+ const OSS_CLAIM_TICKET_FETCH_TIMEOUT_MS = 400;
7
+ /**
8
+ * Best-effort POST /api/oss/claim-ticket to canonical origin. Returns whether server accepted (204).
9
+ */
10
+ export async function postOssClaimTicket(input) {
11
+ if (process.env.AGENTSKEPTIC_TELEMETRY?.trim() === "0")
12
+ return false;
13
+ const base = resolveOssClaimApiOrigin();
14
+ const url = `${base}/api/oss/claim-ticket`;
15
+ const telemetry_source = resolveTelemetrySource();
16
+ try {
17
+ const res = await fetchWithTimeout(url, {
18
+ method: "POST",
19
+ headers: {
20
+ "Content-Type": "application/json",
21
+ [PRODUCT_ACTIVATION_CLI_PRODUCT_HEADER]: PRODUCT_ACTIVATION_CLI_PRODUCT_VALUE,
22
+ [PRODUCT_ACTIVATION_CLI_VERSION_HEADER]: AGENTSKEPTIC_CLI_SEMVER,
23
+ },
24
+ body: JSON.stringify({
25
+ schema_version: 2,
26
+ telemetry_source,
27
+ claim_secret: input.claim_secret,
28
+ run_id: input.run_id,
29
+ issued_at: input.issued_at,
30
+ terminal_status: input.terminal_status,
31
+ workload_class: input.workload_class,
32
+ subcommand: input.subcommand,
33
+ build_profile: input.build_profile,
34
+ }),
35
+ }, OSS_CLAIM_TICKET_FETCH_TIMEOUT_MS);
36
+ return res.ok && res.status === 204;
37
+ }
38
+ catch {
39
+ return false;
40
+ }
41
+ }
42
+ //# sourceMappingURL=postOssClaimTicket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postOssClaimTicket.js","sourceRoot":"","sources":["../../src/telemetry/postOssClaimTicket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,qCAAqC,EACrC,oCAAoC,EACpC,qCAAqC,GACtC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,iCAAiC,GAAG,GAAG,CAAC;AAY9C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAA8B;IACrE,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IAErE,MAAM,IAAI,GAAG,wBAAwB,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,GAAG,IAAI,uBAAuB,CAAC;IAC3C,MAAM,gBAAgB,GAAG,sBAAsB,EAAE,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAChC,GAAG,EACH;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,CAAC,qCAAqC,CAAC,EAAE,oCAAoC;gBAC7E,CAAC,qCAAqC,CAAC,EAAE,uBAAuB;aACjE;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,cAAc,EAAE,CAAU;gBAC1B,gBAAgB;gBAChB,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,aAAa,EAAE,KAAK,CAAC,aAAa;aACnC,CAAC;SACH,EACD,iCAAiC,CAClC,CAAC;QACF,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,25 @@
1
+ export type ProductActivationBuildProfile = "oss" | "commercial";
2
+ export type PostProductActivationStartedInput = {
3
+ phase: "verify_started";
4
+ run_id: string;
5
+ issued_at: string;
6
+ workload_class: "bundled_examples" | "non_bundled";
7
+ subcommand: "batch_verify" | "quick_verify";
8
+ build_profile: ProductActivationBuildProfile;
9
+ };
10
+ export type PostProductActivationOutcomeInput = {
11
+ phase: "verify_outcome";
12
+ run_id: string;
13
+ issued_at: string;
14
+ workload_class: "bundled_examples" | "non_bundled";
15
+ subcommand: "batch_verify" | "quick_verify";
16
+ build_profile: ProductActivationBuildProfile;
17
+ terminal_status: "complete" | "inconsistent" | "incomplete";
18
+ };
19
+ export type PostProductActivationEventInput = PostProductActivationStartedInput | PostProductActivationOutcomeInput;
20
+ /**
21
+ * Best-effort POST to product-activation funnel. Never throws.
22
+ * Disabled when AGENTSKEPTIC_TELEMETRY=0.
23
+ */
24
+ export declare function postProductActivationEvent(input: PostProductActivationEventInput): Promise<void>;
25
+ //# sourceMappingURL=postProductActivationEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postProductActivationEvent.d.ts","sourceRoot":"","sources":["../../src/telemetry/postProductActivationEvent.ts"],"names":[],"mappings":"AA4BA,MAAM,MAAM,6BAA6B,GAAG,KAAK,GAAG,YAAY,CAAC;AAEjE,MAAM,MAAM,iCAAiC,GAAG;IAC9C,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,kBAAkB,GAAG,aAAa,CAAC;IACnD,UAAU,EAAE,cAAc,GAAG,cAAc,CAAC;IAC5C,aAAa,EAAE,6BAA6B,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,kBAAkB,GAAG,aAAa,CAAC;IACnD,UAAU,EAAE,cAAc,GAAG,cAAc,CAAC;IAC5C,aAAa,EAAE,6BAA6B,CAAC;IAC7C,eAAe,EAAE,UAAU,GAAG,cAAc,GAAG,YAAY,CAAC;CAC7D,CAAC;AAEF,MAAM,MAAM,+BAA+B,GACvC,iCAAiC,GACjC,iCAAiC,CAAC;AAEtC;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,+BAA+B,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDtG"}
@@ -0,0 +1,71 @@
1
+ import { LICENSE_API_BASE_URL, LICENSE_PREFLIGHT_ENABLED, } from "../generated/commercialBuildFlags.js";
2
+ import { AGENTSKEPTIC_CLI_SEMVER, PUBLIC_CANONICAL_SITE_ORIGIN, } from "../publicDistribution.generated.js";
3
+ import { getOrCreateInstallId } from "./cliInstallId.js";
4
+ import { fetchWithTimeout } from "./fetchWithTimeout.js";
5
+ import { resolveTelemetrySource } from "./resolveTelemetrySource.js";
6
+ import { PRODUCT_ACTIVATION_CLI_PRODUCT_HEADER, PRODUCT_ACTIVATION_CLI_PRODUCT_VALUE, PRODUCT_ACTIVATION_CLI_VERSION_HEADER, } from "./productActivationHeaders.js";
7
+ const TELEMETRY_FETCH_TIMEOUT_MS = 400;
8
+ function resolveTelemetryBaseUrl() {
9
+ const override = process.env.AGENTSKEPTIC_TELEMETRY_ORIGIN?.trim();
10
+ if (override)
11
+ return override.replace(/\/$/, "");
12
+ if (LICENSE_PREFLIGHT_ENABLED && LICENSE_API_BASE_URL.trim()) {
13
+ return LICENSE_API_BASE_URL.replace(/\/$/, "");
14
+ }
15
+ return PUBLIC_CANONICAL_SITE_ORIGIN.replace(/\/$/, "");
16
+ }
17
+ /**
18
+ * Best-effort POST to product-activation funnel. Never throws.
19
+ * Disabled when AGENTSKEPTIC_TELEMETRY=0.
20
+ */
21
+ export async function postProductActivationEvent(input) {
22
+ if (process.env.AGENTSKEPTIC_TELEMETRY?.trim() === "0")
23
+ return;
24
+ const funnelAnonId = process.env.AGENTSKEPTIC_FUNNEL_ANON_ID?.trim();
25
+ const funnelAnonPayload = funnelAnonId && funnelAnonId.length > 0 ? { funnel_anon_id: funnelAnonId } : {};
26
+ const install_id = getOrCreateInstallId();
27
+ const telemetry_source = resolveTelemetrySource();
28
+ const base = resolveTelemetryBaseUrl();
29
+ const url = `${base}/api/funnel/product-activation`;
30
+ const body = input.phase === "verify_started"
31
+ ? {
32
+ event: "verify_started",
33
+ schema_version: 2,
34
+ run_id: input.run_id,
35
+ issued_at: input.issued_at,
36
+ workload_class: input.workload_class,
37
+ subcommand: input.subcommand,
38
+ build_profile: input.build_profile,
39
+ telemetry_source,
40
+ install_id,
41
+ ...funnelAnonPayload,
42
+ }
43
+ : {
44
+ event: "verify_outcome",
45
+ schema_version: 2,
46
+ run_id: input.run_id,
47
+ issued_at: input.issued_at,
48
+ workload_class: input.workload_class,
49
+ subcommand: input.subcommand,
50
+ build_profile: input.build_profile,
51
+ terminal_status: input.terminal_status,
52
+ telemetry_source,
53
+ install_id,
54
+ ...funnelAnonPayload,
55
+ };
56
+ try {
57
+ await fetchWithTimeout(url, {
58
+ method: "POST",
59
+ headers: {
60
+ "Content-Type": "application/json",
61
+ [PRODUCT_ACTIVATION_CLI_PRODUCT_HEADER]: PRODUCT_ACTIVATION_CLI_PRODUCT_VALUE,
62
+ [PRODUCT_ACTIVATION_CLI_VERSION_HEADER]: AGENTSKEPTIC_CLI_SEMVER,
63
+ },
64
+ body: JSON.stringify(body),
65
+ }, TELEMETRY_FETCH_TIMEOUT_MS);
66
+ }
67
+ catch {
68
+ /* ignore */
69
+ }
70
+ }
71
+ //# sourceMappingURL=postProductActivationEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postProductActivationEvent.js","sourceRoot":"","sources":["../../src/telemetry/postProductActivationEvent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=postProductActivationEvent.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postProductActivationEvent.test.d.ts","sourceRoot":"","sources":["../../src/telemetry/postProductActivationEvent.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,65 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
+ import { postProductActivationEvent } from "./postProductActivationEvent.js";
3
+ describe("postProductActivationEvent", () => {
4
+ beforeEach(() => {
5
+ delete process.env.AGENTSKEPTIC_TELEMETRY;
6
+ delete process.env.AGENTSKEPTIC_TELEMETRY_ORIGIN;
7
+ delete process.env.AGENTSKEPTIC_TELEMETRY_SOURCE;
8
+ });
9
+ afterEach(() => {
10
+ vi.unstubAllGlobals();
11
+ vi.unstubAllEnvs();
12
+ });
13
+ it("does not call fetch when AGENTSKEPTIC_TELEMETRY=0", async () => {
14
+ const fetchMock = vi.fn();
15
+ vi.stubGlobal("fetch", fetchMock);
16
+ process.env.AGENTSKEPTIC_TELEMETRY = "0";
17
+ await postProductActivationEvent({
18
+ phase: "verify_started",
19
+ run_id: "r1",
20
+ issued_at: new Date().toISOString(),
21
+ workload_class: "non_bundled",
22
+ subcommand: "batch_verify",
23
+ build_profile: "oss",
24
+ });
25
+ expect(fetchMock).not.toHaveBeenCalled();
26
+ });
27
+ it("POSTs verify_started with CLI headers and does not throw on fetch failure", async () => {
28
+ const fetchMock = vi.fn().mockRejectedValue(new Error("network down"));
29
+ vi.stubGlobal("fetch", fetchMock);
30
+ await postProductActivationEvent({
31
+ phase: "verify_started",
32
+ run_id: "r2",
33
+ issued_at: new Date().toISOString(),
34
+ workload_class: "bundled_examples",
35
+ subcommand: "quick_verify",
36
+ build_profile: "oss",
37
+ });
38
+ expect(fetchMock).toHaveBeenCalledTimes(1);
39
+ const [, init] = fetchMock.mock.calls[0];
40
+ expect(init).toMatchObject({ method: "POST" });
41
+ const headers = init.headers;
42
+ expect(headers["X-AgentSkeptic-Product"]).toBe("cli");
43
+ expect(headers["X-AgentSkeptic-Cli-Version"]).toMatch(/^\d+\.\d+\.\d+/);
44
+ const body = JSON.parse(init.body);
45
+ expect(body.schema_version).toBe(2);
46
+ expect(body.telemetry_source).toBe("unknown");
47
+ });
48
+ it("POSTs telemetry_source local_dev when AGENTSKEPTIC_TELEMETRY_SOURCE=local_dev", async () => {
49
+ const fetchMock = vi.fn().mockResolvedValue({ ok: true, status: 204 });
50
+ vi.stubGlobal("fetch", fetchMock);
51
+ process.env.AGENTSKEPTIC_TELEMETRY_SOURCE = "local_dev";
52
+ await postProductActivationEvent({
53
+ phase: "verify_started",
54
+ run_id: "r-local",
55
+ issued_at: new Date().toISOString(),
56
+ workload_class: "non_bundled",
57
+ subcommand: "batch_verify",
58
+ build_profile: "oss",
59
+ });
60
+ const [, init] = fetchMock.mock.calls[0];
61
+ const body = JSON.parse(init.body);
62
+ expect(body.telemetry_source).toBe("local_dev");
63
+ });
64
+ });
65
+ //# sourceMappingURL=postProductActivationEvent.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postProductActivationEvent.test.js","sourceRoot":"","sources":["../../src/telemetry/postProductActivationEvent.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Must match website/src/lib/funnelProductActivationConstants.ts */
2
+ export declare const PRODUCT_ACTIVATION_CLI_PRODUCT_HEADER = "X-AgentSkeptic-Product";
3
+ export declare const PRODUCT_ACTIVATION_CLI_VERSION_HEADER = "X-AgentSkeptic-Cli-Version";
4
+ export declare const PRODUCT_ACTIVATION_CLI_PRODUCT_VALUE = "cli";
5
+ //# sourceMappingURL=productActivationHeaders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"productActivationHeaders.d.ts","sourceRoot":"","sources":["../../src/telemetry/productActivationHeaders.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,eAAO,MAAM,qCAAqC,2BAA2B,CAAC;AAC9E,eAAO,MAAM,qCAAqC,+BAA+B,CAAC;AAClF,eAAO,MAAM,oCAAoC,QAAQ,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** Must match website/src/lib/funnelProductActivationConstants.ts */
2
+ export const PRODUCT_ACTIVATION_CLI_PRODUCT_HEADER = "X-AgentSkeptic-Product";
3
+ export const PRODUCT_ACTIVATION_CLI_VERSION_HEADER = "X-AgentSkeptic-Cli-Version";
4
+ export const PRODUCT_ACTIVATION_CLI_PRODUCT_VALUE = "cli";
5
+ //# sourceMappingURL=productActivationHeaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"productActivationHeaders.js","sourceRoot":"","sources":["../../src/telemetry/productActivationHeaders.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,CAAC,MAAM,qCAAqC,GAAG,wBAAwB,CAAC;AAC9E,MAAM,CAAC,MAAM,qCAAqC,GAAG,4BAA4B,CAAC;AAClF,MAAM,CAAC,MAAM,oCAAoC,GAAG,KAAK,CAAC"}
@@ -0,0 +1,7 @@
1
+ /** Client-declared telemetry bucket for product-activation / OSS claim v2 bodies. */
2
+ export type TelemetrySourceWire = "local_dev" | "unknown";
3
+ /**
4
+ * OSS / activation v2: `local_dev` only when operator sets AGENTSKEPTIC_TELEMETRY_SOURCE=local_dev; else `unknown`.
5
+ */
6
+ export declare function resolveTelemetrySource(): TelemetrySourceWire;
7
+ //# sourceMappingURL=resolveTelemetrySource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveTelemetrySource.d.ts","sourceRoot":"","sources":["../../src/telemetry/resolveTelemetrySource.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,SAAS,CAAC;AAE1D;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,mBAAmB,CAK5D"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * OSS / activation v2: `local_dev` only when operator sets AGENTSKEPTIC_TELEMETRY_SOURCE=local_dev; else `unknown`.
3
+ */
4
+ export function resolveTelemetrySource() {
5
+ if (process.env.AGENTSKEPTIC_TELEMETRY_SOURCE?.trim() === "local_dev") {
6
+ return "local_dev";
7
+ }
8
+ return "unknown";
9
+ }
10
+ //# sourceMappingURL=resolveTelemetrySource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveTelemetrySource.js","sourceRoot":"","sources":["../../src/telemetry/resolveTelemetrySource.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC;QACtE,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agentskeptic",
3
- "version": "0.1.6",
4
- "description": "Green agent traces and tool success flags often hide missing or wrong database rows. AgentSkeptic runs read-only SQL at verification time against persisted state vs structured tool activitynot chat narratives.",
3
+ "version": "0.1.7",
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
7
  "workspaces": [
@@ -18,13 +18,13 @@
18
18
  "start": "npm run build && node scripts/demo.mjs",
19
19
  "dev": "npm run dev -w agentskeptic-web",
20
20
  "test:vitest": "vitest run",
21
- "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/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/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/docs-enforce-stream-contract.test.mjs test/docs-quick-enforce-link.test.mjs test/commercial-pricing-policy-parity.test.mjs test/distribution-requirement-clauses.test.mjs test/distribution-traceability-literals.test.mjs test/distribution-ssot-clause-coverage.test.mjs test/distribution-consumer-pipeline.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/dependency-security-pins.schema.contract.test.mjs test/drizzle-identifier-safety.contract.test.mjs",
21
+ "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/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/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/docs-enforce-stream-contract.test.mjs test/docs-quick-enforce-link.test.mjs test/commercial-pricing-policy-parity.test.mjs test/distribution-requirement-clauses.test.mjs test/distribution-traceability-literals.test.mjs test/distribution-ssot-clause-coverage.test.mjs test/distribution-consumer-pipeline.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-fixtures-present.mjs test/quick-param-pointer-version-1-2-0-surfaces.mjs test/docs-quick-param-pointer-ssot.mjs test/quick-param-pointer-i9-gate.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",
22
22
  "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",
23
23
  "test:workflow-truth-contract": "node --test --test-force-exit test/ci-workflow-truth-postgres-contract.test.mjs",
24
24
  "validate-ttfv": "node scripts/validate-ttfv.mjs",
25
- "test": "npm run build && npm run test:vitest && npm run test:vitest -w agentskeptic-web -- __tests__/langgraph-reference-primacy.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",
25
+ "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",
26
26
  "test:debug-ui": "playwright test",
27
- "test:ci": "npm run build && npm run test:vitest && npm run test:vitest -w agentskeptic-web -- __tests__/langgraph-reference-primacy.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",
27
+ "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",
28
28
  "example:workflow-hook": "npm run build && node examples/workflow-runner.mjs",
29
29
  "agentskeptic": "node dist/cli.js",
30
30
  "migrate:workflow-result-v11": "npm run build && node scripts/migrate-workflow-result-v11.mjs",
@@ -47,6 +47,7 @@
47
47
  "sync-integrator-docs-embedded": "node scripts/sync-integrator-docs-embedded.mjs",
48
48
  "check:partner-quickstart-ssot": "node scripts/check-partner-quickstart-ssot.mjs",
49
49
  "partner-quickstart": "node scripts/partner-quickstart-verify.mjs",
50
+ "first-run-verify": "node scripts/partner-quickstart-verify.mjs",
50
51
  "generate:langgraph-guide-embed": "node scripts/embed/generate-langgraph-guide-embed.mjs"
51
52
  },
52
53
  "engines": {
@@ -81,7 +82,7 @@
81
82
  "type": "git",
82
83
  "url": "git+https://github.com/jwekavanagh/agentskeptic.git"
83
84
  },
84
- "homepage": "https://agentskeptic.com",
85
+ "homepage": "https://agentskeptic.com/database-truth-vs-traces",
85
86
  "bugs": {
86
87
  "url": "https://github.com/jwekavanagh/agentskeptic/issues"
87
88
  },
@@ -30,7 +30,7 @@
30
30
  "groundTruth"
31
31
  ],
32
32
  "properties": {
33
- "quickVerifyVersion": { "type": "string", "const": "1.1.0" },
33
+ "quickVerifyVersion": { "type": "string", "const": "1.2.0" },
34
34
  "capabilities": {
35
35
  "type": "array",
36
36
  "const": ["inferred_row", "inferred_related_exists"]