@cortexkit/aft-bridge 0.49.3 → 0.50.0
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/bridge.d.ts +7 -1
- package/dist/bridge.d.ts.map +1 -1
- package/dist/bridge.js +66 -4
- package/dist/bridge.js.map +1 -1
- package/dist/cache-paths.d.ts +26 -0
- package/dist/cache-paths.d.ts.map +1 -0
- package/dist/cache-paths.js +37 -0
- package/dist/cache-paths.js.map +1 -0
- package/dist/downloader.d.ts +2 -3
- package/dist/downloader.d.ts.map +1 -1
- package/dist/downloader.js +5 -13
- package/dist/downloader.js.map +1 -1
- package/dist/durable-log.d.ts +3 -1
- package/dist/durable-log.d.ts.map +1 -1
- package/dist/durable-log.js +4 -2
- package/dist/durable-log.js.map +1 -1
- package/dist/error-contract.d.ts +20 -0
- package/dist/error-contract.d.ts.map +1 -1
- package/dist/error-contract.js +84 -0
- package/dist/error-contract.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/lifecycle-registry.d.ts +196 -0
- package/dist/lifecycle-registry.d.ts.map +1 -0
- package/dist/lifecycle-registry.js +471 -0
- package/dist/lifecycle-registry.js.map +1 -0
- package/dist/pool.d.ts +7 -7
- package/dist/pool.d.ts.map +1 -1
- package/dist/pool.js +36 -9
- package/dist/pool.js.map +1 -1
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +4 -11
- package/dist/resolver.js.map +1 -1
- package/dist/revivable-transport.d.ts +11 -0
- package/dist/revivable-transport.d.ts.map +1 -1
- package/dist/revivable-transport.js +44 -2
- package/dist/revivable-transport.js.map +1 -1
- package/dist/subc-transport.d.ts +220 -45
- package/dist/subc-transport.d.ts.map +1 -1
- package/dist/subc-transport.js +1025 -319
- package/dist/subc-transport.js.map +1 -1
- package/dist/transport-factory.d.ts +19 -0
- package/dist/transport-factory.d.ts.map +1 -1
- package/dist/transport-factory.js +71 -2
- package/dist/transport-factory.js.map +1 -1
- package/package.json +1 -1
package/dist/subc-transport.d.ts
CHANGED
|
@@ -19,13 +19,14 @@
|
|
|
19
19
|
import type { RouteHandle } from "@cortexkit/subc-client";
|
|
20
20
|
import { type BindIdentity, type ConsumerIdentity, type RequestOptions, type RouteTarget } from "@cortexkit/subc-client";
|
|
21
21
|
import type { StatusSnapshot } from "./bridge.js";
|
|
22
|
+
import { type CanonicalRootPath, type ConcretePoolId, type LifecycleEvent, type LifecyclePoolRegistration, type LifecyclePoolRegistrationOptions, LifecycleRegistry, type RootGeneration } from "./lifecycle-registry.js";
|
|
22
23
|
import { type StatusBarCounts } from "./status-bar.js";
|
|
23
24
|
import type { AftProjectTransport, AftTransportOptions, AftTransportPool, ToolCallArguments, ToolCallOptions, ToolCallResult } from "./transport.js";
|
|
24
25
|
/** A held-open event subscription — the slice of subc-client's Subscription we use. */
|
|
25
26
|
export interface SubcSubscriptionLike {
|
|
26
27
|
/** Cancel the subscription (sends Cancel; idempotent); the provider unwinds with StreamEnd. */
|
|
27
28
|
unsubscribe(): void;
|
|
28
|
-
/** Resolves on StreamEnd
|
|
29
|
+
/** Resolves on provider StreamEnd or unsubscribe; rejects on Error / route GOODBYE / socket drop. */
|
|
29
30
|
readonly closed: Promise<void>;
|
|
30
31
|
}
|
|
31
32
|
/**
|
|
@@ -42,6 +43,8 @@ export interface SubcClientLike {
|
|
|
42
43
|
closeRouteChannel(route: RouteHandle, opts?: {
|
|
43
44
|
drain?: boolean;
|
|
44
45
|
}): Promise<void>;
|
|
46
|
+
/** Cumulative frames discarded because their route epoch did not match the client's current handle. */
|
|
47
|
+
readonly droppedIngressFrames?: number;
|
|
45
48
|
close(): void;
|
|
46
49
|
}
|
|
47
50
|
export interface SubcTransportPoolOptions {
|
|
@@ -77,7 +80,106 @@ export interface SubcTransportPoolOptions {
|
|
|
77
80
|
onBgEventsNudge?: (projectRoot: string, session: string) => void;
|
|
78
81
|
/** Test seam: backoff sleeper for the bg resubscribe loop (default real timer). */
|
|
79
82
|
bgBackoffSleep?: (ms: number) => Promise<void>;
|
|
83
|
+
/** Test-only polling interval for detecting frames silently discarded with a stale route epoch. */
|
|
84
|
+
bgDispatchProbeIntervalMs?: number;
|
|
85
|
+
/** Optional lifecycle registry used for root tracking; omit it to retain legacy behavior. */
|
|
86
|
+
lifecycleRegistry?: LifecycleRegistry;
|
|
87
|
+
/** Configuration-shaped alias used by construction sites that group lifecycle seams. */
|
|
88
|
+
lifecycle?: {
|
|
89
|
+
registry?: LifecycleRegistry;
|
|
90
|
+
reapingEnabled?: boolean;
|
|
91
|
+
demandCheck?: (root: CanonicalRootPath, poolId: ConcretePoolId) => boolean | {
|
|
92
|
+
readonly exists?: boolean;
|
|
93
|
+
};
|
|
94
|
+
evictOuterFacade?: (root: CanonicalRootPath, generation: RootGeneration) => void;
|
|
95
|
+
onEvent?: (event: LifecycleEvent) => void;
|
|
96
|
+
};
|
|
97
|
+
/** Fixed registration switch; it is immutable for the registration lifetime. */
|
|
98
|
+
reapingEnabled?: boolean;
|
|
99
|
+
/** Alias for lifecycleDemandCheck matching LifecycleRegistry's seam name. */
|
|
100
|
+
demandCheck?: (root: CanonicalRootPath, poolId: ConcretePoolId) => boolean | {
|
|
101
|
+
readonly exists?: boolean;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Synchronous demand seam for the synchronous AftTransportPool interface. A
|
|
105
|
+
* false result prevents a facade, session, and lifecycle root from being made.
|
|
106
|
+
* Async demand callers can use getBridgeForDemand below.
|
|
107
|
+
*/
|
|
108
|
+
lifecycleDemandCheck?: (root: CanonicalRootPath, poolId: ConcretePoolId) => boolean | {
|
|
109
|
+
readonly exists?: boolean;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Optional callback used by direct concrete-pool tests. The wrapper normally
|
|
113
|
+
* supplies this callback when it binds the returned registration handle.
|
|
114
|
+
*/
|
|
115
|
+
evictOuterFacade?: (root: CanonicalRootPath, generation: RootGeneration) => void;
|
|
116
|
+
/** Optional structured event sink for tests and host metrics. */
|
|
117
|
+
onLifecycleEvent?: (event: LifecycleEvent) => void;
|
|
118
|
+
/** Nudge rejection events are separate from root lifecycle events. */
|
|
119
|
+
onBgNudgeRejected?: (event: SubcBgNudgeRejectedEvent) => void;
|
|
120
|
+
/** Optional nudge callback that receives complete generation provenance. */
|
|
121
|
+
onBgEventsNudgeRef?: (ref: BgNudgeRef) => void;
|
|
122
|
+
/**
|
|
123
|
+
* A pre-created registration is useful when a wrapper owns registration order:
|
|
124
|
+
* bind it only after the wrapper callback has been installed.
|
|
125
|
+
*/
|
|
126
|
+
lifecycleRegistration?: LifecyclePoolRegistration;
|
|
127
|
+
}
|
|
128
|
+
/** Complete provenance captured when a bg_events subscription is installed. */
|
|
129
|
+
export interface BgNudgeRef {
|
|
130
|
+
readonly canonicalRoot: CanonicalRootPath;
|
|
131
|
+
readonly session: string;
|
|
132
|
+
readonly concretePoolId: ConcretePoolId;
|
|
133
|
+
readonly generation: RootGeneration;
|
|
80
134
|
}
|
|
135
|
+
export interface SubcBgNudgeRejectedEvent {
|
|
136
|
+
readonly type: "subc_bg_nudge_rejected";
|
|
137
|
+
readonly canonicalRoot: CanonicalRootPath;
|
|
138
|
+
readonly session: string;
|
|
139
|
+
readonly expectedGeneration: RootGeneration;
|
|
140
|
+
readonly currentGeneration?: RootGeneration;
|
|
141
|
+
readonly expectedConcretePoolId: ConcretePoolId;
|
|
142
|
+
readonly currentConcretePoolId?: ConcretePoolId;
|
|
143
|
+
}
|
|
144
|
+
interface RootGenerationErrorFields {
|
|
145
|
+
readonly canonicalRoot: CanonicalRootPath;
|
|
146
|
+
readonly expectedGeneration: RootGeneration;
|
|
147
|
+
readonly currentGeneration?: RootGeneration;
|
|
148
|
+
readonly concretePoolId?: ConcretePoolId;
|
|
149
|
+
readonly currentConcretePoolId?: ConcretePoolId;
|
|
150
|
+
}
|
|
151
|
+
/** Stable classification for a request that loses its root to coordinated reap. */
|
|
152
|
+
export declare class SubcRootReapedError extends Error implements RootGenerationErrorFields {
|
|
153
|
+
readonly code: "root_reaped";
|
|
154
|
+
readonly name = "SubcRootReapedError";
|
|
155
|
+
readonly canonicalRoot: CanonicalRootPath;
|
|
156
|
+
readonly expectedGeneration: RootGeneration;
|
|
157
|
+
readonly currentGeneration?: RootGeneration;
|
|
158
|
+
readonly concretePoolId?: ConcretePoolId;
|
|
159
|
+
readonly currentConcretePoolId?: ConcretePoolId;
|
|
160
|
+
constructor(fields: RootGenerationErrorFields);
|
|
161
|
+
}
|
|
162
|
+
/** Stable classification for an operation holding an older root generation. */
|
|
163
|
+
export declare class SubcRootGenerationExpiredError extends Error implements RootGenerationErrorFields {
|
|
164
|
+
readonly code: "root_generation_expired";
|
|
165
|
+
readonly name = "SubcRootGenerationExpiredError";
|
|
166
|
+
readonly canonicalRoot: CanonicalRootPath;
|
|
167
|
+
readonly expectedGeneration: RootGeneration;
|
|
168
|
+
readonly currentGeneration?: RootGeneration;
|
|
169
|
+
readonly concretePoolId?: ConcretePoolId;
|
|
170
|
+
readonly currentConcretePoolId?: ConcretePoolId;
|
|
171
|
+
constructor(fields: RootGenerationErrorFields);
|
|
172
|
+
}
|
|
173
|
+
/** A synchronous lifecycle demand check could not establish that the root exists. */
|
|
174
|
+
export declare class SubcRootDemandRequiredError extends Error {
|
|
175
|
+
readonly code: "root_demand_required";
|
|
176
|
+
readonly canonicalRoot: CanonicalRootPath;
|
|
177
|
+
constructor(root: CanonicalRootPath);
|
|
178
|
+
}
|
|
179
|
+
declare const identityKeyBrand: unique symbol;
|
|
180
|
+
export type IdentityKey = string & {
|
|
181
|
+
readonly [identityKeyBrand]: "IdentityKey";
|
|
182
|
+
};
|
|
81
183
|
/**
|
|
82
184
|
* One project root's view onto the shared subc client. Holds per-root status
|
|
83
185
|
* caches (mirroring BinaryBridge) and routes every call through the pool's single
|
|
@@ -86,15 +188,20 @@ export interface SubcTransportPoolOptions {
|
|
|
86
188
|
declare class SubcTransport implements AftProjectTransport {
|
|
87
189
|
private readonly pool;
|
|
88
190
|
private readonly projectRoot;
|
|
191
|
+
private readonly generation?;
|
|
89
192
|
private lastStatusBar;
|
|
90
193
|
private cachedStatus;
|
|
91
|
-
constructor(pool: SubcTransportPool, projectRoot:
|
|
194
|
+
constructor(pool: SubcTransportPool, projectRoot: CanonicalRootPath, generation?: RootGeneration | undefined);
|
|
92
195
|
getCwd(): string;
|
|
196
|
+
/** Generation provenance is intentionally observable for lifecycle tests and nudge wiring. */
|
|
197
|
+
getGeneration(): RootGeneration | undefined;
|
|
198
|
+
getConcretePoolId(): ConcretePoolId | undefined;
|
|
93
199
|
getStatusBar(): StatusBarCounts | undefined;
|
|
94
200
|
getCachedStatus(): StatusSnapshot | null;
|
|
95
201
|
cacheStatusSnapshot(snapshot: StatusSnapshot): void;
|
|
96
202
|
private captureStatusBar;
|
|
97
203
|
private identityFor;
|
|
204
|
+
private assertCurrent;
|
|
98
205
|
toolCall(sessionId: string | undefined, name: string, rawArgs?: ToolCallArguments, options?: ToolCallOptions): Promise<ToolCallResult>;
|
|
99
206
|
/**
|
|
100
207
|
* Lifecycle / native-command path. Over subc there is no separate "native
|
|
@@ -110,9 +217,9 @@ declare class SubcTransport implements AftProjectTransport {
|
|
|
110
217
|
private splitOptions;
|
|
111
218
|
}
|
|
112
219
|
/**
|
|
113
|
-
* Route cache over one authenticated subc client.
|
|
114
|
-
*
|
|
115
|
-
*
|
|
220
|
+
* Route cache over one authenticated subc client. In lifecycle mode this class
|
|
221
|
+
* also owns the concrete pool's root index; the registry owns timer and root
|
|
222
|
+
* transition state, while this class owns sessions, routes, and subscriptions.
|
|
116
223
|
*/
|
|
117
224
|
export declare class SubcTransportPool implements AftTransportPool {
|
|
118
225
|
readonly harness: string;
|
|
@@ -121,83 +228,151 @@ export declare class SubcTransportPool implements AftTransportPool {
|
|
|
121
228
|
private readonly consumerIdentity;
|
|
122
229
|
private readonly connectFn;
|
|
123
230
|
private readonly onBgEventsNudge?;
|
|
231
|
+
private readonly onBgEventsNudgeRef?;
|
|
124
232
|
private readonly bgBackoffSleep;
|
|
233
|
+
private readonly bgDispatchProbeIntervalMs;
|
|
234
|
+
private readonly lifecycleDemandCheck?;
|
|
235
|
+
private readonly onLifecycleEvent?;
|
|
236
|
+
private readonly onBgNudgeRejected?;
|
|
237
|
+
private lifecycleRegistry?;
|
|
238
|
+
private registryUsesPoolEventSink;
|
|
239
|
+
private lifecycleRegistration;
|
|
240
|
+
private outerFacadeEvictor;
|
|
125
241
|
private client;
|
|
126
242
|
/** Single-flight guard so concurrent first calls share one connect. */
|
|
127
243
|
private connecting;
|
|
128
|
-
/** Per-session
|
|
244
|
+
/** Per-session records keyed by the opaque identity key. */
|
|
129
245
|
private readonly sessions;
|
|
130
246
|
/**
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
* at {@link MAX_CONSECUTIVE_TRANSPORT_FAILURES} to recover a half-open socket
|
|
134
|
-
* whose timeouts never classify transient (B-#4).
|
|
247
|
+
* The sole root-scoped session enumeration authority. Keys are opaque and are
|
|
248
|
+
* removed by the same detacher that removes the corresponding session record.
|
|
135
249
|
*/
|
|
250
|
+
private readonly rootIndex;
|
|
251
|
+
/** Roots whose route binds must stay dormant until their directories return. */
|
|
252
|
+
private readonly dormantRoots;
|
|
253
|
+
/** Consecutive non-transient failures on the current pool-local client. */
|
|
136
254
|
private transportFailures;
|
|
137
|
-
/**
|
|
255
|
+
/** Concrete per-root facades, including their captured root generation. */
|
|
138
256
|
private readonly transports;
|
|
257
|
+
private readonly generationRejections;
|
|
258
|
+
private readonly nudgeDeliveryLogState;
|
|
259
|
+
private readonly pendingRootCleanups;
|
|
139
260
|
private shuttingDown;
|
|
261
|
+
private editSlotSurvives;
|
|
262
|
+
private editSlotSurvivesCaptured;
|
|
140
263
|
constructor(options: SubcTransportPoolOptions);
|
|
141
264
|
/**
|
|
142
|
-
*
|
|
143
|
-
*
|
|
265
|
+
* Bind a wrapper-owned registration after its generation-matched eviction
|
|
266
|
+
* callback has been installed. The handle is the only authority that may
|
|
267
|
+
* deregister this concrete pool.
|
|
144
268
|
*/
|
|
269
|
+
bindLifecycleRegistration(registration: LifecyclePoolRegistration): void;
|
|
270
|
+
/** Construction helper for wrappers that own the registration sequence. */
|
|
271
|
+
registerLifecyclePool(registry: LifecycleRegistry, options: LifecyclePoolRegistrationOptions): LifecyclePoolRegistration;
|
|
272
|
+
/** Replace only the callback; registration identity and switch stay immutable. */
|
|
273
|
+
setOuterFacadeEvictor(evictOuterFacade: (root: CanonicalRootPath, generation: RootGeneration) => void): void;
|
|
274
|
+
getConcretePoolId(): ConcretePoolId | undefined;
|
|
275
|
+
getCurrentRootGeneration(root: CanonicalRootPath): RootGeneration | undefined;
|
|
276
|
+
recordBgNudgeRejection(ref: BgNudgeRef): void;
|
|
277
|
+
getLifecycleRegistration(): LifecyclePoolRegistration | null;
|
|
278
|
+
getLifecycleRegistry(): LifecycleRegistry | undefined;
|
|
145
279
|
static connectionAvailable(connectionFile: string): Promise<boolean>;
|
|
280
|
+
private canonicalRoot;
|
|
281
|
+
/**
|
|
282
|
+
* Check a root immediately before opening a route. The reclaim marker is only
|
|
283
|
+
* an existence hint; a directory that has already returned wins over a stale
|
|
284
|
+
* sibling marker, so the marker contents are never parsed.
|
|
285
|
+
*/
|
|
286
|
+
private rootCanAttach;
|
|
287
|
+
private markRootDormant;
|
|
288
|
+
private assertRootCanAttach;
|
|
289
|
+
private lifecycleEnabled;
|
|
290
|
+
private currentGeneration;
|
|
291
|
+
private currentPoolId;
|
|
292
|
+
private isCurrentLiveGeneration;
|
|
293
|
+
private isRootTombstoned;
|
|
294
|
+
private recordGenerationRejection;
|
|
295
|
+
private generationExpiredError;
|
|
296
|
+
private rootReapedError;
|
|
297
|
+
assertFacadeCurrent(root: CanonicalRootPath, expectedGeneration: RootGeneration | undefined, boundary: string): void;
|
|
298
|
+
private assertGeneration;
|
|
299
|
+
private assertRecordLive;
|
|
300
|
+
private synchronousDemand;
|
|
301
|
+
private makeFacade;
|
|
302
|
+
/**
|
|
303
|
+
* Return a live facade. Legacy construction remains synchronous. Lifecycle
|
|
304
|
+
* construction uses the injected synchronous demand seam so a returned facade
|
|
305
|
+
* always has a registered root and captured generation.
|
|
306
|
+
*/
|
|
146
307
|
getBridge(projectRoot: string): SubcTransport;
|
|
308
|
+
/** Async demand entry point for registries whose existence seam is asynchronous. */
|
|
309
|
+
getBridgeForDemand(projectRoot: string): Promise<SubcTransport | null>;
|
|
310
|
+
/** Alias used by host construction code that calls the seam a demand operation. */
|
|
311
|
+
demandBridge(projectRoot: string): Promise<SubcTransport | null>;
|
|
147
312
|
getActiveBridgeForRoot(projectRoot: string): SubcTransport | null;
|
|
148
|
-
/**
|
|
149
|
-
|
|
150
|
-
* and the module scopes by session, so fan-out is safe). */
|
|
313
|
+
/** Non-creating lookup requiring the complete pool/root/generation provenance. */
|
|
314
|
+
getActiveBridgeForRootGeneration(ref: BgNudgeRef): SubcTransport | null;
|
|
151
315
|
activeBridges(): SubcTransport[];
|
|
152
316
|
toolCall(projectRoot: string, runtime: {
|
|
153
317
|
sessionID?: string;
|
|
154
318
|
}, name: string, rawArgs?: ToolCallArguments, options?: ToolCallOptions): Promise<ToolCallResult>;
|
|
155
319
|
private getOrCreateSession;
|
|
156
320
|
private isCurrentSession;
|
|
321
|
+
private currentSessionForNudge;
|
|
322
|
+
private nudgeRefFor;
|
|
323
|
+
private logNudgeDelivery;
|
|
324
|
+
private removeIndexMembership;
|
|
157
325
|
private deleteSessionIfEmpty;
|
|
158
326
|
/**
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
* the caller after clearing stale route/client state so the NEXT call
|
|
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.
|
|
165
|
-
* Tool-level errors come back as normal replies with `success:false` and are
|
|
166
|
-
* returned, not thrown.
|
|
327
|
+
* Atomically detaches one opaque identity. Nothing in this method awaits: it
|
|
328
|
+
* is the sole owner transfer used by session close, root reap, and shutdown.
|
|
167
329
|
*/
|
|
168
|
-
|
|
330
|
+
private detachSession;
|
|
331
|
+
private cleanupDetached;
|
|
332
|
+
private isReapInduced;
|
|
333
|
+
private annotateReapError;
|
|
334
|
+
/** Open or reuse a route while guarding every lifecycle boundary. */
|
|
335
|
+
routeRequest(identity: BindIdentity, body: Record<string, unknown>, timeoutMs?: number, onProgress?: RequestOptions["onProgress"], expectedGeneration?: RootGeneration): Promise<unknown>;
|
|
169
336
|
private ensureClient;
|
|
170
|
-
/**
|
|
171
|
-
* Resolve the route channel for `identity`, returning BOTH the channel and the
|
|
172
|
-
* `RouteEntry` token that owns it. The route-entry token is the route-cache
|
|
173
|
-
* ownership guard: stale request failures can clear only the route they used,
|
|
174
|
-
* never a successor route in the same still-open session.
|
|
175
|
-
*/
|
|
176
337
|
private routeHandle;
|
|
338
|
+
private ensureBgSubscription;
|
|
177
339
|
/**
|
|
178
|
-
*
|
|
179
|
-
*
|
|
180
|
-
* duplicate-sub guard from Oracle #2). No-op when no nudge handler is wired,
|
|
181
|
-
* during shutdown, or after the session has been closed.
|
|
340
|
+
* Invalidate only routes owned by a dead client. Sessions remain indexed so a
|
|
341
|
+
* replacement client can reconnect the same identity and its bg subscription.
|
|
182
342
|
*/
|
|
183
|
-
private ensureBgSubscription;
|
|
184
|
-
/** Drop a dead client so the next call reconnects; preserves session records. */
|
|
185
343
|
private dropClient;
|
|
186
|
-
/**
|
|
187
|
-
|
|
344
|
+
/** Synchronous concrete-facade eviction used by the registry coordinator. */
|
|
345
|
+
evictConcreteFacade(root: CanonicalRootPath, generation: RootGeneration): void;
|
|
346
|
+
/**
|
|
347
|
+
* Registry-owned coordinated close. All record/index/facade mutations happen
|
|
348
|
+
* before cleanup promises are created; the registry has already tombstoned the
|
|
349
|
+
* matching generation and evicted the wrapper facade before this is called.
|
|
350
|
+
*/
|
|
351
|
+
closeProjectRoot(root: CanonicalRootPath, generation: RootGeneration): Promise<{
|
|
352
|
+
tornDownSessionCount: number;
|
|
353
|
+
tornDownFacadeCount: number;
|
|
354
|
+
}>;
|
|
355
|
+
/** Forward explicit lifecycle close requests to the registry-owned coordinator. */
|
|
356
|
+
requestProjectRootClose(root: CanonicalRootPath, generation: RootGeneration, cause?: "sweep" | "explicit"): Promise<void>;
|
|
357
|
+
/**
|
|
358
|
+
* Subc reads config locally, but plugin registration facts are process state
|
|
359
|
+
* and must accompany route requests because RouteBind has no such field.
|
|
360
|
+
*/
|
|
361
|
+
setConfigureOverride(key: string, value: unknown): void;
|
|
362
|
+
getEditSlotSurvives(): boolean | undefined;
|
|
188
363
|
/** No-op over subc: the daemon owns the live module's configure lifecycle. */
|
|
189
364
|
reconfigure(_projectRoot: string, _overrides: Record<string, unknown>): Promise<void>;
|
|
190
365
|
/** No-op over subc: the daemon supervises the binary, not the plugin. */
|
|
191
366
|
replaceBinary(path: string): Promise<string>;
|
|
192
|
-
/** A subc pool instance is terminal after shutdown; ownership revives it outside this class. */
|
|
193
367
|
isShutdown(): boolean;
|
|
194
368
|
shutdown(): Promise<void>;
|
|
195
|
-
/**
|
|
196
|
-
* Tear down a single session's bg subscription (and tool route) — the
|
|
197
|
-
* per-session close hook (Oracle #5). Idempotent. Wired to OpenCode session-end
|
|
198
|
-
* / Pi equivalent in S4; until then, shutdown() covers teardown.
|
|
199
|
-
*/
|
|
200
369
|
closeSession(projectRoot: string, session: string): Promise<void>;
|
|
201
370
|
}
|
|
371
|
+
/**
|
|
372
|
+
* Resolve a background nudge exactly once by looking up the existing active
|
|
373
|
+
* bridge without creating one or reviving a shut-down pool; hosts use this
|
|
374
|
+
* function to acknowledge nudge handling.
|
|
375
|
+
*/
|
|
376
|
+
export declare function resolveBridgeForNudge(pool: AftTransportPool, ref: BgNudgeRef): AftProjectTransport;
|
|
202
377
|
export {};
|
|
203
378
|
//# sourceMappingURL=subc-transport.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subc-transport.d.ts","sourceRoot":"","sources":["../src/subc-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"subc-transport.d.ts","sourceRoot":"","sources":["../src/subc-transport.ts"],"names":[],"mappings":"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"}
|