@adhd/sox-embedding-provider 0.5.0 → 0.5.2
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/embedHostConfig.d.ts +120 -0
- package/dist/embedHostConfig.d.ts.map +1 -0
- package/dist/embedHostConfig.js +180 -0
- package/dist/embedHostConfig.js.map +1 -0
- package/dist/embedHostMain.d.ts +46 -0
- package/dist/embedHostMain.d.ts.map +1 -0
- package/dist/embedHostMain.js +192 -0
- package/dist/embedHostMain.js.map +1 -0
- package/dist/errors.d.ts +25 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +35 -0
- package/dist/errors.js.map +1 -0
- package/dist/fastembed.d.ts.map +1 -1
- package/dist/fastembed.js +3 -0
- package/dist/fastembed.js.map +1 -1
- package/dist/fastembedLock.d.ts +47 -0
- package/dist/fastembedLock.d.ts.map +1 -1
- package/dist/fastembedLock.js +35 -0
- package/dist/fastembedLock.js.map +1 -1
- package/dist/fastembedProcessHost.d.ts.map +1 -1
- package/dist/fastembedProcessHost.js +33 -12
- package/dist/fastembedProcessHost.js.map +1 -1
- package/dist/funnelClient.d.ts +97 -0
- package/dist/funnelClient.d.ts.map +1 -0
- package/dist/funnelClient.js +311 -0
- package/dist/funnelClient.js.map +1 -0
- package/dist/index.d.ts +27 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +43 -39
- package/dist/index.js.map +1 -1
- package/dist/onnxStderrFilter.d.ts +79 -0
- package/dist/onnxStderrFilter.d.ts.map +1 -0
- package/dist/onnxStderrFilter.js +101 -0
- package/dist/onnxStderrFilter.js.map +1 -0
- package/dist/package.json +8 -2
- package/dist/sharedFastembedProcess.d.ts +70 -32
- package/dist/sharedFastembedProcess.d.ts.map +1 -1
- package/dist/sharedFastembedProcess.js +174 -52
- package/dist/sharedFastembedProcess.js.map +1 -1
- package/package.json +9 -3
package/dist/fastembed.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { warmupTimeoutMs, isModelCached, WARMUP_CACHE_HIT_ATTEMPTS } from './index.js';
|
|
2
2
|
import { getSharedFastembedProcess } from './sharedFastembedProcess.js';
|
|
3
|
+
import { resolveEmbedHostConfig } from './embedHostConfig.js';
|
|
3
4
|
// BUG-005: MODEL_CONFIGS lives in the side-effect-free `fastembedModels.js`
|
|
4
5
|
// (shared with the child-process host) — see that module's doc comment for
|
|
5
6
|
// why it cannot be imported from this file by the child. Re-exported below
|
|
@@ -82,6 +83,8 @@ export class FastembedProvider {
|
|
|
82
83
|
dimensions: this.embedDim || this.metadata.dimensions,
|
|
83
84
|
last_error: this._lastError,
|
|
84
85
|
execution_provider: this._executionProvider,
|
|
86
|
+
// ADR-0013 D2: the active host-selection posture is visible from one call.
|
|
87
|
+
host: resolveEmbedHostConfig().host,
|
|
85
88
|
};
|
|
86
89
|
}
|
|
87
90
|
async embedSingle(text, _role) {
|
package/dist/fastembed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastembed.js","sourceRoot":"","sources":["../src/fastembed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,yBAAyB,EAA8B,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"fastembed.js","sourceRoot":"","sources":["../src/fastembed.ts"],"names":[],"mappings":"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"}
|
package/dist/fastembedLock.d.ts
CHANGED
|
@@ -38,6 +38,26 @@ export interface FastembedLockInfo {
|
|
|
38
38
|
* BL-331's own postmortem already warns against over-trusting.
|
|
39
39
|
*/
|
|
40
40
|
poolGroup?: string;
|
|
41
|
+
/**
|
|
42
|
+
* (BL-432) The service label of the process that OWNS this fastembed host
|
|
43
|
+
* (e.g. `memory-server`, `backlog`), threaded from the parent via
|
|
44
|
+
* `SOX_FASTEMBED_SERVICE` — the same env-threading shape as `poolGroup`.
|
|
45
|
+
*
|
|
46
|
+
* Two jobs:
|
|
47
|
+
* 1. IDENTITY in the BL-331 warning: "another fastembed host process
|
|
48
|
+
* (pid N, service X, started …)" names WHO the competing host belongs
|
|
49
|
+
* to, not just a bare pid an agent has to `ps` for.
|
|
50
|
+
* 2. SAME-SERVICE SUPPRESSION: a lock whose `service` equals our own is the
|
|
51
|
+
* sequential-CLI false positive (one service's own host, still named by
|
|
52
|
+
* the lock from an earlier run, or a second instance of the SAME
|
|
53
|
+
* service) and must NOT warn. Genuine CROSS-service contention still
|
|
54
|
+
* does.
|
|
55
|
+
*
|
|
56
|
+
* `undefined` when the owner declared no service identity (an
|
|
57
|
+
* uninitialised/`'unlabeled'` telemetry process), in which case neither
|
|
58
|
+
* suppression nor identity applies — the pre-BL-432 behaviour, unchanged.
|
|
59
|
+
*/
|
|
60
|
+
service?: string;
|
|
41
61
|
}
|
|
42
62
|
/**
|
|
43
63
|
* Resolved fresh on every call (not a module-level constant) so tests can
|
|
@@ -45,4 +65,31 @@ export interface FastembedLockInfo {
|
|
|
45
65
|
* needing `vi.resetModules()`.
|
|
46
66
|
*/
|
|
47
67
|
export declare function resolveFastembedLockPath(): string;
|
|
68
|
+
/**
|
|
69
|
+
* BL-432: the env key a parent writes and a forked host reads to label the
|
|
70
|
+
* lock with the OWNING service's identity. Mirrors `SOX_FASTEMBED_POOL_GROUP`
|
|
71
|
+
* (see `poolGroup` above) — set on the child's env by
|
|
72
|
+
* `SharedFastembedProcessClient.ensureProcess()`, read by the writer
|
|
73
|
+
* (`checkAndClaimFastembedLock`) and the parent-side reader alike.
|
|
74
|
+
*/
|
|
75
|
+
export declare const SOX_FASTEMBED_SERVICE = "SOX_FASTEMBED_SERVICE";
|
|
76
|
+
/**
|
|
77
|
+
* Normalize a candidate service identity. An empty string, or the telemetry
|
|
78
|
+
* "never configured" sentinel `'unlabeled'`, carries no identity and must
|
|
79
|
+
* NEVER drive same-service suppression — otherwise every process that never
|
|
80
|
+
* called `initTelemetry()` would suppress every other, including genuine
|
|
81
|
+
* cross-service contention. Returns `undefined` for those cases.
|
|
82
|
+
*/
|
|
83
|
+
export declare function normalizeFastembedService(service: string | undefined): string | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* THIS process's own service identity for lock purposes.
|
|
86
|
+
*
|
|
87
|
+
* A forked host reads the owner's label from `SOX_FASTEMBED_SERVICE` (the
|
|
88
|
+
* parent set it on this child's env). The PARENT itself has no such env var for
|
|
89
|
+
* its own process, so it passes its telemetry service explicitly as
|
|
90
|
+
* `telemetryService` (from `currentRuntimeState().service`). Env wins when both
|
|
91
|
+
* are present, so a propagated owner label is never overwritten by a child's
|
|
92
|
+
* own (different) telemetry service.
|
|
93
|
+
*/
|
|
94
|
+
export declare function resolveFastembedServiceLabel(telemetryService?: string): string | undefined;
|
|
48
95
|
//# sourceMappingURL=fastembedLock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastembedLock.d.ts","sourceRoot":"","sources":["../src/fastembedLock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"fastembedLock.d.ts","sourceRoot":"","sources":["../src/fastembedLock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAE7D;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGzF;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI1F"}
|
package/dist/fastembedLock.js
CHANGED
|
@@ -29,4 +29,39 @@ import { join } from 'node:path';
|
|
|
29
29
|
export function resolveFastembedLockPath() {
|
|
30
30
|
return process.env['SOX_FASTEMBED_LOCK_PATH'] ?? join(tmpdir(), 'sox-fastembed-host.lock');
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* BL-432: the env key a parent writes and a forked host reads to label the
|
|
34
|
+
* lock with the OWNING service's identity. Mirrors `SOX_FASTEMBED_POOL_GROUP`
|
|
35
|
+
* (see `poolGroup` above) — set on the child's env by
|
|
36
|
+
* `SharedFastembedProcessClient.ensureProcess()`, read by the writer
|
|
37
|
+
* (`checkAndClaimFastembedLock`) and the parent-side reader alike.
|
|
38
|
+
*/
|
|
39
|
+
export const SOX_FASTEMBED_SERVICE = 'SOX_FASTEMBED_SERVICE';
|
|
40
|
+
/**
|
|
41
|
+
* Normalize a candidate service identity. An empty string, or the telemetry
|
|
42
|
+
* "never configured" sentinel `'unlabeled'`, carries no identity and must
|
|
43
|
+
* NEVER drive same-service suppression — otherwise every process that never
|
|
44
|
+
* called `initTelemetry()` would suppress every other, including genuine
|
|
45
|
+
* cross-service contention. Returns `undefined` for those cases.
|
|
46
|
+
*/
|
|
47
|
+
export function normalizeFastembedService(service) {
|
|
48
|
+
if (service === undefined || service === '' || service === 'unlabeled')
|
|
49
|
+
return undefined;
|
|
50
|
+
return service;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* THIS process's own service identity for lock purposes.
|
|
54
|
+
*
|
|
55
|
+
* A forked host reads the owner's label from `SOX_FASTEMBED_SERVICE` (the
|
|
56
|
+
* parent set it on this child's env). The PARENT itself has no such env var for
|
|
57
|
+
* its own process, so it passes its telemetry service explicitly as
|
|
58
|
+
* `telemetryService` (from `currentRuntimeState().service`). Env wins when both
|
|
59
|
+
* are present, so a propagated owner label is never overwritten by a child's
|
|
60
|
+
* own (different) telemetry service.
|
|
61
|
+
*/
|
|
62
|
+
export function resolveFastembedServiceLabel(telemetryService) {
|
|
63
|
+
const fromEnv = process.env[SOX_FASTEMBED_SERVICE];
|
|
64
|
+
const candidate = fromEnv !== undefined && fromEnv !== '' ? fromEnv : telemetryService;
|
|
65
|
+
return normalizeFastembedService(candidate);
|
|
66
|
+
}
|
|
32
67
|
//# sourceMappingURL=fastembedLock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastembedLock.js","sourceRoot":"","sources":["../src/fastembedLock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"fastembedLock.js","sourceRoot":"","sources":["../src/fastembedLock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA2CjC;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC;AAC7F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAA2B;IACnE,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IACzF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,4BAA4B,CAAC,gBAAyB;IACpE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACvF,OAAO,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastembedProcessHost.d.ts","sourceRoot":"","sources":["../src/fastembedProcessHost.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;
|
|
1
|
+
{"version":3,"file":"fastembedProcessHost.d.ts","sourceRoot":"","sources":["../src/fastembedProcessHost.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AA4DH,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQ/C;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CA8EjD"}
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
*/
|
|
59
59
|
import * as fs from 'node:fs';
|
|
60
60
|
import { bootstrapChildTelemetry, childTelemetrySnapshot, log } from '@adhd/sox-telemetry';
|
|
61
|
-
import { resolveFastembedLockPath } from './fastembedLock.js';
|
|
61
|
+
import { resolveFastembedLockPath, resolveFastembedServiceLabel } from './fastembedLock.js';
|
|
62
62
|
// BUG-005: MODEL_MAP + resolveModelDim live in the side-effect-free
|
|
63
63
|
// `fastembedModels.js` (see its doc comment — importing them from
|
|
64
64
|
// `./fastembed.js` here would drag parent-side modules into this child
|
|
@@ -97,15 +97,16 @@ import { MODEL_MAP, resolveModelDim } from './fastembedModels.js';
|
|
|
97
97
|
//
|
|
98
98
|
// This lock remains useful regardless: nothing in this process logs the
|
|
99
99
|
// existence of sibling fastembed hosts, and that blindness cost an afternoon
|
|
100
|
-
// of `ps`/`vm_stat` archaeology.
|
|
100
|
+
// of `ps`/`vm_stat` archaeology. It is an OBSERVABILITY aid, not a claim about
|
|
101
|
+
// the cause of any slowdown — the 25-50x class it names is associated with a
|
|
102
|
+
// second host by UNPROVEN hypothesis only.
|
|
101
103
|
//
|
|
102
104
|
// This lock is advisory-only — it never blocks or refuses to load the model
|
|
103
105
|
// (a legitimate second store/project running its own memory-server on the
|
|
104
106
|
// same machine is a real, supported scenario, not a bug). It exists purely
|
|
105
|
-
// so a FUTURE occurrence of
|
|
106
|
-
//
|
|
107
|
-
//
|
|
108
|
-
// diagnose.
|
|
107
|
+
// so a FUTURE occurrence of a second host is a loud, immediately greppable
|
|
108
|
+
// stderr line at model-load time, instead of a silent slowdown that takes an
|
|
109
|
+
// agent an afternoon of `ps`/`vm_stat` archaeology to diagnose.
|
|
109
110
|
// BL-471: `resolveFastembedLockPath()` and `FastembedLockInfo` now live in
|
|
110
111
|
// `./fastembedLock.ts` — the single shared definition imported by both this
|
|
111
112
|
// writer and `sharedFastembedProcess.ts`'s reader. See that module's doc
|
|
@@ -136,6 +137,11 @@ export function checkAndClaimFastembedLock() {
|
|
|
136
137
|
// preserves today's exact behaviour there. See `fastembedLock.ts`'s
|
|
137
138
|
// `poolGroup` doc comment for why this must be checked before warning.
|
|
138
139
|
const ownPoolGroup = process.env['SOX_FASTEMBED_POOL_GROUP'];
|
|
140
|
+
// (BL-432) The OWNING service's identity, threaded from the parent via
|
|
141
|
+
// `SOX_FASTEMBED_SERVICE` (the same env pattern as `SOX_FASTEMBED_POOL_GROUP`
|
|
142
|
+
// directly above). `undefined` for a host whose owner never declared a
|
|
143
|
+
// service — see `fastembedLock.ts`'s `service` doc comment.
|
|
144
|
+
const ownService = resolveFastembedServiceLabel();
|
|
139
145
|
try {
|
|
140
146
|
if (fs.existsSync(lockPath)) {
|
|
141
147
|
const raw = fs.readFileSync(lockPath, 'utf8');
|
|
@@ -143,20 +149,34 @@ export function checkAndClaimFastembedLock() {
|
|
|
143
149
|
const isKnownPoolSibling = typeof prev.poolGroup === 'string' &&
|
|
144
150
|
ownPoolGroup !== undefined &&
|
|
145
151
|
prev.poolGroup === ownPoolGroup;
|
|
152
|
+
// (BL-432) The sequential-CLI false positive: a lock naming OUR OWN
|
|
153
|
+
// service (e.g. a previous run of the same CLI, or a second instance of
|
|
154
|
+
// the same service) is not "a genuinely unrelated fastembed host".
|
|
155
|
+
// Suppress it exactly as a pool sibling is suppressed. Requires BOTH
|
|
156
|
+
// sides to carry a real identity — `ownService === undefined` (owner
|
|
157
|
+
// never declared one) or an unlabelled/old lock keeps the original
|
|
158
|
+
// warn-on-any-live-pid behaviour.
|
|
159
|
+
const isSameService = typeof prev.service === 'string' &&
|
|
160
|
+
ownService !== undefined &&
|
|
161
|
+
prev.service === ownService;
|
|
146
162
|
if (typeof prev.pid === 'number' &&
|
|
147
163
|
prev.pid !== process.pid &&
|
|
148
164
|
isPidAlive(prev.pid) &&
|
|
149
|
-
!isKnownPoolSibling
|
|
165
|
+
!isKnownPoolSibling &&
|
|
166
|
+
!isSameService) {
|
|
167
|
+
const prevService = typeof prev.service === 'string' ? prev.service : 'unknown';
|
|
150
168
|
const msg = `another fastembed host process (pid ${prev.pid}, ` +
|
|
169
|
+
`service ${prevService}, ` +
|
|
151
170
|
`started ${prev.startedAt ?? 'unknown'}) is ALREADY RUNNING on this machine. ` +
|
|
152
|
-
`
|
|
153
|
-
`
|
|
154
|
-
`
|
|
155
|
-
`
|
|
156
|
-
|
|
171
|
+
`A second concurrent onnxruntime-node CoreML/ANE host is the leading, UNPROVEN ` +
|
|
172
|
+
`hypothesis for the 25-50x embed-latency class this lock exists to make visible — the ` +
|
|
173
|
+
`measured cause of the live BL-331 slowdown was scheduling QoS, NOT Neural Engine ` +
|
|
174
|
+
`contention (see this file's header). If pid ${prev.pid} is a leaked/orphaned process ` +
|
|
175
|
+
`(check with \`ps -p ${prev.pid}\`), terminate it. Lock file: ${lockPath}`;
|
|
157
176
|
console.error(`[fastembed] WARNING (BL-331): ${msg}`);
|
|
158
177
|
log.warn('embedding_provider.fastembed.competing_host_detected', {
|
|
159
178
|
competing_pid: prev.pid,
|
|
179
|
+
competing_service: prevService,
|
|
160
180
|
competing_started_at: prev.startedAt ?? 'unknown',
|
|
161
181
|
lock_file: lockPath,
|
|
162
182
|
});
|
|
@@ -177,6 +197,7 @@ export function checkAndClaimFastembedLock() {
|
|
|
177
197
|
pid: process.pid,
|
|
178
198
|
startedAt: new Date().toISOString(),
|
|
179
199
|
...(ownPoolGroup !== undefined ? { poolGroup: ownPoolGroup } : {}),
|
|
200
|
+
...(ownService !== undefined ? { service: ownService } : {}),
|
|
180
201
|
};
|
|
181
202
|
fs.writeFileSync(lockPath, JSON.stringify(info));
|
|
182
203
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastembedProcessHost.js","sourceRoot":"","sources":["../src/fastembedProcessHost.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAA0B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"fastembedProcessHost.js","sourceRoot":"","sources":["../src/fastembedProcessHost.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* funnelClient.ts — the host-aware `SharedFastembedClient` (SPEC-EMBEDDING-FUNNEL.md §D).
|
|
3
|
+
*
|
|
4
|
+
* A drop-in `SharedFastembedClient` that transparently dials — and, when absent,
|
|
5
|
+
* peer-spawns — the ONE machine-wide embedding host for `(model, ep, cacheDir)`.
|
|
6
|
+
* It is the consumer half of the funnel: N processes each hold a
|
|
7
|
+
* `FunneledFastembedClient`, but `ensureBackend()`'s O_EXCL spawn-lock collapses
|
|
8
|
+
* their concurrent spawn attempts to a single detached host, and the host
|
|
9
|
+
* reaps itself once the last client leaves (see `embedHostMain.ts`).
|
|
10
|
+
*
|
|
11
|
+
* ── Honest failure, never a silent private re-fork ─────────────────────────────
|
|
12
|
+
*
|
|
13
|
+
* Under the default `host: 'shared'`, a failure to bring the host up throws a
|
|
14
|
+
* typed `TransientEmbeddingError` naming the socket — it does NOT fall back to
|
|
15
|
+
* forking a private host. A silent fallback would defeat the entire funnel
|
|
16
|
+
* (each of 535 short-lived CLIs/day would quietly become its own ONNX host) and
|
|
17
|
+
* is exactly the behaviour this design removes. `host: 'private'` is the
|
|
18
|
+
* explicit, typed CI/diagnostics selection (ADR-0013 closed union).
|
|
19
|
+
*
|
|
20
|
+
* ── Circuit breaker ────────────────────────────────────────────────────────────
|
|
21
|
+
*
|
|
22
|
+
* After `ENSURE_FAILURE_THRESHOLD` consecutive failed ensures, the client fails
|
|
23
|
+
* fast with a typed error for `ENSURE_CIRCUIT_COOLDOWN_MS` rather than paying
|
|
24
|
+
* the full `ensureBackend` ready-timeout on every call. The breaker is
|
|
25
|
+
* per-process (a short-lived CLI cannot share it) — it bounds a retrying
|
|
26
|
+
* consumer, not the fleet; that is stated here rather than implied.
|
|
27
|
+
*
|
|
28
|
+
* Leaf module — `@adhd/sox-service-proxy` + node builtins.
|
|
29
|
+
*/
|
|
30
|
+
import type { SharedFastembedClient } from './sharedFastembedProcess.js';
|
|
31
|
+
/** Consecutive failed ensures before the breaker opens. */
|
|
32
|
+
export declare const ENSURE_FAILURE_THRESHOLD = 3;
|
|
33
|
+
/** How long the breaker stays open (fail-fast window) once tripped. */
|
|
34
|
+
export declare const ENSURE_CIRCUIT_COOLDOWN_MS = 10000;
|
|
35
|
+
/** Bound on bringing the host up (`ensureBackend`'s readyTimeoutMs). */
|
|
36
|
+
export declare const HOST_READY_TIMEOUT_MS = 10000;
|
|
37
|
+
/** TEST-ONLY: clear the active-client reference. */
|
|
38
|
+
export declare function __resetActiveFunnelClientForTests(): void;
|
|
39
|
+
export declare class FunneledFastembedClient implements SharedFastembedClient {
|
|
40
|
+
private conn;
|
|
41
|
+
private socketPath;
|
|
42
|
+
private initContext;
|
|
43
|
+
private ensurePromise;
|
|
44
|
+
private _started;
|
|
45
|
+
private _pending;
|
|
46
|
+
private nextId;
|
|
47
|
+
private consecutiveEnsureFailures;
|
|
48
|
+
private circuitOpenUntil;
|
|
49
|
+
constructor();
|
|
50
|
+
/** True once the host has been resolved and the dial connection established. */
|
|
51
|
+
get started(): boolean;
|
|
52
|
+
/** In-flight request count on THIS consumer (not the host's). */
|
|
53
|
+
get pendingCount(): number;
|
|
54
|
+
/** The resolved host socket path, or `null` before the first successful ensure. */
|
|
55
|
+
get hostSocketPath(): string | null;
|
|
56
|
+
request<T = Record<string, unknown>>(payload: Record<string, unknown>, timeoutMs?: number, signal?: AbortSignal): Promise<T>;
|
|
57
|
+
/**
|
|
58
|
+
* NO-OP by design: under `host: 'shared'` the host is shared with every other
|
|
59
|
+
* consumer on the machine — a consumer must never kill it. Its lifetime is
|
|
60
|
+
* governed solely by its own debounced, ref-counted teardown
|
|
61
|
+
* (`embedHostMain.ts`). Kept to satisfy `SharedFastembedClient`.
|
|
62
|
+
*/
|
|
63
|
+
terminate(): Promise<void>;
|
|
64
|
+
private mapError;
|
|
65
|
+
private awaitResponse;
|
|
66
|
+
/** Idempotent: resolves once a host is live and dialed, or throws typed. */
|
|
67
|
+
private ensureHost;
|
|
68
|
+
private doEnsure;
|
|
69
|
+
private noteEnsureFailure;
|
|
70
|
+
/**
|
|
71
|
+
* Ask the live host to tear down and re-fork its PRIVATE pool, then drop this
|
|
72
|
+
* consumer's connection so the next request re-dials the (still-live) host.
|
|
73
|
+
* No-op when no host has been resolved. Public so the module-level
|
|
74
|
+
* `resetSharedFastembedHost()` can target the accessor client.
|
|
75
|
+
*/
|
|
76
|
+
resetHost(): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Send a control method (`embedding.reset` / `embedding.health`) to the live
|
|
79
|
+
* host, bounded. Returns the result, or `null` when no host is resolved.
|
|
80
|
+
*/
|
|
81
|
+
private control;
|
|
82
|
+
/**
|
|
83
|
+
* Drop this consumer's dial connection. The host stays alive.
|
|
84
|
+
*/
|
|
85
|
+
private dropConnection;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Ask the peer-shared host to tear down and re-fork its PRIVATE pool, then drop
|
|
89
|
+
* this consumer's connection so the next request re-dials the (still-live) host.
|
|
90
|
+
*
|
|
91
|
+
* This is memory-core's heal entry point: under `host: 'shared'`,
|
|
92
|
+
* `terminate()` is a no-op (a consumer must never kill a shared host), so a
|
|
93
|
+
* wedged private child is recovered by asking the host to reset its own pool.
|
|
94
|
+
* A no-op when no host has been resolved yet — nothing to reset.
|
|
95
|
+
*/
|
|
96
|
+
export declare function resetSharedFastembedHost(): Promise<void>;
|
|
97
|
+
//# sourceMappingURL=funnelClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"funnelClient.d.ts","sourceRoot":"","sources":["../src/funnelClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAWH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEzE,2DAA2D;AAC3D,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,uEAAuE;AACvE,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,wEAAwE;AACxE,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAoB5C,oDAAoD;AACpD,wBAAgB,iCAAiC,IAAI,IAAI,CAExD;AAOD,qBAAa,uBAAwB,YAAW,qBAAqB;IACnE,OAAO,CAAC,IAAI,CAAkC;IAC9C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,WAAW,CAAoD;IACvE,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,yBAAyB,CAAK;IACtC,OAAO,CAAC,gBAAgB,CAAK;;IAM7B,gFAAgF;IAChF,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,iEAAiE;IACjE,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,mFAAmF;IACnF,IAAI,cAAc,IAAI,MAAM,GAAG,IAAI,CAElC;IAEK,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,CAAC;IAqCb;;;;;OAKG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhC,OAAO,CAAC,QAAQ;IAchB,OAAO,CAAC,aAAa;IA8DrB,4EAA4E;IAC5E,OAAO,CAAC,UAAU;YASJ,QAAQ;IAiEtB,OAAO,CAAC,iBAAiB;IAOzB;;;;;OAKG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAYhC;;;OAGG;YACW,OAAO;IAcrB;;OAEG;IACH,OAAO,CAAC,cAAc;CAKvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9D"}
|