@relaycast/engine 6.0.5 → 6.2.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.
Files changed (82) hide show
  1. package/dist/adapters/node/delivery-maintenance.d.ts +1 -1
  2. package/dist/adapters/node/delivery-maintenance.d.ts.map +1 -1
  3. package/dist/adapters/node/delivery-maintenance.js +4 -4
  4. package/dist/adapters/node/delivery-maintenance.js.map +1 -1
  5. package/dist/adapters/node/event-queue.d.ts +2 -1
  6. package/dist/adapters/node/event-queue.d.ts.map +1 -1
  7. package/dist/adapters/node/event-queue.js.map +1 -1
  8. package/dist/adapters/node/index.js +2 -2
  9. package/dist/adapters/node/index.js.map +1 -1
  10. package/dist/adapters/node/realtime.d.ts.map +1 -1
  11. package/dist/adapters/node/realtime.js +45 -3
  12. package/dist/adapters/node/realtime.js.map +1 -1
  13. package/dist/agent-disconnect.d.ts +23 -1
  14. package/dist/agent-disconnect.d.ts.map +1 -1
  15. package/dist/agent-disconnect.js +20 -2
  16. package/dist/agent-disconnect.js.map +1 -1
  17. package/dist/bin/serve.js +9 -0
  18. package/dist/bin/serve.js.map +1 -1
  19. package/dist/db/migrations/0032_invocation_handler_unreachable.sql +5 -0
  20. package/dist/db/schema.d.ts +17 -0
  21. package/dist/db/schema.d.ts.map +1 -1
  22. package/dist/db/schema.js +4 -0
  23. package/dist/db/schema.js.map +1 -1
  24. package/dist/engine/action.d.ts +34 -13
  25. package/dist/engine/action.d.ts.map +1 -1
  26. package/dist/engine/action.js +323 -57
  27. package/dist/engine/action.js.map +1 -1
  28. package/dist/engine/delivery.d.ts +21 -1
  29. package/dist/engine/delivery.d.ts.map +1 -1
  30. package/dist/engine/delivery.js +79 -9
  31. package/dist/engine/delivery.js.map +1 -1
  32. package/dist/engine/inboundWebhook.d.ts +1 -0
  33. package/dist/engine/inboundWebhook.d.ts.map +1 -1
  34. package/dist/engine/inboundWebhook.js +1 -0
  35. package/dist/engine/inboundWebhook.js.map +1 -1
  36. package/dist/engine/invocationCompletion.d.ts +43 -0
  37. package/dist/engine/invocationCompletion.d.ts.map +1 -1
  38. package/dist/engine/invocationCompletion.js +108 -4
  39. package/dist/engine/invocationCompletion.js.map +1 -1
  40. package/dist/engine/node.d.ts +72 -6
  41. package/dist/engine/node.d.ts.map +1 -1
  42. package/dist/engine/node.js +152 -23
  43. package/dist/engine/node.js.map +1 -1
  44. package/dist/engine/nodeDeliver.d.ts.map +1 -1
  45. package/dist/engine/nodeDeliver.js +5 -0
  46. package/dist/engine/nodeDeliver.js.map +1 -1
  47. package/dist/engine/observerToken.js +1 -1
  48. package/dist/engine/observerToken.js.map +1 -1
  49. package/dist/engine/retention.d.ts +7 -3
  50. package/dist/engine/retention.d.ts.map +1 -1
  51. package/dist/engine/retention.js +6 -2
  52. package/dist/engine/retention.js.map +1 -1
  53. package/dist/entrypoints/node.d.ts +3 -1
  54. package/dist/entrypoints/node.d.ts.map +1 -1
  55. package/dist/entrypoints/node.js +1 -0
  56. package/dist/entrypoints/node.js.map +1 -1
  57. package/dist/index.d.ts +1 -1
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +7 -5
  60. package/dist/index.js.map +1 -1
  61. package/dist/node-invocations.d.ts +1 -1
  62. package/dist/node-invocations.d.ts.map +1 -1
  63. package/dist/node-invocations.js +1 -1
  64. package/dist/node-invocations.js.map +1 -1
  65. package/dist/ports/realtime.d.ts +22 -1
  66. package/dist/ports/realtime.d.ts.map +1 -1
  67. package/dist/ports/realtime.js.map +1 -1
  68. package/dist/routes/action.js +11 -5
  69. package/dist/routes/action.js.map +1 -1
  70. package/dist/routes/deliveryRouting.d.ts +20 -1
  71. package/dist/routes/deliveryRouting.d.ts.map +1 -1
  72. package/dist/routes/deliveryRouting.js +114 -17
  73. package/dist/routes/deliveryRouting.js.map +1 -1
  74. package/dist/routes/inboundWebhook.d.ts.map +1 -1
  75. package/dist/routes/inboundWebhook.js +21 -1
  76. package/dist/routes/inboundWebhook.js.map +1 -1
  77. package/dist/routes/node.js +3 -2
  78. package/dist/routes/node.js.map +1 -1
  79. package/dist/routes/presence.d.ts.map +1 -1
  80. package/dist/routes/presence.js +15 -4
  81. package/dist/routes/presence.js.map +1 -1
  82. package/package.json +3 -3
@@ -9,5 +9,48 @@ type CompletionResult = {
9
9
  error: string | null;
10
10
  };
11
11
  export declare function emitInvocationCompletionEffects(deps: InvocationCompletionDeps, workspaceId: string, result: CompletionResult): Promise<void>;
12
+ /**
13
+ * Extract the spawn invocation id an agent was registered under, if any. The
14
+ * `metadata.fleet.invocation_id` correlation is written by `registerAgentViaNode`
15
+ * on every via-node agent.
16
+ */
17
+ export declare function fleetInvocationId(metadata: unknown): string | null;
18
+ /** Distinguishes the three server-observable sources of an agent exit. */
19
+ export type AgentExitedReason = 'deregistered' | 'missing_from_inventory' | 'released';
20
+ export interface AgentExitedInput {
21
+ agentId: string;
22
+ agentName: string;
23
+ /** The node the agent exited from (authoritative), or null when unknown. */
24
+ nodeId: string | null;
25
+ /** The spawn invocation the agent was registered under, if correlated. */
26
+ invocationId: string | null;
27
+ reason: AgentExitedReason;
28
+ }
29
+ /**
30
+ * Fan out a durable `agent.exited` event across the same three channels as
31
+ * invocation completion: (1) the spawn caller's mailbox (when the exit
32
+ * correlates to a spawn invocation with a live caller), (2) the durable
33
+ * workspace event log + live observer stream, and (3) the webhook outbox.
34
+ *
35
+ * Best-effort by contract — every channel is isolated so the underlying agent
36
+ * state transition (deregister / inventory reconcile / release) never fails
37
+ * because an emission did.
38
+ */
39
+ export declare function emitAgentExitedEffects(deps: InvocationCompletionDeps, workspaceId: string, input: AgentExitedInput): Promise<void>;
40
+ /** Reason a node flipped offline, when cheaply known at the transition point. */
41
+ export type NodeOfflineReason = 'liveness_timeout' | 'disconnected' | 'deregistered';
42
+ export interface NodeStatusInput {
43
+ status: 'online' | 'offline';
44
+ nodeId: string;
45
+ nodeName: string | null;
46
+ /** Only meaningful for `offline`; omitted for `online`. */
47
+ reason?: NodeOfflineReason;
48
+ }
49
+ /**
50
+ * Fan out a durable `node.status.online` / `node.status.offline` event. Node
51
+ * death has no single caller mailbox, so only the durable workspace log + live
52
+ * stream and the webhook outbox apply. Best-effort by contract.
53
+ */
54
+ export declare function emitNodeStatusEffects(deps: Pick<InvocationCompletionDeps, 'db' | 'realtime' | 'webhookQueue'>, workspaceId: string, input: NodeStatusInput): Promise<void>;
12
55
  export {};
13
56
  //# sourceMappingURL=invocationCompletion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"invocationCompletion.d.ts","sourceRoot":"","sources":["../../src/engine/invocationCompletion.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,UAAU,GAAG,cAAc,GAAG,iBAAiB,GAAG,QAAQ,CAAC,CAAC;AAE3H,KAAK,gBAAgB,GAAG;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAWF,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,wBAAwB,EAC9B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,IAAI,CAAC,CAwDf"}
1
+ {"version":3,"file":"invocationCompletion.d.ts","sourceRoot":"","sources":["../../src/engine/invocationCompletion.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,UAAU,GAAG,cAAc,GAAG,iBAAiB,GAAG,QAAQ,CAAC,CAAC;AAE3H,KAAK,gBAAgB,GAAG;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAWF,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,wBAAwB,EAC9B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,IAAI,CAAC,CAyCf;AAqCD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGlE;AAeD,0EAA0E;AAC1E,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,wBAAwB,GAAG,UAAU,CAAC;AAEvF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,0EAA0E;IAC1E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,wBAAwB,EAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED,iFAAiF;AACjF,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG,cAAc,GAAG,cAAc,CAAC;AAErF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,GAAG,UAAU,GAAG,cAAc,CAAC,EACxE,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,IAAI,CAAC,CAmBf"}
@@ -1,5 +1,8 @@
1
+ import { and, eq } from 'drizzle-orm';
2
+ import { z } from 'zod';
1
3
  import { transformForClient } from './wsTransform.js';
2
4
  import { enqueueEvent } from './eventQueue.js';
5
+ import { actionInvocations } from '../db/schema.js';
3
6
  import { sendNodeDeliveriesToAgents } from './nodeDeliver.js';
4
7
  import { appendAndPublishWorkspaceEvent } from './workspaceEvents.js';
5
8
  function buildEvent(type, workspaceId, data) {
@@ -40,22 +43,123 @@ export async function emitInvocationCompletionEffects(deps, workspaceId, result)
40
43
  // Through the durable log so observers can backfill action results too.
41
44
  fanoutTasks.push(appendAndPublishWorkspaceEvent({ db: deps.db, realtime: deps.realtime }, workspaceId, { type: eventType, payload }));
42
45
  await Promise.allSettled(fanoutTasks);
46
+ await enqueueAndSendWebhook(deps, workspaceId, eventType, result);
47
+ }
48
+ /**
49
+ * Push one event through the durable outbox + external webhook queue. Both steps
50
+ * are best-effort — a caller's state transition must never fail because the
51
+ * outbox insert or queue send did.
52
+ */
53
+ async function enqueueAndSendWebhook(deps, workspaceId, eventType, data) {
43
54
  let outboxId;
44
55
  try {
45
- outboxId = await enqueueEvent(deps.db, workspaceId, eventType, result);
56
+ outboxId = await enqueueEvent(deps.db, workspaceId, eventType, data);
46
57
  }
47
58
  catch {
48
59
  // Best-effort: if the durable outbox row can't be inserted, still try the queue send.
49
60
  }
50
61
  try {
51
- await deps.webhookQueue.send(outboxId ? { type: eventType, workspaceId, data: result, outboxId } : {
62
+ await deps.webhookQueue.send(outboxId ? { type: eventType, workspaceId, data, outboxId } : {
52
63
  type: eventType,
53
64
  workspaceId,
54
- data: result,
65
+ data,
55
66
  });
56
67
  }
57
68
  catch {
58
- // Best-effort side effect; completion must not fail because webhook delivery did.
69
+ // Best-effort side effect; the state transition must not fail because webhook delivery did.
70
+ }
71
+ }
72
+ /** Shape of the `metadata.fleet.invocation_id` spawn correlation. Unknown keys
73
+ * are stripped by default, so extra metadata fields are tolerated. */
74
+ const fleetInvocationSchema = z.object({
75
+ fleet: z.object({ invocation_id: z.string() }),
76
+ });
77
+ /**
78
+ * Extract the spawn invocation id an agent was registered under, if any. The
79
+ * `metadata.fleet.invocation_id` correlation is written by `registerAgentViaNode`
80
+ * on every via-node agent.
81
+ */
82
+ export function fleetInvocationId(metadata) {
83
+ const parsed = fleetInvocationSchema.safeParse(metadata);
84
+ return parsed.success ? parsed.data.fleet.invocation_id : null;
85
+ }
86
+ /** Resolve the caller mailbox of a spawn invocation; best-effort (null on any error). */
87
+ async function lookupSpawnCaller(db, workspaceId, invocationId) {
88
+ try {
89
+ const [row] = await db
90
+ .select({ callerId: actionInvocations.callerId })
91
+ .from(actionInvocations)
92
+ .where(and(eq(actionInvocations.workspaceId, workspaceId), eq(actionInvocations.id, invocationId)));
93
+ return row?.callerId ?? null;
94
+ }
95
+ catch {
96
+ return null;
97
+ }
98
+ }
99
+ /**
100
+ * Fan out a durable `agent.exited` event across the same three channels as
101
+ * invocation completion: (1) the spawn caller's mailbox (when the exit
102
+ * correlates to a spawn invocation with a live caller), (2) the durable
103
+ * workspace event log + live observer stream, and (3) the webhook outbox.
104
+ *
105
+ * Best-effort by contract — every channel is isolated so the underlying agent
106
+ * state transition (deregister / inventory reconcile / release) never fails
107
+ * because an emission did.
108
+ */
109
+ export async function emitAgentExitedEffects(deps, workspaceId, input) {
110
+ const eventType = 'agent.exited';
111
+ const eventData = {
112
+ agent_id: input.agentId,
113
+ agent_name: input.agentName,
114
+ node_id: input.nodeId,
115
+ invocation_id: input.invocationId,
116
+ reason: input.reason,
117
+ };
118
+ const event = buildEvent(eventType, workspaceId, eventData);
119
+ const payload = transformForClient(event);
120
+ const fanoutTasks = [];
121
+ // Notify the spawn caller's mailbox so a spawner learns its agent exited. The
122
+ // stable eventKey dedupes redundant emissions of the same logical exit.
123
+ const callerId = input.invocationId ? await lookupSpawnCaller(deps.db, workspaceId, input.invocationId) : null;
124
+ if (callerId) {
125
+ fanoutTasks.push(sendNodeDeliveriesToAgents({
126
+ db: deps.db,
127
+ nodeConnections: deps.nodeConnections,
128
+ workspaceId,
129
+ environment: deps.config?.environment,
130
+ httpPushProxy: deps.config?.httpPushProxy,
131
+ }, {
132
+ agentIds: [callerId],
133
+ event: eventType,
134
+ // Omit messageId so delivery falls back to this unique eventKey (agent +
135
+ // invocation + reason). A messageId keyed only on agentId would repeat
136
+ // across an agent's lifecycle sessions and a downstream dedup on it could
137
+ // drop later exit notifications.
138
+ eventKey: `${input.agentId}_${input.invocationId ?? 'none'}_${input.reason}`,
139
+ data: eventData,
140
+ }));
59
141
  }
142
+ fanoutTasks.push(appendAndPublishWorkspaceEvent({ db: deps.db, realtime: deps.realtime }, workspaceId, { type: eventType, payload }));
143
+ await Promise.allSettled(fanoutTasks);
144
+ await enqueueAndSendWebhook(deps, workspaceId, eventType, eventData);
145
+ }
146
+ /**
147
+ * Fan out a durable `node.status.online` / `node.status.offline` event. Node
148
+ * death has no single caller mailbox, so only the durable workspace log + live
149
+ * stream and the webhook outbox apply. Best-effort by contract.
150
+ */
151
+ export async function emitNodeStatusEffects(deps, workspaceId, input) {
152
+ const eventType = input.status === 'online' ? 'node.status.online' : 'node.status.offline';
153
+ const eventData = {
154
+ node_id: input.nodeId,
155
+ node_name: input.nodeName,
156
+ ...(input.status === 'offline' && input.reason ? { reason: input.reason } : {}),
157
+ };
158
+ const event = buildEvent(eventType, workspaceId, eventData);
159
+ const payload = transformForClient(event);
160
+ await Promise.allSettled([
161
+ appendAndPublishWorkspaceEvent({ db: deps.db, realtime: deps.realtime }, workspaceId, { type: eventType, payload }),
162
+ ]);
163
+ await enqueueAndSendWebhook(deps, workspaceId, eventType, eventData);
60
164
  }
61
165
  //# sourceMappingURL=invocationCompletion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"invocationCompletion.js","sourceRoot":"","sources":["../../src/engine/invocationCompletion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAatE,SAAS,UAAU,CAAC,IAAY,EAAE,WAAmB,EAAE,IAA6B;IAClF,OAAO;QACL,IAAI;QACJ,YAAY,EAAE,WAAW;QACzB,IAAI;QACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,IAA8B,EAC9B,WAAmB,EACnB,MAAwB;IAExB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACpF,MAAM,YAAY,GAAG;QACnB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;IACF,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAE1C,MAAM,WAAW,GAAuB,EAAE,CAAC;IAC3C,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,WAAW,CAAC,IAAI,CACd,0BAA0B,CAAC;YACzB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,WAAW;YACX,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW;YACrC,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa;SAC1C,EAAE;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;YAC5B,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,MAAM,CAAC,aAAa;YAC9B,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,MAAM,CAAC,aAAa;SAChC,CAAC,CACH,CAAC;IACJ,CAAC;IACD,wEAAwE;IACxE,WAAW,CAAC,IAAI,CACd,8BAA8B,CAC5B,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EACxC,WAAW,EACX,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAC7B,CACF,CAAC;IACF,MAAM,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAEtC,IAAI,QAA4B,CAAC;IACjC,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,MAAiC,CAAC,CAAC;IACpG,CAAC;IAAC,MAAM,CAAC;QACP,sFAAsF;IACxF,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YACjG,IAAI,EAAE,SAAS;YACf,WAAW;YACX,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,kFAAkF;IACpF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"invocationCompletion.js","sourceRoot":"","sources":["../../src/engine/invocationCompletion.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import type { getDb } from '../db/index.js';
3
3
  import { agents, nodes } from '../db/schema.js';
4
4
  import type { EngineDb } from '../ports/database.js';
5
5
  import { type NodeConnectionRegistry } from '../ports/realtime.js';
6
- import type { InvocationCompletionDeps } from './invocationCompletion.js';
6
+ import type { InvocationCompletionDeps, NodeOfflineReason } from './invocationCompletion.js';
7
7
  type Db = ReturnType<typeof getDb>;
8
8
  type NodeRow = typeof nodes.$inferSelect;
9
9
  type AgentRow = typeof agents.$inferSelect;
@@ -148,6 +148,69 @@ export declare function getNodeByName(db: Db, workspaceId: string, name: string)
148
148
  lastHeartbeatAt: Date | null;
149
149
  createdAt: Date;
150
150
  }>;
151
+ export declare function getNodeById(db: Db, workspaceId: string, nodeId: string): Promise<{
152
+ id: string;
153
+ workspaceId: string;
154
+ name: string;
155
+ tokenHash: string;
156
+ machineId: string | null;
157
+ kind: string;
158
+ role: string;
159
+ deliveryAdapter: string;
160
+ deliveryConfig: Record<string, unknown> | null;
161
+ capabilities: {
162
+ name: string;
163
+ kind?: string | undefined;
164
+ global?: boolean | undefined;
165
+ queue?: boolean | undefined;
166
+ metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
167
+ }[];
168
+ maxAgents: number;
169
+ activeAgents: number;
170
+ reservedAgents: number;
171
+ tags: string[];
172
+ version: string;
173
+ status: string;
174
+ handlersLive: boolean;
175
+ load: number;
176
+ lastHeartbeatAt: Date | null;
177
+ createdAt: Date;
178
+ }>;
179
+ /**
180
+ * Resolve the node an enroll (POST /v1/nodes) targets: by node_id when
181
+ * supplied, by name otherwise.
182
+ */
183
+ export declare function resolveNodeForEnroll(db: Db, workspaceId: string, data: {
184
+ node_id?: string;
185
+ name: string;
186
+ }): Promise<{
187
+ id: string;
188
+ workspaceId: string;
189
+ name: string;
190
+ tokenHash: string;
191
+ machineId: string | null;
192
+ kind: string;
193
+ role: string;
194
+ deliveryAdapter: string;
195
+ deliveryConfig: Record<string, unknown> | null;
196
+ capabilities: {
197
+ name: string;
198
+ kind?: string | undefined;
199
+ global?: boolean | undefined;
200
+ queue?: boolean | undefined;
201
+ metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
202
+ }[];
203
+ maxAgents: number;
204
+ activeAgents: number;
205
+ reservedAgents: number;
206
+ tags: string[];
207
+ version: string;
208
+ status: string;
209
+ handlersLive: boolean;
210
+ load: number;
211
+ lastHeartbeatAt: Date | null;
212
+ createdAt: Date;
213
+ }>;
151
214
  export interface RegisterNodeResult {
152
215
  node: ReturnType<typeof publicNode>;
153
216
  acceptance: FleetCapabilityAcceptance[];
@@ -179,20 +242,23 @@ export declare function heartbeatNode(db: Db, workspaceId: string, nodeId: strin
179
242
  last_heartbeat_at: string | null;
180
243
  created_at: string;
181
244
  } | null>;
182
- export declare function markNodeOffline(db: Db, registry: NodeConnectionRegistry, workspaceId: string, nodeId: string): Promise<void>;
245
+ export declare function markNodeOffline(db: Db, registry: NodeConnectionRegistry, workspaceId: string, nodeId: string, effects?: {
246
+ deps?: InvocationCompletionDeps;
247
+ reason?: NodeOfflineReason;
248
+ }): Promise<void>;
183
249
  /**
184
250
  * A provider's control connection dropped. Its capability set persists (marked
185
251
  * offline) so the node still shows the manifest; agents it hosted go offline.
186
252
  * When it was the node's last connection the whole node goes offline.
187
253
  */
188
- export declare function handleProviderDisconnect(db: Db, registry: NodeConnectionRegistry, workspaceId: string, nodeId: string, providerName: string, hasRemainingConnections: boolean): Promise<void>;
254
+ export declare function handleProviderDisconnect(db: Db, registry: NodeConnectionRegistry, workspaceId: string, nodeId: string, providerName: string, hasRemainingConnections: boolean, deps?: InvocationCompletionDeps): Promise<void>;
189
255
  /**
190
256
  * Provider-scoped deregister: removes the provider's attachment, persisted
191
257
  * capability set, and materialized actions. When it was the node's last
192
258
  * provider the node goes fully offline.
193
259
  */
194
- export declare function deregisterProvider(db: Db, registry: NodeConnectionRegistry, workspaceId: string, nodeId: string, providerName: string): Promise<void>;
195
- export declare function sweepOfflineNodes(db: Db, registry: NodeConnectionRegistry): Promise<number>;
260
+ export declare function deregisterProvider(db: Db, registry: NodeConnectionRegistry, workspaceId: string, nodeId: string, providerName: string, deps?: InvocationCompletionDeps): Promise<void>;
261
+ export declare function sweepOfflineNodes(db: Db, registry: NodeConnectionRegistry, deps?: InvocationCompletionDeps): Promise<number>;
196
262
  export declare function ensureDirectNodeForAgent(db: Db, workspaceId: string, agent: Pick<AgentRow, 'id' | 'name' | 'locationNodeId'>, opts?: {
197
263
  force?: boolean;
198
264
  online?: boolean;
@@ -261,7 +327,7 @@ export declare function registerAgentViaNode(db: Db, workspaceId: string, nodeId
261
327
  export declare function deregisterAgentViaNode(db: Db, workspaceId: string, nodeId: string, message: {
262
328
  agent_id?: string;
263
329
  name?: string;
264
- }): Promise<{
330
+ }, deps?: InvocationCompletionDeps): Promise<{
265
331
  id: string;
266
332
  name: string;
267
333
  createdAt: Date;
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/engine/node.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,yBAAyB,EAEzB,yBAAyB,EACzB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAqB,MAAM,EAA8D,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAI/H,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAgC,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAqBjG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AACnC,KAAK,OAAO,GAAG,OAAO,KAAK,CAAC,YAAY,CAAC;AACzC,KAAK,QAAQ,GAAG,OAAO,MAAM,CAAC,YAAY,CAAC;AAC3C,KAAK,QAAQ,GAAG,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC;AAC5C,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEpC,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,QAAQ,CAAC;IACb,QAAQ,EAAE,sBAAsB,CAAC;IACjC,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAUD,KAAK,cAAc,GAAG,MAAM,GAAG,eAAe,CAAC;AAE/C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AA0BD,iBAAS,UAAU,CAAC,GAAG,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;EAqB/B;AAyDD,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE;IACJ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;;;;;;;;;;;;;;;GAyEF;AAED,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGjE;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;GAO5E;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IACpC,UAAU,EAAE,yBAAyB,EAAE,CAAC;IACxC,QAAQ,EAAE,qBAAqB,CAAC;CACjC;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,MAAM,EAC3B,OAAO,EAAE,wBAAwB,EACjC,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CA8E7B;AAED,wBAAsB,aAAa,CACjC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;UA+EnC;AAED,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,sBAAsB,EAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,iBA+Bf;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,sBAAsB,EAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,uBAAuB,EAAE,OAAO,iBAsBjC;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,sBAAsB,EAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,iBA0BrB;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBjG;AAgHD,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,GAAG,gBAAgB,CAAC,EACvD,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO;;;;;;;;;;;;;;;;;;;;;;;;UAG7E;AA4ID,wBAAsB,6BAA6B,CACjD,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,iBAYhB;AAgCD,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO;;;;;;;;;;;;;GA0D9D;AAED,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBA6BzG;AAED,wBAAsB,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;YA2BjF;AAED,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,yBAAyB,EAClC,OAAO,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAO,GAClD,OAAO,CAAC,sBAAsB,CAAC,CAwGjC;AAED,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;UAyC9C;AAED,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,sBAAsB,EAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,mBAAmB,EAAE,EACtC,cAAc,CAAC,EAAE,wBAAwB;;;;;;;;;GAqM1C;AAED,wBAAsB,SAAS,CAC7B,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO;;;;;;;;;;;;;;;;;;;;;;;;KAOrD;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;UAG5E;AAaD,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,4BAA4B,iBAwShF"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/engine/node.ts"],"names":[],"mappings":"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"}