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.
Files changed (51) hide show
  1. package/README.md +4 -0
  2. package/dist/cli.js +20 -18
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/server.d.ts.map +1 -1
  5. package/dist/commands/server.js +108 -2
  6. package/dist/commands/server.js.map +1 -1
  7. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  8. package/dist/config/ConfigDefaults.js +13 -0
  9. package/dist/config/ConfigDefaults.js.map +1 -1
  10. package/dist/core/SessionManager.d.ts +3 -0
  11. package/dist/core/SessionManager.d.ts.map +1 -1
  12. package/dist/core/SessionManager.js +3 -0
  13. package/dist/core/SessionManager.js.map +1 -1
  14. package/dist/core/SessionServerGuard.d.ts +16 -0
  15. package/dist/core/SessionServerGuard.d.ts.map +1 -0
  16. package/dist/core/SessionServerGuard.js +44 -0
  17. package/dist/core/SessionServerGuard.js.map +1 -0
  18. package/dist/core/frameworkInjectionProcesses.d.ts +41 -0
  19. package/dist/core/frameworkInjectionProcesses.d.ts.map +1 -0
  20. package/dist/core/frameworkInjectionProcesses.js +53 -0
  21. package/dist/core/frameworkInjectionProcesses.js.map +1 -0
  22. package/dist/core/frameworkSessionLaunch.d.ts +9 -0
  23. package/dist/core/frameworkSessionLaunch.d.ts.map +1 -1
  24. package/dist/core/frameworkSessionLaunch.js +7 -0
  25. package/dist/core/frameworkSessionLaunch.js.map +1 -1
  26. package/dist/core/types.d.ts +22 -0
  27. package/dist/core/types.d.ts.map +1 -1
  28. package/dist/core/types.js.map +1 -1
  29. package/dist/messaging/SpawnRequestManager.d.ts +13 -0
  30. package/dist/messaging/SpawnRequestManager.d.ts.map +1 -1
  31. package/dist/messaging/SpawnRequestManager.js +3 -0
  32. package/dist/messaging/SpawnRequestManager.js.map +1 -1
  33. package/dist/messaging/types.d.ts.map +1 -1
  34. package/dist/messaging/types.js +8 -1
  35. package/dist/messaging/types.js.map +1 -1
  36. package/dist/threadline/ThreadlineRouter.d.ts +55 -1
  37. package/dist/threadline/ThreadlineRouter.d.ts.map +1 -1
  38. package/dist/threadline/ThreadlineRouter.js +246 -6
  39. package/dist/threadline/ThreadlineRouter.js.map +1 -1
  40. package/dist/threadline/WarmSessionPool.d.ts +22 -0
  41. package/dist/threadline/WarmSessionPool.d.ts.map +1 -1
  42. package/dist/threadline/WarmSessionPool.js +38 -0
  43. package/dist/threadline/WarmSessionPool.js.map +1 -1
  44. package/package.json +1 -1
  45. package/scripts/instar-dev-precommit.js +42 -0
  46. package/src/data/builtin-manifest.json +35 -35
  47. package/upgrades/1.3.245.md +39 -0
  48. package/upgrades/1.3.246.md +97 -0
  49. package/upgrades/side-effects/server-restart-sibling-target.md +96 -0
  50. package/upgrades/side-effects/threadline-warm-session-a2a.md +146 -0
  51. 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
- const result = await this.messageDelivery.deliverToSession(entry.sessionName, envelope);
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 = THREAD_SPAWN_PROMPT_TEMPLATE
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":"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"}
@@ -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;IAqC5F,uDAAuD;IACvD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK7B,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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "1.3.244",
3
+ "version": "1.3.246",
4
4
  "description": "Coherence infrastructure for self-evolving AI agents — on the Claude Code or Codex subscription you already have.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -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. ` +