agent-relay 12.0.0 → 12.1.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 (38) hide show
  1. package/README.md +64 -0
  2. package/dist/cli/agent-relay-mcp.d.ts.map +1 -1
  3. package/dist/cli/agent-relay-mcp.js +177 -28
  4. package/dist/cli/agent-relay-mcp.js.map +1 -1
  5. package/dist/cli/commands/core.d.ts +8 -0
  6. package/dist/cli/commands/core.d.ts.map +1 -1
  7. package/dist/cli/commands/core.js +4 -0
  8. package/dist/cli/commands/core.js.map +1 -1
  9. package/dist/cli/commands/fleet-agent.d.ts +5 -1
  10. package/dist/cli/commands/fleet-agent.d.ts.map +1 -1
  11. package/dist/cli/commands/fleet-agent.js +114 -26
  12. package/dist/cli/commands/fleet-agent.js.map +1 -1
  13. package/dist/cli/commands/fleet.d.ts.map +1 -1
  14. package/dist/cli/commands/fleet.js +93 -13
  15. package/dist/cli/commands/fleet.js.map +1 -1
  16. package/dist/cli/commands/node.js +4 -0
  17. package/dist/cli/commands/node.js.map +1 -1
  18. package/dist/cli/commands/status.d.ts +1 -1
  19. package/dist/cli/commands/status.d.ts.map +1 -1
  20. package/dist/cli/commands/status.js +7 -3
  21. package/dist/cli/commands/status.js.map +1 -1
  22. package/dist/cli/lib/broker-lifecycle.d.ts +2 -0
  23. package/dist/cli/lib/broker-lifecycle.d.ts.map +1 -1
  24. package/dist/cli/lib/broker-lifecycle.js +222 -153
  25. package/dist/cli/lib/broker-lifecycle.js.map +1 -1
  26. package/dist/cli/lib/broker-process-identity.d.ts +30 -0
  27. package/dist/cli/lib/broker-process-identity.d.ts.map +1 -0
  28. package/dist/cli/lib/broker-process-identity.js +229 -0
  29. package/dist/cli/lib/broker-process-identity.js.map +1 -0
  30. package/dist/cli/lib/sdk-command.d.ts.map +1 -1
  31. package/dist/cli/lib/sdk-command.js +20 -2
  32. package/dist/cli/lib/sdk-command.js.map +1 -1
  33. package/dist/cli/lib/spawn-lifecycle.d.ts +12 -0
  34. package/dist/cli/lib/spawn-lifecycle.d.ts.map +1 -0
  35. package/dist/cli/lib/spawn-lifecycle.js +89 -0
  36. package/dist/cli/lib/spawn-lifecycle.js.map +1 -0
  37. package/dist/index.cjs +328 -202
  38. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-command.js","sourceRoot":"","sources":["../../../src/cli/lib/sdk-command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAwB,MAAM,kBAAkB,CAAC;AAE3F,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAyB,MAAM,iBAAiB,CAAC;AAchG,MAAM,UAAU,eAAe,CAAC,YAAqC,EAAE;IACrE,OAAO;QACL,gBAAgB;QAChB,oBAAoB;QACpB,eAAe,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACjF,GAAG,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACjD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QACrD,IAAI,EAAE,WAAW;QACjB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO,CACL,OAAO;SACJ,MAAM,CACL,uBAAuB,EACvB,yEAAyE,CAC1E;SACA,MAAM,CAAC,YAAY,EAAE,2BAA2B,CAAC;SACjD,MAAM,CAAC,iBAAiB,EAAE,6CAA6C,CAAC;SACxE,MAAM,CAAC,kBAAkB,EAAE,wDAAwD,CAAC;QACrF,6EAA6E;QAC7E,iFAAiF;QACjF,8EAA8E;QAC9E,yDAAyD;SACxD,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACxE,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAA6B;IAC9D,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,YAAkC;QACrD,KAAK,EAAE,IAAI,CAAC,KAA2B;QACvC,OAAO,EAAE,IAAI,CAAC,OAA6B;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAoB,EAAE,KAAc;IAC5D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAoB,EAAE,EAAuB;IACxE,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"sdk-command.js","sourceRoot":"","sources":["../../../src/cli/lib/sdk-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export type SpawnLifecycleState = 'accepted' | 'ready' | 'unconfirmed_may_be_running' | 'failed';
2
+ export type SpawnDispatchState = 'dispatched' | 'not_dispatched' | 'unknown';
3
+ export declare function spawnLifecycleState(value: Record<string, unknown>): SpawnLifecycleState;
4
+ /**
5
+ * Project an upstream spawn invocation record down to an allowlisted set of
6
+ * lifecycle-evidence fields, dropping raw error text, task payloads, and any
7
+ * other upstream data that should not cross a CLI/MCP serialization
8
+ * boundary unsanitized.
9
+ */
10
+ export declare function sanitizedSpawnReceipt(value: Record<string, unknown>): Record<string, unknown>;
11
+ export declare function spawnPlacementReceipt(value: Record<string, unknown>): Record<string, unknown>;
12
+ //# sourceMappingURL=spawn-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/spawn-lifecycle.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,OAAO,GAAG,4BAA4B,GAAG,QAAQ,CAAC;AACjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAAC;AA0B7E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAgBvF;AAiBD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgB7F;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAW7F"}
@@ -0,0 +1,89 @@
1
+ const SUCCESS = new Set(['completed', 'succeeded', 'success']);
2
+ const FAILURE = new Set(['failed', 'error', 'cancelled', 'canceled', 'denied']);
3
+ const DISPATCHED = new Set(['dispatched', 'invoked', 'running']);
4
+ const NOT_DISPATCHED = new Set(['pending', 'queued']);
5
+ function text(value) {
6
+ return typeof value === 'string' && value.trim() ? value : undefined;
7
+ }
8
+ function dispatchEvidence(value) {
9
+ const status = text(value.status)?.toLowerCase();
10
+ if (text(value.dispatchedNodeId) ||
11
+ text(value.dispatched_node_id) ||
12
+ text(value.handlerNodeId) ||
13
+ text(value.handler_node_id) ||
14
+ (status !== undefined && (DISPATCHED.has(status) || SUCCESS.has(status)))) {
15
+ return 'dispatched';
16
+ }
17
+ if (status !== undefined && NOT_DISPATCHED.has(status))
18
+ return 'not_dispatched';
19
+ return 'unknown';
20
+ }
21
+ export function spawnLifecycleState(value) {
22
+ const status = text(value.status)?.toLowerCase();
23
+ if (status && SUCCESS.has(status)) {
24
+ const output = value.output !== null && typeof value.output === 'object'
25
+ ? value.output
26
+ : value;
27
+ // A terminal success status without explicit launch and readiness proof is
28
+ // a failed spawn, not a live-but-uncertain one. Genuine uncertainty is
29
+ // reserved for non-terminal acknowledgements and confirmation timeouts.
30
+ return output.spawned === true && output.ready === true ? 'ready' : 'failed';
31
+ }
32
+ if (status && FAILURE.has(status))
33
+ return 'failed';
34
+ if (status === 'accepted')
35
+ return 'accepted';
36
+ if (status && NOT_DISPATCHED.has(status) && dispatchEvidence(value) === 'not_dispatched')
37
+ return 'accepted';
38
+ return 'unconfirmed_may_be_running';
39
+ }
40
+ // Allowlisted keys for a spawn receipt that crosses a CLI/MCP serialization
41
+ // boundary. Upstream invocation records can carry arbitrary broker/handler
42
+ // output (raw error text, task payloads, environment-derived metadata) that
43
+ // is not safe to echo back verbatim — see relay#1563. Only lifecycle
44
+ // evidence (status/ids/readiness) is allowlisted through.
45
+ const SPAWN_RECEIPT_ALLOWED_KEYS = [
46
+ 'status',
47
+ 'invocation_id',
48
+ 'invocationId',
49
+ 'dispatched_node_id',
50
+ 'dispatchedNodeId',
51
+ 'handler_node_id',
52
+ 'handlerNodeId',
53
+ ];
54
+ /**
55
+ * Project an upstream spawn invocation record down to an allowlisted set of
56
+ * lifecycle-evidence fields, dropping raw error text, task payloads, and any
57
+ * other upstream data that should not cross a CLI/MCP serialization
58
+ * boundary unsanitized.
59
+ */
60
+ export function sanitizedSpawnReceipt(value) {
61
+ const out = {};
62
+ for (const key of SPAWN_RECEIPT_ALLOWED_KEYS) {
63
+ if (value[key] !== undefined)
64
+ out[key] = value[key];
65
+ }
66
+ const output = value.output !== null && typeof value.output === 'object'
67
+ ? value.output
68
+ : undefined;
69
+ if (output && (typeof output.spawned === 'boolean' || typeof output.ready === 'boolean')) {
70
+ out.output = {
71
+ ...(typeof output.spawned === 'boolean' ? { spawned: output.spawned } : {}),
72
+ ...(typeof output.ready === 'boolean' ? { ready: output.ready } : {}),
73
+ };
74
+ }
75
+ return out;
76
+ }
77
+ export function spawnPlacementReceipt(value) {
78
+ const invocationId = text(value.invocationId) ?? text(value.invocation_id);
79
+ const dispatchedNodeId = text(value.dispatchedNodeId) ?? text(value.dispatched_node_id);
80
+ const handlerNodeId = text(value.handlerNodeId) ?? text(value.handler_node_id);
81
+ return {
82
+ state: spawnLifecycleState(value),
83
+ dispatchState: dispatchEvidence(value),
84
+ ...(invocationId ? { invocationId } : {}),
85
+ ...(dispatchedNodeId ? { dispatchedNodeId } : {}),
86
+ ...(handlerNodeId ? { handlerNodeId } : {}),
87
+ };
88
+ }
89
+ //# sourceMappingURL=spawn-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn-lifecycle.js","sourceRoot":"","sources":["../../../src/cli/lib/spawn-lifecycle.ts"],"names":[],"mappings":"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"}