@masons/runtime-broker 0.2.5 → 0.2.6
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.
- package/dist/broker/background-assignment-ledger.d.ts +27 -0
- package/dist/broker/background-assignment-ledger.d.ts.map +1 -0
- package/dist/broker/background-assignment-ledger.js +125 -0
- package/dist/broker/broker-daemon.d.ts +2 -1
- package/dist/broker/broker-daemon.d.ts.map +1 -1
- package/dist/broker/broker-daemon.js +160 -28
- package/dist/broker/control-event-types.d.ts +1 -0
- package/dist/broker/control-event-types.d.ts.map +1 -1
- package/dist/broker/entry.d.ts.map +1 -1
- package/dist/broker/entry.js +4 -1
- package/dist/broker/runtime-endpoint-port.d.ts +3 -2
- package/dist/broker/runtime-endpoint-port.d.ts.map +1 -1
- package/dist/broker/runtime-inbound-routed-emitter.d.ts +4 -2
- package/dist/broker/runtime-inbound-routed-emitter.d.ts.map +1 -1
- package/dist/broker/runtime-inbound-routed-emitter.js +18 -6
- package/dist/broker/runtime-inbound-routed-event-types.d.ts +8 -0
- package/dist/broker/runtime-inbound-routed-event-types.d.ts.map +1 -1
- package/dist/broker/runtime-processing-state-event-types.d.ts +1 -0
- package/dist/broker/runtime-processing-state-event-types.d.ts.map +1 -1
- package/dist/broker-client/broker-client.d.ts +2 -1
- package/dist/broker-client/broker-client.d.ts.map +1 -1
- package/dist/runtime-endpoint-client.d.ts +10 -0
- package/dist/runtime-endpoint-client.d.ts.map +1 -1
- package/dist/runtime-endpoint-client.js +43 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { UndispatchedMessage } from "./undispatched-inbox.js";
|
|
2
|
+
export type DurableBackgroundAssignmentState = "assigned" | "committing" | "committed";
|
|
3
|
+
export type DurableBackgroundAssignmentKind = "mailbox_dispatch" | "broker_route";
|
|
4
|
+
export interface DurableBackgroundAssignment {
|
|
5
|
+
kind: DurableBackgroundAssignmentKind;
|
|
6
|
+
state: DurableBackgroundAssignmentState;
|
|
7
|
+
assignmentId: string;
|
|
8
|
+
sourceMessageId: string;
|
|
9
|
+
endpointId: string;
|
|
10
|
+
message: UndispatchedMessage;
|
|
11
|
+
assignedAt: number;
|
|
12
|
+
acceptedAt?: number;
|
|
13
|
+
committedAt?: number;
|
|
14
|
+
deliverySeq?: number;
|
|
15
|
+
routeKind?: "active_endpoint" | "reconnecting_endpoint";
|
|
16
|
+
}
|
|
17
|
+
export interface BackgroundAssignmentLedger {
|
|
18
|
+
get(sourceMessageId: string): DurableBackgroundAssignment | undefined;
|
|
19
|
+
upsert(record: DurableBackgroundAssignment): boolean;
|
|
20
|
+
delete(sourceMessageId: string): boolean;
|
|
21
|
+
list(): DurableBackgroundAssignment[];
|
|
22
|
+
}
|
|
23
|
+
export interface BackgroundAssignmentLedgerOptions {
|
|
24
|
+
persistFile?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function createBackgroundAssignmentLedger(opts?: BackgroundAssignmentLedgerOptions): BackgroundAssignmentLedger;
|
|
27
|
+
//# sourceMappingURL=background-assignment-ledger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-assignment-ledger.d.ts","sourceRoot":"","sources":["../../src/broker/background-assignment-ledger.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,MAAM,gCAAgC,GACxC,UAAU,GACV,YAAY,GACZ,WAAW,CAAC;AAEhB,MAAM,MAAM,+BAA+B,GACvC,kBAAkB,GAClB,cAAc,CAAC;AAEnB,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,+BAA+B,CAAC;IACtC,KAAK,EAAE,gCAAgC,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,iBAAiB,GAAG,uBAAuB,CAAC;CACzD;AAED,MAAM,WAAW,0BAA0B;IACzC,GAAG,CAAC,eAAe,EAAE,MAAM,GAAG,2BAA2B,GAAG,SAAS,CAAC;IACtE,MAAM,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC;IACrD,MAAM,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC;IACzC,IAAI,IAAI,2BAA2B,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,iCAAiC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,GAAE,iCAAsC,GAC3C,0BAA0B,CAkF5B"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { closeSync, fdatasyncSync, mkdirSync, openSync, readFileSync, renameSync, writeSync, } from "node:fs";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
export function createBackgroundAssignmentLedger(opts = {}) {
|
|
4
|
+
const persistFile = opts.persistFile;
|
|
5
|
+
const bySourceMessageId = new Map();
|
|
6
|
+
const snapshot = () => [
|
|
7
|
+
...bySourceMessageId.values(),
|
|
8
|
+
];
|
|
9
|
+
const persist = () => {
|
|
10
|
+
if (!persistFile)
|
|
11
|
+
return;
|
|
12
|
+
mkdirSync(dirname(persistFile), { recursive: true, mode: 0o700 });
|
|
13
|
+
const tmp = `${persistFile}.tmp`;
|
|
14
|
+
const fd = openSync(tmp, "w", 0o600);
|
|
15
|
+
try {
|
|
16
|
+
writeSync(fd, `${JSON.stringify({ version: 1, assignments: snapshot() })}\n`);
|
|
17
|
+
fdatasyncSync(fd);
|
|
18
|
+
}
|
|
19
|
+
finally {
|
|
20
|
+
closeSync(fd);
|
|
21
|
+
}
|
|
22
|
+
renameSync(tmp, persistFile);
|
|
23
|
+
};
|
|
24
|
+
if (persistFile) {
|
|
25
|
+
try {
|
|
26
|
+
const raw = readFileSync(persistFile, "utf8").trim();
|
|
27
|
+
if (raw.length > 0) {
|
|
28
|
+
const parsed = JSON.parse(raw);
|
|
29
|
+
if (parsed.version !== 1 || !Array.isArray(parsed.assignments)) {
|
|
30
|
+
throw new Error("invalid persisted background assignment ledger");
|
|
31
|
+
}
|
|
32
|
+
for (const assignment of parsed.assignments) {
|
|
33
|
+
if (!isDurableBackgroundAssignment(assignment)) {
|
|
34
|
+
throw new Error("invalid persisted background assignment ledger record");
|
|
35
|
+
}
|
|
36
|
+
bySourceMessageId.set(assignment.sourceMessageId, assignment);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
if (!isNodeErr(err, "ENOENT"))
|
|
42
|
+
throw err;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
get(sourceMessageId) {
|
|
47
|
+
return bySourceMessageId.get(sourceMessageId);
|
|
48
|
+
},
|
|
49
|
+
upsert(record) {
|
|
50
|
+
const prior = bySourceMessageId.get(record.sourceMessageId);
|
|
51
|
+
bySourceMessageId.set(record.sourceMessageId, record);
|
|
52
|
+
try {
|
|
53
|
+
persist();
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
if (prior)
|
|
58
|
+
bySourceMessageId.set(record.sourceMessageId, prior);
|
|
59
|
+
else
|
|
60
|
+
bySourceMessageId.delete(record.sourceMessageId);
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
delete(sourceMessageId) {
|
|
65
|
+
const prior = bySourceMessageId.get(sourceMessageId);
|
|
66
|
+
if (!prior)
|
|
67
|
+
return true;
|
|
68
|
+
bySourceMessageId.delete(sourceMessageId);
|
|
69
|
+
try {
|
|
70
|
+
persist();
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
bySourceMessageId.set(sourceMessageId, prior);
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
list() {
|
|
79
|
+
return snapshot();
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function isDurableBackgroundAssignment(value) {
|
|
84
|
+
if (!value || typeof value !== "object")
|
|
85
|
+
return false;
|
|
86
|
+
const record = value;
|
|
87
|
+
return ((record.kind === "mailbox_dispatch" || record.kind === "broker_route") &&
|
|
88
|
+
(record.state === "assigned" ||
|
|
89
|
+
record.state === "committing" ||
|
|
90
|
+
record.state === "committed") &&
|
|
91
|
+
typeof record.assignmentId === "string" &&
|
|
92
|
+
typeof record.sourceMessageId === "string" &&
|
|
93
|
+
typeof record.endpointId === "string" &&
|
|
94
|
+
typeof record.assignedAt === "number" &&
|
|
95
|
+
isUndispatchedMessageShape(record.message) &&
|
|
96
|
+
(record.acceptedAt === undefined ||
|
|
97
|
+
typeof record.acceptedAt === "number") &&
|
|
98
|
+
(record.committedAt === undefined ||
|
|
99
|
+
typeof record.committedAt === "number") &&
|
|
100
|
+
(record.deliverySeq === undefined ||
|
|
101
|
+
typeof record.deliverySeq === "number") &&
|
|
102
|
+
(record.routeKind === undefined ||
|
|
103
|
+
record.routeKind === "active_endpoint" ||
|
|
104
|
+
record.routeKind === "reconnecting_endpoint"));
|
|
105
|
+
}
|
|
106
|
+
function isUndispatchedMessageShape(value) {
|
|
107
|
+
if (!value || typeof value !== "object")
|
|
108
|
+
return false;
|
|
109
|
+
const record = value;
|
|
110
|
+
return (typeof record.id === "string" &&
|
|
111
|
+
typeof record.arrived_at === "string" &&
|
|
112
|
+
typeof record.sender_address === "string" &&
|
|
113
|
+
typeof record.content === "string" &&
|
|
114
|
+
typeof record.content_type === "string" &&
|
|
115
|
+
!!record.metadata &&
|
|
116
|
+
typeof record.metadata === "object" &&
|
|
117
|
+
(record.reason === "unaddressed" ||
|
|
118
|
+
record.reason === "closed_session_continuation"));
|
|
119
|
+
}
|
|
120
|
+
function isNodeErr(err, code) {
|
|
121
|
+
return (typeof err === "object" &&
|
|
122
|
+
err !== null &&
|
|
123
|
+
"code" in err &&
|
|
124
|
+
err.code === code);
|
|
125
|
+
}
|
|
@@ -11,7 +11,7 @@ import type { NetworkPresenceChangedEvent } from "./network-presence-changed-eve
|
|
|
11
11
|
import type { BrokerPaths } from "./paths.js";
|
|
12
12
|
import { type BufferedMessage } from "./reconnecting-buffer.js";
|
|
13
13
|
import type { RuntimeEndpointPort } from "./runtime-endpoint-port.js";
|
|
14
|
-
import type { RuntimeInboundRoutedEvent } from "./runtime-inbound-routed-event-types.js";
|
|
14
|
+
import type { RuntimeInboundRouteClaimEvent, RuntimeInboundRoutedEvent } from "./runtime-inbound-routed-event-types.js";
|
|
15
15
|
import type { ServicesEventClient } from "./services-event-client.js";
|
|
16
16
|
import type { SpawnDriverRegistry } from "./spawn-driver.js";
|
|
17
17
|
import { type UndispatchedChangedEvent } from "./undispatched-changed-event-types.js";
|
|
@@ -51,6 +51,7 @@ export interface BrokerDaemonOptions {
|
|
|
51
51
|
networkPresenceChangedBackoffMaxMs?: number;
|
|
52
52
|
networkPresenceChangedMaxRetries?: number;
|
|
53
53
|
runtimeInboundRoutedPost?: (event: RuntimeInboundRoutedEvent) => Promise<import("./runtime-endpoint-port.js").EmitOutcome>;
|
|
54
|
+
runtimeInboundRouteClaimPost?: (event: RuntimeInboundRouteClaimEvent) => Promise<import("../runtime-endpoint-client.js").RuntimeInboundRouteClaimOutcome>;
|
|
54
55
|
runtimeInboundRoutedCapacity?: number;
|
|
55
56
|
runtimeInboundRoutedBackoffInitialMs?: number;
|
|
56
57
|
runtimeInboundRoutedBackoffMaxMs?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker-daemon.d.ts","sourceRoot":"","sources":["../../src/broker/broker-daemon.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAqB,KAAK,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAQjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,KAAK,sBAAsB,EAE5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACV,UAAU,EAIX,MAAM,0BAA0B,CAAC;AAWlC,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,6BAA6B,CAAC;AAiBrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAM7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO9C,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"broker-daemon.d.ts","sourceRoot":"","sources":["../../src/broker/broker-daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -284,10 +284,45 @@ export async function startBrokerDaemon(opts) {
|
|
|
284
284
|
detail: outcome.detail,
|
|
285
285
|
});
|
|
286
286
|
if (!outcome.terminal && opts.queueOnTransientFailure !== false) {
|
|
287
|
-
runtimeInboundRoutedEmitter.enqueue(event
|
|
287
|
+
const queued = runtimeInboundRoutedEmitter.enqueue(event, {
|
|
288
|
+
onSuccess: opts.onQueuedSuccess,
|
|
289
|
+
});
|
|
290
|
+
return opts.allowQueuedAsSuccess === true ? queued : false;
|
|
288
291
|
}
|
|
289
292
|
return false;
|
|
290
293
|
};
|
|
294
|
+
const directClaimRuntimeInboundRoute = async (event) => {
|
|
295
|
+
const claim = opts.runtimeInboundRouteClaimPost ?? apiPort.claimRuntimeInboundRoute;
|
|
296
|
+
if (!claim) {
|
|
297
|
+
logger.warn("runtime_inbound_route_claim_unavailable", {
|
|
298
|
+
source_message_id: event.source_message_id,
|
|
299
|
+
routed_to_endpoint_id: event.routed_to_endpoint_id,
|
|
300
|
+
});
|
|
301
|
+
return "retry";
|
|
302
|
+
}
|
|
303
|
+
let outcome;
|
|
304
|
+
try {
|
|
305
|
+
outcome = await claim(event);
|
|
306
|
+
}
|
|
307
|
+
catch (err) {
|
|
308
|
+
outcome = {
|
|
309
|
+
ok: false,
|
|
310
|
+
terminal: false,
|
|
311
|
+
detail: err instanceof Error ? err.message : String(err),
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
if (outcome.ok) {
|
|
315
|
+
return outcome.action;
|
|
316
|
+
}
|
|
317
|
+
logger.warn("runtime_inbound_route_claim_failed", {
|
|
318
|
+
source_message_id: event.source_message_id,
|
|
319
|
+
routed_to_endpoint_id: event.routed_to_endpoint_id,
|
|
320
|
+
terminal: outcome.terminal,
|
|
321
|
+
status: outcome.status,
|
|
322
|
+
detail: outcome.detail,
|
|
323
|
+
});
|
|
324
|
+
return "retry";
|
|
325
|
+
};
|
|
291
326
|
const markDeliverySeqAccepted = (seq) => {
|
|
292
327
|
if (typeof seq !== "number")
|
|
293
328
|
return true;
|
|
@@ -669,6 +704,12 @@ export async function startBrokerDaemon(opts) {
|
|
|
669
704
|
}
|
|
670
705
|
};
|
|
671
706
|
controlEventDispatcher.on("dispatch_undispatched", async (event) => {
|
|
707
|
+
if (event.broker_projection_token === undefined) {
|
|
708
|
+
return {
|
|
709
|
+
ok: false,
|
|
710
|
+
detail: "dispatch broker_projection_token missing",
|
|
711
|
+
};
|
|
712
|
+
}
|
|
672
713
|
const targetEndpointId = event.target_ref?.projection_endpoint_id ?? event.target_endpoint_id;
|
|
673
714
|
if (!targetEndpointId) {
|
|
674
715
|
return {
|
|
@@ -774,6 +815,9 @@ export async function startBrokerDaemon(opts) {
|
|
|
774
815
|
state: "assigned_to_runtime_target",
|
|
775
816
|
occurred_at: assignedAt,
|
|
776
817
|
undispatched_id: event.undispatched_id,
|
|
818
|
+
...(event.broker_projection_token !== undefined && {
|
|
819
|
+
broker_projection_token: event.broker_projection_token,
|
|
820
|
+
}),
|
|
777
821
|
};
|
|
778
822
|
const processingResult = await emitRuntimeProcessingState(processingEvent);
|
|
779
823
|
if (!processingResult.ok) {
|
|
@@ -805,12 +849,18 @@ export async function startBrokerDaemon(opts) {
|
|
|
805
849
|
const storedAssignment = existingAssignment ?? {
|
|
806
850
|
context: runtimeAssignment,
|
|
807
851
|
message: taken,
|
|
852
|
+
...(event.broker_projection_token !== undefined && {
|
|
853
|
+
brokerProjectionToken: event.broker_projection_token,
|
|
854
|
+
}),
|
|
808
855
|
accepted: false,
|
|
809
856
|
assignedAt,
|
|
810
857
|
lastStateSequence: processingEvent.state_sequence,
|
|
811
858
|
};
|
|
812
859
|
storedAssignment.context = runtimeAssignment;
|
|
813
860
|
storedAssignment.message = taken;
|
|
861
|
+
if (event.broker_projection_token !== undefined) {
|
|
862
|
+
storedAssignment.brokerProjectionToken = event.broker_projection_token;
|
|
863
|
+
}
|
|
814
864
|
storedAssignment.assignedAt = assignedAt;
|
|
815
865
|
storedAssignment.lastStateSequence = Math.max(storedAssignment.lastStateSequence, processingEvent.state_sequence);
|
|
816
866
|
runtimeAssignments.set(assignmentKey, storedAssignment);
|
|
@@ -1170,6 +1220,9 @@ export async function startBrokerDaemon(opts) {
|
|
|
1170
1220
|
if (!assignment) {
|
|
1171
1221
|
throw new BrokerHttpError(409, "runtime_assignment_unknown", "source assignment is not known to this broker");
|
|
1172
1222
|
}
|
|
1223
|
+
if (assignment.brokerProjectionToken === undefined) {
|
|
1224
|
+
throw new BrokerHttpError(409, "runtime_assignment_projection_authority_missing", "runtime assignment reply requires broker projection authority");
|
|
1225
|
+
}
|
|
1173
1226
|
const task = (async () => {
|
|
1174
1227
|
let record = runtimeAssignmentReplyRecords.get(replyKey);
|
|
1175
1228
|
if (!record) {
|
|
@@ -1186,21 +1239,13 @@ export async function startBrokerDaemon(opts) {
|
|
|
1186
1239
|
occurred_at: Date.now(),
|
|
1187
1240
|
undispatched_id: assignment.context.undispatchedId,
|
|
1188
1241
|
reply_request_id: body.reply_request_id,
|
|
1242
|
+
...(assignment.brokerProjectionToken !== undefined && {
|
|
1243
|
+
broker_projection_token: assignment.brokerProjectionToken,
|
|
1244
|
+
}),
|
|
1189
1245
|
};
|
|
1190
1246
|
const replyRequested = await emitRuntimeProcessingState(replyRequestedEvent);
|
|
1191
1247
|
if (!replyRequested.ok) {
|
|
1192
|
-
|
|
1193
|
-
logger.warn("runtime_reply_requested_projection_skipped", {
|
|
1194
|
-
source_message_id: assignment.context.sourceMessageId,
|
|
1195
|
-
assignment_id: assignment.context.assignmentId,
|
|
1196
|
-
status: replyRequested.status,
|
|
1197
|
-
detail: replyRequested.detail,
|
|
1198
|
-
});
|
|
1199
|
-
}
|
|
1200
|
-
else {
|
|
1201
|
-
throw new BrokerHttpError(replyRequested.terminal ? 409 : 503, "runtime_reply_request_rejected", replyRequested.detail ??
|
|
1202
|
-
"runtime reply request was not accepted");
|
|
1203
|
-
}
|
|
1248
|
+
throw new BrokerHttpError(replyRequested.terminal ? 409 : 503, "runtime_reply_request_rejected", replyRequested.detail ?? "runtime reply request was not accepted");
|
|
1204
1249
|
}
|
|
1205
1250
|
record = {
|
|
1206
1251
|
replyRequestedEvent,
|
|
@@ -1266,6 +1311,9 @@ export async function startBrokerDaemon(opts) {
|
|
|
1266
1311
|
undispatched_id: assignment.context.undispatchedId,
|
|
1267
1312
|
reply_request_id: body.reply_request_id,
|
|
1268
1313
|
outbound_message_id: record.wireMessageId,
|
|
1314
|
+
...(assignment.brokerProjectionToken !== undefined && {
|
|
1315
|
+
broker_projection_token: assignment.brokerProjectionToken,
|
|
1316
|
+
}),
|
|
1269
1317
|
});
|
|
1270
1318
|
assignment.lastStateSequence = replyEmittedSequence;
|
|
1271
1319
|
return result;
|
|
@@ -1299,8 +1347,10 @@ export async function startBrokerDaemon(opts) {
|
|
|
1299
1347
|
if (assignment.context.targetRef.projection_endpoint_id !== body.endpoint_id) {
|
|
1300
1348
|
throw new BrokerHttpError(403, "runtime_assignment_target_mismatch", "endpoint_id does not match the assigned target");
|
|
1301
1349
|
}
|
|
1302
|
-
if (body.state === "
|
|
1303
|
-
|
|
1350
|
+
if (body.state === "assigned_to_runtime_target" ||
|
|
1351
|
+
body.state === "reply_requested" ||
|
|
1352
|
+
body.state === "reply_emitted") {
|
|
1353
|
+
throw new BrokerHttpError(403, `${body.state}_broker_owned`, `${body.state} is emitted by the broker assignment lifecycle path`);
|
|
1304
1354
|
}
|
|
1305
1355
|
const event = {
|
|
1306
1356
|
type: "runtime_processing_state",
|
|
@@ -1432,6 +1482,7 @@ export async function startBrokerDaemon(opts) {
|
|
|
1432
1482
|
source_message_id: pending?.source_message_id ?? undispatched_id,
|
|
1433
1483
|
target_ref: buildLocalDispatchTargetRef(target_endpoint_id, target),
|
|
1434
1484
|
delivery_intent: "external_handoff",
|
|
1485
|
+
broker_projection_token: randomUUID(),
|
|
1435
1486
|
});
|
|
1436
1487
|
if (!result.ok) {
|
|
1437
1488
|
throw new BrokerHttpError(400, "dispatch_failed", result.detail ?? "unknown");
|
|
@@ -1510,7 +1561,36 @@ export async function startBrokerDaemon(opts) {
|
|
|
1510
1561
|
});
|
|
1511
1562
|
const inboundProcessing = new Set();
|
|
1512
1563
|
const blockedInboundSeqs = new Set();
|
|
1564
|
+
const asyncAcceptedInboundSeqs = new Set();
|
|
1513
1565
|
let unsequencedInboundBlocked = false;
|
|
1566
|
+
let deferredDeliveryPendingUpTo;
|
|
1567
|
+
const deliveredInboundSourceRoutes = new Map();
|
|
1568
|
+
const deliveredInboundSourceRouteOrder = [];
|
|
1569
|
+
const DELIVERED_INBOUND_SOURCE_ROUTE_CAP = 4096;
|
|
1570
|
+
const maybeAckDeferredDeliveryPending = () => {
|
|
1571
|
+
if (deferredDeliveryPendingUpTo === undefined ||
|
|
1572
|
+
unsequencedInboundBlocked ||
|
|
1573
|
+
blockedInboundSeqs.size > 0) {
|
|
1574
|
+
return;
|
|
1575
|
+
}
|
|
1576
|
+
const upTo = deferredDeliveryPendingUpTo;
|
|
1577
|
+
deferredDeliveryPendingUpTo = undefined;
|
|
1578
|
+
connector.ackDelivery(upTo);
|
|
1579
|
+
};
|
|
1580
|
+
const rememberDeliveredInboundSourceRoute = (sourceMessageId, event) => {
|
|
1581
|
+
if (deliveredInboundSourceRoutes.has(sourceMessageId)) {
|
|
1582
|
+
deliveredInboundSourceRoutes.set(sourceMessageId, event);
|
|
1583
|
+
return;
|
|
1584
|
+
}
|
|
1585
|
+
deliveredInboundSourceRoutes.set(sourceMessageId, event);
|
|
1586
|
+
deliveredInboundSourceRouteOrder.push(sourceMessageId);
|
|
1587
|
+
while (deliveredInboundSourceRouteOrder.length >
|
|
1588
|
+
DELIVERED_INBOUND_SOURCE_ROUTE_CAP) {
|
|
1589
|
+
const evicted = deliveredInboundSourceRouteOrder.shift();
|
|
1590
|
+
if (evicted)
|
|
1591
|
+
deliveredInboundSourceRoutes.delete(evicted);
|
|
1592
|
+
}
|
|
1593
|
+
};
|
|
1514
1594
|
const handleInboundMessage = async (payload) => {
|
|
1515
1595
|
const meta = payload.metadata ?? {};
|
|
1516
1596
|
const target_endpoint_id = typeof meta.target_endpoint_id === "string"
|
|
@@ -1583,6 +1663,58 @@ export async function startBrokerDaemon(opts) {
|
|
|
1583
1663
|
originalCorrelationId: correlation_id,
|
|
1584
1664
|
});
|
|
1585
1665
|
}
|
|
1666
|
+
const routeKind = decision.entry.state === "active"
|
|
1667
|
+
? "active_endpoint"
|
|
1668
|
+
: "reconnecting_endpoint";
|
|
1669
|
+
const deliverySeq = payload.seq;
|
|
1670
|
+
const onQueuedFinalizationSuccess = typeof deliverySeq === "number"
|
|
1671
|
+
? () => {
|
|
1672
|
+
const wasAlreadyBlocked = blockedInboundSeqs.delete(deliverySeq);
|
|
1673
|
+
if (!wasAlreadyBlocked) {
|
|
1674
|
+
asyncAcceptedInboundSeqs.add(deliverySeq);
|
|
1675
|
+
}
|
|
1676
|
+
markDeliverySeqAccepted(deliverySeq);
|
|
1677
|
+
maybeAckDeferredDeliveryPending();
|
|
1678
|
+
}
|
|
1679
|
+
: undefined;
|
|
1680
|
+
if (payload.messageId !== undefined) {
|
|
1681
|
+
const delivered = deliveredInboundSourceRoutes.get(payload.messageId);
|
|
1682
|
+
if (delivered) {
|
|
1683
|
+
const posted = await directPostRuntimeInboundRouted(delivered, {
|
|
1684
|
+
allowQueuedAsSuccess: payload.seq === undefined,
|
|
1685
|
+
onQueuedSuccess: onQueuedFinalizationSuccess,
|
|
1686
|
+
});
|
|
1687
|
+
if (!posted)
|
|
1688
|
+
return false;
|
|
1689
|
+
const accepted = markDeliverySeqAccepted(payload.seq);
|
|
1690
|
+
if (accepted)
|
|
1691
|
+
maybeAckDeferredDeliveryPending();
|
|
1692
|
+
return accepted;
|
|
1693
|
+
}
|
|
1694
|
+
const claim = await directClaimRuntimeInboundRoute({
|
|
1695
|
+
type: "runtime_inbound_route_claim",
|
|
1696
|
+
version: 1,
|
|
1697
|
+
source_message_id: payload.messageId,
|
|
1698
|
+
routed_to_endpoint_id: decision.entry.endpoint_id,
|
|
1699
|
+
route_kind: routeKind,
|
|
1700
|
+
claimed_at: Date.now(),
|
|
1701
|
+
});
|
|
1702
|
+
if (claim === "retry")
|
|
1703
|
+
return false;
|
|
1704
|
+
if (claim === "skip")
|
|
1705
|
+
return markDeliverySeqAccepted(payload.seq);
|
|
1706
|
+
}
|
|
1707
|
+
let routedEvent;
|
|
1708
|
+
if (payload.messageId !== undefined) {
|
|
1709
|
+
routedEvent = {
|
|
1710
|
+
type: "runtime_inbound_routed",
|
|
1711
|
+
version: 1,
|
|
1712
|
+
source_message_id: payload.messageId,
|
|
1713
|
+
routed_to_endpoint_id: decision.entry.endpoint_id,
|
|
1714
|
+
route_kind: routeKind,
|
|
1715
|
+
routed_at: Date.now(),
|
|
1716
|
+
};
|
|
1717
|
+
}
|
|
1586
1718
|
recordInboundCorrelation(decision.entry.endpoint_id, meta);
|
|
1587
1719
|
if (decision.entry.state === "active") {
|
|
1588
1720
|
const pushed = pushToPlugin(decision.entry.ipc_ws, {
|
|
@@ -1627,17 +1759,12 @@ export async function startBrokerDaemon(opts) {
|
|
|
1627
1759
|
buffer_size: buf.size(),
|
|
1628
1760
|
});
|
|
1629
1761
|
}
|
|
1630
|
-
if (payload.messageId !== undefined) {
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
route_kind: decision.entry.state === "active"
|
|
1637
|
-
? "active_endpoint"
|
|
1638
|
-
: "reconnecting_endpoint",
|
|
1639
|
-
routed_at: Date.now(),
|
|
1640
|
-
}, { queueOnTransientFailure: false });
|
|
1762
|
+
if (routedEvent !== undefined && payload.messageId !== undefined) {
|
|
1763
|
+
rememberDeliveredInboundSourceRoute(payload.messageId, routedEvent);
|
|
1764
|
+
const posted = await directPostRuntimeInboundRouted(routedEvent, {
|
|
1765
|
+
allowQueuedAsSuccess: payload.seq === undefined,
|
|
1766
|
+
onQueuedSuccess: onQueuedFinalizationSuccess,
|
|
1767
|
+
});
|
|
1641
1768
|
if (!posted)
|
|
1642
1769
|
return false;
|
|
1643
1770
|
}
|
|
@@ -1671,10 +1798,13 @@ export async function startBrokerDaemon(opts) {
|
|
|
1671
1798
|
task = handleInboundMessage(payload)
|
|
1672
1799
|
.then((accepted) => {
|
|
1673
1800
|
if (typeof payload.seq === "number") {
|
|
1674
|
-
if (accepted)
|
|
1801
|
+
if (accepted || asyncAcceptedInboundSeqs.has(payload.seq)) {
|
|
1675
1802
|
blockedInboundSeqs.delete(payload.seq);
|
|
1676
|
-
|
|
1803
|
+
asyncAcceptedInboundSeqs.delete(payload.seq);
|
|
1804
|
+
}
|
|
1805
|
+
else {
|
|
1677
1806
|
blockedInboundSeqs.add(payload.seq);
|
|
1807
|
+
}
|
|
1678
1808
|
return;
|
|
1679
1809
|
}
|
|
1680
1810
|
if (accepted)
|
|
@@ -1705,6 +1835,7 @@ export async function startBrokerDaemon(opts) {
|
|
|
1705
1835
|
await Promise.allSettled([...inboundProcessing]);
|
|
1706
1836
|
}
|
|
1707
1837
|
if (unsequencedInboundBlocked || blockedInboundSeqs.size > 0) {
|
|
1838
|
+
deferredDeliveryPendingUpTo = payload.upTo;
|
|
1708
1839
|
logger.warn("delivery_ack_deferred_until_replay", {
|
|
1709
1840
|
upTo: payload.upTo,
|
|
1710
1841
|
count: payload.count,
|
|
@@ -1713,6 +1844,7 @@ export async function startBrokerDaemon(opts) {
|
|
|
1713
1844
|
});
|
|
1714
1845
|
return;
|
|
1715
1846
|
}
|
|
1847
|
+
deferredDeliveryPendingUpTo = undefined;
|
|
1716
1848
|
connector.ackDelivery(payload.upTo);
|
|
1717
1849
|
});
|
|
1718
1850
|
writeDiscoveryFile(paths.discoveryFile, {
|
|
@@ -10,6 +10,7 @@ export interface DispatchUndispatchedEvent extends ControlEventBase {
|
|
|
10
10
|
source_message_id: string;
|
|
11
11
|
target_ref: RuntimeWorkTargetRef;
|
|
12
12
|
delivery_intent: "external_handoff";
|
|
13
|
+
broker_projection_token: string;
|
|
13
14
|
target_endpoint_id?: string;
|
|
14
15
|
}
|
|
15
16
|
export type BackgroundExchangeMode = "resident_endpoint" | "adapter_managed_turn";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-event-types.d.ts","sourceRoot":"","sources":["../../src/broker/control-event-types.ts"],"names":[],"mappings":"AAwCA,MAAM,WAAW,gBAAgB;IAI/B,OAAO,EAAE,CAAC,CAAC;IAWX,eAAe,EAAE,MAAM,CAAC;IAKxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,MAAM,YAAY,GACpB,yBAAyB,GACzB,iBAAiB,GACjB,oBAAoB,CAAC;AAGzB,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IACjE,IAAI,EAAE,uBAAuB,CAAC;IAE9B,eAAe,EAAE,MAAM,CAAC;IAExB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,UAAU,EAAE,oBAAoB,CAAC;IAEjC,eAAe,EAAE,kBAAkB,CAAC;IAKpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,sBAAsB,GAC9B,mBAAmB,GACnB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,oBAAoB,GAC5B;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wBAAwB,EAAE,mBAAmB,CAAC;CAC/C,GACD;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wBAAwB,EAAE,sBAAsB,CAAC;CAClD,CAAC;AAGN,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,IAAI,EAAE,eAAe,CAAC;IAEtB,MAAM,EAAE,MAAM,CAAC;IAMf,YAAY,EAAE,aAAa,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;IAG9D,MAAM,EAAE,uBAAuB,CAAC;CACjC;AAGD,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D,IAAI,EAAE,kBAAkB,CAAC;IAEzB,WAAW,EAAE,MAAM,CAAC;IAEpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAwBD,MAAM,WAAW,UAAU;IAEzB,eAAe,EAAE,MAAM,CAAC;IAExB,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IAE1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"control-event-types.d.ts","sourceRoot":"","sources":["../../src/broker/control-event-types.ts"],"names":[],"mappings":"AAwCA,MAAM,WAAW,gBAAgB;IAI/B,OAAO,EAAE,CAAC,CAAC;IAWX,eAAe,EAAE,MAAM,CAAC;IAKxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,MAAM,YAAY,GACpB,yBAAyB,GACzB,iBAAiB,GACjB,oBAAoB,CAAC;AAGzB,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IACjE,IAAI,EAAE,uBAAuB,CAAC;IAE9B,eAAe,EAAE,MAAM,CAAC;IAExB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,UAAU,EAAE,oBAAoB,CAAC;IAEjC,eAAe,EAAE,kBAAkB,CAAC;IAKpC,uBAAuB,EAAE,MAAM,CAAC;IAKhC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,sBAAsB,GAC9B,mBAAmB,GACnB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,oBAAoB,GAC5B;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wBAAwB,EAAE,mBAAmB,CAAC;CAC/C,GACD;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wBAAwB,EAAE,sBAAsB,CAAC;CAClD,CAAC;AAGN,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,IAAI,EAAE,eAAe,CAAC;IAEtB,MAAM,EAAE,MAAM,CAAC;IAMf,YAAY,EAAE,aAAa,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;IAG9D,MAAM,EAAE,uBAAuB,CAAC;CACjC;AAGD,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D,IAAI,EAAE,kBAAkB,CAAC;IAEzB,WAAW,EAAE,MAAM,CAAC;IAEpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAwBD,MAAM,WAAW,UAAU;IAEzB,eAAe,EAAE,MAAM,CAAC;IAExB,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IAE1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/broker/entry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/broker/entry.ts"],"names":[],"mappings":"AAmFA,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,aAAa,CAAC;AAEpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAMtE,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,gBAAgB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CA8F9B;AA2DD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,OAAO,UAAU,CAAC,KAAwB,GACpD,OAAO,CAAC,gBAAgB,CAAC,CA4B3B;AAaD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,YAAY,GACnB,mBAAmB,CAqIrB;AAYD,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAgG1C"}
|
package/dist/broker/entry.js
CHANGED
|
@@ -2,7 +2,7 @@ import { readFile } from "node:fs/promises";
|
|
|
2
2
|
import { pathToFileURL } from "node:url";
|
|
3
3
|
import { readConfig } from "../config-fs.js";
|
|
4
4
|
import { DEFAULT_API_HOST } from "../platform-client.js";
|
|
5
|
-
import { emitRuntimeInboundRouted, emitRuntimeNetworkPresenceChanged, emitRuntimeProcessingState, emitRuntimeUndispatchedChanged, heartbeatRuntimeEndpoint, registerRuntimeEndpoint, transitionRuntimeEndpointState, unregisterRuntimeEndpoint, updateRuntimeEndpointDisplayMetadata, } from "../runtime-endpoint-client.js";
|
|
5
|
+
import { claimRuntimeInboundRoute, emitRuntimeInboundRouted, emitRuntimeNetworkPresenceChanged, emitRuntimeProcessingState, emitRuntimeUndispatchedChanged, heartbeatRuntimeEndpoint, registerRuntimeEndpoint, transitionRuntimeEndpointState, unregisterRuntimeEndpoint, updateRuntimeEndpointDisplayMetadata, } from "../runtime-endpoint-client.js";
|
|
6
6
|
import { startBrokerDaemon } from "./broker-daemon.js";
|
|
7
7
|
import { ClaudeCodeSpawnDriver } from "./claude-code-spawn-driver.js";
|
|
8
8
|
import { CodexSpawnDriverStub } from "./codex-spawn-driver-stub.js";
|
|
@@ -171,6 +171,9 @@ export function buildApiPort(apiHost, runtimeKey, logger) {
|
|
|
171
171
|
async emitNetworkPresenceChanged(event) {
|
|
172
172
|
return emitRuntimeNetworkPresenceChanged({ apiHost }, runtimeKey, event);
|
|
173
173
|
},
|
|
174
|
+
async claimRuntimeInboundRoute(event) {
|
|
175
|
+
return claimRuntimeInboundRoute({ apiHost }, runtimeKey, event);
|
|
176
|
+
},
|
|
174
177
|
async emitRuntimeInboundRouted(event) {
|
|
175
178
|
return emitRuntimeInboundRouted({ apiHost }, runtimeKey, event);
|
|
176
179
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { RegisterRuntimeEndpointParams, RegisterRuntimeEndpointResponse, TransitionRuntimeEndpointStateParams, UpdateRuntimeEndpointDisplayMetadataParams } from "../runtime-endpoint-client.js";
|
|
1
|
+
import type { RegisterRuntimeEndpointParams, RegisterRuntimeEndpointResponse, RuntimeInboundRouteClaimOutcome, TransitionRuntimeEndpointStateParams, UpdateRuntimeEndpointDisplayMetadataParams } from "../runtime-endpoint-client.js";
|
|
2
2
|
import type { NetworkPresenceChangedEvent } from "./network-presence-changed-event-types.js";
|
|
3
|
-
import type { RuntimeInboundRoutedEvent } from "./runtime-inbound-routed-event-types.js";
|
|
3
|
+
import type { RuntimeInboundRouteClaimEvent, RuntimeInboundRoutedEvent } from "./runtime-inbound-routed-event-types.js";
|
|
4
4
|
import type { RuntimeProcessingStateEvent } from "./runtime-processing-state-event-types.js";
|
|
5
5
|
import type { UndispatchedChangedEvent } from "./undispatched-changed-event-types.js";
|
|
6
6
|
export type EmitOutcome = {
|
|
@@ -19,6 +19,7 @@ export interface RuntimeEndpointPort {
|
|
|
19
19
|
updateDisplayMetadata?(endpointId: string, params: UpdateRuntimeEndpointDisplayMetadataParams): Promise<void>;
|
|
20
20
|
emitUndispatchedChanged?(event: UndispatchedChangedEvent): Promise<EmitOutcome>;
|
|
21
21
|
emitNetworkPresenceChanged?(event: NetworkPresenceChangedEvent): Promise<EmitOutcome>;
|
|
22
|
+
claimRuntimeInboundRoute?(event: RuntimeInboundRouteClaimEvent): Promise<RuntimeInboundRouteClaimOutcome>;
|
|
22
23
|
emitRuntimeInboundRouted?(event: RuntimeInboundRoutedEvent): Promise<EmitOutcome>;
|
|
23
24
|
emitRuntimeProcessingState?(event: RuntimeProcessingStateEvent): Promise<EmitOutcome>;
|
|
24
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-endpoint-port.d.ts","sourceRoot":"","sources":["../../src/broker/runtime-endpoint-port.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,6BAA6B,EAC7B,+BAA+B,EAC/B,oCAAoC,EACpC,0CAA0C,EAC3C,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"runtime-endpoint-port.d.ts","sourceRoot":"","sources":["../../src/broker/runtime-endpoint-port.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,EAC/B,oCAAoC,EACpC,0CAA0C,EAC3C,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,KAAK,EACV,6BAA6B,EAC7B,yBAAyB,EAC1B,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAWtF,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CACN,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAC5C,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAO7C,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAQjE,eAAe,CACb,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,oCAAoC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAAC;IAKjB,qBAAqB,CAAC,CACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,0CAA0C,GACjD,OAAO,CAAC,IAAI,CAAC,CAAC;IAqBjB,uBAAuB,CAAC,CACtB,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,WAAW,CAAC,CAAC;IAYxB,0BAA0B,CAAC,CACzB,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,WAAW,CAAC,CAAC;IAMxB,wBAAwB,CAAC,CACvB,KAAK,EAAE,6BAA6B,GACnC,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAM5C,wBAAwB,CAAC,CACvB,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,WAAW,CAAC,CAAC;IAMxB,0BAA0B,CAAC,CACzB,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,WAAW,CAAC,CAAC;CACzB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { BrokerLogger } from "./logger.js";
|
|
2
|
-
import type { RuntimeInboundRoutedEvent } from "./runtime-inbound-routed-event-types.js";
|
|
3
2
|
import type { EmitOutcome, RuntimeEndpointPort } from "./runtime-endpoint-port.js";
|
|
3
|
+
import type { RuntimeInboundRoutedEvent } from "./runtime-inbound-routed-event-types.js";
|
|
4
4
|
export declare const DEFAULT_INBOUND_ROUTED_EMITTER_CAPACITY = 1024;
|
|
5
5
|
export declare const DEFAULT_INBOUND_ROUTED_EMITTER_BACKOFF_INITIAL_MS = 500;
|
|
6
6
|
export declare const DEFAULT_INBOUND_ROUTED_EMITTER_BACKOFF_MAX_MS = 30000;
|
|
@@ -12,7 +12,9 @@ export interface RuntimeInboundRoutedEmitterOptions {
|
|
|
12
12
|
maxRetries?: number;
|
|
13
13
|
}
|
|
14
14
|
export interface RuntimeInboundRoutedEmitter {
|
|
15
|
-
enqueue(event: RuntimeInboundRoutedEvent
|
|
15
|
+
enqueue(event: RuntimeInboundRoutedEvent, opts?: {
|
|
16
|
+
onSuccess?: () => void;
|
|
17
|
+
}): boolean;
|
|
16
18
|
size(): number;
|
|
17
19
|
capacity(): number;
|
|
18
20
|
shutdown(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-inbound-routed-emitter.d.ts","sourceRoot":"","sources":["../../src/broker/runtime-inbound-routed-emitter.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"runtime-inbound-routed-emitter.d.ts","sourceRoot":"","sources":["../../src/broker/runtime-inbound-routed-emitter.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAEzF,eAAO,MAAM,uCAAuC,OAAO,CAAC;AAC5D,eAAO,MAAM,iDAAiD,MAAM,CAAC;AACrE,eAAO,MAAM,6CAA6C,QAAS,CAAC;AACpE,eAAO,MAAM,0CAA0C,IAAI,CAAC;AAE5D,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,CACL,KAAK,EAAE,yBAAyB,EAChC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,GAChC,OAAO,CAAC;IACX,IAAI,IAAI,MAAM,CAAC;IACf,QAAQ,IAAI,MAAM,CAAC;IACnB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAOD,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,OAAO,CAAC,WAAW,CAAC,EAChE,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,kCAAuC,GAC5C,2BAA2B,CAkJ7B;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,mBAAmB,GAC3B,CAAC,KAAK,EAAE,yBAAyB,KAAK,OAAO,CAAC,WAAW,CAAC,CAW5D"}
|
|
@@ -34,9 +34,10 @@ export function createRuntimeInboundRoutedEmitter(post, logger, opts = {}) {
|
|
|
34
34
|
});
|
|
35
35
|
const drain = async () => {
|
|
36
36
|
while (!stopped && queue.length > 0) {
|
|
37
|
-
const
|
|
38
|
-
if (!
|
|
37
|
+
const item = queue[0];
|
|
38
|
+
if (!item)
|
|
39
39
|
break;
|
|
40
|
+
const { event } = item;
|
|
40
41
|
let attempts = 0;
|
|
41
42
|
while (true) {
|
|
42
43
|
if (stopped)
|
|
@@ -52,8 +53,19 @@ export function createRuntimeInboundRoutedEmitter(post, logger, opts = {}) {
|
|
|
52
53
|
detail: err instanceof Error ? err.message : String(err),
|
|
53
54
|
};
|
|
54
55
|
}
|
|
55
|
-
if (outcome.ok)
|
|
56
|
+
if (outcome.ok) {
|
|
57
|
+
try {
|
|
58
|
+
item.onSuccess?.();
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
logger.warn("runtime_inbound_routed_success_callback_failed", {
|
|
62
|
+
source_message_id: event.source_message_id,
|
|
63
|
+
routed_to_endpoint_id: event.routed_to_endpoint_id,
|
|
64
|
+
err: err instanceof Error ? err.message : String(err),
|
|
65
|
+
});
|
|
66
|
+
}
|
|
56
67
|
break;
|
|
68
|
+
}
|
|
57
69
|
if (outcome.terminal) {
|
|
58
70
|
logger.warn("runtime_inbound_routed_drop_terminal", {
|
|
59
71
|
source_message_id: event.source_message_id,
|
|
@@ -100,7 +112,7 @@ export function createRuntimeInboundRoutedEmitter(post, logger, opts = {}) {
|
|
|
100
112
|
});
|
|
101
113
|
};
|
|
102
114
|
return {
|
|
103
|
-
enqueue(event) {
|
|
115
|
+
enqueue(event, itemOpts) {
|
|
104
116
|
if (stopped)
|
|
105
117
|
return true;
|
|
106
118
|
let evicted = false;
|
|
@@ -108,14 +120,14 @@ export function createRuntimeInboundRoutedEmitter(post, logger, opts = {}) {
|
|
|
108
120
|
const old = queue.shift();
|
|
109
121
|
if (old) {
|
|
110
122
|
logger.warn("runtime_inbound_routed_queue_overflow", {
|
|
111
|
-
dropped_source_message_id: old.source_message_id,
|
|
123
|
+
dropped_source_message_id: old.event.source_message_id,
|
|
112
124
|
size: queue.length,
|
|
113
125
|
capacity: cap,
|
|
114
126
|
});
|
|
115
127
|
evicted = true;
|
|
116
128
|
}
|
|
117
129
|
}
|
|
118
|
-
queue.push(event);
|
|
130
|
+
queue.push({ event, onSuccess: itemOpts?.onSuccess });
|
|
119
131
|
kick();
|
|
120
132
|
return !evicted;
|
|
121
133
|
},
|
|
@@ -7,4 +7,12 @@ export interface RuntimeInboundRoutedEvent {
|
|
|
7
7
|
route_kind: RuntimeInboundRouteKind;
|
|
8
8
|
routed_at: number;
|
|
9
9
|
}
|
|
10
|
+
export interface RuntimeInboundRouteClaimEvent {
|
|
11
|
+
type: "runtime_inbound_route_claim";
|
|
12
|
+
version: 1;
|
|
13
|
+
source_message_id: string;
|
|
14
|
+
routed_to_endpoint_id: string;
|
|
15
|
+
route_kind: RuntimeInboundRouteKind;
|
|
16
|
+
claimed_at: number;
|
|
17
|
+
}
|
|
10
18
|
//# sourceMappingURL=runtime-inbound-routed-event-types.d.ts.map
|
|
@@ -1 +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"}
|
|
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;AAED,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,6BAA6B,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC;IAIX,iBAAiB,EAAE,MAAM,CAAC;IAK1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,uBAAuB,CAAC;IAEpC,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -1 +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,MAAM,oBAAoB,GAC5B;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wBAAwB,EAAE,mBAAmB,CAAC;CAC/C,GACD;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wBAAwB,EAAE,sBAAsB,CAAC;CAClD,CAAC;AAEN,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;
|
|
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,MAAM,oBAAoB,GAC5B;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wBAAwB,EAAE,mBAAmB,CAAC;CAC/C,GACD;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wBAAwB,EAAE,sBAAsB,CAAC;CAClD,CAAC;AAEN,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;IAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC"}
|
|
@@ -67,13 +67,14 @@ export interface SendRuntimeAssignmentReplyArgs {
|
|
|
67
67
|
content: string;
|
|
68
68
|
contentType?: string;
|
|
69
69
|
}
|
|
70
|
+
export type AdapterRuntimeProcessingState = Exclude<RuntimeProcessingState, "assigned_to_runtime_target" | "reply_requested" | "reply_emitted">;
|
|
70
71
|
export interface ReportRuntimeProcessingStateArgs {
|
|
71
72
|
endpointId: string;
|
|
72
73
|
sourceMessageId: string;
|
|
73
74
|
assignmentId: string;
|
|
74
75
|
stateEventId: string;
|
|
75
76
|
stateSequence: number;
|
|
76
|
-
state:
|
|
77
|
+
state: AdapterRuntimeProcessingState;
|
|
77
78
|
occurredAt?: number;
|
|
78
79
|
undispatchedId?: string;
|
|
79
80
|
retryable?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker-client.d.ts","sourceRoot":"","sources":["../../src/broker-client/broker-client.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EACL,KAAK,sBAAsB,EAE3B,KAAK,eAAe,EACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EACV,8BAA8B,EAC9B,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,+BAA+B,CAAC;AAcvC,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,QAAQ,CAAC,IAAI,EAAG,uBAAuB,CAAU;IACjD,QAAQ,CAAC,SAAS,EAAG,IAAI,CAAU;gBACvB,OAAO,EAAE,MAAM;CAI5B;AAOD,qBAAa,gCAAiC,SAAQ,KAAK;IACzD,QAAQ,CAAC,IAAI,EAAG,gCAAgC,CAAU;IAC1D,QAAQ,CAAC,SAAS,EAAG,KAAK,CAAU;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAgBD,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IAErB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAClD,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;IAC5C,sBAAsB,CAAC,EAAE,8BAA8B,CAAC;IAQxD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,8BAA8B,CAAC;CACpD;AAED,MAAM,WAAW,8BAA8B;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,oBAAoB,CAAC;IAChC,cAAc,EAAE,kBAAkB,CAAC;IAEnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"broker-client.d.ts","sourceRoot":"","sources":["../../src/broker-client/broker-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -100,7 +100,17 @@ export type EmitUndispatchedChangedOutcome = {
|
|
|
100
100
|
status?: number;
|
|
101
101
|
detail?: string;
|
|
102
102
|
};
|
|
103
|
+
export type RuntimeInboundRouteClaimOutcome = {
|
|
104
|
+
ok: true;
|
|
105
|
+
action: "route" | "skip";
|
|
106
|
+
} | {
|
|
107
|
+
ok: false;
|
|
108
|
+
terminal: boolean;
|
|
109
|
+
status?: number;
|
|
110
|
+
detail?: string;
|
|
111
|
+
};
|
|
103
112
|
export declare function emitRuntimeNetworkPresenceChanged(cfg: PlatformClientConfig, runtimeKey: string, event: Readonly<Record<string, unknown>>): Promise<EmitUndispatchedChangedOutcome>;
|
|
113
|
+
export declare function claimRuntimeInboundRoute(cfg: PlatformClientConfig, runtimeKey: string, event: Readonly<Record<string, unknown>>): Promise<RuntimeInboundRouteClaimOutcome>;
|
|
104
114
|
export declare function emitRuntimeInboundRouted(cfg: PlatformClientConfig, runtimeKey: string, event: Readonly<Record<string, unknown>>): Promise<EmitUndispatchedChangedOutcome>;
|
|
105
115
|
export declare function emitRuntimeProcessingState(cfg: PlatformClientConfig, runtimeKey: string, event: Readonly<Record<string, unknown>>): Promise<EmitUndispatchedChangedOutcome>;
|
|
106
116
|
//# 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,49 @@ export async function emitRuntimeNetworkPresenceChanged(cfg, runtimeKey, event)
|
|
|
157
157
|
detail: await readErrorDetail(res),
|
|
158
158
|
};
|
|
159
159
|
}
|
|
160
|
+
export async function claimRuntimeInboundRoute(cfg, runtimeKey, event) {
|
|
161
|
+
let res;
|
|
162
|
+
try {
|
|
163
|
+
res = await fetch(`${baseUrl(cfg)}/runtime/inbound-route-claim`, {
|
|
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 === 200) {
|
|
177
|
+
const body = (await res.json().catch(() => null));
|
|
178
|
+
if (body?.action === "route" || body?.action === "skip") {
|
|
179
|
+
return { ok: true, action: body.action };
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
ok: false,
|
|
183
|
+
terminal: true,
|
|
184
|
+
status: res.status,
|
|
185
|
+
detail: "invalid claim response",
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
if (res.status === 401 || res.status === 403 || res.status === 422) {
|
|
189
|
+
return {
|
|
190
|
+
ok: false,
|
|
191
|
+
terminal: true,
|
|
192
|
+
status: res.status,
|
|
193
|
+
detail: await readErrorDetail(res),
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
return {
|
|
197
|
+
ok: false,
|
|
198
|
+
terminal: false,
|
|
199
|
+
status: res.status,
|
|
200
|
+
detail: await readErrorDetail(res),
|
|
201
|
+
};
|
|
202
|
+
}
|
|
160
203
|
export async function emitRuntimeInboundRouted(cfg, runtimeKey, event) {
|
|
161
204
|
let res;
|
|
162
205
|
try {
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const PLUGIN_VERSION = "0.2.
|
|
1
|
+
export declare const PLUGIN_VERSION = "0.2.6";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const PLUGIN_VERSION = "0.2.
|
|
1
|
+
export const PLUGIN_VERSION = "0.2.6";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@masons/runtime-broker",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"description": "MASONS Runtime Broker — local daemon and BrokerClient SDK for multi-session agent runtime coordination.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "MASONS.ai <hello@masons.ai> (https://masons.ai)",
|