@cortexkit/aft-bridge 0.46.0 → 0.47.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/pool.d.ts CHANGED
@@ -90,6 +90,7 @@ export declare class BridgePool implements AftTransportPool {
90
90
  private readonly projectConfigLoader;
91
91
  private readonly logger;
92
92
  private cleanupTimer;
93
+ private shutdownCalled;
93
94
  constructor(binaryPath: string, options?: PoolOptions, configOverrides?: Record<string, unknown>);
94
95
  /**
95
96
  * Get an alive bridge only when it belongs to the requested project root.
@@ -102,6 +103,9 @@ export declare class BridgePool implements AftTransportPool {
102
103
  * status from another project's bridge mixes session-isolated state.
103
104
  */
104
105
  getActiveBridgeForRoot(projectRoot: string): BinaryBridge | null;
106
+ /** All live bridges, for session-scoped signals that must not depend on
107
+ * exact root-key resolution (the command itself carries the session ID). */
108
+ activeBridges(): BinaryBridge[];
105
109
  /**
106
110
  * Get or create the bridge for `projectRoot`.
107
111
  *
@@ -126,11 +130,14 @@ export declare class BridgePool implements AftTransportPool {
126
130
  closeSession(_projectRoot: string, _session: string): Promise<void>;
127
131
  /** Shut down all bridges and stop the cleanup timer. */
128
132
  shutdown(): Promise<void>;
133
+ /** A standalone pool can be restarted by its owner after shutdown. */
134
+ isShutdown(): boolean;
129
135
  /**
130
136
  * Replace the binary path and restart all bridges.
131
137
  * Used after downloading a newer binary version.
132
138
  */
133
139
  replaceBinary(newPath: string): Promise<string>;
140
+ private startCleanupTimer;
134
141
  private log;
135
142
  private error;
136
143
  /**
@@ -144,6 +151,15 @@ export declare class BridgePool implements AftTransportPool {
144
151
  * If `value === undefined`, the override key is removed.
145
152
  */
146
153
  setConfigureOverride(key: string, value: unknown): void;
154
+ /**
155
+ * Reapply configure overrides to a live bridge without replacing it.
156
+ *
157
+ * Async resources such as the LSP install cache can become available after a
158
+ * bridge has configured. Sending a normal configure request keeps the bridge's
159
+ * warm Rust state while allowing those process-state paths to take effect.
160
+ */
161
+ reconfigure(projectRoot: string, overrides: Record<string, unknown>): Promise<void>;
162
+ private loadProjectOverrides;
147
163
  /** Number of active bridges in the pool. */
148
164
  get size(): number;
149
165
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
package/dist/pool.js CHANGED
@@ -88,6 +88,7 @@ export class BridgePool {
88
88
  projectConfigLoader;
89
89
  logger;
90
90
  cleanupTimer = null;
91
+ shutdownCalled = false;
91
92
  constructor(binaryPath, options = {}, configOverrides = {}) {
92
93
  this.binaryPath = binaryPath;
93
94
  this.maxPoolSize = options.maxPoolSize ?? DEFAULT_MAX_POOL_SIZE;
@@ -115,10 +116,7 @@ export class BridgePool {
115
116
  // Reuse the existing idle-window timer for both idle eviction and binary
116
117
  // refresh checks. When idle eviction is disabled, there is no background
117
118
  // maintenance loop.
118
- if (Number.isFinite(this.idleTimeoutMs)) {
119
- this.cleanupTimer = setInterval(() => this.cleanup(), CLEANUP_INTERVAL_MS);
120
- this.cleanupTimer.unref(); // don't prevent Node from exiting
121
- }
119
+ this.startCleanupTimer();
122
120
  }
123
121
  /**
124
122
  * Get an alive bridge only when it belongs to the requested project root.
@@ -131,6 +129,8 @@ export class BridgePool {
131
129
  * status from another project's bridge mixes session-isolated state.
132
130
  */
133
131
  getActiveBridgeForRoot(projectRoot) {
132
+ if (this.shutdownCalled)
133
+ return null;
134
134
  const key = normalizeKey(projectRoot);
135
135
  const entry = this.bridges.get(key);
136
136
  if (!entry?.bridge.isAlive())
@@ -138,6 +138,18 @@ export class BridgePool {
138
138
  entry.lastUsed = Date.now();
139
139
  return entry.bridge;
140
140
  }
141
+ /** All live bridges, for session-scoped signals that must not depend on
142
+ * exact root-key resolution (the command itself carries the session ID). */
143
+ activeBridges() {
144
+ if (this.shutdownCalled)
145
+ return [];
146
+ const alive = [];
147
+ for (const entry of this.bridges.values()) {
148
+ if (entry.bridge.isAlive())
149
+ alive.push(entry.bridge);
150
+ }
151
+ return alive;
152
+ }
141
153
  /**
142
154
  * Get or create the bridge for `projectRoot`.
143
155
  *
@@ -147,6 +159,10 @@ export class BridgePool {
147
159
  * isolated by `session_id` on the Rust side.
148
160
  */
149
161
  getBridge(projectRoot) {
162
+ if (this.shutdownCalled) {
163
+ this.shutdownCalled = false;
164
+ this.startCleanupTimer();
165
+ }
150
166
  const key = normalizeKey(projectRoot);
151
167
  // `$HOME`-rooted spawns are no longer refused here. The Rust
152
168
  // `handle_configure` auto-disables heavy subsystems (search_index,
@@ -170,16 +186,7 @@ export class BridgePool {
170
186
  // project's `.opencode/aft.jsonc` was visible at plugin init for ALL
171
187
  // sessions, ignoring the actual session's project config. See the
172
188
  // `projectConfigLoader` doc-comment on PoolOptions.
173
- let projectOverrides = {};
174
- if (this.projectConfigLoader) {
175
- try {
176
- projectOverrides = this.projectConfigLoader(key) ?? {};
177
- }
178
- catch (err) {
179
- const message = err instanceof Error ? err.message : String(err);
180
- this.error(`projectConfigLoader failed; using global overrides only: ${message}`);
181
- }
182
- }
189
+ const projectOverrides = this.loadProjectOverrides(key);
183
190
  const mergedOverrides = { ...this.configOverrides, ...projectOverrides };
184
191
  const bridge = new BinaryBridge(this.binaryPath, key, this.bridgeOptions, mergedOverrides);
185
192
  this.bridges.set(key, { bridge, lastUsed: Date.now() });
@@ -239,6 +246,7 @@ export class BridgePool {
239
246
  async closeSession(_projectRoot, _session) { }
240
247
  /** Shut down all bridges and stop the cleanup timer. */
241
248
  async shutdown() {
249
+ this.shutdownCalled = true;
242
250
  if (this.cleanupTimer) {
243
251
  clearInterval(this.cleanupTimer);
244
252
  this.cleanupTimer = null;
@@ -251,6 +259,10 @@ export class BridgePool {
251
259
  this.staleBridges.clear();
252
260
  await Promise.allSettled(shutdowns);
253
261
  }
262
+ /** A standalone pool can be restarted by its owner after shutdown. */
263
+ isShutdown() {
264
+ return this.shutdownCalled;
265
+ }
254
266
  /**
255
267
  * Replace the binary path and restart all bridges.
256
268
  * Used after downloading a newer binary version.
@@ -272,6 +284,12 @@ export class BridgePool {
272
284
  this.log(`Binary path updated to ${newPath}. Active bridges marked stale — next calls will use the new binary.`);
273
285
  return newPath;
274
286
  }
287
+ startCleanupTimer() {
288
+ if (!Number.isFinite(this.idleTimeoutMs) || this.cleanupTimer)
289
+ return;
290
+ this.cleanupTimer = setInterval(() => this.cleanup(), CLEANUP_INTERVAL_MS);
291
+ this.cleanupTimer.unref(); // don't prevent Node from exiting
292
+ }
275
293
  log(message, meta) {
276
294
  const logger = this.logger ?? getActiveLogger();
277
295
  if (logger) {
@@ -318,6 +336,44 @@ export class BridgePool {
318
336
  this.configOverrides[key] = value;
319
337
  }
320
338
  }
339
+ /**
340
+ * Reapply configure overrides to a live bridge without replacing it.
341
+ *
342
+ * Async resources such as the LSP install cache can become available after a
343
+ * bridge has configured. Sending a normal configure request keeps the bridge's
344
+ * warm Rust state while allowing those process-state paths to take effect.
345
+ */
346
+ async reconfigure(projectRoot, overrides) {
347
+ const key = normalizeKey(projectRoot);
348
+ for (const [name, value] of Object.entries(overrides)) {
349
+ this.setConfigureOverride(name, value);
350
+ }
351
+ const bridge = this.getActiveBridgeForRoot(key);
352
+ if (!bridge)
353
+ return;
354
+ const projectOverrides = this.loadProjectOverrides(key);
355
+ const response = await bridge.send("configure", {
356
+ project_root: key,
357
+ ...this.configOverrides,
358
+ ...projectOverrides,
359
+ ...overrides,
360
+ });
361
+ if (response.success === false) {
362
+ throw new Error(`configure refresh failed for ${key}: ${String(response.message ?? "unknown error")}`);
363
+ }
364
+ }
365
+ loadProjectOverrides(key) {
366
+ if (!this.projectConfigLoader)
367
+ return {};
368
+ try {
369
+ return this.projectConfigLoader(key) ?? {};
370
+ }
371
+ catch (err) {
372
+ const message = err instanceof Error ? err.message : String(err);
373
+ this.error(`projectConfigLoader failed; using global overrides only: ${message}`);
374
+ return {};
375
+ }
376
+ }
321
377
  /** Number of active bridges in the pool. */
322
378
  get size() {
323
379
  return this.bridges.size;
package/dist/pool.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { AftProjectTransport, AftTransportPool, ToolCallArguments, ToolCallOptions, ToolCallResult } from "./transport.js";
2
+ type StatusListener = (snapshot: Record<string, unknown>) => void;
3
+ type PoolFactory = () => Promise<AftTransportPool>;
4
+ /**
5
+ * Owns one terminal transport instance and replaces it when new demand arrives
6
+ * after the host has shut it down. The replaced instance is never reused: its
7
+ * routes, sessions, and sockets remain owned by the dead instance.
8
+ */
9
+ export declare class RevivableTransportPool implements AftTransportPool {
10
+ private readonly createPool;
11
+ private readonly onBinaryReplaced?;
12
+ private activePool;
13
+ private revival;
14
+ private readonly transports;
15
+ private readonly configureOverrides;
16
+ constructor(initialPool: AftTransportPool, createPool: PoolFactory, onBinaryReplaced?: ((path: string) => void) | undefined);
17
+ getBridge(projectRoot: string): RevivableProjectTransport;
18
+ /** Delegate to the active pool: session-scoped signal fan-out reaches the
19
+ * same live transports the underlying pool would report. */
20
+ activeBridges(): AftProjectTransport[];
21
+ getActiveBridgeForRoot(projectRoot: string): RevivableProjectTransport | null;
22
+ toolCall(projectRoot: string, runtime: {
23
+ sessionID?: string;
24
+ }, name: string, rawArgs?: ToolCallArguments, options?: ToolCallOptions): Promise<ToolCallResult>;
25
+ setConfigureOverride(key: string, value: unknown): void;
26
+ reconfigure(projectRoot: string, overrides: Record<string, unknown>): Promise<void>;
27
+ replaceBinary(path: string): Promise<string>;
28
+ closeSession(projectRoot: string, session: string): Promise<void>;
29
+ shutdown(): Promise<void>;
30
+ isShutdown(): boolean;
31
+ ensureActivePool(): Promise<AftTransportPool>;
32
+ currentBridge(projectRoot: string): AftProjectTransport | null;
33
+ send(projectRoot: string, command: string, params?: Record<string, unknown>, options?: Parameters<AftProjectTransport["send"]>[2]): Promise<Record<string, unknown>>;
34
+ toolCallOnProject(projectRoot: string, sessionId: string | undefined, name: string, rawArgs?: ToolCallArguments, options?: ToolCallOptions): Promise<ToolCallResult>;
35
+ }
36
+ /**
37
+ * Stable project facade returned to callers so a facade acquired before a host
38
+ * quit hook still routes the next call through the replacement pool.
39
+ */
40
+ declare class RevivableProjectTransport implements AftProjectTransport {
41
+ private readonly owner;
42
+ private readonly projectRoot;
43
+ private readonly statusListeners;
44
+ private readonly statusBridges;
45
+ constructor(owner: RevivableTransportPool, projectRoot: string);
46
+ getCwd(): string;
47
+ getStatusBar(): import("./status-bar.js").StatusBarCounts | undefined;
48
+ getCachedStatus(): import("./bridge.js").StatusSnapshot | null;
49
+ cacheStatusSnapshot(snapshot: Parameters<AftProjectTransport["cacheStatusSnapshot"]>[0]): void;
50
+ send(command: string, params?: Record<string, unknown>, options?: Parameters<AftProjectTransport["send"]>[2]): Promise<Record<string, unknown>>;
51
+ toolCall(sessionId: string | undefined, name: string, rawArgs?: ToolCallArguments, options?: ToolCallOptions): Promise<ToolCallResult>;
52
+ subscribeStatus(listener: StatusListener): () => void;
53
+ refreshStatusSubscription(bridge: AftProjectTransport | null): void;
54
+ private bindStatusListener;
55
+ private removeStatusListener;
56
+ }
57
+ export {};
58
+ //# sourceMappingURL=revivable-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revivable-transport.d.ts","sourceRoot":"","sources":["../src/revivable-transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,188 @@
1
+ import { warn } from "./active-logger.js";
2
+ import { canonicalizeProjectRoot } from "./project-identity.js";
3
+ /**
4
+ * Owns one terminal transport instance and replaces it when new demand arrives
5
+ * after the host has shut it down. The replaced instance is never reused: its
6
+ * routes, sessions, and sockets remain owned by the dead instance.
7
+ */
8
+ export class RevivableTransportPool {
9
+ createPool;
10
+ onBinaryReplaced;
11
+ activePool;
12
+ revival = null;
13
+ transports = new Map();
14
+ configureOverrides = new Map();
15
+ constructor(initialPool, createPool, onBinaryReplaced) {
16
+ this.createPool = createPool;
17
+ this.onBinaryReplaced = onBinaryReplaced;
18
+ this.activePool = initialPool;
19
+ }
20
+ getBridge(projectRoot) {
21
+ const key = canonicalizeProjectRoot(projectRoot);
22
+ let transport = this.transports.get(key);
23
+ if (!transport) {
24
+ transport = new RevivableProjectTransport(this, key);
25
+ this.transports.set(key, transport);
26
+ }
27
+ return transport;
28
+ }
29
+ /** Delegate to the active pool: session-scoped signal fan-out reaches the
30
+ * same live transports the underlying pool would report. */
31
+ activeBridges() {
32
+ return this.activePool.activeBridges();
33
+ }
34
+ getActiveBridgeForRoot(projectRoot) {
35
+ const key = canonicalizeProjectRoot(projectRoot);
36
+ const bridge = this.currentBridge(key);
37
+ if (!bridge)
38
+ return null;
39
+ const transport = this.getBridge(key);
40
+ transport.refreshStatusSubscription(bridge);
41
+ return transport;
42
+ }
43
+ async toolCall(projectRoot, runtime, name, rawArgs = {}, options) {
44
+ return this.getBridge(projectRoot).toolCall(runtime.sessionID, name, rawArgs, options);
45
+ }
46
+ setConfigureOverride(key, value) {
47
+ if (value === undefined)
48
+ this.configureOverrides.delete(key);
49
+ else
50
+ this.configureOverrides.set(key, value);
51
+ this.activePool.setConfigureOverride(key, value);
52
+ }
53
+ async reconfigure(projectRoot, overrides) {
54
+ for (const [key, value] of Object.entries(overrides)) {
55
+ if (value === undefined)
56
+ this.configureOverrides.delete(key);
57
+ else
58
+ this.configureOverrides.set(key, value);
59
+ }
60
+ const pool = await this.ensureActivePool();
61
+ await pool.reconfigure(projectRoot, overrides);
62
+ }
63
+ async replaceBinary(path) {
64
+ const replaced = await this.activePool.replaceBinary(path);
65
+ this.onBinaryReplaced?.(replaced);
66
+ return replaced;
67
+ }
68
+ closeSession(projectRoot, session) {
69
+ return this.activePool.closeSession(projectRoot, session);
70
+ }
71
+ async shutdown() {
72
+ const revival = this.revival;
73
+ if (revival) {
74
+ await Promise.allSettled([revival]);
75
+ }
76
+ await this.activePool.shutdown();
77
+ for (const transport of this.transports.values()) {
78
+ transport.refreshStatusSubscription(null);
79
+ }
80
+ }
81
+ isShutdown() {
82
+ return this.activePool.isShutdown();
83
+ }
84
+ async ensureActivePool() {
85
+ if (!this.activePool.isShutdown())
86
+ return this.activePool;
87
+ if (this.revival)
88
+ return this.revival;
89
+ warn("transport was shut down but new demand arrived — reviving (host quit hook fired without process exit?)");
90
+ const revival = this.createPool().then((pool) => {
91
+ for (const [key, value] of this.configureOverrides) {
92
+ pool.setConfigureOverride(key, value);
93
+ }
94
+ this.activePool = pool;
95
+ for (const [root, transport] of this.transports) {
96
+ transport.refreshStatusSubscription(pool.getActiveBridgeForRoot(root));
97
+ }
98
+ return pool;
99
+ });
100
+ this.revival = revival;
101
+ revival.then(() => {
102
+ if (this.revival === revival)
103
+ this.revival = null;
104
+ }, () => {
105
+ if (this.revival === revival)
106
+ this.revival = null;
107
+ });
108
+ return revival;
109
+ }
110
+ currentBridge(projectRoot) {
111
+ return this.activePool.getActiveBridgeForRoot(projectRoot);
112
+ }
113
+ async send(projectRoot, command, params, options) {
114
+ const pool = await this.ensureActivePool();
115
+ const bridge = pool.getBridge(projectRoot);
116
+ this.getBridge(projectRoot).refreshStatusSubscription(bridge);
117
+ return bridge.send(command, params, options);
118
+ }
119
+ async toolCallOnProject(projectRoot, sessionId, name, rawArgs, options) {
120
+ const pool = await this.ensureActivePool();
121
+ const bridge = pool.getBridge(projectRoot);
122
+ this.getBridge(projectRoot).refreshStatusSubscription(bridge);
123
+ return bridge.toolCall(sessionId, name, rawArgs, options);
124
+ }
125
+ }
126
+ /**
127
+ * Stable project facade returned to callers so a facade acquired before a host
128
+ * quit hook still routes the next call through the replacement pool.
129
+ */
130
+ class RevivableProjectTransport {
131
+ owner;
132
+ projectRoot;
133
+ statusListeners = new Map();
134
+ statusBridges = new Map();
135
+ constructor(owner, projectRoot) {
136
+ this.owner = owner;
137
+ this.projectRoot = projectRoot;
138
+ }
139
+ getCwd() {
140
+ return this.projectRoot;
141
+ }
142
+ getStatusBar() {
143
+ return this.owner.currentBridge(this.projectRoot)?.getStatusBar();
144
+ }
145
+ getCachedStatus() {
146
+ return this.owner.currentBridge(this.projectRoot)?.getCachedStatus() ?? null;
147
+ }
148
+ cacheStatusSnapshot(snapshot) {
149
+ this.owner.currentBridge(this.projectRoot)?.cacheStatusSnapshot(snapshot);
150
+ }
151
+ send(command, params, options) {
152
+ return this.owner.send(this.projectRoot, command, params, options);
153
+ }
154
+ toolCall(sessionId, name, rawArgs, options) {
155
+ return this.owner.toolCallOnProject(this.projectRoot, sessionId, name, rawArgs, options);
156
+ }
157
+ subscribeStatus(listener) {
158
+ if (this.statusListeners.has(listener))
159
+ return () => this.removeStatusListener(listener);
160
+ this.statusListeners.set(listener, () => { });
161
+ this.bindStatusListener(listener, this.owner.currentBridge(this.projectRoot));
162
+ return () => this.removeStatusListener(listener);
163
+ }
164
+ refreshStatusSubscription(bridge) {
165
+ for (const listener of this.statusListeners.keys()) {
166
+ this.bindStatusListener(listener, bridge);
167
+ }
168
+ }
169
+ bindStatusListener(listener, bridge) {
170
+ if (this.statusBridges.get(listener) === bridge)
171
+ return;
172
+ const previousUnsubscribe = this.statusListeners.get(listener);
173
+ previousUnsubscribe?.();
174
+ const maybe = bridge;
175
+ const unsubscribe = maybe && typeof maybe.subscribeStatus === "function"
176
+ ? maybe.subscribeStatus(listener)
177
+ : () => { };
178
+ this.statusListeners.set(listener, unsubscribe);
179
+ this.statusBridges.set(listener, bridge);
180
+ }
181
+ removeStatusListener(listener) {
182
+ const unsubscribe = this.statusListeners.get(listener);
183
+ this.statusListeners.delete(listener);
184
+ this.statusBridges.delete(listener);
185
+ unsubscribe?.();
186
+ }
187
+ }
188
+ //# sourceMappingURL=revivable-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revivable-transport.js","sourceRoot":"","sources":["../src/revivable-transport.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,8 @@
16
16
  * top of it. subc-client is a build-time path dependency bundled into the
17
17
  * published plugin dist; it is never a published runtime dependency.
18
18
  */
19
- import { type BindIdentity, type RequestOptions, type RouteTarget } from "@cortexkit/subc-client";
19
+ import type { RouteHandle } from "@cortexkit/subc-client";
20
+ import { type BindIdentity, type ConsumerIdentity, type RequestOptions, type RouteTarget } from "@cortexkit/subc-client";
20
21
  import type { StatusSnapshot } from "./bridge.js";
21
22
  import { type StatusBarCounts } from "./status-bar.js";
22
23
  import type { AftProjectTransport, AftTransportOptions, AftTransportPool, ToolCallArguments, ToolCallOptions, ToolCallResult } from "./transport.js";
@@ -33,10 +34,12 @@ export interface SubcSubscriptionLike {
33
34
  * seam without standing up a daemon; the real `SubcClient` satisfies it.
34
35
  */
35
36
  export interface SubcClientLike {
36
- routeOpen(target: RouteTarget, identity: BindIdentity): Promise<number>;
37
- request(routeChannel: number, body: unknown, opts?: RequestOptions): Promise<unknown>;
38
- subscribe(routeChannel: number, body: unknown, onEvent: (event: Uint8Array) => void): SubcSubscriptionLike;
39
- closeRouteChannel(channel: number, opts?: {
37
+ routeOpen(target: RouteTarget, identity: BindIdentity, opts?: {
38
+ consumerIdentity?: ConsumerIdentity | null;
39
+ }): Promise<RouteHandle>;
40
+ request(route: RouteHandle, body: unknown, opts?: RequestOptions): Promise<unknown>;
41
+ subscribe(route: RouteHandle, body: unknown, onEvent: (event: Uint8Array) => void): SubcSubscriptionLike;
42
+ closeRouteChannel(route: RouteHandle, opts?: {
40
43
  drain?: boolean;
41
44
  }): Promise<void>;
42
45
  close(): void;
@@ -46,6 +49,11 @@ export interface SubcTransportPoolOptions {
46
49
  connectionFile: string;
47
50
  /** Harness identity carried in every BindIdentity ("opencode" | "pi" | …). */
48
51
  harness: string;
52
+ /**
53
+ * Explicit route consumer identity. Undefined preserves subc-client's environment-derived
54
+ * production identity; null is used by hermetic tests that run inside another module.
55
+ */
56
+ consumerIdentity?: ConsumerIdentity | null;
49
57
  /** Handshake timeout forwarded to SubcClient.connect. */
50
58
  handshakeTimeoutMs?: number;
51
59
  /**
@@ -110,6 +118,7 @@ export declare class SubcTransportPool implements AftTransportPool {
110
118
  readonly harness: string;
111
119
  private readonly connectionFile;
112
120
  private readonly handshakeTimeoutMs?;
121
+ private readonly consumerIdentity;
113
122
  private readonly connectFn;
114
123
  private readonly onBgEventsNudge?;
115
124
  private readonly bgBackoffSleep;
@@ -136,6 +145,10 @@ export declare class SubcTransportPool implements AftTransportPool {
136
145
  static connectionAvailable(connectionFile: string): Promise<boolean>;
137
146
  getBridge(projectRoot: string): SubcTransport;
138
147
  getActiveBridgeForRoot(projectRoot: string): SubcTransport | null;
148
+ /** All live per-root facades, for session-scoped signals that must not
149
+ * depend on exact root-key resolution (the command carries the session ID
150
+ * and the module scopes by session, so fan-out is safe). */
151
+ activeBridges(): SubcTransport[];
139
152
  toolCall(projectRoot: string, runtime: {
140
153
  sessionID?: string;
141
154
  }, name: string, rawArgs?: ToolCallArguments, options?: ToolCallOptions): Promise<ToolCallResult>;
@@ -146,8 +159,9 @@ export declare class SubcTransportPool implements AftTransportPool {
146
159
  * Open-or-reuse a route for `identity` and send `body` as a data-plane Request.
147
160
  * Rd reconnect is mutation-safe by construction: transport failures surface to
148
161
  * the caller after clearing stale route/client state so the NEXT call
149
- * re-establishes. The only in-place retry is `unknown_channel`, where the daemon
150
- * proves the route was absent and the request was not delivered to the module.
162
+ * re-establishes. The only in-place retries are route-absence proofs: either the
163
+ * daemon returns `unknown_channel`, or the client rejects a stale handle before
164
+ * writing. In both cases, the request was not delivered to the module.
151
165
  * Tool-level errors come back as normal replies with `success:false` and are
152
166
  * returned, not thrown.
153
167
  */
@@ -159,7 +173,7 @@ export declare class SubcTransportPool implements AftTransportPool {
159
173
  * ownership guard: stale request failures can clear only the route they used,
160
174
  * never a successor route in the same still-open session.
161
175
  */
162
- private routeChannel;
176
+ private routeHandle;
163
177
  /**
164
178
  * Open the dedicated bg_events subscription for `identity` once. Idempotent —
165
179
  * a second call for the same identity is a no-op (one sub per session, the
@@ -171,8 +185,12 @@ export declare class SubcTransportPool implements AftTransportPool {
171
185
  private dropClient;
172
186
  /** No-op over subc: config is read locally by AFT (wire tiers are ignored). */
173
187
  setConfigureOverride(_key: string, _value: unknown): void;
188
+ /** No-op over subc: the daemon owns the live module's configure lifecycle. */
189
+ reconfigure(_projectRoot: string, _overrides: Record<string, unknown>): Promise<void>;
174
190
  /** No-op over subc: the daemon supervises the binary, not the plugin. */
175
191
  replaceBinary(path: string): Promise<string>;
192
+ /** A subc pool instance is terminal after shutdown; ownership revives it outside this class. */
193
+ isShutdown(): boolean;
176
194
  shutdown(): Promise<void>;
177
195
  /**
178
196
  * Tear down a single session's bg subscription (and tool route) — the
@@ -1 +1 @@
1
- {"version":3,"file":"subc-transport.d.ts","sourceRoot":"","sources":["../src/subc-transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subc-transport.d.ts","sourceRoot":"","sources":["../src/subc-transport.ts"],"names":[],"mappings":"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"}