@bjorntech/key-ferry 0.1.13 → 0.1.17
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 +20 -0
- package/dist/broker-registry.d.ts +26 -0
- package/dist/broker-registry.d.ts.map +1 -1
- package/dist/broker-registry.js +253 -54
- package/dist/broker-registry.js.map +1 -1
- package/dist/contracts.d.ts +7 -3
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +1 -0
- package/dist/contracts.js.map +1 -1
- package/dist/options.d.ts +1 -0
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +17 -0
- package/dist/options.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +13 -4
- package/dist/plugin.js.map +1 -1
- package/dist/relay/index.d.ts +2 -0
- package/dist/relay/index.d.ts.map +1 -1
- package/dist/relay/index.js +150 -110
- package/dist/relay/index.js.map +1 -1
- package/dist/remote.d.ts +12 -1
- package/dist/remote.d.ts.map +1 -1
- package/dist/remote.js +114 -76
- package/dist/remote.js.map +1 -1
- package/dist/rpc.d.ts +22 -12
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +27 -27
- package/dist/rpc.js.map +1 -1
- package/dist/scoped-controller.d.ts +1 -1
- package/dist/scoped-controller.d.ts.map +1 -1
- package/dist/scoped-controller.js +37 -7
- package/dist/scoped-controller.js.map +1 -1
- package/dist/scopes/controller-helpers.d.ts.map +1 -1
- package/dist/scopes/controller-helpers.js +5 -0
- package/dist/scopes/controller-helpers.js.map +1 -1
- package/dist/services/process.d.ts +2 -0
- package/dist/services/process.d.ts.map +1 -1
- package/dist/services/process.js +13 -2
- package/dist/services/process.js.map +1 -1
- package/dist/varlock/manager.d.ts.map +1 -1
- package/dist/varlock/manager.js +312 -74
- package/dist/varlock/manager.js.map +1 -1
- package/dist/varlock/ownership.d.ts +88 -0
- package/dist/varlock/ownership.d.ts.map +1 -0
- package/dist/varlock/ownership.js +574 -0
- package/dist/varlock/ownership.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -36,6 +36,11 @@ Direct provider/API transport protection is not included.
|
|
|
36
36
|
- Varlock CLI 1.23.0 installed separately as `varlock`
|
|
37
37
|
- An installed Varlock CLI and a configured Varlock environment/schema with the
|
|
38
38
|
secrets and proxy rules your MCP servers need
|
|
39
|
+
- A private, writable runtime directory for ownership records. By default this
|
|
40
|
+
is `tmpdir()/key-ferry-<uid>`; `adapter.ownershipDirectory` may be used to
|
|
41
|
+
inject another private, writable directory. If it cannot be secured, startup
|
|
42
|
+
fails closed with the `ownership_unavailable` diagnostic (also shown by
|
|
43
|
+
`key-ferry.doctor`).
|
|
39
44
|
- Configure secret sources and authentication following the
|
|
40
45
|
[Varlock documentation](https://varlock.dev/)
|
|
41
46
|
|
|
@@ -194,6 +199,21 @@ filters requested keys. Mark each remote upstream host with `@proxy(domain="..."
|
|
|
194
199
|
Key Ferry does not install Varlock, create its schema, or configure provider
|
|
195
200
|
authentication. Never commit a real secret.
|
|
196
201
|
|
|
202
|
+
Broker processes remain available for `idleTimeoutMs` milliseconds after the
|
|
203
|
+
last lease is released (default: `600000`, or ten minutes). This reuses the
|
|
204
|
+
authenticated Varlock proxy when returning to a project. Set
|
|
205
|
+
`idleTimeoutMs: 0` for immediate teardown; idle brokers are always stopped on
|
|
206
|
+
host shutdown or when their schema/configuration identity changes. This is a
|
|
207
|
+
security/performance trade-off: resolved secrets remain in the proxy process's
|
|
208
|
+
memory for up to the idle timeout after leaving a project. On startup Key Ferry
|
|
209
|
+
also reaps orphaned, identity-checked proxy records left by an earlier process.
|
|
210
|
+
If stopping a proxy fails during shutdown, Key Ferry keeps its ownership record and
|
|
211
|
+
defers cleanup to the next startup, whose reaper retries the same session UUID.
|
|
212
|
+
On SIGINT or SIGTERM it performs bounded cleanup (up to three seconds), removes
|
|
213
|
+
its signal listener, and re-raises the signal when it is the only listener so
|
|
214
|
+
the host's normal termination semantics are preserved; host-owned signal
|
|
215
|
+
listeners remain in control.
|
|
216
|
+
|
|
197
217
|
## TUI commands
|
|
198
218
|
|
|
199
219
|
| Palette command | Slash command | RPC |
|
|
@@ -10,8 +10,21 @@ export interface BrokerLease extends ProjectKeyFerryManagerService {
|
|
|
10
10
|
}
|
|
11
11
|
export interface BrokerRegistryOptions {
|
|
12
12
|
readonly canonicalize?: (directory: string) => Effect.Effect<string, unknown>;
|
|
13
|
+
/** Supplies the schema fingerprint; the default retains the real filesystem implementation. */
|
|
14
|
+
readonly schemaHash?: (directory: string) => Effect.Effect<string, unknown>;
|
|
13
15
|
readonly maxEntries?: number;
|
|
14
16
|
readonly now?: () => number;
|
|
17
|
+
readonly idleTimeoutMs?: number;
|
|
18
|
+
readonly logger?: (event: BrokerLogEvent) => void;
|
|
19
|
+
readonly hostShutdownHooks?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface BrokerLogEvent {
|
|
22
|
+
readonly event: "start" | "ready" | "release" | "idle-scheduled" | "reused" | "disposed" | "stop-failed" | "dispose-failed" | "stale-reaped" | "stale-skipped";
|
|
23
|
+
readonly scope: "global" | "project";
|
|
24
|
+
readonly directory: string;
|
|
25
|
+
readonly keyHash: string;
|
|
26
|
+
readonly pid?: number;
|
|
27
|
+
readonly proxySessionId?: string;
|
|
15
28
|
}
|
|
16
29
|
type BrokerResult = {
|
|
17
30
|
readonly status: SafeStatus;
|
|
@@ -25,11 +38,24 @@ export declare function makeBrokerRegistry(configuration?: BrokerRegistryOptions
|
|
|
25
38
|
acquire: <R>(factory: ProjectKeyFerryManagerFactory<R>, options: ProjectKeyFerryManagerOptions) => Effect.Effect<BrokerLease, any, never>;
|
|
26
39
|
retry: (factory: ProjectKeyFerryManagerFactory<any>, options: ProjectKeyFerryManagerOptions) => Effect.Effect<BrokerResult, any, never>;
|
|
27
40
|
retryIfDue: (factory: ProjectKeyFerryManagerFactory<any>, options: ProjectKeyFerryManagerOptions) => Effect.Effect<BrokerResult | undefined, any, never>;
|
|
41
|
+
shutdown: Effect.Effect<void, never, never>;
|
|
28
42
|
};
|
|
43
|
+
export interface HostSignalProcess {
|
|
44
|
+
readonly pid: number;
|
|
45
|
+
readonly on: (event: any, listener: (...args: any[]) => void) => unknown;
|
|
46
|
+
readonly removeListener: (event: any, listener: (...args: any[]) => void) => unknown;
|
|
47
|
+
readonly listeners: (event: any) => Function[];
|
|
48
|
+
readonly kill: (pid: number, signal: "SIGINT" | "SIGTERM") => unknown;
|
|
49
|
+
}
|
|
50
|
+
export declare function removeHostShutdownHooks(): void;
|
|
51
|
+
export declare function installHostShutdownHooks(shutdown: Effect.Effect<void>, signalProcess?: HostSignalProcess, options?: {
|
|
52
|
+
readonly cleanupTimeoutMs?: number;
|
|
53
|
+
}): (() => void) | undefined;
|
|
29
54
|
export declare const brokerRegistry: {
|
|
30
55
|
acquire: <R>(factory: ProjectKeyFerryManagerFactory<R>, options: ProjectKeyFerryManagerOptions) => Effect.Effect<BrokerLease, any, never>;
|
|
31
56
|
retry: (factory: ProjectKeyFerryManagerFactory<any>, options: ProjectKeyFerryManagerOptions) => Effect.Effect<BrokerResult, any, never>;
|
|
32
57
|
retryIfDue: (factory: ProjectKeyFerryManagerFactory<any>, options: ProjectKeyFerryManagerOptions) => Effect.Effect<BrokerResult | undefined, any, never>;
|
|
58
|
+
shutdown: Effect.Effect<void, never, never>;
|
|
33
59
|
};
|
|
34
60
|
export type BrokerRegistry = ReturnType<typeof makeBrokerRegistry>;
|
|
35
61
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker-registry.d.ts","sourceRoot":"","sources":["../src/broker-registry.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"broker-registry.d.ts","sourceRoot":"","sources":["../src/broker-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/broker-registry.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { readdir, readFile, realpath, stat } from "node:fs/promises";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
-
import { Context, Deferred, Effect, Exit, Fiber, Layer, PubSub, Scope, Semaphore, Stream, } from "effect";
|
|
4
|
+
import { Context, Deferred, Duration, Effect, Exit, Fiber, Layer, PubSub, Scope, Semaphore, Stream, } from "effect";
|
|
5
5
|
import { ProjectKeyFerryManager, VarlockError, } from "./contracts.js";
|
|
6
|
+
import { setOwnershipLifecycleLogger } from "./varlock/ownership.js";
|
|
6
7
|
export const RETRY_BASE_DELAY_MS = 5_000;
|
|
7
8
|
export const RETRY_MAX_DELAY_MS = 300_000;
|
|
8
9
|
export const retryDelayMs = (failureCount) => Math.min(RETRY_MAX_DELAY_MS, RETRY_BASE_DELAY_MS * 2 ** Math.max(0, failureCount - 1));
|
|
@@ -17,6 +18,7 @@ const adapterKeys = new Set([
|
|
|
17
18
|
"reloadTimeoutMs",
|
|
18
19
|
"pollIntervalMs",
|
|
19
20
|
"requireStrictEgress",
|
|
21
|
+
"idleTimeoutMs",
|
|
20
22
|
]);
|
|
21
23
|
function safeError(error, code) {
|
|
22
24
|
if (error instanceof VarlockError)
|
|
@@ -90,37 +92,40 @@ async function contentHash(directory) {
|
|
|
90
92
|
}
|
|
91
93
|
return hash.digest("hex");
|
|
92
94
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
...
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
95
|
+
function keyFor(directory, options, schemaHash) {
|
|
96
|
+
return Effect.gen(function* () {
|
|
97
|
+
const adapter = validateOptions(options);
|
|
98
|
+
const keys = [
|
|
99
|
+
...new Set([
|
|
100
|
+
...adapter.environmentKeys,
|
|
101
|
+
...Object.keys(globalThis.process.env).filter((key) => /^OP_/.test(key)),
|
|
102
|
+
]),
|
|
103
|
+
].sort();
|
|
104
|
+
const valuesHash = createHash("sha256");
|
|
105
|
+
for (const key of keys)
|
|
106
|
+
valuesHash.update(`${key}\0${globalThis.process.env[key] ?? ""}\0`);
|
|
107
|
+
const context = {
|
|
108
|
+
projectDirectory: directory,
|
|
109
|
+
owner: options.owner,
|
|
110
|
+
sessionID: options.sessionID,
|
|
111
|
+
command: adapter.command,
|
|
112
|
+
environmentKeys: [...new Set(adapter.environmentKeys)].sort(),
|
|
113
|
+
startupTimeoutMs: adapter.startupTimeoutMs,
|
|
114
|
+
commandTimeoutMs: adapter.commandTimeoutMs,
|
|
115
|
+
reloadTimeoutMs: adapter.reloadTimeoutMs,
|
|
116
|
+
pollIntervalMs: adapter.pollIntervalMs,
|
|
117
|
+
requireStrictEgress: adapter.requireStrictEgress,
|
|
118
|
+
idleTimeoutMs: adapter.idleTimeoutMs,
|
|
119
|
+
};
|
|
120
|
+
return {
|
|
121
|
+
contextKey: stable(context),
|
|
122
|
+
key: stable({
|
|
123
|
+
...context,
|
|
124
|
+
environmentValuesHash: valuesHash.digest("hex"),
|
|
125
|
+
schemaHash: yield* schemaHash(directory),
|
|
126
|
+
}),
|
|
127
|
+
};
|
|
128
|
+
});
|
|
124
129
|
}
|
|
125
130
|
function readinessChanged(entry, revision, ready) {
|
|
126
131
|
return revision !== entry.readinessRevision || ready !== entry.ready;
|
|
@@ -152,11 +157,34 @@ function awaitCurrentReady(entry) {
|
|
|
152
157
|
export function makeBrokerRegistry(configuration = {}) {
|
|
153
158
|
const entries = new Set();
|
|
154
159
|
const factories = new WeakMap();
|
|
160
|
+
const factoryMaps = new Set();
|
|
155
161
|
const lock = Effect.runSync(Semaphore.make(1));
|
|
156
162
|
const canonicalize = configuration.canonicalize ??
|
|
157
163
|
((directory) => Effect.tryPromise(() => realpath(directory)));
|
|
164
|
+
const schemaHash = configuration.schemaHash ??
|
|
165
|
+
((directory) => Effect.tryPromise(() => contentHash(directory)));
|
|
158
166
|
const maxEntries = configuration.maxEntries ?? 128;
|
|
159
167
|
const now = configuration.now ?? (() => Date.now());
|
|
168
|
+
// Direct registry consumers historically received immediate teardown. The
|
|
169
|
+
// validated plugin adapter always supplies the public ten-minute default;
|
|
170
|
+
// retaining this fallback keeps injected/test registries backwards compatible.
|
|
171
|
+
const idleTimeoutMs = configuration.idleTimeoutMs ?? 0;
|
|
172
|
+
const log = (entry, event) => {
|
|
173
|
+
configuration.logger?.({
|
|
174
|
+
event,
|
|
175
|
+
scope: entry.options.owner === "key-ferry" ? "project" : "global",
|
|
176
|
+
directory: entry.options.projectDirectory,
|
|
177
|
+
keyHash: createHash("sha256").update(entry.key).digest("hex").slice(0, 12),
|
|
178
|
+
...(entry.status?.pid === undefined ? {} : { pid: entry.status.pid }),
|
|
179
|
+
...(entry.status
|
|
180
|
+
?.proxySessionId === undefined
|
|
181
|
+
? {}
|
|
182
|
+
: {
|
|
183
|
+
proxySessionId: entry.status
|
|
184
|
+
.proxySessionId,
|
|
185
|
+
}),
|
|
186
|
+
});
|
|
187
|
+
};
|
|
160
188
|
const publish = (entry, status) => {
|
|
161
189
|
entry.status = status;
|
|
162
190
|
return PubSub.publish(entry.events, status);
|
|
@@ -183,17 +211,41 @@ export function makeBrokerRegistry(configuration = {}) {
|
|
|
183
211
|
for (const [oldKey, oldEntry] of factoryMap) {
|
|
184
212
|
if (oldEntry.contextKey !== contextKey || oldEntry.leases.size > 0)
|
|
185
213
|
continue;
|
|
186
|
-
yield*
|
|
214
|
+
yield* disposeEntry(oldEntry);
|
|
187
215
|
entries.delete(oldEntry);
|
|
188
216
|
factoryMap.delete(oldKey);
|
|
189
217
|
}
|
|
190
218
|
});
|
|
219
|
+
const disposeEntry = (entry) => Effect.gen(function* () {
|
|
220
|
+
log(entry, "disposed");
|
|
221
|
+
if (entry.idleFiber) {
|
|
222
|
+
yield* Fiber.interrupt(entry.idleFiber);
|
|
223
|
+
entry.idleFiber = undefined;
|
|
224
|
+
}
|
|
225
|
+
if (entry.startup)
|
|
226
|
+
yield* Fiber.interrupt(entry.startup);
|
|
227
|
+
if (entry.manager) {
|
|
228
|
+
yield* entry.manager.dispose.pipe(Effect.catch(() => Effect.sync(() => {
|
|
229
|
+
// The manager may have left the ownership record in place. Drop
|
|
230
|
+
// the in-process entry, but make the startup reaper handoff
|
|
231
|
+
// explicit so cleanup is still observable without error text.
|
|
232
|
+
log(entry, "dispose-failed");
|
|
233
|
+
})));
|
|
234
|
+
}
|
|
235
|
+
yield* Scope.close(entry.scope, Exit.void).pipe(Effect.ignore);
|
|
236
|
+
entry.manager = undefined;
|
|
237
|
+
entry.disposed = true;
|
|
238
|
+
entry.idleUntil = undefined;
|
|
239
|
+
}).pipe(Effect.catch(() => Effect.void));
|
|
191
240
|
const start = (entry) => {
|
|
192
241
|
const operation = Effect.gen(function* () {
|
|
193
242
|
const context = yield* Layer.build(entry.factory.layer(entry.options)).pipe(Effect.provideService(Scope.Scope, entry.scope));
|
|
194
243
|
const manager = Context.get(context, ProjectKeyFerryManager);
|
|
195
244
|
entry.manager = manager;
|
|
245
|
+
entry.status = yield* manager.status;
|
|
246
|
+
log(entry, "start");
|
|
196
247
|
const result = yield* manager.ensureReady;
|
|
248
|
+
log(entry, "ready");
|
|
197
249
|
yield* publish(entry, result.status);
|
|
198
250
|
return result;
|
|
199
251
|
});
|
|
@@ -261,10 +313,11 @@ export function makeBrokerRegistry(configuration = {}) {
|
|
|
261
313
|
return yield* Deferred.await(deferred);
|
|
262
314
|
});
|
|
263
315
|
const getOrCreateEntry = (factory, options, directory) => Effect.gen(function* () {
|
|
264
|
-
const identity = yield*
|
|
316
|
+
const identity = yield* keyFor(directory, options, schemaHash).pipe(Effect.orDie);
|
|
265
317
|
const key = identity.key;
|
|
266
318
|
const factoryMap = factories.get(factory) ?? new Map();
|
|
267
319
|
factories.set(factory, factoryMap);
|
|
320
|
+
factoryMaps.add(factoryMap);
|
|
268
321
|
const existing = factoryMap.get(key);
|
|
269
322
|
if (existing)
|
|
270
323
|
return existing;
|
|
@@ -294,9 +347,7 @@ export function makeBrokerRegistry(configuration = {}) {
|
|
|
294
347
|
const disposeLeaseEntry = (entry, factoryMap, close) => Effect.gen(function* () {
|
|
295
348
|
if (entry.startup)
|
|
296
349
|
yield* Fiber.interrupt(entry.startup);
|
|
297
|
-
|
|
298
|
-
yield* entry.manager.dispose;
|
|
299
|
-
yield* Scope.close(entry.scope, Exit.void);
|
|
350
|
+
yield* disposeEntry(entry);
|
|
300
351
|
}).pipe(Effect.catch(() => Effect.void), Effect.flatMap(() => lock.withPermit(Effect.gen(function* () {
|
|
301
352
|
if (entry.closing !== close)
|
|
302
353
|
return;
|
|
@@ -309,13 +360,71 @@ export function makeBrokerRegistry(configuration = {}) {
|
|
|
309
360
|
entry.closing = undefined;
|
|
310
361
|
yield* Deferred.succeed(close, undefined);
|
|
311
362
|
}))));
|
|
363
|
+
const scheduleIdle = (entry, factoryMap, directory, timeout) => Effect.gen(function* () {
|
|
364
|
+
entry.idleUntil = new Date(now() + timeout).toISOString();
|
|
365
|
+
log(entry, "idle-scheduled");
|
|
366
|
+
yield* publish(entry, {
|
|
367
|
+
...(entry.status ?? { phase: "idle", projectDirectory: directory, generation: 0 }),
|
|
368
|
+
phase: "idle",
|
|
369
|
+
idleUntil: entry.idleUntil,
|
|
370
|
+
});
|
|
371
|
+
entry.idleFiber = yield* Effect.sleep(Duration.millis(timeout)).pipe(Effect.andThen(Effect.gen(function* () {
|
|
372
|
+
if (entry.leases.size === 0 && !entry.disposed) {
|
|
373
|
+
entry.disposed = true;
|
|
374
|
+
const deferred = yield* Deferred.make();
|
|
375
|
+
entry.closing = deferred;
|
|
376
|
+
yield* disposeLeaseEntry(entry, factoryMap, deferred).pipe(Effect.forkDetach);
|
|
377
|
+
}
|
|
378
|
+
})), Effect.forkIn(entry.scope));
|
|
379
|
+
});
|
|
380
|
+
const closeImmediately = (entry, factoryMap, required) => Effect.gen(function* () {
|
|
381
|
+
if (!required)
|
|
382
|
+
return undefined;
|
|
383
|
+
entry.disposed = true;
|
|
384
|
+
const deferred = yield* Deferred.make();
|
|
385
|
+
entry.closing = deferred;
|
|
386
|
+
yield* disposeLeaseEntry(entry, factoryMap, deferred).pipe(Effect.forkDetach);
|
|
387
|
+
return deferred;
|
|
388
|
+
});
|
|
389
|
+
const releaseLease = (entry, factoryMap, leaseID, directory, isReleased, markReleased) => lock.withPermit(Effect.gen(function* () {
|
|
390
|
+
if (isReleased())
|
|
391
|
+
return undefined;
|
|
392
|
+
markReleased();
|
|
393
|
+
log(entry, "release");
|
|
394
|
+
entry.leases.delete(leaseID);
|
|
395
|
+
return yield* releaseAfterDelete(entry, factoryMap, directory);
|
|
396
|
+
}));
|
|
397
|
+
const releaseAfterDelete = (entry, factoryMap, directory) => entry.leases.size !== 0 || entry.disposed
|
|
398
|
+
? Effect.succeed(undefined)
|
|
399
|
+
: releaseLastLease(entry, factoryMap, directory);
|
|
400
|
+
const releaseLastLease = (entry, factoryMap, directory) => Effect.gen(function* () {
|
|
401
|
+
const timeout = Number(entry.options.adapter.idleTimeoutMs ?? idleTimeoutMs);
|
|
402
|
+
const immediate = yield* closeImmediately(entry, factoryMap, entry.failure !== undefined || timeout <= 0);
|
|
403
|
+
if (immediate)
|
|
404
|
+
return immediate;
|
|
405
|
+
yield* scheduleIdle(entry, factoryMap, directory, timeout);
|
|
406
|
+
return undefined;
|
|
407
|
+
});
|
|
408
|
+
const reuseIdle = (entry) => Effect.gen(function* () {
|
|
409
|
+
if (!entry.idleFiber)
|
|
410
|
+
return;
|
|
411
|
+
yield* Fiber.interrupt(entry.idleFiber);
|
|
412
|
+
entry.idleFiber = undefined;
|
|
413
|
+
entry.idleUntil = undefined;
|
|
414
|
+
entry.disposed = false;
|
|
415
|
+
if (entry.status?.phase === "idle")
|
|
416
|
+
yield* publish(entry, { ...entry.status, phase: "ready", idleUntil: undefined });
|
|
417
|
+
log(entry, "reused");
|
|
418
|
+
});
|
|
312
419
|
const acquireAttempt = (factory, options) => lock.withPermit(Effect.gen(function* () {
|
|
313
420
|
const directory = yield* canonicalize(options.projectDirectory).pipe(Effect.mapError(() => new TypeError("project directory does not exist")));
|
|
314
421
|
const factoryMap = factories.get(factory) ?? new Map();
|
|
315
422
|
factories.set(factory, factoryMap);
|
|
423
|
+
factoryMaps.add(factoryMap);
|
|
316
424
|
const entry = yield* getOrCreateEntry(factory, options, directory);
|
|
317
425
|
if (entry.closing)
|
|
318
426
|
return { waiting: entry.closing };
|
|
427
|
+
yield* reuseIdle(entry);
|
|
319
428
|
const leaseID = Symbol();
|
|
320
429
|
entry.leases.add(leaseID);
|
|
321
430
|
if (!entry.startup && !entry.failure) {
|
|
@@ -331,19 +440,7 @@ export function makeBrokerRegistry(configuration = {}) {
|
|
|
331
440
|
return yield* operation(entry.manager);
|
|
332
441
|
});
|
|
333
442
|
const release = Effect.gen(function* () {
|
|
334
|
-
const close = yield*
|
|
335
|
-
if (released)
|
|
336
|
-
return undefined;
|
|
337
|
-
released = true;
|
|
338
|
-
entry.leases.delete(leaseID);
|
|
339
|
-
if (entry.leases.size !== 0 || entry.disposed)
|
|
340
|
-
return undefined;
|
|
341
|
-
entry.disposed = true;
|
|
342
|
-
const deferred = yield* Deferred.make();
|
|
343
|
-
entry.closing = deferred;
|
|
344
|
-
yield* disposeLeaseEntry(entry, factoryMap, deferred).pipe(Effect.forkDetach);
|
|
345
|
-
return deferred;
|
|
346
|
-
}));
|
|
443
|
+
const close = yield* releaseLease(entry, factoryMap, leaseID, directory, () => released, () => (released = true));
|
|
347
444
|
if (close)
|
|
348
445
|
yield* Deferred.await(close);
|
|
349
446
|
});
|
|
@@ -390,7 +487,7 @@ export function makeBrokerRegistry(configuration = {}) {
|
|
|
390
487
|
const target = yield* lock.withPermit(Effect.gen(function* () {
|
|
391
488
|
const entry = factories
|
|
392
489
|
.get(factory)
|
|
393
|
-
?.get((yield*
|
|
490
|
+
?.get((yield* keyFor(directory, options, schemaHash)).key);
|
|
394
491
|
if (entry?.retryBatch)
|
|
395
492
|
return entry.retryBatch;
|
|
396
493
|
if (entry) {
|
|
@@ -468,7 +565,7 @@ export function makeBrokerRegistry(configuration = {}) {
|
|
|
468
565
|
const directory = yield* canonicalize(options.projectDirectory);
|
|
469
566
|
const entry = factories
|
|
470
567
|
.get(factory)
|
|
471
|
-
?.get((yield*
|
|
568
|
+
?.get((yield* keyFor(directory, options, schemaHash)).key);
|
|
472
569
|
if (!entry?.failure || (entry.nextRetryAt && now() < Date.parse(entry.nextRetryAt)))
|
|
473
570
|
return undefined;
|
|
474
571
|
entry.retryBatch = undefined;
|
|
@@ -476,7 +573,109 @@ export function makeBrokerRegistry(configuration = {}) {
|
|
|
476
573
|
? Effect.succeed(undefined)
|
|
477
574
|
: Effect.fail(error)));
|
|
478
575
|
});
|
|
479
|
-
|
|
576
|
+
let unregisterOwnershipLogger = () => undefined;
|
|
577
|
+
const shutdown = Effect.uninterruptible(Effect.gen(function* () {
|
|
578
|
+
removeHooksWhenConfigured(configuration.hostShutdownHooks);
|
|
579
|
+
const current = [...entries];
|
|
580
|
+
yield* Effect.forEach(current, (entry) => disposeEntry(entry), { concurrency: "unbounded" });
|
|
581
|
+
for (const map of factoryMaps)
|
|
582
|
+
map.clear();
|
|
583
|
+
entries.clear();
|
|
584
|
+
unregisterOwnershipLogger();
|
|
585
|
+
}));
|
|
586
|
+
installHooksWhenConfigured(configuration.hostShutdownHooks, shutdown);
|
|
587
|
+
unregisterOwnershipLogger = setOwnershipLifecycleLogger((event) => configuration.logger?.({
|
|
588
|
+
...event,
|
|
589
|
+
scope: "project",
|
|
590
|
+
directory: "",
|
|
591
|
+
keyHash: event.keyHash,
|
|
592
|
+
}));
|
|
593
|
+
return { acquire, retry, retryIfDue, shutdown };
|
|
594
|
+
}
|
|
595
|
+
let hostHooks;
|
|
596
|
+
let hostShutdown;
|
|
597
|
+
function removeHooksWhenConfigured(enabled) {
|
|
598
|
+
if (enabled)
|
|
599
|
+
removeHostShutdownHooks();
|
|
600
|
+
}
|
|
601
|
+
function installHooksWhenConfigured(enabled, shutdown) {
|
|
602
|
+
if (enabled)
|
|
603
|
+
installHostShutdownHooks(shutdown);
|
|
604
|
+
}
|
|
605
|
+
function signalListener(name, onSigInt, onSigTerm) {
|
|
606
|
+
return name === "SIGINT" ? onSigInt : onSigTerm;
|
|
607
|
+
}
|
|
608
|
+
function reraiseSignal(signalProcess, name, listener) {
|
|
609
|
+
signalProcess.removeListener(name, listener);
|
|
610
|
+
signalProcess.kill(signalProcess.pid, name);
|
|
611
|
+
}
|
|
612
|
+
function finishSignalCleanup(signalProcess, name, listener, active) {
|
|
613
|
+
if (!active && signalProcess.listeners(name).length > 0)
|
|
614
|
+
return;
|
|
615
|
+
const others = signalProcess.listeners(name).filter((item) => item !== listener);
|
|
616
|
+
signalProcess.removeListener(name, listener);
|
|
617
|
+
if (others.length === 0)
|
|
618
|
+
signalProcess.kill(signalProcess.pid, name);
|
|
619
|
+
}
|
|
620
|
+
export function removeHostShutdownHooks() {
|
|
621
|
+
hostHooks?.();
|
|
622
|
+
hostHooks = undefined;
|
|
623
|
+
hostShutdown = undefined;
|
|
624
|
+
}
|
|
625
|
+
export function installHostShutdownHooks(shutdown, signalProcess = process, options = {}) {
|
|
626
|
+
if (hostHooks)
|
|
627
|
+
return;
|
|
628
|
+
hostShutdown = shutdown;
|
|
629
|
+
let active = true;
|
|
630
|
+
const beforeExit = () => {
|
|
631
|
+
if (active)
|
|
632
|
+
void Effect.runPromise(hostShutdown).catch(() => undefined);
|
|
633
|
+
};
|
|
634
|
+
let cleaning = false;
|
|
635
|
+
// Node and Bun suppress their default signal termination while a signal
|
|
636
|
+
// listener is installed. Cleanup is bounded; `exit` cannot await work and
|
|
637
|
+
// is covered by the startup ownership reaper instead.
|
|
638
|
+
const boundedTimer = (resolve) => {
|
|
639
|
+
const timer = setTimeout(resolve, options.cleanupTimeoutMs ?? 3_000);
|
|
640
|
+
timer.unref?.();
|
|
641
|
+
return timer;
|
|
642
|
+
};
|
|
643
|
+
const signal = (name) => {
|
|
644
|
+
if (!active)
|
|
645
|
+
return;
|
|
646
|
+
const listener = signalListener(name, onSigInt, onSigTerm);
|
|
647
|
+
if (cleaning) {
|
|
648
|
+
reraiseSignal(signalProcess, name, listener);
|
|
649
|
+
return;
|
|
650
|
+
}
|
|
651
|
+
cleaning = true;
|
|
652
|
+
let timer;
|
|
653
|
+
const timeout = new Promise((resolve) => {
|
|
654
|
+
timer = boundedTimer(resolve);
|
|
655
|
+
});
|
|
656
|
+
void Promise.race([Effect.runPromise(hostShutdown).catch(() => undefined), timeout]).finally(() => {
|
|
657
|
+
if (timer !== undefined)
|
|
658
|
+
clearTimeout(timer);
|
|
659
|
+
// shutdown() removes the hooks at its start, so do not let that normal
|
|
660
|
+
// cleanup path suppress the signal re-raise requested by this handler.
|
|
661
|
+
finishSignalCleanup(signalProcess, name, listener, active);
|
|
662
|
+
});
|
|
663
|
+
};
|
|
664
|
+
const onSigInt = () => signal("SIGINT");
|
|
665
|
+
const onSigTerm = () => signal("SIGTERM");
|
|
666
|
+
signalProcess.on("beforeExit", beforeExit);
|
|
667
|
+
signalProcess.on("SIGINT", onSigInt);
|
|
668
|
+
signalProcess.on("SIGTERM", onSigTerm);
|
|
669
|
+
hostHooks = () => {
|
|
670
|
+
active = false;
|
|
671
|
+
signalProcess.removeListener("beforeExit", beforeExit);
|
|
672
|
+
signalProcess.removeListener("SIGINT", onSigInt);
|
|
673
|
+
signalProcess.removeListener("SIGTERM", onSigTerm);
|
|
674
|
+
};
|
|
675
|
+
return hostHooks;
|
|
480
676
|
}
|
|
481
|
-
export const brokerRegistry = makeBrokerRegistry(
|
|
677
|
+
export const brokerRegistry = makeBrokerRegistry({
|
|
678
|
+
idleTimeoutMs: 600_000,
|
|
679
|
+
hostShutdownHooks: true,
|
|
680
|
+
});
|
|
482
681
|
//# sourceMappingURL=broker-registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker-registry.js","sourceRoot":"","sources":["../src/broker-registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"broker-registry.js","sourceRoot":"","sources":["../src/broker-registry.ts"],"names":[],"mappings":"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"}
|