@relaycast/engine 6.3.2 → 8.0.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 (58) hide show
  1. package/dist/adapters/node/index.d.ts.map +1 -1
  2. package/dist/adapters/node/index.js +2 -0
  3. package/dist/adapters/node/index.js.map +1 -1
  4. package/dist/db/migrations/0033_dm_conversation_reservations.sql +26 -36
  5. package/dist/db/migrations/0034_node_load_reporting.sql +23 -0
  6. package/dist/db/schema.d.ts +34 -0
  7. package/dist/db/schema.d.ts.map +1 -1
  8. package/dist/db/schema.js +4 -0
  9. package/dist/db/schema.js.map +1 -1
  10. package/dist/engine/a2a.d.ts +20 -2
  11. package/dist/engine/a2a.d.ts.map +1 -1
  12. package/dist/engine/a2a.js +63 -3
  13. package/dist/engine/a2a.js.map +1 -1
  14. package/dist/engine/action.d.ts +1 -0
  15. package/dist/engine/action.d.ts.map +1 -1
  16. package/dist/engine/action.js +178 -28
  17. package/dist/engine/action.js.map +1 -1
  18. package/dist/engine/agent.d.ts +69 -1
  19. package/dist/engine/agent.d.ts.map +1 -1
  20. package/dist/engine/agent.js +186 -58
  21. package/dist/engine/agent.js.map +1 -1
  22. package/dist/engine/delivery.d.ts.map +1 -1
  23. package/dist/engine/delivery.js +2 -0
  24. package/dist/engine/delivery.js.map +1 -1
  25. package/dist/engine/dm.d.ts +3 -0
  26. package/dist/engine/dm.d.ts.map +1 -1
  27. package/dist/engine/dm.js +14 -2
  28. package/dist/engine/dm.js.map +1 -1
  29. package/dist/engine/dmAll.d.ts.map +1 -1
  30. package/dist/engine/dmAll.js +8 -0
  31. package/dist/engine/dmAll.js.map +1 -1
  32. package/dist/engine/node.d.ts +10 -6
  33. package/dist/engine/node.d.ts.map +1 -1
  34. package/dist/engine/node.js +50 -5
  35. package/dist/engine/node.js.map +1 -1
  36. package/dist/engine/nodeProvider.d.ts +2 -1
  37. package/dist/engine/nodeProvider.d.ts.map +1 -1
  38. package/dist/engine/nodeProvider.js +30 -6
  39. package/dist/engine/nodeProvider.js.map +1 -1
  40. package/dist/engine/placement.d.ts.map +1 -1
  41. package/dist/engine/placement.js +15 -4
  42. package/dist/engine/placement.js.map +1 -1
  43. package/dist/engine/presence.d.ts.map +1 -1
  44. package/dist/engine/presence.js +5 -2
  45. package/dist/engine/presence.js.map +1 -1
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/routes/a2a.d.ts.map +1 -1
  51. package/dist/routes/a2a.js +213 -0
  52. package/dist/routes/a2a.js.map +1 -1
  53. package/dist/routes/agent.js +4 -1
  54. package/dist/routes/agent.js.map +1 -1
  55. package/dist/routes/dm.d.ts.map +1 -1
  56. package/dist/routes/dm.js +19 -3
  57. package/dist/routes/dm.js.map +1 -1
  58. package/package.json +4 -3
@@ -1,5 +1,5 @@
1
1
  import { and, eq, sql } from 'drizzle-orm';
2
- import { A2aAgentCardSchema, A2aMessageSchema, A2aPartSchema, A2aResponseSchema, A2aTaskSchema, A2aTaskStateSchema, JsonRpcRequestSchema, JsonRpcResponseSchema, } from '@relaycast/a2a';
2
+ import { A2aAgentCardSchema, A2aMessageSchema, A2aPartSchema, A2aResponseSchema, A2aTaskSchema, A2aTaskStateSchema, JsonRpcRequestSchema, JsonRpcResponseSchema, MAX_PROOF_BUNDLE_BYTES, RATIFY_A2A_METADATA_KEY, RATIFY_A2A_WIRE_VERSION, RatifyA2aMetadataSchema, } from '@relaycast/a2a';
3
3
  import { z } from 'zod';
4
4
  import { a2aAgents, agents } from '../db/schema.js';
5
5
  import { registerAgent, getAgentByName, updateAgent } from './agent.js';
@@ -24,8 +24,9 @@ const RelayDMSchema = z.object({
24
24
  created_at: z.string().optional(),
25
25
  thread_id: z.string().nullable().optional(),
26
26
  attachments: z.array(RelayFileAttachmentSchema).optional(),
27
+ metadata: z.record(z.string(), z.unknown()).optional(),
27
28
  });
28
- export { A2aAgentCardSchema, A2aMessageSchema, A2aPartSchema, A2aResponseSchema, A2aTaskSchema, A2aTaskStateSchema, JsonRpcRequestSchema, JsonRpcResponseSchema, };
29
+ export { A2aAgentCardSchema, A2aMessageSchema, A2aPartSchema, A2aResponseSchema, A2aTaskSchema, A2aTaskStateSchema, JsonRpcRequestSchema, JsonRpcResponseSchema, RatifyA2aMetadataSchema, MAX_PROOF_BUNDLE_BYTES, RATIFY_A2A_METADATA_KEY, RATIFY_A2A_WIRE_VERSION, };
29
30
  function ensureString(value, message) {
30
31
  if (!value) {
31
32
  throw codedError(message, 'invalid_request', 400);
@@ -149,6 +150,12 @@ export async function registerA2aAgent(db, workspaceId, input) {
149
150
  const agentCard = A2aAgentCardSchema.parse(resolvedCard);
150
151
  const externalUrl = normalizeBaseUrl(agentCard.url);
151
152
  const relayName = await deriveRelayName(agentCard);
153
+ const remoteSkillNames = new Set(agentCard.skills.flatMap((skill) => [skill.id, skill.name].filter(Boolean)));
154
+ if (input.targetAgent && !remoteSkillNames.has(input.targetAgent)) {
155
+ throw codedError(`A2A target agent "${input.targetAgent}" is not advertised by the agent card`, 'a2a_target_agent_not_advertised', 400);
156
+ }
157
+ const targetAgent = input.targetAgent
158
+ ?? (agentCard.skills.length === 1 ? (agentCard.skills[0].id ?? agentCard.skills[0].name) : undefined);
152
159
  const [existing] = await db
153
160
  .select({ id: a2aAgents.id })
154
161
  .from(a2aAgents)
@@ -162,6 +169,7 @@ export async function registerA2aAgent(db, workspaceId, input) {
162
169
  a2a_external_url: externalUrl,
163
170
  a2a_skills: agentCard.skills,
164
171
  a2a_active: true,
172
+ ...(targetAgent ? { a2a_target_agent: targetAgent } : {}),
165
173
  };
166
174
  // A prior removeA2aAgent soft-removes the A2A agent: it deletes the a2a_agents
167
175
  // row but keeps the relay proxy agent (marked offline, a2a_active:false) to
@@ -284,6 +292,44 @@ export async function getA2aAgentByRelayName(db, workspaceId, relayName) {
284
292
  .where(and(eq(a2aAgents.workspaceId, workspaceId), eq(agents.name, relayName)));
285
293
  return row ? formatA2aRecord(row) : null;
286
294
  }
295
+ /**
296
+ * Complete or rotate the outbound half of an A2A registration.
297
+ *
298
+ * Reciprocal registration necessarily yields the second deployment's bearer
299
+ * token after the first registration row already exists. Updating that row is
300
+ * what lets both deployments authenticate sends without deleting proxies and
301
+ * invalidating the token the other side just stored.
302
+ */
303
+ export async function updateA2aAgentConnection(db, workspaceId, relayName, input) {
304
+ const agentRecord = await getA2aAgentByRelayName(db, workspaceId, relayName);
305
+ if (!agentRecord)
306
+ return null;
307
+ if (input.targetAgent !== undefined && input.targetAgent !== null) {
308
+ const advertisedNames = new Set(agentRecord.agent_card.skills.flatMap((skill) => [skill.id, skill.name].filter(Boolean)));
309
+ if (!advertisedNames.has(input.targetAgent)) {
310
+ throw codedError(`A2A target agent "${input.targetAgent}" is not advertised by the agent card`, 'a2a_target_agent_not_advertised', 400);
311
+ }
312
+ }
313
+ await db
314
+ .update(a2aAgents)
315
+ .set({
316
+ ...(input.authScheme !== undefined ? { authScheme: input.authScheme } : {}),
317
+ ...(input.authCredential !== undefined ? { authCredential: input.authCredential } : {}),
318
+ updatedAt: new Date(),
319
+ })
320
+ .where(eq(a2aAgents.id, agentRecord.id));
321
+ if (input.targetAgent !== undefined) {
322
+ const metadata = { ...(agentRecord.relay_metadata ?? {}) };
323
+ if (input.targetAgent === null) {
324
+ delete metadata.a2a_target_agent;
325
+ }
326
+ else {
327
+ metadata.a2a_target_agent = input.targetAgent;
328
+ }
329
+ await updateAgent(db, workspaceId, relayName, { metadata });
330
+ }
331
+ return getA2aAgentByRelayName(db, workspaceId, relayName);
332
+ }
287
333
  export async function removeA2aAgent(db, workspaceId, relayName) {
288
334
  const agentRecord = await getA2aAgentByRelayName(db, workspaceId, relayName);
289
335
  if (!agentRecord)
@@ -326,6 +372,7 @@ export function translateRelayToA2a(message) {
326
372
  role: 'user',
327
373
  context_id: relay.thread_id ?? undefined,
328
374
  parts,
375
+ metadata: relay.metadata,
329
376
  },
330
377
  },
331
378
  };
@@ -341,6 +388,7 @@ export function translateA2aToRelay(jsonRpc) {
341
388
  text: extractTextFromParts(message.parts),
342
389
  thread_id: message.context_id ?? null,
343
390
  attachments: extractAttachmentsFromParts(message.parts),
391
+ metadata: message.metadata,
344
392
  };
345
393
  }
346
394
  const parsedResponse = JsonRpcResponseSchema.parse(jsonRpc);
@@ -354,10 +402,15 @@ export function translateA2aToRelay(jsonRpc) {
354
402
  text: parts.length > 0 ? extractTextFromParts(parts) : task?.status.message ?? '',
355
403
  thread_id: responseMessage?.context_id ?? task?.context_id ?? null,
356
404
  attachments: extractAttachmentsFromParts(parts),
405
+ metadata: responseMessage?.metadata,
357
406
  };
358
407
  }
359
408
  export async function sendToExternalAgent(agentUrl, jsonRpcPayload, auth) {
360
- const request = JsonRpcRequestSchema.parse(jsonRpcPayload);
409
+ const parsedRequest = JsonRpcRequestSchema.safeParse(jsonRpcPayload);
410
+ if (!parsedRequest.success) {
411
+ throw codedError('Invalid A2A JSON-RPC request or metadata', 'invalid_a2a_request', 400);
412
+ }
413
+ const request = parsedRequest.data;
361
414
  const targetUrl = normalizeBaseUrl(agentUrl);
362
415
  if (!isSafeExternalUrl(targetUrl)) {
363
416
  throw codedError(`Refusing to send to non-public A2A URL: ${targetUrl}`, 'a2a_agent_url_forbidden', 400);
@@ -515,6 +568,13 @@ export async function getWorkspaceAgentCard(db, workspaceId, workspaceName, base
515
568
  },
516
569
  capabilities: {
517
570
  methods: ['message/send', 'message/stream', 'task/get', 'task/cancel'],
571
+ extensions: {
572
+ [RATIFY_A2A_METADATA_KEY]: {
573
+ versions: [RATIFY_A2A_WIRE_VERSION],
574
+ kinds: ['proof_bundle', 'revocation_list'],
575
+ max_proof_bundle_bytes: MAX_PROOF_BUNDLE_BYTES,
576
+ },
577
+ },
518
578
  },
519
579
  default_input_modes: ['text/plain', 'application/json'],
520
580
  default_output_modes: ['text/plain', 'application/json'],
@@ -1 +1 @@
1
- {"version":3,"file":"a2a.js","sourceRoot":"","sources":["../../src/engine/a2a.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"a2a.js","sourceRoot":"","sources":["../../src/engine/a2a.ts"],"names":[],"mappings":"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"}
@@ -126,6 +126,7 @@ export declare function invokeAction(db: Db, workspaceId: string, actionName: st
126
126
  caller_name?: string;
127
127
  }, options?: {
128
128
  nodeConnections?: NodeConnectionRegistry;
129
+ completionDeps?: InvocationCompletionDeps;
129
130
  /** Resolve plain node-scoped actions too (message triggers bind by name
130
131
  * without a node); the resolved row is dispatched node-addressed. */
131
132
  includeNodeScoped?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/engine/action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/engine/action.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
1
  import { and, asc, eq, inArray, isNotNull, isNull, lte, or, sql } from 'drizzle-orm';
2
2
  import { actions, actionInvocations, agents, agentNodeBindings, nodes } from '../db/schema.js';
3
3
  import { generateId } from './snowflake.js';
4
+ import { RELEASED_AGENT_STATUS, releasedAgentName } from './agent.js';
5
+ import { randomHex, sha256Hex } from '../lib/crypto.js';
4
6
  import { codedError } from '../lib/httpError.js';
5
7
  import { toFleetWireJson } from './deliveryWire.js';
6
8
  import { emitAgentExitedEffects, emitInvocationCompletionEffects, fleetInvocationId, } from './invocationCompletion.js';
7
- import { runAtomic } from '../ports/database.js';
9
+ import { runAtomic, runAtomicWrites } from '../ports/database.js';
8
10
  import { claimSpawnNode, chooseNodeForAction, isNodeLive, releaseNodeCapacity, reserveNodeCapacity } from './placement.js';
9
11
  import { DEFAULT_PROVIDER_NAME, capacityProviderName, getProvider, isProviderLive } from './nodeProvider.js';
10
12
  const OPEN_INVOCATION_STATUSES = ['pending', 'dispatched', 'invoked'];
@@ -479,9 +481,6 @@ async function dispatchNodeProviderInvocation(args, options = {}) {
479
481
  return dispatchNodeInvocation({ ...args });
480
482
  }
481
483
  async function dispatchRelease(args) {
482
- if (!args.registry) {
483
- throw codedError('Node dispatch is not available', 'node_dispatch_unavailable', 503);
484
- }
485
484
  const input = recordInput(args.data.input);
486
485
  const name = typeof input.name === 'string' ? input.name : null;
487
486
  if (!name) {
@@ -494,32 +493,173 @@ async function dispatchRelease(args) {
494
493
  if (!agent) {
495
494
  throw codedError(`Agent "${name}" not found`, 'agent_not_found', 404);
496
495
  }
497
- if (agent.locationType !== 'via_node' || !agent.locationNodeId) {
498
- throw codedError(`Agent "${name}" is not bound to a node`, 'agent_not_node_bound', 409);
499
- }
500
496
  const invocation = await createInvocation(args.db, args.workspaceId, null, {
501
497
  input,
502
498
  caller_id: args.data.caller_id,
503
499
  caller_name: args.data.caller_name,
504
500
  action_name: 'release',
505
501
  });
502
+ const completeLocally = async () => {
503
+ const completedAt = new Date();
504
+ // Keyed on the agent id, not on the clock: the id is already unique per
505
+ // workspace, so the tombstone can never collide with an existing row (a
506
+ // second release of the same row is idempotent). A timestamped name would
507
+ // reintroduce a unique-constraint abort into the very path this is fixing.
508
+ // The release time is preserved in `metadata.release.releasedAt`.
509
+ const releasedName = releasedAgentName(agent.name, agent.id);
510
+ const releasedTokenHash = await sha256Hex(`released:${agent.id}:${randomHex(16)}`);
511
+ const invocationIsOpen = sql `EXISTS (
512
+ SELECT 1 FROM ${actionInvocations}
513
+ WHERE ${actionInvocations.workspaceId} = ${args.workspaceId}
514
+ AND ${actionInvocations.id} = ${invocation.id}
515
+ AND ${actionInvocations.status} IN ('pending', 'dispatched', 'invoked')
516
+ )`;
517
+ const results = await runAtomicWrites(args.db, (writeDb) => {
518
+ const writes = [];
519
+ // Resolve the active binding in this atomic unit instead of from a
520
+ // pre-transaction snapshot. A concurrent rebind therefore decrements
521
+ // the node that is actually deactivated below.
522
+ writes.push(writeDb
523
+ .update(nodes)
524
+ .set({
525
+ activeAgents: sql `CASE WHEN ${nodes.activeAgents} > 0 THEN ${nodes.activeAgents} - 1 ELSE 0 END`,
526
+ })
527
+ .where(and(eq(nodes.workspaceId, args.workspaceId), invocationIsOpen, sql `EXISTS (
528
+ SELECT 1 FROM ${agentNodeBindings}
529
+ WHERE ${agentNodeBindings.workspaceId} = ${args.workspaceId}
530
+ AND ${agentNodeBindings.agentId} = ${agent.id}
531
+ AND ${agentNodeBindings.nodeId} = ${nodes.id}
532
+ AND ${agentNodeBindings.status} = 'active'
533
+ )`)));
534
+ writes.push(writeDb
535
+ .update(agentNodeBindings)
536
+ .set({ status: 'inactive', updatedAt: completedAt })
537
+ .where(and(eq(agentNodeBindings.workspaceId, args.workspaceId), eq(agentNodeBindings.agentId, agent.id), eq(agentNodeBindings.status, 'active'), invocationIsOpen)));
538
+ // This helper is only used for delete_agent releases. Non-delete
539
+ // releases fail closed when no live host can receive the invocation.
540
+ //
541
+ // Tombstone-rename rather than DELETE (relaycast#309). Four FKs reference
542
+ // `agents.id` without `onDelete` — channels.created_by (schema.ts:455),
543
+ // messages.agent_id (:503), files.uploaded_by (:666),
544
+ // webhooks.created_by (:759) — so a bare DELETE is refused for any agent
545
+ // that has ever spoken, and inside this atomic unit that refusal aborts
546
+ // the binding update and the invocation completion along with it. Cascade
547
+ // is not an option either: it would destroy the agent's message history,
548
+ // and `messages.agent_id` is NOT NULL so `set null` cannot apply.
549
+ //
550
+ // Renaming frees the unique `(workspace_id, name)` immediately while
551
+ // every FK target stays valid and every message keeps its sender.
552
+ writes.push(writeDb
553
+ .update(agents)
554
+ .set({
555
+ name: releasedName,
556
+ handle: `@${releasedName}`,
557
+ status: RELEASED_AGENT_STATUS,
558
+ // The row survives, so its credential must not. `token_hash` is
559
+ // NOT NULL UNIQUE and cannot be cleared, so rotate it to a value
560
+ // nobody holds; the released agent's old token stops authenticating.
561
+ tokenHash: releasedTokenHash,
562
+ // Same `release` shape the dispatched path writes, so an audit does
563
+ // not have to know which path released the agent.
564
+ metadata: sql `json_patch(COALESCE(${agents.metadata}, '{}'), ${JSON.stringify({
565
+ release: {
566
+ reason: typeof input.reason === 'string' ? input.reason : null,
567
+ released_at: completedAt.toISOString(),
568
+ previous_name: agent.name,
569
+ },
570
+ })})`,
571
+ })
572
+ .where(and(eq(agents.workspaceId, args.workspaceId), eq(agents.id, agent.id), invocationIsOpen)));
573
+ writes.push(writeDb
574
+ .delete(nodes)
575
+ .where(and(eq(nodes.workspaceId, args.workspaceId), eq(nodes.id, `node_direct_${agent.id}`), invocationIsOpen)));
576
+ writes.push(writeDb
577
+ .update(actionInvocations)
578
+ .set({
579
+ status: 'completed',
580
+ output: {
581
+ released: true,
582
+ // The roster row is retained as a tombstone so the agent's history
583
+ // keeps its author; the name is what the caller gets back.
584
+ deleted: false,
585
+ reaped_locally: true,
586
+ released_name: releasedName,
587
+ },
588
+ completedAt,
589
+ })
590
+ .where(and(eq(actionInvocations.workspaceId, args.workspaceId), eq(actionInvocations.id, invocation.id), inArray(actionInvocations.status, OPEN_INVOCATION_STATUSES)))
591
+ .returning({ id: actionInvocations.id }));
592
+ return writes;
593
+ });
594
+ const completed = results.at(-1);
595
+ // External completion effects belong after the durable atomic unit: an
596
+ // aborted local reap must never publish agent.exited.
597
+ const exitNodeId = nodeId ?? agent.locationNodeId;
598
+ if (completed.length > 0 && args.completionDeps && exitNodeId) {
599
+ await emitAgentExitedEffects(args.completionDeps, args.workspaceId, {
600
+ agentId: agent.id,
601
+ agentName: agent.name,
602
+ nodeId: exitNodeId,
603
+ invocationId: fleetInvocationId(agent.metadata),
604
+ reason: 'released',
605
+ });
606
+ }
607
+ return {
608
+ invocation_id: invocation.id,
609
+ action_name: 'release',
610
+ handler_agent_id: null,
611
+ handler_node_id: exitNodeId,
612
+ dispatched_node_id: null,
613
+ input,
614
+ status: 'completed',
615
+ created_at: invocation.createdAt.toISOString(),
616
+ };
617
+ };
618
+ const failClosed = async () => {
619
+ await args.db
620
+ .update(actionInvocations)
621
+ .set({ status: 'failed', error: 'agent_host_unavailable', completedAt: new Date() })
622
+ .where(and(eq(actionInvocations.workspaceId, args.workspaceId), eq(actionInvocations.id, invocation.id), inArray(actionInvocations.status, OPEN_INVOCATION_STATUSES)));
623
+ throw codedError(`Agent "${name}" has no live host node; cannot dispatch release`, 'agent_host_unavailable', 503);
624
+ };
625
+ const registry = args.registry;
626
+ const activeBindings = await args.db
627
+ .select({ nodeId: agentNodeBindings.nodeId })
628
+ .from(agentNodeBindings)
629
+ .where(and(eq(agentNodeBindings.workspaceId, args.workspaceId), eq(agentNodeBindings.agentId, agent.id), eq(agentNodeBindings.status, 'active')));
630
+ const implicitDirectNodeId = `node_direct_${agent.id}`;
631
+ const nodeId = activeBindings.find((binding) => binding.nodeId === agent.locationNodeId)?.nodeId
632
+ ?? activeBindings.find((binding) => binding.nodeId === implicitDirectNodeId)?.nodeId
633
+ ?? activeBindings[0]?.nodeId
634
+ ?? (agent.locationType === 'via_node' ? agent.locationNodeId : null);
635
+ const hostLive = !!registry
636
+ && !!nodeId
637
+ && await isHandlerConnectionLive(args.db, registry, args.workspaceId, nodeId, agent.providerName);
638
+ if (!hostLive) {
639
+ return input.delete_agent === true ? completeLocally() : failClosed();
640
+ }
506
641
  // Release is a capacity operation handled by the provider hosting the agent.
507
642
  const dispatched = await dispatchNodeInvocation({
508
643
  db: args.db,
509
- registry: args.registry,
644
+ registry,
510
645
  workspaceId: args.workspaceId,
511
646
  invocationId: invocation.id,
512
- nodeId: agent.locationNodeId,
647
+ nodeId,
513
648
  providerName: agent.providerName,
514
649
  action: 'release',
515
650
  input,
516
651
  });
652
+ // The provider can disconnect between the liveness check and send. Complete
653
+ // the DB lifecycle locally instead of creating an ownerless pending request.
654
+ if (!dispatched.accepted) {
655
+ return input.delete_agent === true ? completeLocally() : failClosed();
656
+ }
517
657
  return {
518
658
  invocation_id: invocation.id,
519
659
  action_name: 'release',
520
660
  handler_agent_id: null,
521
- handler_node_id: agent.locationNodeId,
522
- dispatched_node_id: dispatched.accepted ? agent.locationNodeId : null,
661
+ handler_node_id: nodeId,
662
+ dispatched_node_id: dispatched.accepted ? nodeId : null,
523
663
  input: recordInput(invocation.input),
524
664
  status: dispatched.accepted ? (dispatched.pending ? 'pending' : 'dispatched') : 'pending',
525
665
  created_at: invocation.createdAt.toISOString(),
@@ -682,6 +822,7 @@ export async function invokeAction(db, workspaceId, actionName, data, options =
682
822
  return dispatchRelease({
683
823
  db,
684
824
  registry: options.nodeConnections,
825
+ completionDeps: options.completionDeps,
685
826
  workspaceId,
686
827
  data,
687
828
  });
@@ -829,40 +970,48 @@ function publicInvocation(row) {
829
970
  completed_at: row.completedAt?.toISOString() ?? null,
830
971
  };
831
972
  }
832
- async function applyReleaseCompletionEffect(db, workspaceId, nodeId, invocation, data, deps) {
973
+ async function applyReleaseCompletionEffect(db, workspaceId, nodeId, invocation, data, deps, options = {}) {
833
974
  if (!isReleaseInvocation(invocation.actionName) || data.error)
834
- return;
975
+ return false;
835
976
  const input = recordInput(invocation.input);
836
977
  const name = typeof input.name === 'string' ? input.name : null;
837
978
  if (!name)
838
- return;
979
+ return false;
839
980
  const [agent] = await db
840
981
  .select()
841
982
  .from(agents)
842
- .where(and(eq(agents.workspaceId, workspaceId), eq(agents.name, name), eq(agents.locationType, 'via_node'), eq(agents.locationNodeId, nodeId)));
983
+ .where(and(eq(agents.workspaceId, workspaceId), eq(agents.name, name), ...(options.expectedAgentId ? [eq(agents.id, options.expectedAgentId)] : []), ...(!options.allowMissingBinding && nodeId ? [
984
+ eq(agents.locationType, 'via_node'),
985
+ eq(agents.locationNodeId, nodeId),
986
+ ] : [])));
843
987
  if (!agent)
844
- return;
988
+ return false;
845
989
  // Only proceed if an active binding actually flipped to inactive. This guards
846
990
  // against a second release (e.g. a retry) double-decrementing activeAgents for
847
991
  // an agent that was already released from this node.
848
- const [deactivatedBinding] = await db
992
+ const deactivatedBindings = await db
849
993
  .update(agentNodeBindings)
850
994
  .set({ status: 'inactive', updatedAt: new Date() })
851
- .where(and(eq(agentNodeBindings.workspaceId, workspaceId), eq(agentNodeBindings.nodeId, nodeId), eq(agentNodeBindings.agentId, agent.id), eq(agentNodeBindings.status, 'active')))
852
- .returning({ id: agentNodeBindings.id });
853
- if (!deactivatedBinding)
854
- return;
995
+ .where(and(eq(agentNodeBindings.workspaceId, workspaceId), eq(agentNodeBindings.agentId, agent.id), eq(agentNodeBindings.status, 'active'), ...(nodeId ? [eq(agentNodeBindings.nodeId, nodeId)] : [])))
996
+ .returning({ nodeId: agentNodeBindings.nodeId });
997
+ if (deactivatedBindings.length === 0 && !options.allowMissingBinding)
998
+ return false;
855
999
  // Capture exit correlation BEFORE the mutation deletes the row or strips the
856
1000
  // spawn/cli metadata, so a durable agent.exited can still be emitted.
857
1001
  const exited = { agentId: agent.id, agentName: agent.name, invocationId: fleetInvocationId(agent.metadata) };
858
- await db
859
- .update(nodes)
860
- .set({
861
- activeAgents: sql `CASE WHEN ${nodes.activeAgents} > 0 THEN ${nodes.activeAgents} - 1 ELSE 0 END`,
862
- })
863
- .where(and(eq(nodes.workspaceId, workspaceId), eq(nodes.id, nodeId)));
1002
+ const deactivatedNodeIds = Array.from(new Set(deactivatedBindings.map((binding) => binding.nodeId)));
1003
+ if (deactivatedNodeIds.length > 0) {
1004
+ await db
1005
+ .update(nodes)
1006
+ .set({
1007
+ activeAgents: sql `CASE WHEN ${nodes.activeAgents} > 0 THEN ${nodes.activeAgents} - 1 ELSE 0 END`,
1008
+ })
1009
+ .where(and(eq(nodes.workspaceId, workspaceId), inArray(nodes.id, deactivatedNodeIds)));
1010
+ }
864
1011
  if (input.delete_agent === true) {
865
1012
  await db.delete(agents).where(and(eq(agents.workspaceId, workspaceId), eq(agents.id, agent.id)));
1013
+ const implicitNodeId = `node_direct_${agent.id}`;
1014
+ await db.delete(nodes).where(and(eq(nodes.workspaceId, workspaceId), eq(nodes.id, implicitNodeId)));
866
1015
  }
867
1016
  else {
868
1017
  const existingMetadata = agent.metadata ?? {};
@@ -886,7 +1035,7 @@ async function applyReleaseCompletionEffect(db, workspaceId, nodeId, invocation,
886
1035
  })
887
1036
  .where(and(eq(agents.workspaceId, workspaceId), eq(agents.id, agent.id)));
888
1037
  }
889
- if (deps) {
1038
+ if (deps && nodeId) {
890
1039
  await emitAgentExitedEffects(deps, workspaceId, {
891
1040
  agentId: exited.agentId,
892
1041
  agentName: exited.agentName,
@@ -895,6 +1044,7 @@ async function applyReleaseCompletionEffect(db, workspaceId, nodeId, invocation,
895
1044
  reason: 'released',
896
1045
  });
897
1046
  }
1047
+ return true;
898
1048
  }
899
1049
  async function dispatchNodeAttempt(db, workspaceId, invocationId, nodeId, opts) {
900
1050
  const stateFields = opts.pending