instar 1.3.244 → 1.3.246
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/README.md +4 -0
- package/dist/cli.js +20 -18
- package/dist/cli.js.map +1 -1
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +108 -2
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +13 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/SessionManager.d.ts +3 -0
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +3 -0
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/SessionServerGuard.d.ts +16 -0
- package/dist/core/SessionServerGuard.d.ts.map +1 -0
- package/dist/core/SessionServerGuard.js +44 -0
- package/dist/core/SessionServerGuard.js.map +1 -0
- package/dist/core/frameworkInjectionProcesses.d.ts +41 -0
- package/dist/core/frameworkInjectionProcesses.d.ts.map +1 -0
- package/dist/core/frameworkInjectionProcesses.js +53 -0
- package/dist/core/frameworkInjectionProcesses.js.map +1 -0
- package/dist/core/frameworkSessionLaunch.d.ts +9 -0
- package/dist/core/frameworkSessionLaunch.d.ts.map +1 -1
- package/dist/core/frameworkSessionLaunch.js +7 -0
- package/dist/core/frameworkSessionLaunch.js.map +1 -1
- package/dist/core/types.d.ts +22 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/messaging/SpawnRequestManager.d.ts +13 -0
- package/dist/messaging/SpawnRequestManager.d.ts.map +1 -1
- package/dist/messaging/SpawnRequestManager.js +3 -0
- package/dist/messaging/SpawnRequestManager.js.map +1 -1
- package/dist/messaging/types.d.ts.map +1 -1
- package/dist/messaging/types.js +8 -1
- package/dist/messaging/types.js.map +1 -1
- package/dist/threadline/ThreadlineRouter.d.ts +55 -1
- package/dist/threadline/ThreadlineRouter.d.ts.map +1 -1
- package/dist/threadline/ThreadlineRouter.js +246 -6
- package/dist/threadline/ThreadlineRouter.js.map +1 -1
- package/dist/threadline/WarmSessionPool.d.ts +22 -0
- package/dist/threadline/WarmSessionPool.d.ts.map +1 -1
- package/dist/threadline/WarmSessionPool.js +38 -0
- package/dist/threadline/WarmSessionPool.js.map +1 -1
- package/package.json +1 -1
- package/scripts/instar-dev-precommit.js +42 -0
- package/src/data/builtin-manifest.json +35 -35
- package/upgrades/1.3.245.md +39 -0
- package/upgrades/1.3.246.md +97 -0
- package/upgrades/side-effects/server-restart-sibling-target.md +96 -0
- package/upgrades/side-effects/threadline-warm-session-a2a.md +146 -0
- package/upgrades/threadline-warm-session-a2a.eli16.md +63 -0
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import crypto from 'node:crypto';
|
|
17
17
|
import { buildRelayGroundingPreamble, RELAY_HISTORY_LIMITS } from './RelayGroundingPreamble.js';
|
|
18
|
+
import { WarmSessionPeerConflictError } from './WarmSessionPool.js';
|
|
18
19
|
// ── Constants ───────────────────────────────────────────────────
|
|
19
20
|
const DEFAULT_MAX_HISTORY = 20;
|
|
20
21
|
/**
|
|
@@ -50,6 +51,33 @@ Subject: {latest_subject}
|
|
|
50
51
|
---
|
|
51
52
|
|
|
52
53
|
Respond to this message. Use the threadline_send MCP tool with the agentId set to "{remote_agent}" and include the threadId "{thread_id}" to send your reply.`;
|
|
54
|
+
/**
|
|
55
|
+
* Warm-session keep-alive variant of THREAD_SPAWN_PROMPT_TEMPLATE (spec §3.5).
|
|
56
|
+
*
|
|
57
|
+
* Used ONLY for interactive (persistent REPL) keep-alive spawns. The difference
|
|
58
|
+
* from the cold one is the closing instruction: a `claude -p` worker processes
|
|
59
|
+
* one message and exits, but a warm worker must reply, then STAY in the
|
|
60
|
+
* conversation and wait — the next message on this thread is injected directly
|
|
61
|
+
* into this same live session. This mirrors how Telegram-bound interactive
|
|
62
|
+
* sessions already persist and accept injected follow-up turns.
|
|
63
|
+
*/
|
|
64
|
+
const THREAD_WARM_SPAWN_PROMPT_TEMPLATE = `You are continuing a threaded conversation with {remote_agent}.
|
|
65
|
+
|
|
66
|
+
Thread: {thread_id}
|
|
67
|
+
Subject: {subject}
|
|
68
|
+
Messages in thread: {message_count}
|
|
69
|
+
|
|
70
|
+
{history_section}
|
|
71
|
+
|
|
72
|
+
The latest message from {remote_agent}:
|
|
73
|
+
Subject: {latest_subject}
|
|
74
|
+
---
|
|
75
|
+
{latest_body}
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
Respond to this message. Use the threadline_send MCP tool with the agentId set to "{remote_agent}" and include the threadId "{thread_id}" to send your reply.
|
|
79
|
+
|
|
80
|
+
After sending your reply with threadline_send, remain in this conversation and wait. When another message from {remote_agent} arrives, respond to it the same way. Do not exit or ask what to do next.`;
|
|
53
81
|
/**
|
|
54
82
|
* Byte budget for the thread-history block injected into a spawn prompt.
|
|
55
83
|
*
|
|
@@ -111,6 +139,26 @@ export function buildBoundedHistorySection(messages, totalCount, opts) {
|
|
|
111
139
|
: `Recent thread history (${entries.length} of ${totalCount} messages):`;
|
|
112
140
|
return `${header}\n${numbered}`;
|
|
113
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Trust-level ordering for the warm-session floor check (spec §3.5).
|
|
144
|
+
*
|
|
145
|
+
* Explicit ordering array — NEVER string `>=` (the latent `shouldUseListener`
|
|
146
|
+
* `'verified' >= 'trusted'` alphabetical bug). A trust level meets a floor when
|
|
147
|
+
* its index is >= the floor's index. Unknown levels resolve to index -1 (below
|
|
148
|
+
* everything), so a malformed value can never satisfy a floor.
|
|
149
|
+
*/
|
|
150
|
+
const TRUST_ORDER = ['untrusted', 'verified', 'trusted', 'autonomous'];
|
|
151
|
+
/**
|
|
152
|
+
* True when `level` meets or exceeds `floor` per the explicit TRUST_ORDER.
|
|
153
|
+
* Pure + exported for unit testing both sides of the boundary.
|
|
154
|
+
*/
|
|
155
|
+
export function trustMeetsFloor(level, floor) {
|
|
156
|
+
const levelIdx = TRUST_ORDER.indexOf(level);
|
|
157
|
+
const floorIdx = TRUST_ORDER.indexOf(floor);
|
|
158
|
+
if (levelIdx < 0 || floorIdx < 0)
|
|
159
|
+
return false;
|
|
160
|
+
return levelIdx >= floorIdx;
|
|
161
|
+
}
|
|
114
162
|
// ── Implementation ──────────────────────────────────────────────
|
|
115
163
|
export class ThreadlineRouter {
|
|
116
164
|
messageRouter;
|
|
@@ -125,6 +173,22 @@ export class ThreadlineRouter {
|
|
|
125
173
|
messageDelivery;
|
|
126
174
|
/** Optional ledger-event sink (Integrated-Being v1). Signal-only. */
|
|
127
175
|
onLedgerEvent;
|
|
176
|
+
/**
|
|
177
|
+
* Warm-session A2A (dark-ship). When non-null AND warmEnabled, a relay inbound
|
|
178
|
+
* flagged `preferWarmSession` spawns an interactive keep-alive worker and admits
|
|
179
|
+
* it here, so follow-ups inject into the live session. Null when the feature is
|
|
180
|
+
* disabled (the dark-ship invariant — behavior is byte-for-byte unchanged).
|
|
181
|
+
*/
|
|
182
|
+
warmSessionPool;
|
|
183
|
+
warmEnabled;
|
|
184
|
+
/** Trust floor (abuse/resource control) a peer must meet to pin a warm session. */
|
|
185
|
+
warmTrustFloor;
|
|
186
|
+
/**
|
|
187
|
+
* Server-owned primitive to kill a warm session by its tmux name (cap eviction
|
|
188
|
+
* on admit). Null when the feature is disabled. The server resolves the tmux
|
|
189
|
+
* name → instar session id → killSession; the router never touches tmux itself.
|
|
190
|
+
*/
|
|
191
|
+
killWarmSession;
|
|
128
192
|
/**
|
|
129
193
|
* Optional topic-linkage handler (THREAD-TOPIC-LINKAGE-SPEC.md). When set,
|
|
130
194
|
* inbound replies on threads with an `originTopicId` are routed to the
|
|
@@ -149,7 +213,7 @@ export class ThreadlineRouter {
|
|
|
149
213
|
recentThreadByPeer = new Map();
|
|
150
214
|
/** Test seam: override `Date.now()` for deterministic TTL tests. */
|
|
151
215
|
nowFn;
|
|
152
|
-
constructor(messageRouter, spawnManager, threadResumeMap, messageStore, config, autonomyGate, messageDelivery, onLedgerEvent, nowFn) {
|
|
216
|
+
constructor(messageRouter, spawnManager, threadResumeMap, messageStore, config, autonomyGate, messageDelivery, onLedgerEvent, nowFn, warmSessionPool, warmEnabled, trustFloor, killWarmSession) {
|
|
153
217
|
this.messageRouter = messageRouter;
|
|
154
218
|
this.spawnManager = spawnManager;
|
|
155
219
|
this.threadResumeMap = threadResumeMap;
|
|
@@ -162,6 +226,12 @@ export class ThreadlineRouter {
|
|
|
162
226
|
this.messageDelivery = messageDelivery ?? null;
|
|
163
227
|
this.onLedgerEvent = onLedgerEvent ?? null;
|
|
164
228
|
this.nowFn = nowFn ?? (() => Date.now());
|
|
229
|
+
// Warm-session A2A: only active when BOTH the pool exists AND the flag is on.
|
|
230
|
+
// Either being absent keeps the dark-ship invariant (cold-spawn only).
|
|
231
|
+
this.warmSessionPool = warmSessionPool ?? null;
|
|
232
|
+
this.warmEnabled = warmEnabled ?? false;
|
|
233
|
+
this.warmTrustFloor = trustFloor ?? 'verified';
|
|
234
|
+
this.killWarmSession = killWarmSession ?? null;
|
|
165
235
|
}
|
|
166
236
|
/**
|
|
167
237
|
* Look up a recent affinity entry for a verified peer. Returns the threadId
|
|
@@ -408,7 +478,7 @@ export class ThreadlineRouter {
|
|
|
408
478
|
// spawning a fresh Claude process. Fall through to resume/spawn on
|
|
409
479
|
// failure.
|
|
410
480
|
if (existingEntry && this.messageDelivery) {
|
|
411
|
-
const injected = await this.tryInjectIntoLiveSession(threadId, existingEntry, envelope);
|
|
481
|
+
const injected = await this.tryInjectIntoLiveSession(threadId, existingEntry, envelope, relayContext);
|
|
412
482
|
if (injected)
|
|
413
483
|
return injected;
|
|
414
484
|
}
|
|
@@ -416,6 +486,16 @@ export class ThreadlineRouter {
|
|
|
416
486
|
return await this.resumeThread(threadId, existingEntry, envelope, relayContext);
|
|
417
487
|
}
|
|
418
488
|
else {
|
|
489
|
+
// Warm-session A2A (dark-ship): when the relay decided this inbound is
|
|
490
|
+
// warm-eligible AND the feature is wired, spawn an interactive keep-alive
|
|
491
|
+
// worker and admit it to the pool so follow-ups inject into the same live
|
|
492
|
+
// session. Falls back to the normal cold-spawn on conflict/error or when
|
|
493
|
+
// the feature is off (the dark-ship invariant).
|
|
494
|
+
if (relayContext?.preferWarmSession && this.warmEnabled && this.warmSessionPool) {
|
|
495
|
+
const warm = await this.spawnWarmThread(threadId, envelope, relayContext);
|
|
496
|
+
if (warm)
|
|
497
|
+
return warm;
|
|
498
|
+
}
|
|
419
499
|
return await this.spawnNewThread(threadId, envelope, relayContext);
|
|
420
500
|
}
|
|
421
501
|
}
|
|
@@ -638,6 +718,125 @@ export class ThreadlineRouter {
|
|
|
638
718
|
sessionName: newEntry.sessionName,
|
|
639
719
|
};
|
|
640
720
|
}
|
|
721
|
+
// ── Private: Spawn a keep-alive (warm) thread session ───────
|
|
722
|
+
/**
|
|
723
|
+
* Warm-session A2A keep-alive spawn (spec §3.5). Like spawnNewThread but:
|
|
724
|
+
* - requests an INTERACTIVE persistent worker (`interactive: true`) so it
|
|
725
|
+
* stays alive between messages and accepts injected follow-ups;
|
|
726
|
+
* - uses the dedicated stay-alive prompt (THREAD_WARM_SPAWN_PROMPT_TEMPLATE);
|
|
727
|
+
* - admits the session to the WarmSessionPool, killing any cap-evicted
|
|
728
|
+
* sessions and falling back to cold-spawn on a peer-conflict.
|
|
729
|
+
*
|
|
730
|
+
* Returns a ThreadlineHandleResult on a successful warm spawn+admit, or null
|
|
731
|
+
* to signal the caller should fall back to the normal cold-spawn (peer
|
|
732
|
+
* conflict, spawn denied, or admit failure). NEVER throws to the caller —
|
|
733
|
+
* the warm path is best-effort over the proven cold-spawn.
|
|
734
|
+
*/
|
|
735
|
+
async spawnWarmThread(threadId, envelope, relayContext) {
|
|
736
|
+
if (!this.warmSessionPool)
|
|
737
|
+
return null;
|
|
738
|
+
const { message } = envelope;
|
|
739
|
+
// peerId = the stable sender identity the relay decision used for the
|
|
740
|
+
// trust/ownership checks (the crypto fingerprint), NOT the display name.
|
|
741
|
+
const peerId = relayContext.senderFingerprint;
|
|
742
|
+
// Pre-spawn peer-conflict check (defense-in-depth): if the threadId is
|
|
743
|
+
// already owned by a DIFFERENT peer, refuse the warm path BEFORE spending an
|
|
744
|
+
// interactive spawn (otherwise admit would throw only after the worker is
|
|
745
|
+
// launched, double-spawning). The upstream anti-hijack guard makes this rare
|
|
746
|
+
// for verified peers, but the pool must never cross-bind. → cold-spawn.
|
|
747
|
+
const existingRecord = this.warmSessionPool.peek(threadId);
|
|
748
|
+
if (existingRecord && existingRecord.peerId !== peerId) {
|
|
749
|
+
console.warn(`[ThreadlineRouter] Warm pre-spawn peer-conflict for thread ${threadId}: owned by ${existingRecord.peerId.slice(0, 16)}, sender ${peerId.slice(0, 16)}. Falling back to cold-spawn.`);
|
|
750
|
+
return null;
|
|
751
|
+
}
|
|
752
|
+
const maxHistory = RELAY_HISTORY_LIMITS[relayContext.trustLevel];
|
|
753
|
+
const historyContext = await this.buildHistoryContext(threadId, maxHistory);
|
|
754
|
+
// Warm worker: stay-alive prompt + grounding (relayContext is always present
|
|
755
|
+
// on this path, so buildPrompt wraps it). This is the worker's FIRST turn.
|
|
756
|
+
const prompt = this.buildPrompt(message, threadId, message.subject, 1, message.from.agent, historyContext, relayContext, THREAD_WARM_SPAWN_PROMPT_TEMPLATE);
|
|
757
|
+
const claudeUuid = crypto.randomUUID();
|
|
758
|
+
let spawnResult;
|
|
759
|
+
try {
|
|
760
|
+
spawnResult = await this.spawnManager.evaluate({
|
|
761
|
+
requester: message.from,
|
|
762
|
+
target: { agent: this.config.localAgent, machine: this.config.localMachine },
|
|
763
|
+
reason: `Warm thread from ${message.from.agent}: ${message.subject}`,
|
|
764
|
+
context: prompt,
|
|
765
|
+
priority: message.priority === 'critical' ? 'critical' : 'medium',
|
|
766
|
+
pendingMessages: [message.id],
|
|
767
|
+
sessionId: claudeUuid,
|
|
768
|
+
// Route the spawn callback to the INTERACTIVE persistent path.
|
|
769
|
+
interactive: true,
|
|
770
|
+
});
|
|
771
|
+
}
|
|
772
|
+
catch (err) {
|
|
773
|
+
// @silent-fallback-ok — intentional + observable: the warm keep-alive path
|
|
774
|
+
// is best-effort over the PROVEN cold-spawn. A spawn-eval error degrades to
|
|
775
|
+
// cold-spawn (logged here, and the cold path has its own denial handling).
|
|
776
|
+
console.warn(`[ThreadlineRouter] Warm spawn evaluate threw for thread ${threadId}: ${err instanceof Error ? err.message : String(err)} — falling back to cold-spawn`);
|
|
777
|
+
return null;
|
|
778
|
+
}
|
|
779
|
+
if (!spawnResult.approved) {
|
|
780
|
+
// Don't escalate here; just fall back to the cold-spawn path which has its
|
|
781
|
+
// own denial handling. (Avoids double-counting denials.)
|
|
782
|
+
console.log(`[ThreadlineRouter] Warm spawn not approved for thread ${threadId}: ${spawnResult.reason}. Falling back to cold-spawn.`);
|
|
783
|
+
return null;
|
|
784
|
+
}
|
|
785
|
+
const sessionName = spawnResult.tmuxSession || `thread-${threadId.slice(0, 8)}`;
|
|
786
|
+
// Admit to the pool, killing cap-evicted sessions. A peer-conflict means the
|
|
787
|
+
// thread is owned by a different peer — fall back to cold-spawn (no warm).
|
|
788
|
+
try {
|
|
789
|
+
const evicted = this.warmSessionPool.admit({ threadId, peerId, sessionName });
|
|
790
|
+
for (const victim of evicted) {
|
|
791
|
+
try {
|
|
792
|
+
this.killWarmSession?.(victim.sessionName);
|
|
793
|
+
}
|
|
794
|
+
catch (killErr) {
|
|
795
|
+
console.warn(`[ThreadlineRouter] Failed to kill cap-evicted warm session ${victim.sessionName}: ${killErr instanceof Error ? killErr.message : String(killErr)}`);
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
catch (err) {
|
|
800
|
+
// @silent-fallback-ok — a peer-conflict (defense-in-depth) degrades to the
|
|
801
|
+
// PROVEN cold-spawn (logged); it must NEVER overwrite the owner's warm
|
|
802
|
+
// session. Any OTHER error re-throws (not a silent fallback).
|
|
803
|
+
if (err instanceof WarmSessionPeerConflictError) {
|
|
804
|
+
console.warn(`[ThreadlineRouter] Warm admit peer-conflict for thread ${threadId}: ${err.message}. Falling back to cold-spawn.`);
|
|
805
|
+
return null;
|
|
806
|
+
}
|
|
807
|
+
throw err;
|
|
808
|
+
}
|
|
809
|
+
// Persist the resume entry (same shape as cold-spawn) so eviction-mid-thread
|
|
810
|
+
// falls back losslessly to the Path-1 resume (#746).
|
|
811
|
+
const now = new Date().toISOString();
|
|
812
|
+
const newEntry = {
|
|
813
|
+
uuid: claudeUuid,
|
|
814
|
+
sessionName,
|
|
815
|
+
createdAt: now,
|
|
816
|
+
savedAt: now,
|
|
817
|
+
lastAccessedAt: now,
|
|
818
|
+
remoteAgent: message.from.agent,
|
|
819
|
+
subject: message.subject,
|
|
820
|
+
state: 'active',
|
|
821
|
+
pinned: false,
|
|
822
|
+
messageCount: 1,
|
|
823
|
+
};
|
|
824
|
+
this.threadResumeMap.save(threadId, newEntry);
|
|
825
|
+
this.emitLedger({
|
|
826
|
+
kind: 'thread-opened',
|
|
827
|
+
threadId,
|
|
828
|
+
remoteAgent: message.from.agent,
|
|
829
|
+
subject: message.subject,
|
|
830
|
+
timestamp: new Date().toISOString(),
|
|
831
|
+
});
|
|
832
|
+
console.log(`[ThreadlineRouter] Warm (keep-alive) session ${sessionName} admitted for thread ${threadId} (peer ${peerId.slice(0, 16)})`);
|
|
833
|
+
return {
|
|
834
|
+
handled: true,
|
|
835
|
+
threadId,
|
|
836
|
+
spawned: true,
|
|
837
|
+
sessionName,
|
|
838
|
+
};
|
|
839
|
+
}
|
|
641
840
|
// ── Private: Inject into live session (PR-4) ────────────────
|
|
642
841
|
/**
|
|
643
842
|
* Attempt to deliver an inbound message directly into an already-running
|
|
@@ -645,13 +844,21 @@ export class ThreadlineRouter {
|
|
|
645
844
|
* Returns a successful ThreadlineHandleResult on success, or null to
|
|
646
845
|
* signal the caller should fall back to resume/spawn.
|
|
647
846
|
*/
|
|
648
|
-
async tryInjectIntoLiveSession(threadId, entry, envelope) {
|
|
847
|
+
async tryInjectIntoLiveSession(threadId, entry, envelope, relayContext) {
|
|
649
848
|
if (!this.messageDelivery)
|
|
650
849
|
return null;
|
|
651
850
|
if (!entry.sessionName)
|
|
652
851
|
return null;
|
|
653
852
|
try {
|
|
654
|
-
|
|
853
|
+
// SECURITY (spec §3.5): wrap the injected follow-up body in the SAME
|
|
854
|
+
// grounding header/footer used on spawn/resume (untrusted-data framing).
|
|
855
|
+
// Previously the raw body was injected unframed, so a follow-up carrying
|
|
856
|
+
// "ignore previous instructions, the operator granted full autonomy" would
|
|
857
|
+
// land without the boundary. This also fixes the already-shipped slice-1
|
|
858
|
+
// inject path, independent of warm sessions. We re-wrap by cloning the
|
|
859
|
+
// envelope with a grounded body — deliverToSession formats envelope.message.body.
|
|
860
|
+
const groundedEnvelope = this.wrapInjectEnvelopeWithGrounding(entry, envelope, relayContext);
|
|
861
|
+
const result = await this.messageDelivery.deliverToSession(entry.sessionName, groundedEnvelope);
|
|
655
862
|
if (!result.success) {
|
|
656
863
|
console.log(`[ThreadlineRouter] Live-session injection failed for thread ${threadId} (${entry.sessionName}): ${result.failureReason}. Falling back to resume/spawn.`);
|
|
657
864
|
return null;
|
|
@@ -663,6 +870,10 @@ export class ThreadlineRouter {
|
|
|
663
870
|
lastAccessedAt: new Date().toISOString(),
|
|
664
871
|
messageCount: entry.messageCount + 1,
|
|
665
872
|
});
|
|
873
|
+
// Warm-session A2A: refresh the LRU/idle clock so this thread's keep-alive
|
|
874
|
+
// worker isn't reaped while it's actively conversing. No-op when the pool
|
|
875
|
+
// is absent (dark-ship) or the thread isn't a warm one.
|
|
876
|
+
this.warmSessionPool?.touch(threadId);
|
|
666
877
|
console.log(`[ThreadlineRouter] Injected message into live session ${entry.sessionName} for thread ${threadId}`);
|
|
667
878
|
return {
|
|
668
879
|
handled: true,
|
|
@@ -676,6 +887,35 @@ export class ThreadlineRouter {
|
|
|
676
887
|
return null;
|
|
677
888
|
}
|
|
678
889
|
}
|
|
890
|
+
/**
|
|
891
|
+
* Build a cloned envelope whose `message.body` is the inbound body wrapped in
|
|
892
|
+
* the relay grounding header/footer (spec §3.5). `deliverToSession` formats
|
|
893
|
+
* `envelope.message.body`, so wrapping there is what lands the boundary in the
|
|
894
|
+
* injected text. Trust context comes from `relayContext` when present, else
|
|
895
|
+
* falls back to the thread entry's known peer (still framed as external).
|
|
896
|
+
* Pure (no I/O) — exported behavior covered by a unit test asserting the
|
|
897
|
+
* grounding boundary appears in the injected body.
|
|
898
|
+
*/
|
|
899
|
+
wrapInjectEnvelopeWithGrounding(entry, envelope, relayContext) {
|
|
900
|
+
const grounding = buildRelayGroundingPreamble({
|
|
901
|
+
agentName: this.config.localAgent,
|
|
902
|
+
senderName: relayContext?.senderName ?? entry.remoteAgent,
|
|
903
|
+
senderFingerprint: relayContext?.senderFingerprint ?? entry.remoteAgent,
|
|
904
|
+
trustLevel: relayContext?.trustLevel ?? 'verified',
|
|
905
|
+
trustSource: relayContext?.trustSource,
|
|
906
|
+
trustDate: relayContext?.trustDate,
|
|
907
|
+
originFingerprint: relayContext?.originFingerprint,
|
|
908
|
+
originName: relayContext?.originName,
|
|
909
|
+
});
|
|
910
|
+
const groundedBody = `${grounding.header}\n\n${envelope.message.body}\n\n${grounding.footer}`;
|
|
911
|
+
return {
|
|
912
|
+
...envelope,
|
|
913
|
+
message: {
|
|
914
|
+
...envelope.message,
|
|
915
|
+
body: groundedBody,
|
|
916
|
+
},
|
|
917
|
+
};
|
|
918
|
+
}
|
|
679
919
|
// ── Private: Build thread history context ───────────────────
|
|
680
920
|
async buildHistoryContext(threadId, maxMessages) {
|
|
681
921
|
try {
|
|
@@ -709,7 +949,7 @@ export class ThreadlineRouter {
|
|
|
709
949
|
}
|
|
710
950
|
}
|
|
711
951
|
// ── Private: Build spawn/resume prompt ──────────────────────
|
|
712
|
-
buildPrompt(latestMessage, threadId, subject, messageCount, remoteAgent, historyContext, relayContext) {
|
|
952
|
+
buildPrompt(latestMessage, threadId, subject, messageCount, remoteAgent, historyContext, relayContext, template = THREAD_SPAWN_PROMPT_TEMPLATE) {
|
|
713
953
|
const historySection = historyContext
|
|
714
954
|
? `${historyContext}\n`
|
|
715
955
|
: 'No previous history available.\n';
|
|
@@ -718,7 +958,7 @@ export class ThreadlineRouter {
|
|
|
718
958
|
// with the bounded history this keeps the whole `tmux new-session` command
|
|
719
959
|
// under tmux's ~16 KB "command too long" ceiling.
|
|
720
960
|
const latestBody = capMessageBody(latestMessage.body, MAX_LATEST_BODY_BYTES);
|
|
721
|
-
const basePrompt =
|
|
961
|
+
const basePrompt = template
|
|
722
962
|
.replaceAll('{remote_agent}', remoteAgent)
|
|
723
963
|
.replaceAll('{thread_id}', threadId)
|
|
724
964
|
.replaceAll('{subject}', subject)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadlineRouter.js","sourceRoot":"","sources":["../../src/threadline/ThreadlineRouter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThreadlineRouter.js","sourceRoot":"","sources":["../../src/threadline/ThreadlineRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AASjC,OAAO,EAAE,2BAA2B,EAAsB,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEpH,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAqGpE,mEAAmE;AAEnE,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B;;;;;;;;;;;;;;GAcG;AACH,MAAM,gCAAgC,GAAG,OAAO,CAAC,CAAC,aAAa;AAC/D,MAAM,iCAAiC,GAAG,SAAS,CAAC,CAAC,UAAU;AAC/D,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAQnC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;8JAcyH,CAAC;AAE/J;;;;;;;;;GASG;AACH,MAAM,iCAAiC,GAAG;;;;;;;;;;;;;;;;uMAgB6J,CAAC;AAExM;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,+FAA+F;AAC/F,MAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,gFAAgF;AAChF,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,QAAgB;IAC3D,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,iBAAiB,IAAI,CAAC,MAAM,GAAG,QAAQ,SAAS,CAAC;AACpF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,QAAmE,EACnE,UAAkB,EAClB,IAAmD;IAEnD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,SAAS,OAAO,IAAI,EAAE,CAAC;QACtD,0EAA0E;QAC1E,gCAAgC;QAChC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ;YAAE,MAAM;QAC1E,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvB,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC;IAC5B,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAC5C,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;QACxB,CAAC,CAAC,0BAA0B,OAAO,CAAC,MAAM,OAAO,UAAU,mCAAmC;QAC9F,CAAC,CAAC,0BAA0B,OAAO,CAAC,MAAM,OAAO,UAAU,aAAa,CAAC;IAC3E,OAAO,GAAG,MAAM,KAAK,QAAQ,EAAE,CAAC;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,GAAmC,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAEvG;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,KAAa;IAC1D,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,KAAwB,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,KAAwB,CAAC,CAAC;IAC/D,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,QAAQ,IAAI,QAAQ,CAAC;AAC9B,CAAC;AAED,mEAAmE;AAEnE,MAAM,OAAO,gBAAgB;IACV,aAAa,CAAgB;IAC7B,YAAY,CAAsB;IAClC,eAAe,CAAkB;IACjC,YAAY,CAAe;IAC3B,MAAM,CAAyB;IAC/B,YAAY,CAAsB;IACnD;;sEAEkE;IACjD,eAAe,CAA0B;IAE1D,qEAAqE;IACpD,aAAa,CAAgD;IAE9E;;;;;OAKG;IACc,eAAe,CAAyB;IACxC,WAAW,CAAU;IACtC,mFAAmF;IAClE,cAAc,CAAS;IACxC;;;;OAIG;IACc,eAAe,CAAyC;IAEzE;;;;;OAKG;IACK,mBAAmB,GAAkE,IAAI,CAAC;IAElG,sFAAsF;IACrE,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnD;;;;;;;;;;;OAWG;IACc,kBAAkB,GAAG,IAAI,GAAG,EAAiC,CAAC;IAC/E,oEAAoE;IACnD,KAAK,CAAe;IAErC,YACE,aAA4B,EAC5B,YAAiC,EACjC,eAAgC,EAChC,YAA0B,EAC1B,MAAqG,EACrG,YAAkC,EAClC,eAAyC,EACzC,aAAoD,EACpD,KAAoB,EACpB,eAAwC,EACxC,WAAqB,EACrB,UAAmB,EACnB,eAAwD;QAExD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG;YACZ,kBAAkB,EAAE,mBAAmB;YACvC,GAAG,MAAM;SACV,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,IAAI,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,eAAe,IAAI,IAAI,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,aAAa,IAAI,IAAI,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACzC,8EAA8E;QAC9E,uEAAuE;QACvE,IAAI,CAAC,eAAe,GAAG,eAAe,IAAI,IAAI,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,KAAK,CAAC;QACxC,IAAI,CAAC,cAAc,GAAG,UAAU,IAAI,UAAU,CAAC;QAC/C,IAAI,CAAC,eAAe,GAAG,eAAe,IAAI,IAAI,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACK,YAAY,CAAC,YAA6C;QAChE,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;QACzE,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,iBAAiB,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,GAAG,GAAG,KAAK,CAAC,WAAW,GAAG,iCAAiC,EAAE,CAAC;YAChE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,GAAG,gCAAgC,EAAE,CAAC;YAC9D,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC,QAAQ,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACK,cAAc,CAAC,YAA6C,EAAE,QAAgB;QACpF,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO;QACpE,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,iBAAiB,CAAC;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/C,oDAAoD;YACpD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC5C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE;gBACvC,QAAQ;gBACR,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC5C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE;gBACvC,QAAQ;gBACR,WAAW,EAAE,GAAG;gBAChB,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;QACL,CAAC;QACD,6CAA6C;QAC7C,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,qBAAqB,EAAE,CAAC;YAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC9D,IAAI,SAAS,KAAK,SAAS;gBAAE,MAAM;YACnC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,2BAA2B;QACzB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,sBAAsB,CACpB,OAAsE;QAEtE,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC;IACrC,CAAC;IAED,kEAAkE;IAC1D,UAAU,CAAC,GAA0B;QAC3C,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;QAChC,IAAI,CAAC;YAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC9D,CAAC;IAED;;;;OAIG;IACH,qBAAqB,CAAC,QAAgB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QACvD,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO,CAAC,CAAC;QAClC,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAClC,KAAK,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC;gBACtC,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;oBACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAC9C,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC;wBAC3C,IAAI,CAAC,UAAU,CAAC;4BACd,IAAI,EAAE,kBAAkB;4BACxB,QAAQ;4BACR,WAAW,EAAE,KAAK,CAAC,WAAW;4BAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;yBACpC,CAAC,CAAC;wBACH,OAAO,IAAI,CAAC,CAAC;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC7B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,oBAAoB,CAAC,QAAyB,EAAE,YAAkC;QACtF,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;QAE7B,6DAA6D;QAC7D,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAClD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;QAED,uEAAuE;QACvE,oEAAoE;QACpE,6EAA6E;QAC7E,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YACzD,IAAI,gBAAgB,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,+CAA+C,gBAAgB,+BAA+B,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;gBACzH,OAAO,CAAC,QAAQ,GAAG,gBAAgB,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,0CAA0C,cAAc,mCAAmC,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;gBACjJ,OAAO,CAAC,QAAQ,GAAG,cAAc,CAAC;YACpC,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,uEAAuE;QACvE,6EAA6E;QAC7E,8DAA8D;QAC9D,2EAA2E;QAC3E,sEAAsE;QACtE,0EAA0E;QAC1E,0EAA0E;QAC1E,kBAAkB;QAClB,CAAC;YACC,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC7D,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,cAAc,GAAG,YAAY,EAAE,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;gBAC/D,MAAM,SAAS,GAAG,YAAY,EAAE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC9E,MAAM,WAAW,GAAG,YAAY,EAAE,UAAU,IAAI,EAAE,CAAC;gBACnD,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC;gBACzC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,WAAW,CAAC,CAAC;gBAC/E,IAAI,CAAC,cAAc,IAAI,CAAC,eAAe,EAAE,CAAC;oBACxC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;oBACpC,OAAO,CAAC,IAAI,CACV,qDAAqD,WAAW,IAAI,SAAS,IAAI,SAAS,uBAAuB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,+BAA+B,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAChO,CAAC;oBACF,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,wDAAwD;QACxD,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAE5C,gDAAgD;QAChD,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,QAAQ;gBACR,KAAK,EAAE,2CAA2C;aACnD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEjC,qDAAqD;YACrD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAE9D,QAAQ,UAAU,CAAC,QAAQ,EAAE,CAAC;oBAC5B,KAAK,OAAO;wBACV,OAAO;4BACL,OAAO,EAAE,IAAI;4BACb,QAAQ;4BACR,YAAY,EAAE,OAAO;4BACrB,KAAK,EAAE,6BAA6B,UAAU,CAAC,MAAM,EAAE;yBACxD,CAAC;oBAEJ,KAAK,oBAAoB;wBACvB,OAAO;4BACL,OAAO,EAAE,IAAI;4BACb,QAAQ;4BACR,YAAY,EAAE,oBAAoB;4BAClC,UAAU,EAAE,UAAU,CAAC,UAAU;yBAClC,CAAC;oBAEJ,KAAK,oBAAoB,CAAC;oBAC1B,KAAK,SAAS;wBACZ,yCAAyC;wBACzC,MAAM;gBACV,CAAC;YACH,CAAC;YAED,kCAAkC;YAClC,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEzD,yEAAyE;YACzE,wEAAwE;YACxE,yEAAyE;YACzE,8DAA8D;YAC9D,sEAAsE;YACtE,wEAAwE;YACxE,sDAAsD;YACtD,IAAI,IAAI,CAAC,mBAAmB,IAAI,aAAa,EAAE,aAAa,KAAK,SAAS,EAAE,CAAC;gBAC3E,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC;wBAClE,QAAQ;wBACR,WAAW,EAAE;4BACX,WAAW,EAAE,aAAa,CAAC,WAAW;4BACtC,OAAO,EAAE,aAAa,CAAC,OAAO;4BAC9B,aAAa,EAAE,aAAa,CAAC,aAAa;4BAC1C,iBAAiB,EAAE,aAAa,CAAC,iBAAiB;yBACnD;qBACF,CAAC,CAAC;oBACH,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC9B,OAAO;4BACL,OAAO,EAAE,IAAI;4BACb,QAAQ;4BACR,QAAQ,EAAE,OAAO,CAAC,YAAY,KAAK,aAAa;4BAChD,OAAO,EAAE,OAAO,CAAC,YAAY,KAAK,gBAAgB;yBACnD,CAAC;oBACJ,CAAC;oBACD,mEAAmE;gBACrE,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CACV,2DAA2D,QAAQ,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,0CAA0C,CACnK,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,qEAAqE;YACrE,sEAAsE;YACtE,qEAAqE;YACrE,mEAAmE;YACnE,WAAW;YACX,IAAI,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;gBACtG,IAAI,QAAQ;oBAAE,OAAO,QAAQ,CAAC;YAChC,CAAC;YAED,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YAClF,CAAC;iBAAM,CAAC;gBACN,uEAAuE;gBACvE,0EAA0E;gBAC1E,0EAA0E;gBAC1E,yEAAyE;gBACzE,gDAAgD;gBAChD,IAAI,YAAY,EAAE,iBAAiB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBAChF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;oBAC1E,IAAI,IAAI;wBAAE,OAAO,IAAI,CAAC;gBACxB,CAAC;gBACD,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,gEAAgE,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC;YAChG,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,QAAQ;gBACR,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAC5D,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAAgB,EAAE,IAAY,EAAE,WAAmB;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,yDAAyD;QACzD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClC,GAAG,KAAK;YACR,IAAI;YACJ,WAAW;YACX,KAAK,EAAE,MAAM;YACb,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACzC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,WAAmB,EAAE,IAAa;QAClD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,WAAW,CAAC;aAC/C,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CACzC,CAAC;QACF,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChE,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,oBAAoB,GAAG,CAAC,CAAC;QAE7B,KAAK,MAAM,KAAK,IAAI,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,IAAI,KAAK,CAAC,iBAAiB,KAAK,gBAAgB,EAAE,CAAC;gBACjD,oBAAoB,IAAI,CAAC,CAAC;gBAC1B,SAAS;YACX,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACxC,GAAG,KAAK,CAAC,KAAK;gBACd,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI;gBAC9B,WAAW;gBACX,KAAK,EAAE,MAAM;gBACb,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACzC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,CAAC;QACf,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,QAAgB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,CAAC;gBACd,IAAI,EAAE,eAAe;gBACrB,QAAQ;gBACR,WAAW,EAAE,KAAK,EAAE,WAAW,IAAI,SAAS;gBAC5C,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,WAAW;gBACtC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,QAAgB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClC,GAAG,KAAK;YACR,KAAK,EAAE,QAAQ;YACf,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACzC,CAAC,CAAC;IACL,CAAC;IAED,+DAA+D;IAEvD,KAAK,CAAC,YAAY,CACxB,QAAgB,EAChB,KAAwB,EACxB,QAAyB,EACzB,YAAkC;QAElC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;QAE7B,mEAAmE;QACnE,yEAAyE;QACzE,uEAAuE;QACvE,0EAA0E;QAC1E,sEAAsE;QACtE,uEAAuE;QACvE,wEAAwE;QACxE,sCAAsC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAC7B,OAAO,EACP,QAAQ,EACR,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,WAAW,EACjB,EAAE,EACF,YAAY,CACb,CAAC;QAEF,yEAAyE;QACzE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YACnD,SAAS,EAAE,OAAO,CAAC,IAAI;YACvB,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;YAC5E,MAAM,EAAE,iBAAiB,QAAQ,SAAS,KAAK,CAAC,WAAW,EAAE;YAC7D,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;YACjE,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,eAAe,EAAE,KAAK,CAAC,IAAI;SAC5B,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,YAAY,CAC5B;gBACE,SAAS,EAAE,OAAO,CAAC,IAAI;gBACvB,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;gBAC5E,MAAM,EAAE,iBAAiB,QAAQ,EAAE;gBACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;aAClE,EACD,WAAW,CACZ,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,QAAQ;gBACR,KAAK,EAAE,iBAAiB,WAAW,CAAC,MAAM,EAAE;aAC7C,CAAC;QACJ,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClC,GAAG,KAAK;YACR,KAAK,EAAE,QAAQ;YACf,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACxC,YAAY,EAAE,KAAK,CAAC,YAAY,GAAG,CAAC;YACpC,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW;SAC1D,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ;YACR,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW;SAC1D,CAAC;IACJ,CAAC;IAED,+DAA+D;IAEvD,KAAK,CAAC,cAAc,CAC1B,QAAgB,EAChB,QAAyB,EACzB,YAAkC;QAElC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;QAE7B,6DAA6D;QAC7D,MAAM,UAAU,GAAG,YAAY;YAC7B,CAAC,CAAC,oBAAoB,CAAC,YAAY,CAAC,UAAU,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;QACnC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAE5E,4DAA4D;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAC7B,OAAO,EACP,QAAQ,EACR,OAAO,CAAC,OAAO,EACf,CAAC,EACD,OAAO,CAAC,IAAI,CAAC,KAAK,EAClB,cAAc,EACd,YAAY,CACb,CAAC;QAEF,0EAA0E;QAC1E,yEAAyE;QACzE,4EAA4E;QAC5E,4EAA4E;QAC5E,2EAA2E;QAC3E,2EAA2E;QAC3E,mEAAmE;QACnE,sEAAsE;QACtE,kCAAkC;QAClC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAEvC,gBAAgB;QAChB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YACnD,SAAS,EAAE,OAAO,CAAC,IAAI;YACvB,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;YAC5E,MAAM,EAAE,mBAAmB,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,EAAE;YACnE,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;YACjE,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,SAAS,EAAE,UAAU;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,YAAY,CAC5B;gBACE,SAAS,EAAE,OAAO,CAAC,IAAI;gBACvB,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;gBAC5E,MAAM,EAAE,mBAAmB,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;gBAC/C,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;aAClE,EACD,WAAW,CACZ,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,QAAQ;gBACR,KAAK,EAAE,iBAAiB,WAAW,CAAC,MAAM,EAAE;aAC7C,CAAC;QACJ,CAAC;QAED,0EAA0E;QAC1E,2EAA2E;QAC3E,8EAA8E;QAC9E,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAsB;YAClC,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,UAAU,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACxE,SAAS,EAAE,GAAG;YACd,OAAO,EAAE,GAAG;YACZ,cAAc,EAAE,GAAG;YACnB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,KAAK;YACb,YAAY,EAAE,CAAC;SAChB,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE9C,mEAAmE;QACnE,IAAI,CAAC,UAAU,CAAC;YACd,IAAI,EAAE,eAAe;YACrB,QAAQ;YACR,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ;YACR,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,QAAQ,CAAC,WAAW;SAClC,CAAC;IACJ,CAAC;IAED,+DAA+D;IAE/D;;;;;;;;;;;;OAYG;IACK,KAAK,CAAC,eAAe,CAC3B,QAAgB,EAChB,QAAyB,EACzB,YAAiC;QAEjC,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC;QACvC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;QAE7B,sEAAsE;QACtE,yEAAyE;QACzE,MAAM,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC;QAE9C,uEAAuE;QACvE,6EAA6E;QAC7E,0EAA0E;QAC1E,6EAA6E;QAC7E,wEAAwE;QACxE,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,8DAA8D,QAAQ,cAAc,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,+BAA+B,CAAC,CAAC;YACnM,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,UAAU,GAAG,oBAAoB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACjE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAE5E,6EAA6E;QAC7E,2EAA2E;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAC7B,OAAO,EACP,QAAQ,EACR,OAAO,CAAC,OAAO,EACf,CAAC,EACD,OAAO,CAAC,IAAI,CAAC,KAAK,EAClB,cAAc,EACd,YAAY,EACZ,iCAAiC,CAClC,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAEvC,IAAI,WAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAC7C,SAAS,EAAE,OAAO,CAAC,IAAI;gBACvB,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;gBAC5E,MAAM,EAAE,oBAAoB,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,EAAE;gBACpE,OAAO,EAAE,MAAM;gBACf,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;gBACjE,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,SAAS,EAAE,UAAU;gBACrB,+DAA+D;gBAC/D,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,2EAA2E;YAC3E,4EAA4E;YAC5E,2EAA2E;YAC3E,OAAO,CAAC,IAAI,CAAC,2DAA2D,QAAQ,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YACtK,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC1B,2EAA2E;YAC3E,yDAAyD;YACzD,OAAO,CAAC,GAAG,CAAC,yDAAyD,QAAQ,KAAK,WAAW,CAAC,MAAM,+BAA+B,CAAC,CAAC;YACrI,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,IAAI,UAAU,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAEhF,6EAA6E;QAC7E,2EAA2E;QAC3E,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAC9E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC7C,CAAC;gBAAC,OAAO,OAAO,EAAE,CAAC;oBACjB,OAAO,CAAC,IAAI,CAAC,8DAA8D,MAAM,CAAC,WAAW,KAAK,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACpK,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,2EAA2E;YAC3E,uEAAuE;YACvE,8DAA8D;YAC9D,IAAI,GAAG,YAAY,4BAA4B,EAAE,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,0DAA0D,QAAQ,KAAK,GAAG,CAAC,OAAO,+BAA+B,CAAC,CAAC;gBAChI,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,6EAA6E;QAC7E,qDAAqD;QACrD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAsB;YAClC,IAAI,EAAE,UAAU;YAChB,WAAW;YACX,SAAS,EAAE,GAAG;YACd,OAAO,EAAE,GAAG;YACZ,cAAc,EAAE,GAAG;YACnB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,KAAK;YACb,YAAY,EAAE,CAAC;SAChB,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE9C,IAAI,CAAC,UAAU,CAAC;YACd,IAAI,EAAE,eAAe;YACrB,QAAQ;YACR,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,gDAAgD,WAAW,wBAAwB,QAAQ,UAAU,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QACzI,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ;YACR,OAAO,EAAE,IAAI;YACb,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,+DAA+D;IAE/D;;;;;OAKG;IACK,KAAK,CAAC,wBAAwB,CACpC,QAAgB,EAChB,KAAwB,EACxB,QAAyB,EACzB,YAAkC;QAElC,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAEpC,IAAI,CAAC;YACH,qEAAqE;YACrE,yEAAyE;YACzE,yEAAyE;YACzE,2EAA2E;YAC3E,yEAAyE;YACzE,uEAAuE;YACvE,kFAAkF;YAClF,MAAM,gBAAgB,GAAG,IAAI,CAAC,+BAA+B,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YAE7F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;YAChG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,+DAA+D,QAAQ,KAAK,KAAK,CAAC,WAAW,MAAM,MAAM,CAAC,aAAa,iCAAiC,CAAC,CAAC;gBACtK,OAAO,IAAI,CAAC;YACd,CAAC;YAED,oDAAoD;YACpD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClC,GAAG,KAAK;gBACR,KAAK,EAAE,QAAQ;gBACf,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACxC,YAAY,EAAE,KAAK,CAAC,YAAY,GAAG,CAAC;aACrC,CAAC,CAAC;YAEH,2EAA2E;YAC3E,0EAA0E;YAC1E,wDAAwD;YACxD,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAEtC,OAAO,CAAC,GAAG,CAAC,yDAAyD,KAAK,CAAC,WAAW,eAAe,QAAQ,EAAE,CAAC,CAAC;YACjH,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,QAAQ;gBACR,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,8DAA8D,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC;YAC7F,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACK,+BAA+B,CACrC,KAAwB,EACxB,QAAyB,EACzB,YAAkC;QAElC,MAAM,SAAS,GAAG,2BAA2B,CAAC;YAC5C,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YACjC,UAAU,EAAE,YAAY,EAAE,UAAU,IAAI,KAAK,CAAC,WAAW;YACzD,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,IAAI,KAAK,CAAC,WAAW;YACvE,UAAU,EAAE,YAAY,EAAE,UAAU,IAAI,UAAU;YAClD,WAAW,EAAE,YAAY,EAAE,WAAW;YACtC,SAAS,EAAE,YAAY,EAAE,SAAS;YAClC,iBAAiB,EAAE,YAAY,EAAE,iBAAiB;YAClD,UAAU,EAAE,YAAY,EAAE,UAAU;SACrC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,GAAG,SAAS,CAAC,MAAM,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC;QAC9F,OAAO;YACL,GAAG,QAAQ;YACX,OAAO,EAAE;gBACP,GAAG,QAAQ,CAAC,OAAO;gBACnB,IAAI,EAAE,YAAY;aACnB;SACF,CAAC;IACJ,CAAC;IAED,+DAA+D;IAEvD,KAAK,CAAC,mBAAmB,CAAC,QAAgB,EAAE,WAAoB;QACtE,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAC5D,IAAI,KAAK,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAC;YAE1B,6DAA6D;YAC7D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAChE,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpD,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,wEAAwE;YACxE,gEAAgE;YAChE,0EAA0E;YAC1E,sEAAsE;YACtE,0EAA0E;YAC1E,0CAA0C;YAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC7D,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK;gBAC7B,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS;gBAChC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;aACvB,CAAC,CAAC,CAAC;YAEJ,OAAO,0BAA0B,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACpE,QAAQ,EAAE,iBAAiB;gBAC3B,eAAe,EAAE,yBAAyB;aAC3C,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,uGAAuG;YACvG,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,+DAA+D;IAEvD,WAAW,CACjB,aAA2B,EAC3B,QAAgB,EAChB,OAAe,EACf,YAAoB,EACpB,WAAmB,EACnB,cAAsB,EACtB,YAAkC,EAClC,WAAmB,4BAA4B;QAE/C,MAAM,cAAc,GAAG,cAAc;YACnC,CAAC,CAAC,GAAG,cAAc,IAAI;YACvB,CAAC,CAAC,kCAAkC,CAAC;QAEvC,uEAAuE;QACvE,4EAA4E;QAC5E,2EAA2E;QAC3E,kDAAkD;QAClD,MAAM,UAAU,GAAG,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAE7E,MAAM,UAAU,GAAG,QAAQ;aACxB,UAAU,CAAC,gBAAgB,EAAE,WAAW,CAAC;aACzC,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC;aACnC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC;aAChC,UAAU,CAAC,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;aACnD,UAAU,CAAC,mBAAmB,EAAE,cAAc,CAAC;aAC/C,UAAU,CAAC,kBAAkB,EAAE,aAAa,CAAC,OAAO,CAAC;aACrD,UAAU,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QAE3C,4DAA4D;QAC5D,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,2BAA2B,CAAC;gBAC5C,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;gBACjC,UAAU,EAAE,YAAY,CAAC,UAAU;gBACnC,iBAAiB,EAAE,YAAY,CAAC,iBAAiB;gBACjD,UAAU,EAAE,YAAY,CAAC,UAAU;gBACnC,WAAW,EAAE,YAAY,CAAC,WAAW;gBACrC,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,iBAAiB,EAAE,YAAY,CAAC,iBAAiB;gBACjD,UAAU,EAAE,YAAY,CAAC,UAAU;aACpC,CAAC,CAAC;YAEH,OAAO,GAAG,SAAS,CAAC,MAAM,OAAO,UAAU,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC;QACvE,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
|
|
@@ -30,6 +30,21 @@ export interface WarmSessionPoolConfig {
|
|
|
30
30
|
/** Idle TTL — a warm session unused for this long is reapable. */
|
|
31
31
|
ttlMs: number;
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Thrown by `admit` when an existing thread record is owned by a DIFFERENT peer
|
|
35
|
+
* than the caller presents (defense-in-depth, spec §3.5). The upstream
|
|
36
|
+
* ThreadlineRouter ownership guard (identity-match) already blocks a peer
|
|
37
|
+
* injecting into another's thread, but the pool MUST additionally refuse to
|
|
38
|
+
* cross-bind a thread to a new peer — it must never silently overwrite the
|
|
39
|
+
* owner. The caller treats this as a reject and falls back to a fresh
|
|
40
|
+
* cold-spawn (no warm session).
|
|
41
|
+
*/
|
|
42
|
+
export declare class WarmSessionPeerConflictError extends Error {
|
|
43
|
+
readonly threadId: string;
|
|
44
|
+
readonly existingPeerId: string;
|
|
45
|
+
readonly attemptedPeerId: string;
|
|
46
|
+
constructor(threadId: string, existingPeerId: string, attemptedPeerId: string);
|
|
47
|
+
}
|
|
33
48
|
export declare class WarmSessionPool {
|
|
34
49
|
private readonly config;
|
|
35
50
|
private readonly now;
|
|
@@ -51,6 +66,13 @@ export declare class WarmSessionPool {
|
|
|
51
66
|
}): WarmSessionRecord[];
|
|
52
67
|
/** Mark a thread's warm session used (LRU refresh). */
|
|
53
68
|
touch(threadId: string): void;
|
|
69
|
+
/**
|
|
70
|
+
* The raw record for a thread, IGNORING the idle TTL (unlike `get`). Used for
|
|
71
|
+
* a pre-spawn peer-conflict check so the router can refuse a cross-peer warm
|
|
72
|
+
* spawn BEFORE spending a spawn (admit would throw, but only after the worker
|
|
73
|
+
* is already launched). Returns undefined when no record exists.
|
|
74
|
+
*/
|
|
75
|
+
peek(threadId: string): WarmSessionRecord | undefined;
|
|
54
76
|
/** The warm session for a thread, if present and not past its idle TTL; else undefined. */
|
|
55
77
|
get(threadId: string): WarmSessionRecord | undefined;
|
|
56
78
|
remove(threadId: string): WarmSessionRecord | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WarmSessionPool.d.ts","sourceRoot":"","sources":["../../src/threadline/WarmSessionPool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,eAAe;IAIxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;gBAG9C,MAAM,EAAE,qBAAqB,EAC7B,GAAG,GAAE,MAAM,MAAyB;IAGvD,IAAI,IAAI,MAAM;IAId,OAAO,CAAC,SAAS;IAMjB,2DAA2D;IAC3D,OAAO,CAAC,GAAG;IAMX;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,iBAAiB,EAAE;
|
|
1
|
+
{"version":3,"file":"WarmSessionPool.d.ts","sourceRoot":"","sources":["../../src/threadline/WarmSessionPool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;aAEnC,QAAQ,EAAE,MAAM;aAChB,cAAc,EAAE,MAAM;aACtB,eAAe,EAAE,MAAM;gBAFvB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM;CAQ1C;AAED,qBAAa,eAAe;IAIxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;gBAG9C,MAAM,EAAE,qBAAqB,EAC7B,GAAG,GAAE,MAAM,MAAyB;IAGvD,IAAI,IAAI,MAAM;IAId,OAAO,CAAC,SAAS;IAMjB,2DAA2D;IAC3D,OAAO,CAAC,GAAG;IAMX;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,iBAAiB,EAAE;IA4C5F,uDAAuD;IACvD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK7B;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIrD,2FAA2F;IAC3F,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAOpD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAMvD,6FAA6F;IAC7F,WAAW,IAAI,iBAAiB,EAAE;IAOlC,+FAA+F;IAC/F,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,iBAAiB,EAAE;CAKlD"}
|
|
@@ -13,6 +13,28 @@
|
|
|
13
13
|
* Pure + clock-injected → fully testable. Eviction is reported (the caller kills the tmux/Claude
|
|
14
14
|
* session); the pool itself holds no I/O.
|
|
15
15
|
*/
|
|
16
|
+
/**
|
|
17
|
+
* Thrown by `admit` when an existing thread record is owned by a DIFFERENT peer
|
|
18
|
+
* than the caller presents (defense-in-depth, spec §3.5). The upstream
|
|
19
|
+
* ThreadlineRouter ownership guard (identity-match) already blocks a peer
|
|
20
|
+
* injecting into another's thread, but the pool MUST additionally refuse to
|
|
21
|
+
* cross-bind a thread to a new peer — it must never silently overwrite the
|
|
22
|
+
* owner. The caller treats this as a reject and falls back to a fresh
|
|
23
|
+
* cold-spawn (no warm session).
|
|
24
|
+
*/
|
|
25
|
+
export class WarmSessionPeerConflictError extends Error {
|
|
26
|
+
threadId;
|
|
27
|
+
existingPeerId;
|
|
28
|
+
attemptedPeerId;
|
|
29
|
+
constructor(threadId, existingPeerId, attemptedPeerId) {
|
|
30
|
+
super(`WarmSessionPool: thread ${threadId} is owned by peer ${existingPeerId}; ` +
|
|
31
|
+
`refusing to re-bind to peer ${attemptedPeerId}`);
|
|
32
|
+
this.threadId = threadId;
|
|
33
|
+
this.existingPeerId = existingPeerId;
|
|
34
|
+
this.attemptedPeerId = attemptedPeerId;
|
|
35
|
+
this.name = 'WarmSessionPeerConflictError';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
16
38
|
export class WarmSessionPool {
|
|
17
39
|
config;
|
|
18
40
|
now;
|
|
@@ -46,6 +68,13 @@ export class WarmSessionPool {
|
|
|
46
68
|
const now = this.now();
|
|
47
69
|
const existing = this.byThread.get(input.threadId);
|
|
48
70
|
if (existing) {
|
|
71
|
+
// SECURITY (spec §3.5): never cross-bind a thread to a new peer. Refresh
|
|
72
|
+
// in place only when the same peer owns it; otherwise throw so the caller
|
|
73
|
+
// falls back to a fresh cold-spawn rather than silently overwriting the
|
|
74
|
+
// owner's warm session.
|
|
75
|
+
if (existing.peerId !== input.peerId) {
|
|
76
|
+
throw new WarmSessionPeerConflictError(input.threadId, existing.peerId, input.peerId);
|
|
77
|
+
}
|
|
49
78
|
existing.lastUsedAt = now;
|
|
50
79
|
existing.sessionName = input.sessionName;
|
|
51
80
|
return [];
|
|
@@ -82,6 +111,15 @@ export class WarmSessionPool {
|
|
|
82
111
|
if (r)
|
|
83
112
|
r.lastUsedAt = this.now();
|
|
84
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* The raw record for a thread, IGNORING the idle TTL (unlike `get`). Used for
|
|
116
|
+
* a pre-spawn peer-conflict check so the router can refuse a cross-peer warm
|
|
117
|
+
* spawn BEFORE spending a spawn (admit would throw, but only after the worker
|
|
118
|
+
* is already launched). Returns undefined when no record exists.
|
|
119
|
+
*/
|
|
120
|
+
peek(threadId) {
|
|
121
|
+
return this.byThread.get(threadId);
|
|
122
|
+
}
|
|
85
123
|
/** The warm session for a thread, if present and not past its idle TTL; else undefined. */
|
|
86
124
|
get(threadId) {
|
|
87
125
|
const r = this.byThread.get(threadId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WarmSessionPool.js","sourceRoot":"","sources":["../../src/threadline/WarmSessionPool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WarmSessionPool.js","sourceRoot":"","sources":["../../src/threadline/WarmSessionPool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -714,11 +714,51 @@ if (!promotionGateResult.ok) {
|
|
|
714
714
|
|
|
715
715
|
// ─── Pass ────────────────────────────────────────────────────────────────
|
|
716
716
|
|
|
717
|
+
assertFrameworkGenerality(inScopeFiles, validTrace.trace);
|
|
718
|
+
|
|
717
719
|
console.error(
|
|
718
720
|
`[instar-dev-precommit] OK — trace ${path.basename(validTrace.entry.file)} covers ${inScopeFiles.length} in-scope file(s), artifact ${validTrace.trace.artifactPath} verified, spec ${spec} is converged + approved, ELI16 overview ${eli16Rel} present (${eli16Result.charCount} chars), promotion-gate: ${promotionGateResult.reason}.`,
|
|
719
721
|
);
|
|
720
722
|
process.exit(0);
|
|
721
723
|
|
|
724
|
+
// Framework-generality review gate. Changes to the session launch/inject
|
|
725
|
+
// ABSTRACTION surface must explicitly state whether they work for ALL agentic
|
|
726
|
+
// frameworks (claude-code / codex-cli / gemini-cli / future), not just Claude.
|
|
727
|
+
// The CI test tests/unit/framework-agnosticism.test.ts catches the concrete
|
|
728
|
+
// "a framework lacks injection coverage" regression; THIS gate makes the review
|
|
729
|
+
// state the framework-generality reasoning in the side-effects artifact so the
|
|
730
|
+
// subtler Claude-specific assumptions get caught too. Scoped tight (these files
|
|
731
|
+
// change rarely) so normal commits pay nothing.
|
|
732
|
+
function assertFrameworkGenerality(inScopeFiles, trace) {
|
|
733
|
+
const SURFACE = /(^|\/)(frameworkSessionLaunch|frameworkInjectionProcesses)\.ts$|(^|\/)messaging\/MessageDelivery\.ts$/;
|
|
734
|
+
const touched = inScopeFiles.filter((f) => SURFACE.test(f));
|
|
735
|
+
if (touched.length === 0) return;
|
|
736
|
+
const artifactRel = trace.sideEffectsPath || trace.artifactPath;
|
|
737
|
+
if (!artifactRel) return; // a missing artifact is already blocked upstream
|
|
738
|
+
const artifactAbs = path.resolve(ROOT, artifactRel);
|
|
739
|
+
if (!fs.existsSync(artifactAbs)) return;
|
|
740
|
+
const content = fs.readFileSync(artifactAbs, 'utf8');
|
|
741
|
+
const ADDRESSED =
|
|
742
|
+
/framework[- ]?(general|agnostic)|all (current and future )?frameworks|every framework|per-framework|codex[- ]?cli|gemini[- ]?cli/i;
|
|
743
|
+
if (!ADDRESSED.test(content)) {
|
|
744
|
+
blockCommit(
|
|
745
|
+
touched,
|
|
746
|
+
[
|
|
747
|
+
'Framework-generality review gate:',
|
|
748
|
+
` ${touched.join(', ')} change the session launch/inject ABSTRACTION,`,
|
|
749
|
+
' but the side-effects artifact never addresses whether this works for ALL',
|
|
750
|
+
' agentic frameworks (claude-code / codex-cli / gemini-cli / future) — not',
|
|
751
|
+
' just Claude.',
|
|
752
|
+
'',
|
|
753
|
+
' Add a "## Framework generality" section: does this route through the',
|
|
754
|
+
' framework abstraction? Is it correct for codex-cli and gemini-cli, or is',
|
|
755
|
+
' it a Claude-specific assumption? (Standard: docs/STANDARDS-REGISTRY.md →',
|
|
756
|
+
' "Framework-Agnostic — and Framework-Optimizing".)',
|
|
757
|
+
].join('\n'),
|
|
758
|
+
);
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
|
|
722
762
|
function blockCommit(files, reason) {
|
|
723
763
|
console.error('');
|
|
724
764
|
console.error('╔════════════════════════════════════════════════════════════════════╗');
|
|
@@ -869,6 +909,8 @@ function enforceTier1(trace, traceFile) {
|
|
|
869
909
|
}
|
|
870
910
|
}
|
|
871
911
|
|
|
912
|
+
assertFrameworkGenerality(inScopeFiles, trace);
|
|
913
|
+
|
|
872
914
|
console.error(
|
|
873
915
|
`[instar-dev-precommit] OK (Tier 1) — trace ${traceName} covers ${inScopeFiles.length} in-scope file(s), ` +
|
|
874
916
|
`ELI16 ${eli16Rel} (${eli16Content.trim().length} chars) + side-effects ${sideEffectsRel} staged & verified. ` +
|