@relaycast/engine 2.3.0 → 2.5.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.
@@ -1,24 +1,29 @@
1
- import { type TelemetryOrigin } from '@relaycast/types';
1
+ import { type TelemetryOrigin } from "@relaycast/types";
2
2
  export type OriginInfo = Partial<TelemetryOrigin>;
3
3
  /**
4
4
  * HTTP header used by harnesses (Claude Code, Cursor, etc.) to identify
5
5
  * themselves to the relaycast server. See relay#881.
6
6
  */
7
7
  export declare const HARNESS_HEADER = "X-Relaycast-Harness";
8
- /** Fallback value when the header is missing or invalid. */
8
+ export declare const AGENT_RELAY_DISTINCT_ID_HEADER = "X-Agent-Relay-Distinct-Id";
9
+ export declare const AGENT_RELAY_DISTINCT_ID_QUERY = "agent_relay_distinct_id";
10
+ /** Fallback value when the harness is missing or invalid. */
9
11
  export declare const UNKNOWN_HARNESS = "unknown";
10
12
  /**
11
- * Read and sanitize the `X-Relaycast-Harness` header from a request.
13
+ * Read and sanitize the harness identifier from a request.
12
14
  *
13
- * Returns a lowercase identifier (kebab-case by convention, e.g. `claude-code`,
14
- * `cursor`, `codex`). We intentionally do NOT enforce an enum here — accepting
15
- * any well-formed value lets us discover new harnesses without shipping a
16
- * relaycast release first. Segmentation/normalization happens downstream in
17
- * the analytics layer.
15
+ * Read from the `X-Relaycast-Harness` header, falling back to the `harness`
16
+ * query param (WebSocket upgrades from browsers can't set custom headers, so
17
+ * the SDK forwards it on the query string mirrors how origin fields work).
18
18
  *
19
- * Drops empty, oversized, or non-ASCII values to `'unknown'`.
19
+ * Returns a lowercase, UA-style identifier (e.g. `claude-code`, `codex`,
20
+ * `claude-code/2.3 (model=opus-4.8; fast)`). We intentionally do NOT enforce an
21
+ * enum here — accepting any well-formed value lets us discover new harnesses
22
+ * without shipping a relaycast release first; segmentation happens downstream
23
+ * in the analytics layer. Drops empty or malformed values to `'unknown'`.
20
24
  */
21
- export declare function extractHarness(headers: Headers): string;
25
+ export declare function extractHarness(request: Request): string;
26
+ export declare function extractAgentRelayDistinctId(request: Request): string | undefined;
22
27
  export declare function deriveClientName(headers: Headers): string | undefined;
23
28
  export declare function extractOriginInfo(request: Request, fallbackClientName?: string): OriginInfo;
24
29
  export declare function requiredOriginInfo(request: Request, fallbackClientName?: string): TelemetryOrigin;
@@ -1 +1 @@
1
- {"version":3,"file":"origin.d.ts","sourceRoot":"","sources":["../../src/lib/origin.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAElF,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,cAAc,wBAAwB,CAAC;AAEpD,4DAA4D;AAC5D,eAAO,MAAM,eAAe,YAAY,CAAC;AAKzC;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAavD;AASD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAQrE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,UAAU,CAgC3F;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,eAAe,CAEjG"}
1
+ {"version":3,"file":"origin.d.ts","sourceRoot":"","sources":["../../src/lib/origin.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,cAAc,wBAAwB,CAAC;AACpD,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAC1E,eAAO,MAAM,6BAA6B,4BAA4B,CAAC;AAEvE,6DAA6D;AAC7D,eAAO,MAAM,eAAe,YAAY,CAAC;AAczC;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAWvD;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,GACf,MAAM,GAAG,SAAS,CAWpB;AAYD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CASrE;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,UAAU,CAkCZ;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,eAAe,CAIjB"}
@@ -1,39 +1,59 @@
1
- import { normalizeTelemetryOrigin } from '@relaycast/types';
1
+ import { normalizeTelemetryOrigin, } from "@relaycast/types";
2
2
  /**
3
3
  * HTTP header used by harnesses (Claude Code, Cursor, etc.) to identify
4
4
  * themselves to the relaycast server. See relay#881.
5
5
  */
6
- export const HARNESS_HEADER = 'X-Relaycast-Harness';
7
- /** Fallback value when the header is missing or invalid. */
8
- export const UNKNOWN_HARNESS = 'unknown';
9
- /** Sanity-cap on the header value long enough for any reasonable identifier. */
10
- const HARNESS_MAX_LENGTH = 40;
6
+ export const HARNESS_HEADER = "X-Relaycast-Harness";
7
+ export const AGENT_RELAY_DISTINCT_ID_HEADER = "X-Agent-Relay-Distinct-Id";
8
+ export const AGENT_RELAY_DISTINCT_ID_QUERY = "agent_relay_distinct_id";
9
+ /** Fallback value when the harness is missing or invalid. */
10
+ export const UNKNOWN_HARNESS = "unknown";
11
+ /** Upper bound on the harness value — generous enough for a UA-style token. */
12
+ const HARNESS_MAX_LENGTH = 120;
11
13
  /**
12
- * Read and sanitize the `X-Relaycast-Harness` header from a request.
14
+ * Characters permitted in a harness identifier. Deliberately broad enough for a
15
+ * User-Agent-style token (`name/version (model=...; setting)`) while excluding
16
+ * CR/LF and other control characters — rejecting those is what keeps a buggy
17
+ * upstream caller from smuggling a header injection past the relaycast WAF.
18
+ */
19
+ const HARNESS_ALLOWED = /^[a-z0-9 ._\-/():=;,+]+$/i;
20
+ const AGENT_RELAY_DISTINCT_ID_ALLOWED = /^[a-z0-9._:-]+$/i;
21
+ /**
22
+ * Read and sanitize the harness identifier from a request.
13
23
  *
14
- * Returns a lowercase identifier (kebab-case by convention, e.g. `claude-code`,
15
- * `cursor`, `codex`). We intentionally do NOT enforce an enum here — accepting
16
- * any well-formed value lets us discover new harnesses without shipping a
17
- * relaycast release first. Segmentation/normalization happens downstream in
18
- * the analytics layer.
24
+ * Read from the `X-Relaycast-Harness` header, falling back to the `harness`
25
+ * query param (WebSocket upgrades from browsers can't set custom headers, so
26
+ * the SDK forwards it on the query string mirrors how origin fields work).
19
27
  *
20
- * Drops empty, oversized, or non-ASCII values to `'unknown'`.
28
+ * Returns a lowercase, UA-style identifier (e.g. `claude-code`, `codex`,
29
+ * `claude-code/2.3 (model=opus-4.8; fast)`). We intentionally do NOT enforce an
30
+ * enum here — accepting any well-formed value lets us discover new harnesses
31
+ * without shipping a relaycast release first; segmentation happens downstream
32
+ * in the analytics layer. Drops empty or malformed values to `'unknown'`.
21
33
  */
22
- export function extractHarness(headers) {
23
- const raw = headers.get(HARNESS_HEADER);
34
+ export function extractHarness(request) {
35
+ const raw = request.headers.get(HARNESS_HEADER) ??
36
+ new URL(request.url).searchParams.get("harness");
24
37
  if (!raw)
25
38
  return UNKNOWN_HARNESS;
26
39
  const trimmed = raw.trim();
27
40
  if (!trimmed)
28
41
  return UNKNOWN_HARNESS;
29
- if (trimmed.length > HARNESS_MAX_LENGTH)
30
- return UNKNOWN_HARNESS;
31
- // Restrict to printable ASCII to keep PostHog property values clean. Allow
32
- // letters, digits, and the small set of separators harness names tend to
33
- // use. Anything else falls back to `unknown`.
34
- if (!/^[a-zA-Z0-9._-]+$/.test(trimmed))
42
+ if (!HARNESS_ALLOWED.test(trimmed))
35
43
  return UNKNOWN_HARNESS;
36
- return trimmed.toLowerCase();
44
+ return trimmed.slice(0, HARNESS_MAX_LENGTH).toLowerCase();
45
+ }
46
+ export function extractAgentRelayDistinctId(request) {
47
+ const raw = request.headers.get(AGENT_RELAY_DISTINCT_ID_HEADER) ??
48
+ new URL(request.url).searchParams.get(AGENT_RELAY_DISTINCT_ID_QUERY);
49
+ if (!raw)
50
+ return undefined;
51
+ const trimmed = raw.trim();
52
+ if (!trimmed)
53
+ return undefined;
54
+ if (!AGENT_RELAY_DISTINCT_ID_ALLOWED.test(trimmed))
55
+ return undefined;
56
+ return trimmed.slice(0, 128);
37
57
  }
38
58
  function sanitizeOriginPart(value, maxLen) {
39
59
  if (!value)
@@ -44,10 +64,10 @@ function sanitizeOriginPart(value, maxLen) {
44
64
  return normalized.slice(0, maxLen);
45
65
  }
46
66
  export function deriveClientName(headers) {
47
- const explicit = headers.get('x-client-name') ?? headers.get('x-relaycast-client');
67
+ const explicit = headers.get("x-client-name") ?? headers.get("x-relaycast-client");
48
68
  if (explicit)
49
69
  return explicit.trim().slice(0, 80);
50
- const ua = headers.get('user-agent');
70
+ const ua = headers.get("user-agent");
51
71
  if (!ua)
52
72
  return undefined;
53
73
  const family = ua.split(/[\/\s;]/)[0];
@@ -56,18 +76,20 @@ export function deriveClientName(headers) {
56
76
  export function extractOriginInfo(request, fallbackClientName) {
57
77
  const headers = request.headers;
58
78
  const url = new URL(request.url);
59
- const querySurface = url.searchParams.get('origin_surface');
60
- const queryClient = url.searchParams.get('origin_client');
61
- const queryVersion = url.searchParams.get('origin_version');
62
- const originSurface = sanitizeOriginPart(headers.get('x-relaycast-origin-surface') ?? headers.get('x-origin-surface') ?? querySurface, 32);
63
- const originClient = sanitizeOriginPart(headers.get('x-relaycast-origin-client')
64
- ?? headers.get('x-origin-client')
65
- ?? queryClient
66
- ?? fallbackClientName, 80);
67
- const originVersion = sanitizeOriginPart(headers.get('x-relaycast-origin-version')
68
- ?? headers.get('x-origin-version')
69
- ?? queryVersion
70
- ?? headers.get('x-sdk-version'), 48);
79
+ const querySurface = url.searchParams.get("origin_surface");
80
+ const queryClient = url.searchParams.get("origin_client");
81
+ const queryVersion = url.searchParams.get("origin_version");
82
+ const originSurface = sanitizeOriginPart(headers.get("x-relaycast-origin-surface") ??
83
+ headers.get("x-origin-surface") ??
84
+ querySurface, 32);
85
+ const originClient = sanitizeOriginPart(headers.get("x-relaycast-origin-client") ??
86
+ headers.get("x-origin-client") ??
87
+ queryClient ??
88
+ fallbackClientName, 80);
89
+ const originVersion = sanitizeOriginPart(headers.get("x-relaycast-origin-version") ??
90
+ headers.get("x-origin-version") ??
91
+ queryVersion ??
92
+ headers.get("x-sdk-version"), 48);
71
93
  return {
72
94
  ...(originSurface ? { origin_surface: originSurface } : {}),
73
95
  ...(originClient ? { origin_client: originClient } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"origin.js","sourceRoot":"","sources":["../../src/lib/origin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"origin.js","sourceRoot":"","sources":["../../src/lib/origin.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { Context } from 'hono';
2
- import type { AppEnv } from '../env.js';
1
+ import type { Context } from "hono";
2
+ import type { AppEnv } from "../env.js";
3
3
  type ServerEvent = `relaycast_server_${string}`;
4
4
  export declare function normalizeRoutePathForTelemetry(value: string): string;
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"serverTelemetry.d.ts","sourceRoot":"","sources":["../../src/lib/serverTelemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGxC,KAAK,WAAW,GAAG,oBAAoB,MAAM,EAAE,CAAC;AAEhD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWpE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,IAAI,CAyBN"}
1
+ {"version":3,"file":"serverTelemetry.d.ts","sourceRoot":"","sources":["../../src/lib/serverTelemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAQxC,KAAK,WAAW,GAAG,oBAAoB,MAAM,EAAE,CAAC;AAEhD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoBpE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,IAAI,CA8BN"}
@@ -1,18 +1,21 @@
1
- import { extractHarness, requiredOriginInfo, UNKNOWN_HARNESS } from './origin.js';
1
+ import { extractAgentRelayDistinctId, extractHarness, requiredOriginInfo, UNKNOWN_HARNESS, } from "./origin.js";
2
2
  export function normalizeRoutePathForTelemetry(value) {
3
3
  const withoutQuery = value.split(/[?#]/)[0] ?? value;
4
- const compact = withoutQuery.replace(/\/+/g, '/').trim();
5
- const withLeadingSlash = compact.startsWith('/') ? compact : `/${compact}`;
6
- const segments = withLeadingSlash.split('/').filter(Boolean).map((segment) => {
4
+ const compact = withoutQuery.replace(/\/+/g, "/").trim();
5
+ const withLeadingSlash = compact.startsWith("/") ? compact : `/${compact}`;
6
+ const segments = withLeadingSlash
7
+ .split("/")
8
+ .filter(Boolean)
9
+ .map((segment) => {
7
10
  if (/^\d{6,}$/.test(segment))
8
- return ':id';
11
+ return ":id";
9
12
  if (/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(segment))
10
- return ':id';
13
+ return ":id";
11
14
  if (/^(dm|dmch|cmd|sub|wh)_[a-zA-Z0-9_-]{8,}$/.test(segment))
12
- return ':id';
15
+ return ":id";
13
16
  return segment;
14
17
  });
15
- return `/${segments.join('/')}`;
18
+ return `/${segments.join("/")}`;
16
19
  }
17
20
  /**
18
21
  * Emit a server-side product-telemetry event through the injected
@@ -21,20 +24,22 @@ export function normalizeRoutePathForTelemetry(value) {
21
24
  */
22
25
  export function emitServerEvent(c, workspaceId, event, properties) {
23
26
  const normalizedProperties = { ...properties };
24
- if (typeof normalizedProperties.route_path === 'string') {
27
+ if (typeof normalizedProperties.route_path === "string") {
25
28
  normalizedProperties.route_path = normalizeRoutePathForTelemetry(normalizedProperties.route_path);
26
29
  }
27
30
  // Prefer the value stashed by the logger middleware. Fall back to reading the
28
31
  // header directly so emitters that bypass middleware still get a sane value.
29
- const harness = c.get('harness')
30
- ?? extractHarness(c.req.raw.headers)
31
- ?? UNKNOWN_HARNESS;
32
+ const harness = c.get("harness") ?? extractHarness(c.req.raw) ?? UNKNOWN_HARNESS;
32
33
  const origin = requiredOriginInfo(c.req.raw);
33
- c.get('engine').telemetry.capture({
34
+ const clientDistinctId = extractAgentRelayDistinctId(c.req.raw);
35
+ c.get("engine").telemetry.capture({
34
36
  name: event,
35
- distinctId: workspaceId,
37
+ distinctId: clientDistinctId ?? workspaceId,
36
38
  properties: {
39
+ app: "relaycast-server",
40
+ surface: "cloud",
37
41
  workspace_id: workspaceId,
42
+ ...(clientDistinctId ? { client_distinct_id: clientDistinctId } : {}),
38
43
  harness,
39
44
  origin_surface: origin.origin_surface,
40
45
  origin_client: origin.origin_client,
@@ -1 +1 @@
1
- {"version":3,"file":"serverTelemetry.js","sourceRoot":"","sources":["../../src/lib/serverTelemetry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAIlF,MAAM,UAAU,8BAA8B,CAAC,KAAa;IAC1D,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IACrD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;IAC3E,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3E,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3C,IAAI,4EAA4E,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7G,IAAI,0CAA0C,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3E,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,CAAkB,EAClB,WAAmB,EACnB,KAAkB,EAClB,UAAmC;IAEnC,MAAM,oBAAoB,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;IAC/C,IAAI,OAAO,oBAAoB,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACxD,oBAAoB,CAAC,UAAU,GAAG,8BAA8B,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACpG,CAAC;IAED,8EAA8E;IAC9E,6EAA6E;IAC7E,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;WAC3B,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;WACjC,eAAe,CAAC;IAErB,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;QAChC,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,WAAW;QACvB,UAAU,EAAE;YACV,YAAY,EAAE,WAAW;YACzB,OAAO;YACP,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,GAAG,oBAAoB;SACxB;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"serverTelemetry.js","sourceRoot":"","sources":["../../src/lib/serverTelemetry.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACd,kBAAkB,EAClB,eAAe,GAChB,MAAM,aAAa,CAAC;AAIrB,MAAM,UAAU,8BAA8B,CAAC,KAAa;IAC1D,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IACrD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;IAC3E,MAAM,QAAQ,GAAG,gBAAgB;SAC9B,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACf,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3C,IACE,4EAA4E,CAAC,IAAI,CAC/E,OAAO,CACR;YAED,OAAO,KAAK,CAAC;QACf,IAAI,0CAA0C,CAAC,IAAI,CAAC,OAAO,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IACL,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,CAAkB,EAClB,WAAmB,EACnB,KAAkB,EAClB,UAAmC;IAEnC,MAAM,oBAAoB,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;IAC/C,IAAI,OAAO,oBAAoB,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACxD,oBAAoB,CAAC,UAAU,GAAG,8BAA8B,CAC9D,oBAAoB,CAAC,UAAU,CAChC,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,6EAA6E;IAC7E,MAAM,OAAO,GACX,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC;IAEnE,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;QAChC,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,gBAAgB,IAAI,WAAW;QAC3C,UAAU,EAAE;YACV,GAAG,EAAE,kBAAkB;YACvB,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,WAAW;YACzB,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,OAAO;YACP,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,GAAG,oBAAoB;SACxB;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -105,7 +105,7 @@ export const loggerMiddleware = async (c, next) => {
105
105
  const requestHeaders = c.req.raw.headers;
106
106
  const clientName = deriveClientName(requestHeaders);
107
107
  const originInfo = extractOriginInfo(c.req.raw, clientName);
108
- const harness = extractHarness(requestHeaders);
108
+ const harness = extractHarness(c.req.raw);
109
109
  c.set('harness', harness);
110
110
  const logger = createRequestLogger(c, 'request', {
111
111
  request_id: requestId,
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/middleware/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/middleware/logger.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@relaycast/engine",
3
- "version": "2.3.0",
3
+ "version": "2.5.0",
4
4
  "type": "module",
5
5
  "description": "Portable, platform-agnostic engine for Relaycast — channels, threads, DMs, presence, real-time events. Runs on Node + SQLite (self-host) or behind a Cloudflare Durable Object adapter (hosted).",
6
6
  "bin": {
@@ -43,8 +43,8 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@hono/node-server": "^1.13.7",
46
- "@relaycast/a2a": "2.3.0",
47
- "@relaycast/types": "2.3.0",
46
+ "@relaycast/a2a": "2.5.0",
47
+ "@relaycast/types": "2.5.0",
48
48
  "better-sqlite3": "^11.10.0",
49
49
  "drizzle-orm": "^0.45.1",
50
50
  "hono": "^4.11.9",