@relaycast/engine 8.8.0 → 8.9.1

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 (67) hide show
  1. package/dist/adapters/node/realtime.d.ts.map +1 -1
  2. package/dist/adapters/node/realtime.js +13 -4
  3. package/dist/adapters/node/realtime.js.map +1 -1
  4. package/dist/db/migrations/0053_agent_retention_indexes.sql +8 -0
  5. package/dist/db/migrations/0054_node_status_heartbeat_index.sql +8 -0
  6. package/dist/db/migrations/0055_session_event_idempotency.sql +8 -0
  7. package/dist/db/migrations/0056_session_event_status_completion.sql +38 -0
  8. package/dist/db/schema.d.ts +89 -0
  9. package/dist/db/schema.d.ts.map +1 -1
  10. package/dist/db/schema.js +27 -0
  11. package/dist/db/schema.js.map +1 -1
  12. package/dist/engine/action.d.ts +4 -0
  13. package/dist/engine/action.d.ts.map +1 -1
  14. package/dist/engine/action.js +104 -35
  15. package/dist/engine/action.js.map +1 -1
  16. package/dist/engine/agentRetention.d.ts +39 -0
  17. package/dist/engine/agentRetention.d.ts.map +1 -0
  18. package/dist/engine/agentRetention.js +117 -0
  19. package/dist/engine/agentRetention.js.map +1 -0
  20. package/dist/engine/channel.d.ts.map +1 -1
  21. package/dist/engine/channel.js +56 -17
  22. package/dist/engine/channel.js.map +1 -1
  23. package/dist/engine/delivery.d.ts.map +1 -1
  24. package/dist/engine/delivery.js +10 -4
  25. package/dist/engine/delivery.js.map +1 -1
  26. package/dist/engine/mentions.d.ts +3 -0
  27. package/dist/engine/mentions.d.ts.map +1 -0
  28. package/dist/engine/mentions.js +5 -0
  29. package/dist/engine/mentions.js.map +1 -0
  30. package/dist/engine/message.d.ts.map +1 -1
  31. package/dist/engine/message.js +2 -6
  32. package/dist/engine/message.js.map +1 -1
  33. package/dist/engine/node.d.ts +51 -28
  34. package/dist/engine/node.d.ts.map +1 -1
  35. package/dist/engine/node.js +140 -10
  36. package/dist/engine/node.js.map +1 -1
  37. package/dist/engine/retention.d.ts +12 -0
  38. package/dist/engine/retention.d.ts.map +1 -1
  39. package/dist/engine/retention.js +3 -0
  40. package/dist/engine/retention.js.map +1 -1
  41. package/dist/engine/rowidRetention.d.ts +33 -0
  42. package/dist/engine/rowidRetention.d.ts.map +1 -0
  43. package/dist/engine/rowidRetention.js +190 -0
  44. package/dist/engine/rowidRetention.js.map +1 -0
  45. package/dist/engine/sessionEvent.d.ts +54 -1
  46. package/dist/engine/sessionEvent.d.ts.map +1 -1
  47. package/dist/engine/sessionEvent.js +195 -2
  48. package/dist/engine/sessionEvent.js.map +1 -1
  49. package/dist/index.d.ts +1 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/ports/realtime.d.ts +7 -2
  53. package/dist/ports/realtime.d.ts.map +1 -1
  54. package/dist/ports/realtime.js.map +1 -1
  55. package/dist/routes/agent.d.ts.map +1 -1
  56. package/dist/routes/agent.js +113 -10
  57. package/dist/routes/agent.js.map +1 -1
  58. package/dist/routes/deliveryRouting.d.ts +1 -0
  59. package/dist/routes/deliveryRouting.d.ts.map +1 -1
  60. package/dist/routes/deliveryRouting.js +8 -4
  61. package/dist/routes/deliveryRouting.js.map +1 -1
  62. package/dist/routes/inboundWebhook.d.ts.map +1 -1
  63. package/dist/routes/inboundWebhook.js +3 -1
  64. package/dist/routes/inboundWebhook.js.map +1 -1
  65. package/dist/routes/node.js +39 -15
  66. package/dist/routes/node.js.map +1 -1
  67. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/engine/message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/engine/message.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ export interface HandleNodeControlMessageArgs {
30
30
  }
31
31
  type CapabilityLike = string | FleetCapability;
32
32
  export declare function directNodeIdForAgent(agentId: string): string;
33
- declare function publicNode(row: NodeRow): {
33
+ declare function publicNode(row: NodeRow, now?: number): {
34
34
  id: string;
35
35
  name: string;
36
36
  kind: string;
@@ -52,6 +52,7 @@ declare function publicNode(row: NodeRow): {
52
52
  handlers_live: boolean;
53
53
  load: number | null;
54
54
  active_agents: number;
55
+ active_agents_stale: boolean;
55
56
  max_agents: number;
56
57
  last_heartbeat_at: string | null;
57
58
  created_at: string;
@@ -91,6 +92,7 @@ export declare function createNodeToken(db: Db, workspaceId: string, data: {
91
92
  handlers_live: boolean;
92
93
  load: number | null;
93
94
  active_agents: number;
95
+ active_agents_stale: boolean;
94
96
  max_agents: number;
95
97
  last_heartbeat_at: string | null;
96
98
  created_at: string;
@@ -336,6 +338,7 @@ export declare function heartbeatNode(db: Db, workspaceId: string, nodeId: strin
336
338
  handlers_live: boolean;
337
339
  load: number | null;
338
340
  active_agents: number;
341
+ active_agents_stale: boolean;
339
342
  max_agents: number;
340
343
  last_heartbeat_at: string | null;
341
344
  created_at: string;
@@ -383,6 +386,7 @@ export declare function ensureDirectNodeForAgent(db: Db, workspaceId: string, ag
383
386
  handlers_live: boolean;
384
387
  load: number | null;
385
388
  active_agents: number;
389
+ active_agents_stale: boolean;
386
390
  max_agents: number;
387
391
  last_heartbeat_at: string | null;
388
392
  created_at: string;
@@ -457,6 +461,7 @@ export declare function deregisterAgentViaNode(db: Db, workspaceId: string, node
457
461
  deliveryAckSeq: number;
458
462
  deliverySeq: number;
459
463
  lastSeen: Date;
464
+ statusUpdatedAt: Date | null;
460
465
  } | null>;
461
466
  export declare function reconcileInventory(db: Db, registry: NodeConnectionRegistry, workspaceId: string, nodeId: string, providerName: string, inventoryAgents: FleetInventoryAgent[], completionDeps?: InvocationCompletionDeps): Promise<{
462
467
  reply: {
@@ -469,35 +474,52 @@ export declare function reconcileInventory(db: Db, registry: NodeConnectionRegis
469
474
  reconciledAgentIds: string[];
470
475
  newlyRoutedAgentIds: string[];
471
476
  }>;
472
- export declare function listNodes(db: Db, workspaceId: string, filters?: {
477
+ /** Default page size for the explicit, bounded node-history cursor contract. */
478
+ export declare const NODE_LIST_HISTORY_DEFAULT_LIMIT = 100;
479
+ /** Hard cap on a single history page, regardless of caller-requested `limit`. */
480
+ export declare const NODE_LIST_HISTORY_MAX_LIMIT = 500;
481
+ export interface ListNodesFilters {
473
482
  capability?: string;
474
483
  name?: string;
475
- }): Promise<{
476
- id: string;
477
- name: string;
478
- kind: string;
479
- role: string;
480
- machine_id: string | null;
481
- delivery_adapter: string;
482
- delivery: Record<string, unknown> | null;
483
- capabilities: {
484
- name: string;
485
- kind?: string | undefined;
486
- global?: boolean | undefined;
487
- queue?: boolean | undefined;
488
- metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
489
- }[];
490
- tags: string[];
491
- version: string;
492
- status: string;
493
- live: boolean;
494
- handlers_live: boolean;
495
- load: number | null;
496
- active_agents: number;
497
- max_agents: number;
498
- last_heartbeat_at: string | null;
499
- created_at: string;
500
- }[]>;
484
+ /**
485
+ * Selects on computed liveness (persisted `status` plus a fresh heartbeat
486
+ * within `NODE_LIVENESS_TTL_MS`), pushed into SQL rather than applied after
487
+ * a full-table fetch. Omitted: no liveness selection (legacy behavior).
488
+ */
489
+ status?: 'online' | 'offline';
490
+ /**
491
+ * Switches the response to the bounded, paginated history contract:
492
+ * `{ nodes, nextCursor }` instead of a bare array, ordered by `id` so a
493
+ * caller can page through every historical row exactly once with no gaps
494
+ * or silent truncation, however many rows the workspace has retained.
495
+ */
496
+ history?: boolean;
497
+ /** Resume point for `history`: the `id` of the last row already consumed. */
498
+ cursor?: string | null;
499
+ /** Page size for `history`, clamped to [1, NODE_LIST_HISTORY_MAX_LIMIT]. */
500
+ limit?: number;
501
+ /**
502
+ * Restricts the result to nodes with at least one active binding to one of
503
+ * these agent ids — the SQL-pushed form of an observer token's `agent_ids`
504
+ * filter. Applied as a WHERE condition alongside `name`/`capability`/`status`,
505
+ * *before* the cursor/limit page is computed, so:
506
+ * - a hidden node's id is never selected into the page, let alone into
507
+ * `nextCursor` — an observer can't learn a hidden node's id or presence
508
+ * by watching the cursor advance past it;
509
+ * - the page-then-filter ordering can't shrink a page's visible count
510
+ * below `limit` while still reporting more rows exist, and can't stop
511
+ * paging while an authorized row beyond the current page is unvisited —
512
+ * the authorization predicate is part of what "the next row" means.
513
+ * An empty array (as opposed to undefined) is a real, deliberate filter
514
+ * that authorizes nothing.
515
+ */
516
+ observerAgentIds?: string[];
517
+ }
518
+ export interface ListNodesHistoryPage {
519
+ nodes: ReturnType<typeof publicNode>[];
520
+ nextCursor: string | null;
521
+ }
522
+ export declare function listNodes(db: Db, workspaceId: string, filters?: ListNodesFilters): Promise<ListNodesHistoryPage>;
501
523
  export declare function getPublicNode(db: Db, workspaceId: string, name: string): Promise<{
502
524
  id: string;
503
525
  name: string;
@@ -520,6 +542,7 @@ export declare function getPublicNode(db: Db, workspaceId: string, name: string)
520
542
  handlers_live: boolean;
521
543
  load: number | null;
522
544
  active_agents: number;
545
+ active_agents_stale: boolean;
523
546
  max_agents: number;
524
547
  last_heartbeat_at: string | null;
525
548
  created_at: string;
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/engine/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/engine/node.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { invalidateChannelCache } from './cache.js';
3
- import { and, asc, eq, inArray, isNotNull, isNull, lt, lte, ne, or, sql } from 'drizzle-orm';
4
- import { FLEET_DELIVERY_CURSOR_CAPABILITY, parseFleetBrokerToRelaycastMessage, } from '@relaycast/types';
3
+ import { and, asc, eq, gt, gte, inArray, isNotNull, isNull, lt, lte, ne, or, sql } from 'drizzle-orm';
4
+ import { FLEET_DELIVERY_CURSOR_CAPABILITY, NODE_REGISTRATION_CONTRACT_V1, parseFleetBrokerToRelaycastMessage, } from '@relaycast/types';
5
5
  import { actionInvocations, agents, agentNodeBindings, channelMembers, channels, nodeProviders, nodes } from '../db/schema.js';
6
6
  import { randomHex, sha256Hex } from '../lib/crypto.js';
7
7
  import { codedError } from '../lib/httpError.js';
@@ -10,7 +10,7 @@ import { isProviderAgentDeliveryReady } from '../ports/realtime.js';
10
10
  import { generateId } from './snowflake.js';
11
11
  import { assertRegistrableAgentName } from './agent.js';
12
12
  import { rotateAgentIdentity } from './agentIdentity.js';
13
- import { isNodeLive, isReusableForMachineMatch, nodeHasCapacity, nodeHasCapability, NODE_LIVENESS_TTL_MS } from './placement.js';
13
+ import { isNodeLive, isReusableForMachineMatch, nodeHasCapacity, NODE_LIVENESS_TTL_MS } from './placement.js';
14
14
  import { DEFAULT_PROVIDER_NAME, capabilityKind, heartbeatProvider, isProviderLive, markProviderOffline, materializeProviderActions, recomputeNodeAggregate, removeProvider, upsertProvider, } from './nodeProvider.js';
15
15
  import { serializeNodeOp } from './nodeLock.js';
16
16
  import { completeNodeInvocation, dispatchCapacitySpawn, rescheduleInvocationsForLostNode, rescheduleNodeInvocation, } from './action.js';
@@ -60,8 +60,8 @@ function supportsProviderDeliveryReadiness(registry) {
60
60
  function requestId(message) {
61
61
  return message.id ?? generateId();
62
62
  }
63
- function publicNode(row) {
64
- const live = isNodeLive(row);
63
+ function publicNode(row, now) {
64
+ const live = isNodeLive(row, now);
65
65
  return {
66
66
  id: row.id,
67
67
  name: row.name,
@@ -78,6 +78,13 @@ function publicNode(row) {
78
78
  handlers_live: live && row.handlersLive,
79
79
  load: row.loadReported ? row.load : null,
80
80
  active_agents: row.activeAgents,
81
+ // `active_agents` is only an authoritative live occupancy count while the
82
+ // node is proven live within NODE_LIVENESS_TTL_MS. Once a node goes
83
+ // offline, its last-reported value is frozen history: it can no longer
84
+ // change and must not be presented as current capacity. Callers that
85
+ // need current occupancy must check this flag rather than assuming a
86
+ // non-null `active_agents` means "right now".
87
+ active_agents_stale: !live,
81
88
  max_agents: row.maxAgents,
82
89
  last_heartbeat_at: row.lastHeartbeatAt?.toISOString() ?? null,
83
90
  created_at: row.createdAt.toISOString(),
@@ -1547,12 +1554,127 @@ export async function reconcileInventory(db, registry, workspaceId, nodeId, prov
1547
1554
  newlyRoutedAgentIds,
1548
1555
  };
1549
1556
  }
1557
+ /** Default page size for the explicit, bounded node-history cursor contract. */
1558
+ export const NODE_LIST_HISTORY_DEFAULT_LIMIT = 100;
1559
+ /** Hard cap on a single history page, regardless of caller-requested `limit`. */
1560
+ export const NODE_LIST_HISTORY_MAX_LIMIT = 500;
1561
+ /**
1562
+ * Pushes a capability match (string or `{ name }` shape) into a SQL EXISTS
1563
+ * clause. `cap.value` is only a valid `json_extract` target when the array
1564
+ * element is itself a JSON object; a legacy/primitive string element (the
1565
+ * common shape) is not valid JSON on its own (e.g. `read` vs `"read"`), and
1566
+ * `json_extract` raises `malformed JSON` if evaluated against it. Gate the
1567
+ * object-shape branch behind `json_valid` so `AND` short-circuits before
1568
+ * `json_extract` ever sees a bare string, leaving the string-equality branch
1569
+ * to match primitive capabilities exactly as before.
1570
+ */
1571
+ function capabilityMatchCondition(capability) {
1572
+ return sql `EXISTS (SELECT 1 FROM json_each(CASE WHEN json_valid(${nodes.capabilities}) THEN ${nodes.capabilities} ELSE '[]' END) AS cap
1573
+ WHERE cap.value = ${capability}
1574
+ OR (json_valid(cap.value) AND json_extract(cap.value, '$.name') = ${capability}))`;
1575
+ }
1576
+ /**
1577
+ * Pushes an observer token's `agent_ids` filter into a SQL EXISTS clause: a
1578
+ * node is visible only if it has at least one *active* binding to one of the
1579
+ * authorized agent ids. `agentIds: []` (filter present but empty) matches no
1580
+ * node, mirroring `observerAllowsAgent`'s fail-closed behavior for an empty
1581
+ * allow-list rather than falling open.
1582
+ */
1583
+ function observerNodeVisibilityCondition(agentIds) {
1584
+ if (agentIds.length === 0)
1585
+ return sql `0`;
1586
+ return sql `EXISTS (
1587
+ SELECT 1 FROM ${agentNodeBindings} AS b
1588
+ JOIN json_each(${JSON.stringify(agentIds)}) AS allowed
1589
+ ON allowed.value = b.agent_id
1590
+ WHERE b.node_id = ${nodes.id}
1591
+ AND b.status = 'active'
1592
+ )`;
1593
+ }
1594
+ /**
1595
+ * Active-agent counts for a page of nodes, scoped to an observer's
1596
+ * authorized agent ids, in one query — not one `listNodeAgents` query per
1597
+ * node. Used to override each visible node's `active_agents` with the count
1598
+ * the observer is actually authorized to see (mirrors the prior per-node
1599
+ * `filterNodeAgentsForObserver(...).length` behavior).
1600
+ */
1601
+ async function visibleActiveAgentCounts(db, workspaceId, nodeIds, agentIds) {
1602
+ const counts = new Map();
1603
+ if (nodeIds.length === 0 || agentIds.length === 0)
1604
+ return counts;
1605
+ // Both `nodeIds` and `agentIds` are bound as single JSON-array parameters
1606
+ // (via `json_each`) rather than expanded through `inArray`/`IN (...)`,
1607
+ // which would otherwise emit one bind parameter per id. A history page or
1608
+ // a high-cardinality legacy (unpaginated) observer request can carry
1609
+ // hundreds of node ids, and D1 caps a statement at 100 bound parameters —
1610
+ // two JSON binds keep this query's parameter count constant regardless of
1611
+ // how many nodes or agents are being counted.
1612
+ const rows = await db
1613
+ .select({ nodeId: agentNodeBindings.nodeId, count: sql `count(*)` })
1614
+ .from(agentNodeBindings)
1615
+ .where(and(eq(agentNodeBindings.workspaceId, workspaceId), eq(agentNodeBindings.status, 'active'), sql `${agentNodeBindings.nodeId} IN (SELECT value FROM json_each(${JSON.stringify(nodeIds)}))`, sql `${agentNodeBindings.agentId} IN (SELECT value FROM json_each(${JSON.stringify(agentIds)}))`))
1616
+ .groupBy(agentNodeBindings.nodeId);
1617
+ for (const row of rows)
1618
+ counts.set(row.nodeId, Number(row.count));
1619
+ return counts;
1620
+ }
1621
+ /** Liveness predicate mirroring {@link isNodeLive}, pushed into SQL. */
1622
+ function livenessCondition(status, now) {
1623
+ const staleBefore = new Date(now.getTime() - NODE_LIVENESS_TTL_MS);
1624
+ const live = and(eq(nodes.status, 'online'), isNotNull(nodes.lastHeartbeatAt), lte(nodes.lastHeartbeatAt, now), gte(nodes.lastHeartbeatAt, staleBefore));
1625
+ return status === 'online' ? live : or(ne(nodes.status, 'online'), isNull(nodes.lastHeartbeatAt), lt(nodes.lastHeartbeatAt, staleBefore),
1626
+ // A heartbeat clock skewed into the future never counts as live either.
1627
+ gt(nodes.lastHeartbeatAt, now));
1628
+ }
1550
1629
  export async function listNodes(db, workspaceId, filters = {}) {
1551
- const rows = await db.select().from(nodes).where(eq(nodes.workspaceId, workspaceId));
1552
- return rows
1553
- .filter((node) => !filters.name || node.name === filters.name)
1554
- .filter((node) => !filters.capability || nodeHasCapability(node, filters.capability))
1555
- .map(publicNode);
1630
+ const now = new Date();
1631
+ const conditions = [eq(nodes.workspaceId, workspaceId)];
1632
+ if (filters.name)
1633
+ conditions.push(eq(nodes.name, filters.name));
1634
+ if (filters.capability)
1635
+ conditions.push(capabilityMatchCondition(filters.capability));
1636
+ if (filters.status)
1637
+ conditions.push(livenessCondition(filters.status, now));
1638
+ // Observer authorization is a WHERE condition, evaluated in the same query
1639
+ // as every other filter and therefore before pagination/cursor computation
1640
+ // below — a hidden node is excluded from row selection entirely, so it can
1641
+ // never land in `nextCursor`, and cursor advancement always tracks "the
1642
+ // next authorized row" rather than "the next row, authorized or not".
1643
+ if (filters.observerAgentIds)
1644
+ conditions.push(observerNodeVisibilityCondition(filters.observerAgentIds));
1645
+ if (!filters.history) {
1646
+ // Legacy/default shape: a bare array, unpaginated, matching every caller
1647
+ // that predates the history/status selector. `name`/`capability`/`status`
1648
+ // are still evaluated in SQL instead of after a full-table fetch.
1649
+ const rows = await db.select().from(nodes).where(and(...conditions));
1650
+ const page = rows.map((row) => publicNode(row, now.getTime()));
1651
+ if (!filters.observerAgentIds)
1652
+ return { nodes: page, nextCursor: null };
1653
+ const counts = await visibleActiveAgentCounts(db, workspaceId, rows.map((row) => row.id), filters.observerAgentIds);
1654
+ return {
1655
+ nodes: page.map((node) => ({ ...node, active_agents: counts.get(node.id) ?? 0 })),
1656
+ nextCursor: null,
1657
+ };
1658
+ }
1659
+ if (filters.cursor)
1660
+ conditions.push(gt(nodes.id, filters.cursor));
1661
+ const limit = Math.min(Math.max(1, filters.limit ?? NODE_LIST_HISTORY_DEFAULT_LIMIT), NODE_LIST_HISTORY_MAX_LIMIT);
1662
+ const rows = await db
1663
+ .select()
1664
+ .from(nodes)
1665
+ .where(and(...conditions))
1666
+ .orderBy(asc(nodes.id))
1667
+ .limit(limit + 1);
1668
+ const page = rows.slice(0, limit);
1669
+ const nextCursor = rows.length > limit ? page[page.length - 1].id : null;
1670
+ const publicPage = page.map((row) => publicNode(row, now.getTime()));
1671
+ if (!filters.observerAgentIds)
1672
+ return { nodes: publicPage, nextCursor };
1673
+ const counts = await visibleActiveAgentCounts(db, workspaceId, page.map((row) => row.id), filters.observerAgentIds);
1674
+ return {
1675
+ nodes: publicPage.map((node) => ({ ...node, active_agents: counts.get(node.id) ?? 0 })),
1676
+ nextCursor,
1677
+ };
1556
1678
  }
1557
1679
  export async function getPublicNode(db, workspaceId, name) {
1558
1680
  const node = await getNodeByName(db, workspaceId, name);
@@ -1707,6 +1829,14 @@ export async function handleNodeControlMessage(args) {
1707
1829
  ...registered.node,
1708
1830
  provider: registered.provider,
1709
1831
  accepted_capabilities: acceptance,
1832
+ // Only claim authenticated provider registration when this adapter
1833
+ // actually bound the connection. Echoed client capabilities are not
1834
+ // evidence of a server contract; legacy adapters omit the field.
1835
+ ...(args.connectionId
1836
+ && args.registry.providerNameForConnection?.(args.connectionId) === provider.name
1837
+ && args.registry.isProviderAttached?.(args.workspaceId, args.nodeId, provider.name)
1838
+ ? { registration_contract: NODE_REGISTRATION_CONTRACT_V1 }
1839
+ : {}),
1710
1840
  },
1711
1841
  });
1712
1842
  // The node row is already persisted online, so emit the durable