@cross-deck/node 1.12.0 → 1.13.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/CHANGELOG.md CHANGED
@@ -6,6 +6,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.13.0] — 2026-07-26
10
+
11
+ - **Crossdeck Trust — the gate now carries the browser's human-proof token.** `GateInput` gains an optional `token`: pass the attestation minted by the Crossdeck Trust panel in the browser (`Crossdeck.trust.panel(...)` / `<CrossdeckTrust>` in `@cross-deck/web`) and `gate()` forwards it as `challengeToken` to `/v1/trust/gate`, completing the SDK-native round trip. A real browser carries one; a server-to-server bot has none — that absence is scored, and in strict mode (`requireHumanProof`) a tokenless + suspicious attempt is the confident block. Optional and fail-open: omitting it never blocks on its own, and `gate()` remains fail-open by contract (a glitch returns `{ action: "allow", degraded: true }`, never a throw or a false block).
12
+
13
+ ## [1.12.1] — 2026-07-23
14
+
15
+ - **Reliability telemetry re-pointed to the live project.** The internal `crossdeck.contract_failed` self-check channel used a retired reliability-workspace key that had begun returning `401 invalid_api_key`, silently dropping failures; it now targets the live "Crossdeck Health Check" project. Internal SDK-health only — never touches your dashboard or your app. (No API changes; the anonymous-`reset()` hardening in the other SDKs does not apply — the Node SDK has no persistent device identity to churn.)
16
+
9
17
  ## [1.12.0] — 2026-07-01
10
18
 
11
19
  **Added — `blockEventId`: the Crossdeck-hosted block page (v2 preview).**
@@ -1,4 +1,4 @@
1
- import { x as CrossdeckServer } from '../crossdeck-server-CuTGwrwx.mjs';
1
+ import { x as CrossdeckServer } from '../crossdeck-server-CjnIok-o.mjs';
2
2
  import 'node:events';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { x as CrossdeckServer } from '../crossdeck-server-CuTGwrwx.js';
1
+ import { x as CrossdeckServer } from '../crossdeck-server-CjnIok-o.js';
2
2
  import 'node:events';
3
3
 
4
4
  /**
@@ -549,6 +549,15 @@ interface GateInput {
549
549
  domain?: string;
550
550
  /** Optional device fingerprint — sharpens the composite signup score. */
551
551
  fingerprint?: string;
552
+ /**
553
+ * The human-proof attestation minted by the Crossdeck Trust panel in the browser
554
+ * (`Crossdeck.trust.panel(...)` / `<CrossdeckTrust>` in @cross-deck/web). Forward
555
+ * whatever the client delivered. A real browser carries one; a server-to-server
556
+ * bot has none — that absence is scored, and in strict mode (`requireHumanProof`)
557
+ * a tokenless + suspicious attempt is the confident block. Optional and fail-open:
558
+ * omitting it never blocks on its own.
559
+ */
560
+ token?: string;
552
561
  }
553
562
  /**
554
563
  * The signup-gate verdict from {@link CrossdeckServer.gate}. Fail-open: on any error these
@@ -549,6 +549,15 @@ interface GateInput {
549
549
  domain?: string;
550
550
  /** Optional device fingerprint — sharpens the composite signup score. */
551
551
  fingerprint?: string;
552
+ /**
553
+ * The human-proof attestation minted by the Crossdeck Trust panel in the browser
554
+ * (`Crossdeck.trust.panel(...)` / `<CrossdeckTrust>` in @cross-deck/web). Forward
555
+ * whatever the client delivered. A real browser carries one; a server-to-server
556
+ * bot has none — that absence is scored, and in strict mode (`requireHumanProof`)
557
+ * a tokenless + suspicious attempt is the confident block. Optional and fail-open:
558
+ * omitting it never blocks on its own.
559
+ */
560
+ token?: string;
552
561
  }
553
562
  /**
554
563
  * The signup-gate verdict from {@link CrossdeckServer.gate}. Fail-open: on any error these
package/dist/index.cjs CHANGED
@@ -387,12 +387,12 @@ function byteLength(s) {
387
387
  var https = __toESM(require("https"));
388
388
 
389
389
  // src/_version.ts
390
- var SDK_VERSION = "1.12.0";
390
+ var SDK_VERSION = "1.13.0";
391
391
  var SDK_NAME = "@cross-deck/node";
392
392
 
393
393
  // src/_diagnostic-telemetry.ts
394
394
  var DIAGNOSTIC_TELEMETRY_ENDPOINT = "https://api.cross-deck.com/v1/sdk/diagnostic";
395
- var DIAGNOSTIC_TELEMETRY_PUBLISHABLE_KEY = "cd_pub_live_9490e7aa029c432abf";
395
+ var DIAGNOSTIC_TELEMETRY_PUBLISHABLE_KEY = "cd_pub_live_eea2f84dbb834a45b7";
396
396
  function isDiagnosticTelemetryEnabled() {
397
397
  return !DIAGNOSTIC_TELEMETRY_PUBLISHABLE_KEY.startsWith(
398
398
  "cd_pub_RELIABILITY_PLACEHOLDER"
@@ -3309,7 +3309,11 @@ var CrossdeckServer = class extends import_node_events.EventEmitter {
3309
3309
  ...input.email ? { email: input.email } : {},
3310
3310
  ...input.ip ? { ip: input.ip } : {},
3311
3311
  ...input.domain ? { domain: input.domain } : {},
3312
- ...input.fingerprint ? { fingerprint: input.fingerprint } : {}
3312
+ ...input.fingerprint ? { fingerprint: input.fingerprint } : {},
3313
+ // The human-proof attestation from the Crossdeck Trust browser panel.
3314
+ // Verified server-side at the gate; its absence is scored, never a hard
3315
+ // block on its own (fail-open). Only sent when the client supplied one.
3316
+ ...input.token ? { challengeToken: input.token } : {}
3313
3317
  },
3314
3318
  signal: options?.signal,
3315
3319
  timeoutMs: options?.timeoutMs