@masons/runtime-broker 0.2.0 → 0.2.2

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/broker/broker-daemon.d.ts +8 -0
  2. package/dist/broker/broker-daemon.d.ts.map +1 -1
  3. package/dist/broker/broker-daemon.js +731 -81
  4. package/dist/broker/connector-ws.d.ts +4 -0
  5. package/dist/broker/connector-ws.d.ts.map +1 -1
  6. package/dist/broker/connector-ws.js +12 -0
  7. package/dist/broker/control-event-dispatcher.d.ts.map +1 -1
  8. package/dist/broker/control-event-dispatcher.js +34 -16
  9. package/dist/broker/control-event-types.d.ts +12 -2
  10. package/dist/broker/control-event-types.d.ts.map +1 -1
  11. package/dist/broker/delivery-cursor-file.d.ts +8 -0
  12. package/dist/broker/delivery-cursor-file.d.ts.map +1 -0
  13. package/dist/broker/delivery-cursor-file.js +71 -0
  14. package/dist/broker/endpoint-registry.d.ts +7 -0
  15. package/dist/broker/endpoint-registry.d.ts.map +1 -1
  16. package/dist/broker/endpoint-registry.js +3 -0
  17. package/dist/broker/entry.d.ts.map +1 -1
  18. package/dist/broker/entry.js +7 -1
  19. package/dist/broker/ipc-server.d.ts +33 -1
  20. package/dist/broker/ipc-server.d.ts.map +1 -1
  21. package/dist/broker/ipc-server.js +8 -1
  22. package/dist/broker/paths.d.ts +1 -0
  23. package/dist/broker/paths.d.ts.map +1 -1
  24. package/dist/broker/paths.js +1 -0
  25. package/dist/broker/reconnecting-buffer.d.ts +3 -0
  26. package/dist/broker/reconnecting-buffer.d.ts.map +1 -1
  27. package/dist/broker/reconnecting-buffer.js +3 -0
  28. package/dist/broker/runtime-endpoint-port.d.ts +4 -0
  29. package/dist/broker/runtime-endpoint-port.d.ts.map +1 -1
  30. package/dist/broker/runtime-inbound-routed-emitter.d.ts +22 -0
  31. package/dist/broker/runtime-inbound-routed-emitter.d.ts.map +1 -0
  32. package/dist/broker/runtime-inbound-routed-emitter.js +147 -0
  33. package/dist/broker/runtime-inbound-routed-event-types.d.ts +10 -0
  34. package/dist/broker/runtime-inbound-routed-event-types.d.ts.map +1 -0
  35. package/dist/broker/runtime-inbound-routed-event-types.js +1 -0
  36. package/dist/broker/runtime-processing-state-event-types.d.ts +26 -0
  37. package/dist/broker/runtime-processing-state-event-types.d.ts.map +1 -0
  38. package/dist/broker/runtime-processing-state-event-types.js +1 -0
  39. package/dist/broker/undispatched-changed-event-types.d.ts +1 -0
  40. package/dist/broker/undispatched-changed-event-types.d.ts.map +1 -1
  41. package/dist/broker/undispatched-inbox.d.ts +1 -0
  42. package/dist/broker/undispatched-inbox.d.ts.map +1 -1
  43. package/dist/broker/version-handshake.js +1 -1
  44. package/dist/broker-client/broker-client.d.ts +31 -0
  45. package/dist/broker-client/broker-client.d.ts.map +1 -1
  46. package/dist/broker-client/broker-client.js +30 -0
  47. package/dist/connector-client.d.ts +5 -0
  48. package/dist/connector-client.d.ts.map +1 -1
  49. package/dist/connector-client.js +47 -5
  50. package/dist/runtime-endpoint-client.d.ts +14 -0
  51. package/dist/runtime-endpoint-client.d.ts.map +1 -1
  52. package/dist/runtime-endpoint-client.js +66 -0
  53. package/dist/types.d.ts +2 -0
  54. package/dist/types.d.ts.map +1 -1
  55. package/dist/types.js +1 -0
  56. package/dist/version.d.ts +1 -1
  57. package/dist/version.js +1 -1
  58. package/package.json +1 -1
@@ -0,0 +1,147 @@
1
+ export const DEFAULT_INBOUND_ROUTED_EMITTER_CAPACITY = 1024;
2
+ export const DEFAULT_INBOUND_ROUTED_EMITTER_BACKOFF_INITIAL_MS = 500;
3
+ export const DEFAULT_INBOUND_ROUTED_EMITTER_BACKOFF_MAX_MS = 30_000;
4
+ export const DEFAULT_INBOUND_ROUTED_EMITTER_MAX_RETRIES = 5;
5
+ export function createRuntimeInboundRoutedEmitter(post, logger, opts = {}) {
6
+ const cap = opts.capacity ?? DEFAULT_INBOUND_ROUTED_EMITTER_CAPACITY;
7
+ const initialBackoff = opts.backoffInitialMs ?? DEFAULT_INBOUND_ROUTED_EMITTER_BACKOFF_INITIAL_MS;
8
+ const maxBackoff = opts.backoffMaxMs ?? DEFAULT_INBOUND_ROUTED_EMITTER_BACKOFF_MAX_MS;
9
+ const maxRetries = opts.maxRetries ?? DEFAULT_INBOUND_ROUTED_EMITTER_MAX_RETRIES;
10
+ if (cap <= 0)
11
+ throw new Error(`capacity must be positive: ${cap}`);
12
+ if (initialBackoff <= 0)
13
+ throw new Error(`backoffInitialMs must be positive: ${initialBackoff}`);
14
+ if (maxBackoff < initialBackoff)
15
+ throw new Error("backoffMaxMs must be >= backoffInitialMs");
16
+ if (maxRetries < 0)
17
+ throw new Error(`maxRetries must be non-negative: ${maxRetries}`);
18
+ const queue = [];
19
+ let draining = false;
20
+ let stopped = false;
21
+ let activeDrain = null;
22
+ let wakeSleep = null;
23
+ const sleep = (ms) => new Promise((resolve) => {
24
+ const t = setTimeout(() => {
25
+ wakeSleep = null;
26
+ resolve();
27
+ }, ms);
28
+ t.unref?.();
29
+ wakeSleep = () => {
30
+ clearTimeout(t);
31
+ wakeSleep = null;
32
+ resolve();
33
+ };
34
+ });
35
+ const drain = async () => {
36
+ while (!stopped && queue.length > 0) {
37
+ const event = queue[0];
38
+ if (!event)
39
+ break;
40
+ let attempts = 0;
41
+ while (true) {
42
+ if (stopped)
43
+ return;
44
+ let outcome;
45
+ try {
46
+ outcome = await post(event);
47
+ }
48
+ catch (err) {
49
+ outcome = {
50
+ ok: false,
51
+ terminal: false,
52
+ detail: err instanceof Error ? err.message : String(err),
53
+ };
54
+ }
55
+ if (outcome.ok)
56
+ break;
57
+ if (outcome.terminal) {
58
+ logger.warn("runtime_inbound_routed_drop_terminal", {
59
+ source_message_id: event.source_message_id,
60
+ routed_to_endpoint_id: event.routed_to_endpoint_id,
61
+ status: outcome.status,
62
+ detail: outcome.detail,
63
+ });
64
+ break;
65
+ }
66
+ attempts++;
67
+ if (attempts > maxRetries) {
68
+ logger.warn("runtime_inbound_routed_drop_max_retries", {
69
+ source_message_id: event.source_message_id,
70
+ routed_to_endpoint_id: event.routed_to_endpoint_id,
71
+ attempts,
72
+ status: outcome.status,
73
+ detail: outcome.detail,
74
+ });
75
+ break;
76
+ }
77
+ const backoff = Math.min(initialBackoff * 2 ** (attempts - 1), maxBackoff);
78
+ logger.info("runtime_inbound_routed_retry", {
79
+ source_message_id: event.source_message_id,
80
+ routed_to_endpoint_id: event.routed_to_endpoint_id,
81
+ attempt: attempts,
82
+ backoff_ms: backoff,
83
+ status: outcome.status,
84
+ });
85
+ await sleep(backoff);
86
+ }
87
+ queue.shift();
88
+ }
89
+ draining = false;
90
+ };
91
+ const kick = () => {
92
+ if (draining || stopped)
93
+ return;
94
+ draining = true;
95
+ activeDrain = drain().catch((err) => {
96
+ logger.error("runtime_inbound_routed_drain_unexpected_error", {
97
+ err: err instanceof Error ? err.message : String(err),
98
+ });
99
+ draining = false;
100
+ });
101
+ };
102
+ return {
103
+ enqueue(event) {
104
+ if (stopped)
105
+ return true;
106
+ let evicted = false;
107
+ if (queue.length >= cap) {
108
+ const old = queue.shift();
109
+ if (old) {
110
+ logger.warn("runtime_inbound_routed_queue_overflow", {
111
+ dropped_source_message_id: old.source_message_id,
112
+ size: queue.length,
113
+ capacity: cap,
114
+ });
115
+ evicted = true;
116
+ }
117
+ }
118
+ queue.push(event);
119
+ kick();
120
+ return !evicted;
121
+ },
122
+ size() {
123
+ return queue.length;
124
+ },
125
+ capacity() {
126
+ return cap;
127
+ },
128
+ async shutdown() {
129
+ stopped = true;
130
+ wakeSleep?.();
131
+ if (activeDrain)
132
+ await activeDrain.catch(() => { });
133
+ },
134
+ };
135
+ }
136
+ export function postRuntimeInboundRoutedViaPort(apiPort) {
137
+ return async (event) => {
138
+ if (!apiPort.emitRuntimeInboundRouted) {
139
+ return {
140
+ ok: false,
141
+ terminal: true,
142
+ detail: "emitRuntimeInboundRouted not implemented on this apiPort",
143
+ };
144
+ }
145
+ return apiPort.emitRuntimeInboundRouted(event);
146
+ };
147
+ }
@@ -0,0 +1,10 @@
1
+ export type RuntimeInboundRouteKind = "active_endpoint" | "reconnecting_endpoint";
2
+ export interface RuntimeInboundRoutedEvent {
3
+ type: "runtime_inbound_routed";
4
+ version: 1;
5
+ source_message_id: string;
6
+ routed_to_endpoint_id: string;
7
+ route_kind: RuntimeInboundRouteKind;
8
+ routed_at: number;
9
+ }
10
+ //# sourceMappingURL=runtime-inbound-routed-event-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-inbound-routed-event-types.d.ts","sourceRoot":"","sources":["../../src/broker/runtime-inbound-routed-event-types.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,uBAAuB,GAC/B,iBAAiB,GACjB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC;IAIX,iBAAiB,EAAE,MAAM,CAAC;IAK1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,uBAAuB,CAAC;IAEpC,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ export type BackgroundExchangeMode = "resident_endpoint" | "adapter_managed_turn";
2
+ export interface RuntimeWorkTargetRef {
3
+ kind: "projection_endpoint";
4
+ projection_endpoint_id: string;
5
+ runtime_session_id?: string;
6
+ background_exchange_mode: BackgroundExchangeMode;
7
+ }
8
+ export type RuntimeProcessingState = "assigned_to_runtime_target" | "adapter_accepted" | "processing_started" | "reply_requested" | "reply_emitted" | "processing_failed" | "waiting_for_runtime_capability" | "target_lost_before_acceptance" | "processing_interrupted" | "expired";
9
+ export interface RuntimeProcessingStateEvent {
10
+ type: "runtime_processing_state";
11
+ version: 1;
12
+ source_message_id: string;
13
+ assignment_id: string;
14
+ state_event_id: string;
15
+ state_sequence: number;
16
+ target_ref: RuntimeWorkTargetRef;
17
+ state: RuntimeProcessingState;
18
+ occurred_at: number;
19
+ undispatched_id?: string;
20
+ retryable?: boolean;
21
+ reason_code?: string;
22
+ detail?: string;
23
+ reply_request_id?: string;
24
+ outbound_message_id?: string;
25
+ }
26
+ //# sourceMappingURL=runtime-processing-state-event-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-processing-state-event-types.d.ts","sourceRoot":"","sources":["../../src/broker/runtime-processing-state-event-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAC9B,mBAAmB,GACnB,sBAAsB,CAAC;AAE3B,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wBAAwB,EAAE,sBAAsB,CAAC;CAClD;AAED,MAAM,MAAM,sBAAsB,GAC9B,4BAA4B,GAC5B,kBAAkB,GAClB,oBAAoB,GACpB,iBAAiB,GACjB,eAAe,GACf,mBAAmB,GACnB,gCAAgC,GAChC,+BAA+B,GAC/B,wBAAwB,GACxB,SAAS,CAAC;AAEd,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,0BAA0B,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC;IACX,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,oBAAoB,CAAC;IACjC,KAAK,EAAE,sBAAsB,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B"}
@@ -5,6 +5,7 @@ interface UndispatchedChangedEventBase {
5
5
  type: "undispatched_changed";
6
6
  version: 1;
7
7
  undispatched_id: string;
8
+ source_message_id?: string;
8
9
  }
9
10
  export interface UndispatchedAddEvent extends UndispatchedChangedEventBase {
10
11
  action: "add";
@@ -1 +1 @@
1
- {"version":3,"file":"undispatched-changed-event-types.d.ts","sourceRoot":"","sources":["../../src/broker/undispatched-changed-event-types.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAMjD,MAAM,MAAM,kBAAkB,GAC1B,oBAAoB,GACpB,6BAA6B,CAAC;AAOlC,MAAM,MAAM,wBAAwB,GAWlC,2CAA2C,CAAC;AAG9C,UAAU,4BAA4B;IACpC,IAAI,EAAE,sBAAsB,CAAC;IAG7B,OAAO,EAAE,CAAC,CAAC;IAEX,eAAe,EAAE,MAAM,CAAC;CACzB;AAGD,MAAM,WAAW,oBAAqB,SAAQ,4BAA4B;IACxE,MAAM,EAAE,KAAK,CAAC;IAEd,cAAc,EAAE,MAAM,CAAC;IASvB,eAAe,EAAE,MAAM,CAAC;IAExB,MAAM,EAAE,kBAAkB,CAAC;IAO3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAMjC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,yBACf,SAAQ,4BAA4B;IACpC,MAAM,EAAE,UAAU,CAAC;IAQnB,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAID,MAAM,WAAW,uBAAwB,SAAQ,4BAA4B;IAC3E,MAAM,EAAE,QAAQ,CAAC;IACjB,aAAa,EAAE,wBAAwB,CAAC;CACzC;AAED,MAAM,MAAM,wBAAwB,GAChC,oBAAoB,GACpB,yBAAyB,GACzB,uBAAuB,CAAC;AAqB5B,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,CAAC,GAAE,MAAuC,GACzC,MAAM,CAYR"}
1
+ {"version":3,"file":"undispatched-changed-event-types.d.ts","sourceRoot":"","sources":["../../src/broker/undispatched-changed-event-types.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAMjD,MAAM,MAAM,kBAAkB,GAC1B,oBAAoB,GACpB,6BAA6B,CAAC;AAOlC,MAAM,MAAM,wBAAwB,GAWlC,2CAA2C,CAAC;AAG9C,UAAU,4BAA4B;IACpC,IAAI,EAAE,sBAAsB,CAAC;IAG7B,OAAO,EAAE,CAAC,CAAC;IAEX,eAAe,EAAE,MAAM,CAAC;IAKxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAGD,MAAM,WAAW,oBAAqB,SAAQ,4BAA4B;IACxE,MAAM,EAAE,KAAK,CAAC;IAEd,cAAc,EAAE,MAAM,CAAC;IASvB,eAAe,EAAE,MAAM,CAAC;IAExB,MAAM,EAAE,kBAAkB,CAAC;IAO3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAMjC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,yBACf,SAAQ,4BAA4B;IACpC,MAAM,EAAE,UAAU,CAAC;IAQnB,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAID,MAAM,WAAW,uBAAwB,SAAQ,4BAA4B;IAC3E,MAAM,EAAE,QAAQ,CAAC;IACjB,aAAa,EAAE,wBAAwB,CAAC;CACzC;AAED,MAAM,MAAM,wBAAwB,GAChC,oBAAoB,GACpB,yBAAyB,GACzB,uBAAuB,CAAC;AAqB5B,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,CAAC,GAAE,MAAuC,GACzC,MAAM,CAYR"}
@@ -1,6 +1,7 @@
1
1
  export declare const DEFAULT_INBOX_CAPACITY = 256;
2
2
  export interface UndispatchedMessage {
3
3
  id: string;
4
+ source_message_id?: string;
4
5
  arrived_at: string;
5
6
  sender_address: string;
6
7
  content: string;
@@ -1 +1 @@
1
- {"version":3,"file":"undispatched-inbox.d.ts","sourceRoot":"","sources":["../../src/broker/undispatched-inbox.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMlC,MAAM,EAAE,aAAa,GAAG,6BAA6B,CAAC;IAEtD,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAMhC,MAAM,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC;IAE1C,IAAI,IAAI,mBAAmB,EAAE,CAAC;IAE9B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAKjD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAElD,IAAI,IAAI,MAAM,CAAC;IAEf,QAAQ,IAAI,MAAM,CAAC;IAEnB,eAAe,IAAI,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,uBAAuB,CACrC,IAAI,GAAE,wBAA6B,GAClC,iBAAiB,CAkDnB"}
1
+ {"version":3,"file":"undispatched-inbox.d.ts","sourceRoot":"","sources":["../../src/broker/undispatched-inbox.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IAEX,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMlC,MAAM,EAAE,aAAa,GAAG,6BAA6B,CAAC;IAEtD,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAMhC,MAAM,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC;IAE1C,IAAI,IAAI,mBAAmB,EAAE,CAAC;IAE9B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAKjD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAElD,IAAI,IAAI,MAAM,CAAC;IAEf,QAAQ,IAAI,MAAM,CAAC;IAEnB,eAAe,IAAI,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,uBAAuB,CACrC,IAAI,GAAE,wBAA6B,GAClC,iBAAiB,CAkDnB"}
@@ -2,7 +2,7 @@ import { randomUUID } from "node:crypto";
2
2
  export const IPC_PROTOCOL_VERSION = "1.0";
3
3
  export const SERVER_CAPABILITIES = Object.freeze({
4
4
  endpoint_metadata_v1: true,
5
- remote_spawn_v1: false,
5
+ remote_spawn_v1: true,
6
6
  undispatched_inbox_v1: false,
7
7
  });
8
8
  export function handleInitialize(req, ctx) {
@@ -1,6 +1,8 @@
1
1
  import { EventEmitter } from "node:events";
2
2
  import type { NetworkPresence } from "../broker/network-presence.js";
3
+ import type { RuntimeProcessingState, RuntimeWorkTargetRef } from "../broker/runtime-processing-state-event-types.js";
3
4
  import { type InitializeResponseBody } from "../broker/version-handshake.js";
5
+ import type { EndpointBackgroundExchangeMode, EndpointExecutionSurface, RuntimeEndpointCapability } from "../runtime-endpoint-client.js";
4
6
  export declare class ConnectorUnavailableError extends Error {
5
7
  readonly code: "connector_unavailable";
6
8
  readonly retryable: true;
@@ -27,6 +29,9 @@ export interface RegisterEndpointArgs {
27
29
  workspace?: string;
28
30
  trackingRef?: string;
29
31
  taskHint?: string;
32
+ runtimeCapabilities?: RuntimeEndpointCapability[];
33
+ executionSurface?: EndpointExecutionSurface;
34
+ backgroundExchangeMode?: EndpointBackgroundExchangeMode;
30
35
  spawnToken?: string;
31
36
  }
32
37
  export interface RegisterEndpointOutcome {
@@ -37,6 +42,31 @@ export interface BrokerInboundMessage {
37
42
  content: string;
38
43
  contentType: string;
39
44
  metadata?: Record<string, unknown>;
45
+ sourceMessageId?: string;
46
+ runtimeAssignment?: BrokerRuntimeAssignmentContext;
47
+ }
48
+ export interface BrokerRuntimeAssignmentContext {
49
+ undispatchedId: string;
50
+ sourceMessageId: string;
51
+ assignmentId: string;
52
+ targetRef: RuntimeWorkTargetRef;
53
+ deliveryIntent: "external_handoff";
54
+ replyCorrelationId?: string;
55
+ }
56
+ export interface ReportRuntimeProcessingStateArgs {
57
+ endpointId: string;
58
+ sourceMessageId: string;
59
+ assignmentId: string;
60
+ stateEventId: string;
61
+ stateSequence: number;
62
+ state: RuntimeProcessingState;
63
+ occurredAt?: number;
64
+ undispatchedId?: string;
65
+ retryable?: boolean;
66
+ reasonCode?: string;
67
+ detail?: string;
68
+ replyRequestId?: string;
69
+ outboundMessageId?: string;
40
70
  }
41
71
  type Events = {
42
72
  message_received: (msg: BrokerInboundMessage) => void;
@@ -62,6 +92,7 @@ export declare class BrokerClient extends EventEmitter {
62
92
  messageId: string;
63
93
  status: string;
64
94
  }>;
95
+ reportRuntimeProcessingState(args: ReportRuntimeProcessingStateArgs): Promise<void>;
65
96
  close(endpointId?: string): Promise<void>;
66
97
  on<K extends keyof Events>(event: K, listener: Events[K]): this;
67
98
  on(event: string | symbol, listener: (...args: unknown[]) => void): this;
@@ -1 +1 @@
1
- {"version":3,"file":"broker-client.d.ts","sourceRoot":"","sources":["../../src/broker-client/broker-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broker-client.d.ts","sourceRoot":"","sources":["../../src/broker-client/broker-client.ts"],"names":[],"mappings":"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"}
@@ -113,6 +113,9 @@ export class BrokerClient extends EventEmitter {
113
113
  workspace: args.workspace,
114
114
  tracking_ref: args.trackingRef,
115
115
  task_hint: args.taskHint,
116
+ runtime_capabilities: args.runtimeCapabilities,
117
+ execution_surface: args.executionSurface,
118
+ background_exchange_mode: args.backgroundExchangeMode,
116
119
  spawn_token: args.spawnToken,
117
120
  });
118
121
  }
@@ -125,6 +128,27 @@ export class BrokerClient extends EventEmitter {
125
128
  metadata,
126
129
  });
127
130
  }
131
+ async reportRuntimeProcessingState(args) {
132
+ if (this.pluginPid === null) {
133
+ throw new Error("BrokerClient.connect must be called before reportRuntimeProcessingState");
134
+ }
135
+ await this.httpJson("POST", "/v1/runtime/processing-state", {
136
+ endpoint_id: args.endpointId,
137
+ plugin_pid: this.pluginPid,
138
+ source_message_id: args.sourceMessageId,
139
+ assignment_id: args.assignmentId,
140
+ state_event_id: args.stateEventId,
141
+ state_sequence: args.stateSequence,
142
+ state: args.state,
143
+ occurred_at: args.occurredAt ?? Date.now(),
144
+ undispatched_id: args.undispatchedId,
145
+ retryable: args.retryable,
146
+ reason_code: args.reasonCode,
147
+ detail: args.detail,
148
+ reply_request_id: args.replyRequestId,
149
+ outbound_message_id: args.outboundMessageId,
150
+ });
151
+ }
128
152
  async close(endpointId) {
129
153
  if (endpointId) {
130
154
  try {
@@ -197,6 +221,12 @@ export class BrokerClient extends EventEmitter {
197
221
  content: msg.content,
198
222
  contentType: msg.contentType,
199
223
  metadata: msg.metadata,
224
+ ...(msg.sourceMessageId !== undefined && {
225
+ sourceMessageId: msg.sourceMessageId,
226
+ }),
227
+ ...(msg.runtimeAssignment !== undefined && {
228
+ runtimeAssignment: msg.runtimeAssignment,
229
+ }),
200
230
  });
201
231
  return;
202
232
  }
@@ -27,6 +27,7 @@ export declare class ConnectorClient extends EventEmitter {
27
27
  private registerReject;
28
28
  private registerTimer;
29
29
  private lastKnownSeq;
30
+ private readonly acceptedDeliveryGaps;
30
31
  private pendingSends;
31
32
  constructor(url: string, token: string);
32
33
  connect(): Promise<void>;
@@ -34,6 +35,10 @@ export declare class ConnectorClient extends EventEmitter {
34
35
  send(to: string, content: string, contentType?: string, metadata?: Record<string, unknown>): Promise<SendAckEvent>;
35
36
  sendTyping(to: string, isTyping: boolean): boolean;
36
37
  ackDelivery(upTo: string): boolean;
38
+ setDeliveryCursor(seq: number): void;
39
+ getDeliveryCursor(): number | undefined;
40
+ prepareDeliverySeqAccepted(seq: number): number | undefined;
41
+ markDeliverySeqAccepted(seq: number): number | undefined;
37
42
  on<K extends keyof ConnectorClientEvents>(event: K, listener: ConnectorClientEvents[K]): this;
38
43
  on(event: string | symbol, listener: (...args: unknown[]) => void): this;
39
44
  once<K extends keyof ConnectorClientEvents>(event: K, listener: ConnectorClientEvents[K]): this;
@@ -1 +1 @@
1
- {"version":3,"file":"connector-client.d.ts","sourceRoot":"","sources":["../src/connector-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connector-client.d.ts","sourceRoot":"","sources":["../src/connector-client.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,7 @@ export class ConnectorClient extends EventEmitter {
35
35
  registerReject = null;
36
36
  registerTimer = null;
37
37
  lastKnownSeq;
38
+ acceptedDeliveryGaps = new Set();
38
39
  pendingSends = new Map();
39
40
  constructor(url, token) {
40
41
  super();
@@ -97,6 +98,50 @@ export class ConnectorClient extends EventEmitter {
97
98
  dbg("ackDelivery upTo=%s sent=%s", upTo, sent);
98
99
  return sent;
99
100
  }
101
+ setDeliveryCursor(seq) {
102
+ if (!Number.isInteger(seq) || seq < 0) {
103
+ throw new Error(`delivery cursor must be a non-negative integer: ${seq}`);
104
+ }
105
+ this.lastKnownSeq = seq;
106
+ for (const accepted of [...this.acceptedDeliveryGaps]) {
107
+ if (accepted <= seq)
108
+ this.acceptedDeliveryGaps.delete(accepted);
109
+ }
110
+ }
111
+ getDeliveryCursor() {
112
+ return this.lastKnownSeq;
113
+ }
114
+ prepareDeliverySeqAccepted(seq) {
115
+ if (!Number.isInteger(seq) || seq < 0)
116
+ return this.lastKnownSeq;
117
+ const floor = this.lastKnownSeq ?? 0;
118
+ if (seq <= floor)
119
+ return this.lastKnownSeq;
120
+ const pending = new Set(this.acceptedDeliveryGaps);
121
+ pending.add(seq);
122
+ let cursor = this.lastKnownSeq;
123
+ let next = floor + 1;
124
+ while (pending.has(next)) {
125
+ cursor = next;
126
+ next++;
127
+ }
128
+ return cursor;
129
+ }
130
+ markDeliverySeqAccepted(seq) {
131
+ if (!Number.isInteger(seq) || seq < 0)
132
+ return this.lastKnownSeq;
133
+ const floor = this.lastKnownSeq ?? 0;
134
+ if (seq <= floor)
135
+ return this.lastKnownSeq;
136
+ this.acceptedDeliveryGaps.add(seq);
137
+ let next = floor + 1;
138
+ while (this.acceptedDeliveryGaps.has(next)) {
139
+ this.acceptedDeliveryGaps.delete(next);
140
+ this.lastKnownSeq = next;
141
+ next++;
142
+ }
143
+ return this.lastKnownSeq;
144
+ }
100
145
  on(event, listener) {
101
146
  return super.on(event, listener);
102
147
  }
@@ -130,6 +175,7 @@ export class ConnectorClient extends EventEmitter {
130
175
  token: this.token,
131
176
  protocolVersion: CURRENT_PROTOCOL_VERSION,
132
177
  clientVersion: PLUGIN_VERSION,
178
+ clientKind: "runtime-broker",
133
179
  ...(this.lastKnownSeq !== undefined
134
180
  ? { lastKnownSeq: this.lastKnownSeq }
135
181
  : {}),
@@ -188,10 +234,6 @@ export class ConnectorClient extends EventEmitter {
188
234
  }
189
235
  if (isAddressedMessage(parsed)) {
190
236
  dbgMsg("MESSAGE_RECEIVED from=%s contentLength=%d seq=%s", parsed.from, parsed.content.length, parsed.seq ?? "none");
191
- if (typeof parsed.seq === "number" &&
192
- (this.lastKnownSeq === undefined || parsed.seq > this.lastKnownSeq)) {
193
- this.lastKnownSeq = parsed.seq;
194
- }
195
237
  this.emit("message_received", parsed);
196
238
  return;
197
239
  }
@@ -220,7 +262,7 @@ export class ConnectorClient extends EventEmitter {
220
262
  setEnvironmentContext(ack.agent, ack.owner);
221
263
  if (typeof ack.deliverySeq === "number" &&
222
264
  this.lastKnownSeq === undefined) {
223
- this.lastKnownSeq = ack.deliverySeq;
265
+ this.setDeliveryCursor(ack.deliverySeq);
224
266
  dbg("delivery cursor initialized: %d", ack.deliverySeq);
225
267
  }
226
268
  this.backoffMs = BACKOFF_INITIAL_MS;
@@ -1,6 +1,9 @@
1
1
  import { PlatformApiError, type PlatformClientConfig } from "./platform-client.js";
2
2
  export { PlatformApiError, type PlatformClientConfig };
3
3
  export type RuntimeKind = "claude-code" | "openclaw" | "codex" | "passport" | "custom" | (string & {});
4
+ export type RuntimeEndpointCapability = "remote_spawn_v1" | "background_exchange_v1" | "foreground_channel_v1" | (string & {});
5
+ export type EndpointExecutionSurface = "owner_attached" | "headless" | (string & {});
6
+ export type EndpointBackgroundExchangeMode = "resident_endpoint" | "adapter_managed_turn" | (string & {});
4
7
  export interface WorkspaceMetadata {
5
8
  root: string;
6
9
  cwd: string;
@@ -18,12 +21,18 @@ export interface RegisterRuntimeEndpointParams {
18
21
  task_hint?: string;
19
22
  workspace?: WorkspaceMetadata;
20
23
  tracking_ref?: string;
24
+ runtime_capabilities?: RuntimeEndpointCapability[];
25
+ execution_surface?: EndpointExecutionSurface;
26
+ background_exchange_mode?: EndpointBackgroundExchangeMode;
21
27
  share_with_peer?: ShareWithPeerField[];
22
28
  }
23
29
  export interface RegisterRuntimeEndpointResponse {
24
30
  endpoint_id: string;
25
31
  node_id: string;
26
32
  display_label: string;
33
+ runtime_capabilities?: RuntimeEndpointCapability[];
34
+ execution_surface?: EndpointExecutionSurface;
35
+ background_exchange_mode?: EndpointBackgroundExchangeMode;
27
36
  heartbeat_after_seconds: number;
28
37
  lease_ttl_seconds: number;
29
38
  soft_retention_seconds: number;
@@ -41,6 +50,9 @@ export interface OwnedRuntimeEndpointView {
41
50
  fingerprint?: {
42
51
  workspace_hash_per_peer?: Record<string, string>;
43
52
  };
53
+ runtime_capabilities?: RuntimeEndpointCapability[];
54
+ execution_surface?: EndpointExecutionSurface;
55
+ background_exchange_mode?: EndpointBackgroundExchangeMode;
44
56
  registered_at: string;
45
57
  retired_at?: string;
46
58
  is_self: boolean;
@@ -78,4 +90,6 @@ export type EmitUndispatchedChangedOutcome = {
78
90
  detail?: string;
79
91
  };
80
92
  export declare function emitRuntimeNetworkPresenceChanged(cfg: PlatformClientConfig, runtimeKey: string, event: Readonly<Record<string, unknown>>): Promise<EmitUndispatchedChangedOutcome>;
93
+ export declare function emitRuntimeInboundRouted(cfg: PlatformClientConfig, runtimeKey: string, event: Readonly<Record<string, unknown>>): Promise<EmitUndispatchedChangedOutcome>;
94
+ export declare function emitRuntimeProcessingState(cfg: PlatformClientConfig, runtimeKey: string, event: Readonly<Record<string, unknown>>): Promise<EmitUndispatchedChangedOutcome>;
81
95
  //# sourceMappingURL=runtime-endpoint-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-endpoint-client.d.ts","sourceRoot":"","sources":["../src/runtime-endpoint-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-endpoint-client.d.ts","sourceRoot":"","sources":["../src/runtime-endpoint-client.ts"],"names":[],"mappings":"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"}
@@ -157,6 +157,72 @@ export async function emitRuntimeNetworkPresenceChanged(cfg, runtimeKey, event)
157
157
  detail: await readErrorDetail(res),
158
158
  };
159
159
  }
160
+ export async function emitRuntimeInboundRouted(cfg, runtimeKey, event) {
161
+ let res;
162
+ try {
163
+ res = await fetch(`${baseUrl(cfg)}/runtime/inbound-routed`, {
164
+ method: "POST",
165
+ headers: jsonHeaders(runtimeKey),
166
+ body: JSON.stringify(event),
167
+ });
168
+ }
169
+ catch (err) {
170
+ return {
171
+ ok: false,
172
+ terminal: false,
173
+ detail: err instanceof Error ? err.message : String(err),
174
+ };
175
+ }
176
+ if (res.status === 204)
177
+ return { ok: true };
178
+ if (res.status === 401 || res.status === 422) {
179
+ return {
180
+ ok: false,
181
+ terminal: true,
182
+ status: res.status,
183
+ detail: await readErrorDetail(res),
184
+ };
185
+ }
186
+ return {
187
+ ok: false,
188
+ terminal: false,
189
+ status: res.status,
190
+ detail: await readErrorDetail(res),
191
+ };
192
+ }
193
+ export async function emitRuntimeProcessingState(cfg, runtimeKey, event) {
194
+ let res;
195
+ try {
196
+ res = await fetch(`${baseUrl(cfg)}/runtime/processing-state`, {
197
+ method: "POST",
198
+ headers: jsonHeaders(runtimeKey),
199
+ body: JSON.stringify(event),
200
+ });
201
+ }
202
+ catch (err) {
203
+ return {
204
+ ok: false,
205
+ terminal: false,
206
+ detail: err instanceof Error ? err.message : String(err),
207
+ };
208
+ }
209
+ if (res.status === 204)
210
+ return { ok: true };
211
+ if (res.status === 401 || res.status === 422 || res.status === 409) {
212
+ return {
213
+ ok: false,
214
+ terminal: true,
215
+ status: res.status,
216
+ detail: await readErrorDetail(res),
217
+ };
218
+ }
219
+ return {
220
+ ok: false,
221
+ terminal: false,
222
+ status: res.status,
223
+ detail: await readErrorDetail(res),
224
+ };
225
+ }
160
226
  async function readErrorDetail(res) {
161
227
  try {
162
228
  const body = (await res.json().catch(() => null));
package/dist/types.d.ts CHANGED
@@ -6,6 +6,7 @@ export interface RegisterEvent {
6
6
  token: string;
7
7
  protocolVersion: number;
8
8
  clientVersion?: string;
9
+ clientKind?: "runtime-broker";
9
10
  lastKnownSeq?: number;
10
11
  }
11
12
  export interface AddressedSendEvent {
@@ -47,6 +48,7 @@ export interface SendAckEvent {
47
48
  }
48
49
  export interface AddressedMessageEvent {
49
50
  event: "MESSAGE_RECEIVED";
51
+ messageId?: string;
50
52
  from: string;
51
53
  content: string;
52
54
  contentType: string;