instar 1.3.43 → 1.3.44
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/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +292 -3
- package/dist/commands/server.js.map +1 -1
- package/dist/core/HandoffReceiver.d.ts +56 -0
- package/dist/core/HandoffReceiver.d.ts.map +1 -0
- package/dist/core/HandoffReceiver.js +103 -0
- package/dist/core/HandoffReceiver.js.map +1 -0
- package/dist/core/HandoffWireTransport.d.ts +61 -0
- package/dist/core/HandoffWireTransport.d.ts.map +1 -0
- package/dist/core/HandoffWireTransport.js +114 -0
- package/dist/core/HandoffWireTransport.js.map +1 -0
- package/dist/core/HttpLeaseTransport.d.ts +68 -0
- package/dist/core/HttpLeaseTransport.d.ts.map +1 -0
- package/dist/core/HttpLeaseTransport.js +97 -0
- package/dist/core/HttpLeaseTransport.js.map +1 -0
- package/dist/core/HttpLiveTailTransport.d.ts +88 -0
- package/dist/core/HttpLiveTailTransport.d.ts.map +1 -0
- package/dist/core/HttpLiveTailTransport.js +95 -0
- package/dist/core/HttpLiveTailTransport.js.map +1 -0
- package/dist/core/LeaseCoordinator.d.ts +14 -0
- package/dist/core/LeaseCoordinator.d.ts.map +1 -1
- package/dist/core/LeaseCoordinator.js +38 -0
- package/dist/core/LeaseCoordinator.js.map +1 -1
- package/dist/core/LiveTailSource.d.ts +65 -0
- package/dist/core/LiveTailSource.d.ts.map +1 -0
- package/dist/core/LiveTailSource.js +87 -0
- package/dist/core/LiveTailSource.js.map +1 -0
- package/dist/core/MultiMachineCoordinator.d.ts +14 -0
- package/dist/core/MultiMachineCoordinator.d.ts.map +1 -1
- package/dist/core/MultiMachineCoordinator.js +22 -0
- package/dist/core/MultiMachineCoordinator.js.map +1 -1
- package/dist/core/ReplyMarkerTransport.d.ts +58 -0
- package/dist/core/ReplyMarkerTransport.d.ts.map +1 -0
- package/dist/core/ReplyMarkerTransport.js +66 -0
- package/dist/core/ReplyMarkerTransport.js.map +1 -0
- package/dist/core/handoffReceiverWiring.d.ts +57 -0
- package/dist/core/handoffReceiverWiring.d.ts.map +1 -0
- package/dist/core/handoffReceiverWiring.js +65 -0
- package/dist/core/handoffReceiverWiring.js.map +1 -0
- package/dist/core/handoffSentinelBootWiring.d.ts +53 -0
- package/dist/core/handoffSentinelBootWiring.d.ts.map +1 -0
- package/dist/core/handoffSentinelBootWiring.js +52 -0
- package/dist/core/handoffSentinelBootWiring.js.map +1 -0
- package/dist/core/handoffSentinelWiring.d.ts +60 -0
- package/dist/core/handoffSentinelWiring.d.ts.map +1 -0
- package/dist/core/handoffSentinelWiring.js +59 -0
- package/dist/core/handoffSentinelWiring.js.map +1 -0
- package/dist/core/seamlessnessConfig.d.ts +8 -0
- package/dist/core/seamlessnessConfig.d.ts.map +1 -1
- package/dist/core/seamlessnessConfig.js +1 -0
- package/dist/core/seamlessnessConfig.js.map +1 -1
- package/dist/core/types.d.ts +6 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/messaging/TelegramAdapter.d.ts +6 -0
- package/dist/messaging/TelegramAdapter.d.ts.map +1 -1
- package/dist/messaging/TelegramAdapter.js +8 -0
- package/dist/messaging/TelegramAdapter.js.map +1 -1
- package/dist/messaging/ingressDedup.d.ts +55 -0
- package/dist/messaging/ingressDedup.d.ts.map +1 -0
- package/dist/messaging/ingressDedup.js +69 -0
- package/dist/messaging/ingressDedup.js.map +1 -0
- package/dist/messaging/stuckMessageRecovery.d.ts +46 -0
- package/dist/messaging/stuckMessageRecovery.d.ts.map +1 -0
- package/dist/messaging/stuckMessageRecovery.js +52 -0
- package/dist/messaging/stuckMessageRecovery.js.map +1 -0
- package/dist/server/AgentServer.d.ts +64 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +24 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/handoffInitiateRoutes.d.ts +40 -0
- package/dist/server/handoffInitiateRoutes.d.ts.map +1 -0
- package/dist/server/handoffInitiateRoutes.js +57 -0
- package/dist/server/handoffInitiateRoutes.js.map +1 -0
- package/dist/server/machineRoutes.d.ts +47 -0
- package/dist/server/machineRoutes.d.ts.map +1 -1
- package/dist/server/machineRoutes.js +138 -0
- package/dist/server/machineRoutes.js.map +1 -1
- package/dist/server/routes.d.ts +20 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +65 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +49 -49
- package/upgrades/1.3.44.md +72 -0
- package/upgrades/side-effects/cross-machine-seamlessness-consent-acquire.md +52 -0
- package/upgrades/side-effects/cross-machine-seamlessness-exactly-once-ingress.md +73 -0
- package/upgrades/side-effects/cross-machine-seamlessness-handoff-ack-yield.md +82 -0
- package/upgrades/side-effects/cross-machine-seamlessness-handoff-begin.md +48 -0
- package/upgrades/side-effects/cross-machine-seamlessness-handoff-boot-wiring.md +68 -0
- package/upgrades/side-effects/cross-machine-seamlessness-handoff-receiver-wiring.md +52 -0
- package/upgrades/side-effects/cross-machine-seamlessness-handoff-receiver.md +46 -0
- package/upgrades/side-effects/cross-machine-seamlessness-handoff-sentinel-wiring.md +47 -0
- package/upgrades/side-effects/cross-machine-seamlessness-lease-wire.md +46 -0
- package/upgrades/side-effects/cross-machine-seamlessness-livetail-source.md +50 -0
- package/upgrades/side-effects/cross-machine-seamlessness-livetail-streaming.md +50 -0
- package/upgrades/side-effects/cross-machine-seamlessness-livetail-wire.md +65 -0
- package/upgrades/side-effects/cross-machine-seamlessness-noloss-recovery.md +61 -0
- package/upgrades/side-effects/cross-machine-seamlessness-reply-marker.md +65 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handoff-initiate route — the operator/test trigger for a planned handoff
|
|
3
|
+
* (spec §8 G3e). Bearer-authed local route (mounted AFTER the global auth
|
|
4
|
+
* middleware in AgentServer, so it inherits the same authToken gate as every
|
|
5
|
+
* other operator route).
|
|
6
|
+
*
|
|
7
|
+
* This is the explicit "hand off now" signal. There is deliberately NO
|
|
8
|
+
* sleep/pre-sleep auto-trigger: SleepWakeDetector emits only a 'wake' event
|
|
9
|
+
* (verified), so there is no pre-sleep moment to hook for v1. A planned handoff
|
|
10
|
+
* is therefore operator/test-initiated; an automatic trigger is a tracked
|
|
11
|
+
* follow-on design.
|
|
12
|
+
*
|
|
13
|
+
* POST /handoff/initiate — run the planned-handoff lifecycle to a terminal
|
|
14
|
+
* outcome; returns { outcome, inProgress }. outcome ∈ handed-off |
|
|
15
|
+
* aborted-stay-awake | failed. A `failed` outcome maps to HTTP 500 (the
|
|
16
|
+
* handoff genuinely errored); handed-off / aborted-stay-awake are both 200
|
|
17
|
+
* (the sentinel resolved safely — aborting and staying awake is a correct,
|
|
18
|
+
* expected outcome, not an error).
|
|
19
|
+
* GET /handoff/status — race-guard observability: { inProgress }.
|
|
20
|
+
*
|
|
21
|
+
* The DECISION and all safety live in HandoffSentinel (verify the ack echo +
|
|
22
|
+
* validate BEFORE yielding; otherwise abort and stay awake). This route only
|
|
23
|
+
* pulls the trigger and surfaces the outcome. When the wiring is absent (solo
|
|
24
|
+
* agent, or multi-machine disabled), the route 503s honestly — never a silent
|
|
25
|
+
* ok that pretends a handoff happened.
|
|
26
|
+
*/
|
|
27
|
+
import { Router } from 'express';
|
|
28
|
+
/** The HandoffSentinel's terminal outcomes (mirrors HandoffOutcome). */
|
|
29
|
+
export type HandoffOutcomeStr = 'handed-off' | 'aborted-stay-awake' | 'failed';
|
|
30
|
+
export interface HandoffInitiateRoutesDeps {
|
|
31
|
+
/**
|
|
32
|
+
* Run the planned handoff to a terminal outcome (HandoffSentinel.initiate via
|
|
33
|
+
* the handoffSentinelWiring). null → not wired (solo / multi-machine off).
|
|
34
|
+
*/
|
|
35
|
+
onInitiate: (() => Promise<HandoffOutcomeStr>) | null;
|
|
36
|
+
/** Race-guard read: is a handoff mid-flight? (HandoffSentinel.inProgress) */
|
|
37
|
+
inProgress: (() => boolean) | null;
|
|
38
|
+
}
|
|
39
|
+
export declare function createHandoffInitiateRoutes(deps: HandoffInitiateRoutesDeps): Router;
|
|
40
|
+
//# sourceMappingURL=handoffInitiateRoutes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoffInitiateRoutes.d.ts","sourceRoot":"","sources":["../../src/server/handoffInitiateRoutes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,wEAAwE;AACxE,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,oBAAoB,GAAG,QAAQ,CAAC;AAE/E,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,UAAU,EAAE,CAAC,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC;IACtD,6EAA6E;IAC7E,UAAU,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC;CACpC;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,yBAAyB,GAAG,MAAM,CAiCnF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handoff-initiate route — the operator/test trigger for a planned handoff
|
|
3
|
+
* (spec §8 G3e). Bearer-authed local route (mounted AFTER the global auth
|
|
4
|
+
* middleware in AgentServer, so it inherits the same authToken gate as every
|
|
5
|
+
* other operator route).
|
|
6
|
+
*
|
|
7
|
+
* This is the explicit "hand off now" signal. There is deliberately NO
|
|
8
|
+
* sleep/pre-sleep auto-trigger: SleepWakeDetector emits only a 'wake' event
|
|
9
|
+
* (verified), so there is no pre-sleep moment to hook for v1. A planned handoff
|
|
10
|
+
* is therefore operator/test-initiated; an automatic trigger is a tracked
|
|
11
|
+
* follow-on design.
|
|
12
|
+
*
|
|
13
|
+
* POST /handoff/initiate — run the planned-handoff lifecycle to a terminal
|
|
14
|
+
* outcome; returns { outcome, inProgress }. outcome ∈ handed-off |
|
|
15
|
+
* aborted-stay-awake | failed. A `failed` outcome maps to HTTP 500 (the
|
|
16
|
+
* handoff genuinely errored); handed-off / aborted-stay-awake are both 200
|
|
17
|
+
* (the sentinel resolved safely — aborting and staying awake is a correct,
|
|
18
|
+
* expected outcome, not an error).
|
|
19
|
+
* GET /handoff/status — race-guard observability: { inProgress }.
|
|
20
|
+
*
|
|
21
|
+
* The DECISION and all safety live in HandoffSentinel (verify the ack echo +
|
|
22
|
+
* validate BEFORE yielding; otherwise abort and stay awake). This route only
|
|
23
|
+
* pulls the trigger and surfaces the outcome. When the wiring is absent (solo
|
|
24
|
+
* agent, or multi-machine disabled), the route 503s honestly — never a silent
|
|
25
|
+
* ok that pretends a handoff happened.
|
|
26
|
+
*/
|
|
27
|
+
import { Router } from 'express';
|
|
28
|
+
export function createHandoffInitiateRoutes(deps) {
|
|
29
|
+
const router = Router();
|
|
30
|
+
// Not wired → honest 503 on the whole /handoff surface (never a silent ok).
|
|
31
|
+
if (!deps.onInitiate) {
|
|
32
|
+
router.use('/handoff', (_req, res) => res
|
|
33
|
+
.status(503)
|
|
34
|
+
.json({ error: 'planned handoff not wired (solo agent or multi-machine disabled)' }));
|
|
35
|
+
return router;
|
|
36
|
+
}
|
|
37
|
+
const onInitiate = deps.onInitiate;
|
|
38
|
+
const inProgress = deps.inProgress;
|
|
39
|
+
router.post('/handoff/initiate', async (_req, res) => {
|
|
40
|
+
try {
|
|
41
|
+
const outcome = await onInitiate();
|
|
42
|
+
const status = outcome === 'failed' ? 500 : 200;
|
|
43
|
+
res.status(status).json({ outcome, inProgress: inProgress?.() ?? false });
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
res.status(500).json({
|
|
47
|
+
outcome: 'failed',
|
|
48
|
+
error: err instanceof Error ? err.message : String(err),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
router.get('/handoff/status', (_req, res) => {
|
|
53
|
+
res.json({ inProgress: inProgress?.() ?? false });
|
|
54
|
+
});
|
|
55
|
+
return router;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=handoffInitiateRoutes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoffInitiateRoutes.js","sourceRoot":"","sources":["../../src/server/handoffInitiateRoutes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAgBjC,MAAM,UAAU,2BAA2B,CAAC,IAA+B;IACzE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,4EAA4E;IAC5E,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CACnC,GAAG;aACA,MAAM,CAAC,GAAG,CAAC;aACX,IAAI,CAAC,EAAE,KAAK,EAAE,kEAAkE,EAAE,CAAC,CACvF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IAEnC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;QACtE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAChD,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,QAAQ;gBACjB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;QAC7D,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -44,6 +44,53 @@ export interface MachineRouteContext {
|
|
|
44
44
|
}>;
|
|
45
45
|
/** Message router for cross-machine message relay */
|
|
46
46
|
messageRouter?: MessageRouter | null;
|
|
47
|
+
/**
|
|
48
|
+
* Callback when a peer broadcasts its fenced lease over the wire (spec §6).
|
|
49
|
+
* Feeds the HttpLeaseTransport's recordObserved so the LeaseCoordinator can
|
|
50
|
+
* fold the low-latency copy into its effective-epoch view.
|
|
51
|
+
*/
|
|
52
|
+
onLeaseReceived?: (lease: unknown, fromMachineId: string) => void;
|
|
53
|
+
/**
|
|
54
|
+
* Callback when the holder streams an encrypted live-tail flush over the wire
|
|
55
|
+
* (spec §8 G3b/c). The server lifecycle decrypts it with this machine's X25519
|
|
56
|
+
* private key, then applies it to the LiveTailBuffer (sequence-deduped). Throws
|
|
57
|
+
* if decryption/auth fails (the route turns that into a 400 rejection). Returns
|
|
58
|
+
* the apply outcome for observability.
|
|
59
|
+
*/
|
|
60
|
+
onLiveTailReceived?: (flush: {
|
|
61
|
+
topic: string;
|
|
62
|
+
seq: number;
|
|
63
|
+
enc: unknown;
|
|
64
|
+
redactionVersion?: number;
|
|
65
|
+
}, fromMachineId: string) => {
|
|
66
|
+
applied: boolean;
|
|
67
|
+
reason: string;
|
|
68
|
+
} | void;
|
|
69
|
+
/**
|
|
70
|
+
* Callback when the INCOMING machine POSTs its verified-ack during a planned
|
|
71
|
+
* handoff (spec §8 G3d). Delivers the echo to the outgoing machine's
|
|
72
|
+
* HandoffWireTransport.recordAck so the pending awaitAck resolves.
|
|
73
|
+
*/
|
|
74
|
+
onHandoffAck?: (ack: unknown, fromMachineId: string) => void;
|
|
75
|
+
/**
|
|
76
|
+
* Callback when the OUTGOING machine POSTs the explicit yield signal (spec §8
|
|
77
|
+
* G3e). Triggers the incoming machine's lease-CAS acquisition — the ONLY path
|
|
78
|
+
* by which the incoming attempts to take the lease in a planned handoff.
|
|
79
|
+
*/
|
|
80
|
+
onHandoffYield?: (fromMachineId: string) => void;
|
|
81
|
+
/**
|
|
82
|
+
* Callback when the OUTGOING machine POSTs the begin signal that opens a planned
|
|
83
|
+
* handoff (spec §8 G3d). Carries the outgoing's flush manifest (tailSeq +
|
|
84
|
+
* ingressPosition + threadHistoryHash + the active topic) so the incoming machine
|
|
85
|
+
* can echo it in its caught-up ack. Delivers to the incoming's HandoffReceiver.
|
|
86
|
+
*/
|
|
87
|
+
onHandoffBegin?: (manifest: unknown, fromMachineId: string) => void;
|
|
88
|
+
/**
|
|
89
|
+
* Callback when a peer propagates a `reply_committed` marker (spec §8 G3a,
|
|
90
|
+
* cross-machine exactly-once). Applies it to this machine's MessageProcessingLedger
|
|
91
|
+
* via applyRemoteReplyMarker so a post-handoff redelivery of that event is deduped.
|
|
92
|
+
*/
|
|
93
|
+
onReplyMarker?: (marker: unknown, fromMachineId: string) => void;
|
|
47
94
|
}
|
|
48
95
|
export declare function createMachineRoutes(ctx: MachineRouteContext): Router;
|
|
49
96
|
//# sourceMappingURL=machineRoutes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machineRoutes.d.ts","sourceRoot":"","sources":["../../src/server/machineRoutes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAa,MAAM,6BAA6B,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAsB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAInE,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,eAAe,EAAE,sBAAsB,CAAC;IACxC,yCAAyC;IACzC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,mBAAmB;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,iDAAiD;IACjD,QAAQ,EAAE,eAAe,CAAC;IAC1B,wBAAwB;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACtE,qDAAqD;IACrD,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"machineRoutes.d.ts","sourceRoot":"","sources":["../../src/server/machineRoutes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAa,MAAM,6BAA6B,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAsB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAInE,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,eAAe,EAAE,sBAAsB,CAAC;IACxC,yCAAyC;IACzC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,mBAAmB;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,iDAAiD;IACjD,QAAQ,EAAE,eAAe,CAAC;IAC1B,wBAAwB;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACtE,qDAAqD;IACrD,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,CACnB,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,EAC9E,aAAa,EAAE,MAAM,KAClB;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjD;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACpE;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;CAClE;AAID,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CA2epE"}
|
|
@@ -24,6 +24,63 @@ export function createMachineRoutes(ctx) {
|
|
|
24
24
|
const authMiddleware = machineAuthMiddleware(ctx.authDeps);
|
|
25
25
|
const handoffChallenges = new ChallengeStore();
|
|
26
26
|
const secretChallenges = new ChallengeStore();
|
|
27
|
+
// ── POST /api/lease — Receive a peer's fenced lease over the wire (spec §6) ──
|
|
28
|
+
// The low-latency authoritative copy. Auth-verified; the lease holder must
|
|
29
|
+
// match the authenticated machine (a peer cannot broadcast a lease naming a
|
|
30
|
+
// third machine). Fed to the HttpLeaseTransport via onLeaseReceived; FencedLease
|
|
31
|
+
// re-verifies the Ed25519 signature + epoch floor + nonce before trusting it.
|
|
32
|
+
router.post('/api/lease', authMiddleware, (req, res) => {
|
|
33
|
+
const { machineAuth } = req;
|
|
34
|
+
const auth = machineAuth;
|
|
35
|
+
const lease = (req.body && req.body.lease);
|
|
36
|
+
if (!lease || typeof lease.holder !== 'string') {
|
|
37
|
+
res.status(400).json({ error: 'Invalid lease payload' });
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (lease.holder !== auth.machineId) {
|
|
41
|
+
ctx.securityLog.append({
|
|
42
|
+
event: 'lease_holder_mismatch',
|
|
43
|
+
machineId: auth.machineId,
|
|
44
|
+
detail: `Lease holder ${lease.holder} != authenticated ${auth.machineId}`,
|
|
45
|
+
});
|
|
46
|
+
res.status(403).json({ error: 'Lease holder does not match authenticated machine' });
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
ctx.onLeaseReceived?.(lease, auth.machineId);
|
|
50
|
+
res.json({ ok: true });
|
|
51
|
+
});
|
|
52
|
+
// ── POST /api/live-tail — Receive an encrypted live-tail flush (spec §8 G3b/c) ──
|
|
53
|
+
// The holder streams the redacted+encrypted live conversation tail to the
|
|
54
|
+
// standby. Auth-verified (machineAuthMiddleware confirms the sender's identity
|
|
55
|
+
// against the registry — an unverifiable peer is rejected BEFORE any content is
|
|
56
|
+
// accepted, per §8 G3c). Decryption with this machine's X25519 private key and
|
|
57
|
+
// the sequence-deduped applyFlush happen in onLiveTailReceived (server
|
|
58
|
+
// lifecycle), which throws on a bad payload/auth → 400.
|
|
59
|
+
router.post('/api/live-tail', authMiddleware, (req, res) => {
|
|
60
|
+
const { machineAuth } = req;
|
|
61
|
+
const auth = machineAuth;
|
|
62
|
+
const flush = (req.body && req.body.flush);
|
|
63
|
+
if (!flush || typeof flush.topic !== 'string' || typeof flush.seq !== 'number' || !flush.enc) {
|
|
64
|
+
res.status(400).json({ error: 'Invalid live-tail flush payload' });
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (!ctx.onLiveTailReceived) {
|
|
68
|
+
res.status(503).json({ error: 'Live-tail receiver not available' });
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
const result = ctx.onLiveTailReceived({ topic: flush.topic, seq: flush.seq, enc: flush.enc, redactionVersion: flush.redactionVersion }, auth.machineId);
|
|
73
|
+
res.json({ ok: true, applied: result?.applied ?? null, reason: result?.reason ?? null });
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
ctx.securityLog.append({
|
|
77
|
+
event: 'live_tail_rejected',
|
|
78
|
+
machineId: auth.machineId,
|
|
79
|
+
detail: err instanceof Error ? err.message : String(err),
|
|
80
|
+
});
|
|
81
|
+
res.status(400).json({ error: 'Live-tail flush rejected (decrypt/verify failed)' });
|
|
82
|
+
}
|
|
83
|
+
});
|
|
27
84
|
// ── POST /api/heartbeat — Receive heartbeat from another machine ──
|
|
28
85
|
router.post('/api/heartbeat', authMiddleware, (req, res) => {
|
|
29
86
|
const { machineAuth } = req;
|
|
@@ -89,6 +146,87 @@ export function createMachineRoutes(ctx) {
|
|
|
89
146
|
message: 'Pairing request received. Verify the SAS on both machines.',
|
|
90
147
|
});
|
|
91
148
|
});
|
|
149
|
+
// ── POST /api/handoff/begin — Outgoing machine opens a planned handoff (§8 G3d) ──
|
|
150
|
+
// Carries the outgoing's flush manifest (tailSeq + ingressPosition +
|
|
151
|
+
// threadHistoryHash + the active topic). The incoming machine stores it and
|
|
152
|
+
// builds its caught-up ack by echoing tailSeq/ingressPosition and recomputing
|
|
153
|
+
// the thread-history hash from its own synced state. No manifest → no handoff.
|
|
154
|
+
router.post('/api/handoff/begin', authMiddleware, (req, res) => {
|
|
155
|
+
const { machineAuth } = req;
|
|
156
|
+
const auth = machineAuth;
|
|
157
|
+
const manifest = (req.body && req.body.manifest);
|
|
158
|
+
if (!manifest ||
|
|
159
|
+
typeof manifest.tailSeq !== 'number' ||
|
|
160
|
+
!manifest.ingressPosition ||
|
|
161
|
+
typeof manifest.threadHistoryHash !== 'string') {
|
|
162
|
+
res.status(400).json({ error: 'Invalid handoff begin manifest' });
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
if (!ctx.onHandoffBegin) {
|
|
166
|
+
res.status(503).json({ error: 'Handoff begin receiver not available' });
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
ctx.onHandoffBegin(manifest, auth.machineId);
|
|
170
|
+
res.json({ ok: true });
|
|
171
|
+
});
|
|
172
|
+
// ── POST /api/message-marker — Cross-machine reply_committed marker (§8 G3a) ──
|
|
173
|
+
// The lease holder propagates "this inbound event was answered" to the standby
|
|
174
|
+
// so that AFTER a handoff/failover the newly-awake machine's ledger already
|
|
175
|
+
// knows, and a provider redelivery of the same event is deduped (the cross-
|
|
176
|
+
// machine half of exactly-once). Carries no conversation content. No receiver
|
|
177
|
+
// wired (exactly-once off) → 503.
|
|
178
|
+
router.post('/api/message-marker', authMiddleware, (req, res) => {
|
|
179
|
+
const { machineAuth } = req;
|
|
180
|
+
const auth = machineAuth;
|
|
181
|
+
const marker = (req.body && req.body.marker);
|
|
182
|
+
if (!marker ||
|
|
183
|
+
typeof marker.dedupeKey !== 'string' ||
|
|
184
|
+
typeof marker.platform !== 'string' ||
|
|
185
|
+
typeof marker.replyIdempotencyKey !== 'string' ||
|
|
186
|
+
typeof marker.epoch !== 'number') {
|
|
187
|
+
res.status(400).json({ error: 'Invalid reply marker payload' });
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
if (!ctx.onReplyMarker) {
|
|
191
|
+
res.status(503).json({ error: 'Reply-marker receiver not available' });
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
ctx.onReplyMarker(marker, auth.machineId);
|
|
195
|
+
res.json({ ok: true });
|
|
196
|
+
});
|
|
197
|
+
// ── POST /api/handoff/ack — Incoming machine's verified "caught up" ack (§8 G3d) ──
|
|
198
|
+
// The incoming machine echoes the live-tail sequence, the ingress position it
|
|
199
|
+
// will resume from, and a hash of the thread history it loaded. The outgoing
|
|
200
|
+
// machine verifies this echo matches what it flushed BEFORE yielding the lease.
|
|
201
|
+
router.post('/api/handoff/ack', authMiddleware, (req, res) => {
|
|
202
|
+
const { machineAuth } = req;
|
|
203
|
+
const auth = machineAuth;
|
|
204
|
+
const ack = (req.body && req.body.ack);
|
|
205
|
+
if (!ack || typeof ack.tailSeq !== 'number' || !ack.ingressPosition || typeof ack.threadHistoryHash !== 'string') {
|
|
206
|
+
res.status(400).json({ error: 'Invalid handoff ack payload' });
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (!ctx.onHandoffAck) {
|
|
210
|
+
res.status(503).json({ error: 'Handoff ack receiver not available' });
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
ctx.onHandoffAck(ack, auth.machineId);
|
|
214
|
+
res.json({ ok: true });
|
|
215
|
+
});
|
|
216
|
+
// ── POST /api/handoff/yield — Outgoing machine's explicit yield signal (§8 G3e) ──
|
|
217
|
+
// Sent ONLY after a verified ack + passing validation. This is the sole trigger
|
|
218
|
+
// for the incoming machine's lease-CAS acquisition; without it the incoming
|
|
219
|
+
// never attempts the lease, so there is no two-holders-same-epoch window.
|
|
220
|
+
router.post('/api/handoff/yield', authMiddleware, (req, res) => {
|
|
221
|
+
const { machineAuth } = req;
|
|
222
|
+
const auth = machineAuth;
|
|
223
|
+
if (!ctx.onHandoffYield) {
|
|
224
|
+
res.status(503).json({ error: 'Handoff yield receiver not available' });
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
ctx.onHandoffYield(auth.machineId);
|
|
228
|
+
res.json({ ok: true });
|
|
229
|
+
});
|
|
92
230
|
// ── POST /api/handoff/challenge — Generate challenge for handoff ──
|
|
93
231
|
router.post('/api/handoff/challenge', authMiddleware, (req, res) => {
|
|
94
232
|
const challenge = handoffChallenges.generate();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machineRoutes.js","sourceRoot":"","sources":["../../src/server/machineRoutes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"machineRoutes.js","sourceRoot":"","sources":["../../src/server/machineRoutes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAQ,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAK1D,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAsEzE,sEAAsE;AAEtE,MAAM,UAAU,mBAAmB,CAAC,GAAwB;IAC1D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,MAAM,cAAc,GAAG,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,IAAI,cAAc,EAAE,CAAC;IAC/C,MAAM,gBAAgB,GAAG,IAAI,cAAc,EAAE,CAAC;IAE9C,gFAAgF;IAChF,2EAA2E;IAC3E,4EAA4E;IAC5E,iFAAiF;IACjF,8EAA8E;IAE9E,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACrD,MAAM,EAAE,WAAW,EAAE,GAAG,GAAU,CAAC;QACnC,MAAM,IAAI,GAAG,WAAiC,CAAC;QAC/C,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,IAAK,GAAG,CAAC,IAAY,CAAC,KAAK,CAAoC,CAAC;QACvF,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;gBACrB,KAAK,EAAE,uBAAuB;gBAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM,EAAE,gBAAgB,KAAK,CAAC,MAAM,qBAAqB,IAAI,CAAC,SAAS,EAAE;aAC1E,CAAC,CAAC;YACH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mDAAmD,EAAE,CAAC,CAAC;YACrF,OAAO;QACT,CAAC;QACD,GAAG,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,mFAAmF;IACnF,0EAA0E;IAC1E,+EAA+E;IAC/E,gFAAgF;IAChF,+EAA+E;IAC/E,uEAAuE;IACvE,wDAAwD;IAExD,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACzD,MAAM,EAAE,WAAW,EAAE,GAAG,GAAU,CAAC;QACnC,MAAM,IAAI,GAAG,WAAiC,CAAC;QAC/C,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,IAAK,GAAG,CAAC,IAAY,CAAC,KAAK,CAErC,CAAC;QACd,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAC7F,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAC5B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,GAAG,CAAC,kBAAkB,CACnC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,EAChG,IAAI,CAAC,SAAS,CACf,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;QAC3F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;gBACrB,KAAK,EAAE,oBAAoB;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACzD,CAAC,CAAC;YACH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kDAAkD,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,qEAAqE;IAErE,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACzD,MAAM,EAAE,WAAW,EAAE,GAAG,GAAU,CAAC;QACnC,MAAM,IAAI,GAAG,WAAiC,CAAC;QAE/C,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAiB,CAAC;QACvC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YAChF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,gEAAgE;QAChE,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACvC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;gBACrB,KAAK,EAAE,oBAAoB;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM,EAAE,oBAAoB,QAAQ,CAAC,MAAM,qBAAqB,IAAI,CAAC,SAAS,EAAE;aACjF,CAAC,CAAC;YACH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uDAAuD,EAAE,CAAC,CAAC;YACzF,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAEvE,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;YACrB,KAAK,EAAE,oBAAoB;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM;SACP,CAAC,CAAC;QAEH,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,qDAAqD;YACrD,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;YACjB,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,MAAM,KAAK,oBAAoB,EAAE,CAAC;YAC3C,+CAA+C;YAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,wCAAwC;YACxC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,mEAAmE;IACnE,mFAAmF;IACnF,sEAAsE;IAEtE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACpC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAEtE,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,6DAA6D;QAC7D,wEAAwE;QACxE,gFAAgF;QAEhF,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;YACrB,KAAK,EAAE,iBAAiB;YACxB,SAAS,EAAE,eAAe,CAAC,SAAS;YACpC,WAAW,EAAE,eAAe,CAAC,IAAI;YACjC,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS;SACpD,CAAC,CAAC;QAEH,4EAA4E;QAC5E,MAAM,aAAa,GAAG,GAAG,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QAEzD,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,aAAa;YAC9B,OAAO,EAAE,4DAA4D;SACtE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,oFAAoF;IACpF,qEAAqE;IACrE,4EAA4E;IAC5E,8EAA8E;IAC9E,+EAA+E;IAE/E,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7D,MAAM,EAAE,WAAW,EAAE,GAAG,GAAU,CAAC;QACnC,MAAM,IAAI,GAAG,WAAiC,CAAC;QAC/C,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,IAAK,GAAG,CAAC,IAAY,CAAC,QAAQ,CAE3C,CAAC;QACd,IACE,CAAC,QAAQ;YACT,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ;YACpC,CAAC,QAAQ,CAAC,eAAe;YACzB,OAAO,QAAQ,CAAC,iBAAiB,KAAK,QAAQ,EAC9C,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YACxB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QACD,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,iFAAiF;IACjF,+EAA+E;IAC/E,4EAA4E;IAC5E,4EAA4E;IAC5E,8EAA8E;IAC9E,kCAAkC;IAElC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9D,MAAM,EAAE,WAAW,EAAE,GAAG,GAAU,CAAC;QACnC,MAAM,IAAI,GAAG,WAAiC,CAAC;QAC/C,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,IAAK,GAAG,CAAC,IAAY,CAAC,MAAM,CAEvC,CAAC;QACd,IACE,CAAC,MAAM;YACP,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;YACpC,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;YACnC,OAAO,MAAM,CAAC,mBAAmB,KAAK,QAAQ;YAC9C,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAChC,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACvB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QACD,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,qFAAqF;IACrF,8EAA8E;IAC9E,6EAA6E;IAC7E,gFAAgF;IAEhF,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3D,MAAM,EAAE,WAAW,EAAE,GAAG,GAAU,CAAC;QACnC,MAAM,IAAI,GAAG,WAAiC,CAAC;QAC/C,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,IAAK,GAAG,CAAC,IAAY,CAAC,GAAG,CAEjC,CAAC;QACd,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,GAAG,CAAC,iBAAiB,KAAK,QAAQ,EAAE,CAAC;YACjH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YACtB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QACD,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,oFAAoF;IACpF,gFAAgF;IAChF,4EAA4E;IAC5E,0EAA0E;IAE1E,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7D,MAAM,EAAE,WAAW,EAAE,GAAG,GAAU,CAAC;QACnC,MAAM,IAAI,GAAG,WAAiC,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YACxB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QACD,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,qEAAqE;IAErE,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACjE,MAAM,SAAS,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC;YACP,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,SAAS,EAAE,SAAS,CAAC,SAAS;SAC/B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,qEAAqE;IAErE,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACrE,MAAM,EAAE,WAAW,EAAE,GAAG,GAAU,CAAC;QACnC,MAAM,IAAI,GAAG,WAAiC,CAAC;QAC/C,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAEnD,sBAAsB;QACtB,IAAI,CAAC,SAAS,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC,CAAC;YAC/E,OAAO;QACT,CAAC;QAED,gCAAgC;QAChC,gHAAgH;QAChH,MAAM,WAAW,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,WAAW,CAAC,SAAS,CAAC;QAC7B,OAAO,WAAW,CAAC,kBAAkB,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;aACzC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;aACnC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,MAAM,gBAAgB,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,cAAc,IAAI,QAAQ,EAAE,CAAC;QAE5F,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChF,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;YACzE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;oBACrB,KAAK,EAAE,0BAA0B;oBACjC,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC,CAAC;gBACH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;YACrB,KAAK,EAAE,mBAAmB;YAC1B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,GAAG,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,SAAS;SAC5F,CAAC,CAAC;QAEH,wDAAwD;QACxD,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAErD,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;gBAC1B,GAAG,CAAC,IAAI,CAAC;oBACP,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,2DAA2D;iBACrE,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,0CAA0C;YAC1C,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YAC9D,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAExD,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;gBACrB,KAAK,EAAE,mBAAmB;gBAC1B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,IAAI,EAAE,GAAG,CAAC,cAAc;aACzB,CAAC,CAAC;YAEH,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;YAEjB,GAAG,CAAC,IAAI,CAAC;gBACP,MAAM,EAAE,YAAY;gBACpB,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,OAAO,EAAE,kDAAkD;aAC5D,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;gBACrB,KAAK,EAAE,gBAAgB;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;YACH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,yEAAyE;IAEzE,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACjE,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QAC9C,GAAG,CAAC,IAAI,CAAC;YACP,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,SAAS,EAAE,SAAS,CAAC,SAAS;SAC/B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,mEAAmE;IAEnE,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5D,MAAM,EAAE,WAAW,EAAE,GAAG,GAAU,CAAC;QACnC,MAAM,IAAI,GAAG,WAAiC,CAAC;QAC/C,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAE/F,gDAAgD;QAChD,IAAI,CAAC,SAAS,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC,CAAC;YAC/E,OAAO;QACT,CAAC;QAED,gCAAgC;QAChC,MAAM,WAAW,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,WAAW,CAAC,SAAS,CAAC;QAC7B,OAAO,WAAW,CAAC,kBAAkB,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;aACzC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;aACnC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,MAAM,gBAAgB,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,cAAc,IAAI,QAAQ,EAAE,CAAC;QAE5F,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChF,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;YACzE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;oBACrB,KAAK,EAAE,8BAA8B;oBACrC,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC,CAAC;gBACH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC,kBAAkB,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YACzD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;YACrB,KAAK,EAAE,sBAAsB;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;QAEH,mEAAmE;QACnE,+EAA+E;QAC/E,sDAAsD;QACtD,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,iEAAiE;SAC3E,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,kEAAkE;IAElE,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1D,MAAM,EAAE,WAAW,EAAE,GAAG,GAAU,CAAC;QACnC,MAAM,IAAI,GAAG,WAAiC,CAAC;QAC/C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAE3C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,IAAI,YAAY,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/F,OAAO;QACT,CAAC;QAED,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;YACrB,KAAK,EAAE,qBAAqB;YAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,kEAAkE;QAClE,wDAAwD;QACxD,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,UAAU;YAClB,IAAI;YACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,uEAAuE;IACvE,kFAAkF;IAClF,gDAAgD;IAEhD,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5E,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACvB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;gBAC3B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;YAED,6EAA6E;YAC7E,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACpE,IAAI,QAAQ,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wDAAwD,EAAE,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/server/routes.d.ts
CHANGED
|
@@ -315,6 +315,26 @@ export interface RouteContext {
|
|
|
315
315
|
threadlineFlowBridge: import('../tasks/ThreadlineFlowBridge.js').ThreadlineFlowBridge | null;
|
|
316
316
|
/** Multi-machine coordinator (cross-machine seamlessness) — null on single-machine installs. */
|
|
317
317
|
coordinator: import('../core/MultiMachineCoordinator.js').MultiMachineCoordinator | null;
|
|
318
|
+
/**
|
|
319
|
+
* Exactly-once ingress ledger (spec §8 G3a) — non-null ONLY when
|
|
320
|
+
* multiMachine.exactlyOnceIngress is enabled. When present, the inbound
|
|
321
|
+
* forward path dedups via it and the outbound reply path commits. null →
|
|
322
|
+
* the gate is dark (default), and the message path behaves exactly as before.
|
|
323
|
+
*/
|
|
324
|
+
messageLedger: import('../messaging/MessageProcessingLedger.js').MessageProcessingLedger | null;
|
|
325
|
+
/**
|
|
326
|
+
* Per-topic "current inbound dedupeKey" — set when a forward is claimed for
|
|
327
|
+
* processing, read when the reply for that topic is committed. In-memory;
|
|
328
|
+
* paired with messageLedger (both null when the gate is dark).
|
|
329
|
+
*/
|
|
330
|
+
currentInboundByTopic: Map<string, string> | null;
|
|
331
|
+
/**
|
|
332
|
+
* Cross-machine reply-marker propagation (spec §8 G3a). When a reply commits,
|
|
333
|
+
* the outbound path broadcasts the marker to standby peers so a post-handoff
|
|
334
|
+
* redelivery is deduped on the new holder. null → no propagation (paired with
|
|
335
|
+
* messageLedger; both null when exactly-once is dark).
|
|
336
|
+
*/
|
|
337
|
+
replyMarkerTransport: import('../core/ReplyMarkerTransport.js').ReplyMarkerTransport | null;
|
|
318
338
|
startTime: Date;
|
|
319
339
|
}
|
|
320
340
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"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"}
|
package/dist/server/routes.js
CHANGED
|
@@ -84,6 +84,7 @@ import { HomeostasisMonitor } from '../monitoring/HomeostasisMonitor.js';
|
|
|
84
84
|
import { verifyMergedItemsViaGit } from '../core/ProjectRoundExecution.js';
|
|
85
85
|
import { listAutonomousJobs, canStartAutonomousJob, stopAutonomousTopic, stopAllAutonomousJobs, DEFAULT_MAX_CONCURRENT_AUTONOMOUS, } from '../core/AutonomousSessions.js';
|
|
86
86
|
import { ProcessIntegrity } from '../core/ProcessIntegrity.js';
|
|
87
|
+
import { decideIngress, commitInboundReply, dedupeKeyFor } from '../messaging/ingressDedup.js';
|
|
87
88
|
import { getOutboundQueueStatus, cleanupDeliveredOutbound, buildAgentList } from '../messaging/GitSyncTransport.js';
|
|
88
89
|
import { verifyAgentToken, getAgentToken } from '../messaging/AgentTokenManager.js';
|
|
89
90
|
import { evaluateAndRecordInbound } from '../threadline/WarrantsReplyGate.js';
|
|
@@ -4866,6 +4867,38 @@ export function createRoutes(ctx) {
|
|
|
4866
4867
|
if (!isProxy) {
|
|
4867
4868
|
ctx.sessionManager.clearInjectionTracker(topicId);
|
|
4868
4869
|
}
|
|
4870
|
+
// ── Exactly-once ingress: commit reply_committed (spec §8 G3a) ──
|
|
4871
|
+
// The agent's real reply just went out → mark the inbound event this topic
|
|
4872
|
+
// is processing as answered, so a provider redelivery or handoff-window
|
|
4873
|
+
// replay of that same inbound is dropped by the gate above. Skipped for
|
|
4874
|
+
// proxy/system sends (they aren't replies to a user inbound). FAIL-OPEN.
|
|
4875
|
+
if (!isProxy && ctx.messageLedger && ctx.currentInboundByTopic) {
|
|
4876
|
+
try {
|
|
4877
|
+
const dedupeKey = ctx.currentInboundByTopic.get(String(topicId));
|
|
4878
|
+
if (dedupeKey) {
|
|
4879
|
+
const epoch = ctx.coordinator?.getLeaseEpoch() ?? 0;
|
|
4880
|
+
commitInboundReply(ctx.messageLedger, dedupeKey, epoch);
|
|
4881
|
+
ctx.currentInboundByTopic.delete(String(topicId));
|
|
4882
|
+
// Cross-machine half (spec §8 G3a): tell standby peers this event was
|
|
4883
|
+
// answered, so a post-handoff redelivery is deduped on the new holder.
|
|
4884
|
+
// Best-effort, fire-and-forget — the dedup gate + provider redelivery
|
|
4885
|
+
// are the backstop if a marker is lost.
|
|
4886
|
+
const entry = ctx.messageLedger.get(dedupeKey);
|
|
4887
|
+
if (ctx.replyMarkerTransport && entry?.replyIdempotencyKey) {
|
|
4888
|
+
void ctx.replyMarkerTransport.broadcast({
|
|
4889
|
+
dedupeKey,
|
|
4890
|
+
platform: 'telegram',
|
|
4891
|
+
replyIdempotencyKey: entry.replyIdempotencyKey,
|
|
4892
|
+
epoch,
|
|
4893
|
+
topic: String(topicId),
|
|
4894
|
+
});
|
|
4895
|
+
}
|
|
4896
|
+
}
|
|
4897
|
+
}
|
|
4898
|
+
catch (err) {
|
|
4899
|
+
console.error(`[telegram/reply] exactly-once commit error (non-fatal): ${err instanceof Error ? err.message : err}`);
|
|
4900
|
+
}
|
|
4901
|
+
}
|
|
4869
4902
|
// Record successful delivery in the dedup LRU so a sentinel retry
|
|
4870
4903
|
// with the same delivery_id returns 200-idempotent.
|
|
4871
4904
|
if (deliveryId && typeof deliveryId === 'string' && /^[0-9a-f-]{16,64}$/i.test(deliveryId)) {
|
|
@@ -8135,6 +8168,38 @@ export function createRoutes(ctx) {
|
|
|
8135
8168
|
telegramUserId: fromUserId,
|
|
8136
8169
|
});
|
|
8137
8170
|
}
|
|
8171
|
+
// ── Exactly-once ingress gate (spec §8 G3a) ──────────────────────
|
|
8172
|
+
// Default-DARK: only active when multiMachine.exactlyOnceIngress wired the
|
|
8173
|
+
// ledger. Placed AFTER the sentinel intercept (emergency-stop/pause must
|
|
8174
|
+
// never be deduped away) and BEFORE routing. dedupeKey = update_id (stable
|
|
8175
|
+
// provider id; falls back to messageId on a pre-Stage-B lifeline). On a
|
|
8176
|
+
// duplicate/in-flight event we return ok+deduped WITHOUT routing — the
|
|
8177
|
+
// structural no-duplicate-reply guarantee. FAIL-OPEN: any ledger error
|
|
8178
|
+
// falls through to normal routing (the gate must never drop a real message).
|
|
8179
|
+
if (ctx.messageLedger) {
|
|
8180
|
+
try {
|
|
8181
|
+
const eventId = req.body.updateId ?? messageId ?? `${topicId}:${req.body.timestamp ?? Date.now()}`;
|
|
8182
|
+
const dedupeKey = dedupeKeyFor('telegram', topicId, eventId);
|
|
8183
|
+
const epoch = ctx.coordinator?.getLeaseEpoch() ?? 0;
|
|
8184
|
+
const decision = decideIngress(ctx.messageLedger, dedupeKey, {
|
|
8185
|
+
platform: 'telegram',
|
|
8186
|
+
topic: String(topicId),
|
|
8187
|
+
input: text,
|
|
8188
|
+
epoch,
|
|
8189
|
+
maxProcessingMs: ctx.config.multiMachine?.maxProcessingMs ?? 5 * 60_000,
|
|
8190
|
+
});
|
|
8191
|
+
if (decision.action === 'drop') {
|
|
8192
|
+
console.log(`[telegram-forward] exactly-once: dropped duplicate (${decision.reason}) ${dedupeKey}`);
|
|
8193
|
+
res.json({ ok: true, deduped: true, reason: decision.reason });
|
|
8194
|
+
return;
|
|
8195
|
+
}
|
|
8196
|
+
// Claimed for processing — remember it so the outbound reply commits it.
|
|
8197
|
+
ctx.currentInboundByTopic?.set(String(topicId), dedupeKey);
|
|
8198
|
+
}
|
|
8199
|
+
catch (err) {
|
|
8200
|
+
console.error(`[telegram-forward] exactly-once gate error (fail-open, routing normally): ${err instanceof Error ? err.message : err}`);
|
|
8201
|
+
}
|
|
8202
|
+
}
|
|
8138
8203
|
// Build a Message object and fire the onTopicMessage callback
|
|
8139
8204
|
if (ctx.telegram?.onTopicMessage) {
|
|
8140
8205
|
const message = {
|