@adhd/sox-embedding-provider 0.4.1 → 0.5.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/README.md +162 -13
- package/dist/embedWorker.js +6 -0
- package/dist/embedWorker.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 +37 -8
- package/dist/fastembedProcessHost.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/onnxStderrFilter.d.ts +78 -0
- package/dist/onnxStderrFilter.d.ts.map +1 -0
- package/dist/onnxStderrFilter.js +100 -0
- package/dist/onnxStderrFilter.js.map +1 -0
- package/dist/package.json +1 -1
- package/dist/sharedFastembedProcess.d.ts +34 -4
- package/dist/sharedFastembedProcess.d.ts.map +1 -1
- package/dist/sharedFastembedProcess.js +127 -17
- package/dist/sharedFastembedProcess.js.map +1 -1
- package/dist/sharedOnnxWorker.d.ts +15 -0
- package/dist/sharedOnnxWorker.d.ts.map +1 -1
- package/dist/sharedOnnxWorker.js +44 -2
- package/dist/sharedOnnxWorker.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,20 +1,169 @@
|
|
|
1
1
|
# @adhd/sox-embedding-provider
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A pluggable text→vector embedding provider. One `EmbeddingProvider` interface, one
|
|
4
|
+
`createEmbeddingProvider(config)` factory, config-driven model resolution, and an async
|
|
5
|
+
batch-first API (`AsyncIterable<Float32Array>`) so a caller gets the first vector back before the
|
|
6
|
+
last one in a large batch finishes computing. The default provider is `fastembed` — local ONNX
|
|
7
|
+
inference, no network calls, no API key. A `remote` provider is also built in for calling an
|
|
8
|
+
HTTP embedding endpoint. `createEmbeddingProvider()` **throws** a typed `ResolutionError`
|
|
9
|
+
synchronously (or as a rejection) if the config is invalid or the model fails to load — it never
|
|
10
|
+
silently degrades to a different provider.
|
|
4
11
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
12
|
+
```bash
|
|
13
|
+
pnpm add @adhd/sox-embedding-provider
|
|
14
|
+
```
|
|
8
15
|
|
|
9
|
-
##
|
|
16
|
+
## Quick start
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { createEmbeddingProvider } from '@adhd/sox-embedding-provider';
|
|
20
|
+
|
|
21
|
+
const provider = await createEmbeddingProvider({
|
|
22
|
+
type: 'fastembed',
|
|
23
|
+
model: 'bge-small-en-v1.5',
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
console.log(provider.metadata);
|
|
27
|
+
// { modelId: 'bge-small-en-v1.5', dimensions: 384, maxTokens: 512, isRemote: false, isDeterministic: false }
|
|
28
|
+
|
|
29
|
+
const vec = await provider.embedSingle('The quick brown fox jumps over the lazy dog');
|
|
30
|
+
console.log(vec.length); // 384
|
|
31
|
+
|
|
32
|
+
for await (const v of provider.embedBatch(['first document', 'second document', 'third document'])) {
|
|
33
|
+
console.log(v.length); // 384, one vector per input text, streamed as each is ready
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## API reference
|
|
38
|
+
|
|
39
|
+
### `createEmbeddingProvider(config): Promise<EmbeddingProvider>`
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
interface EmbeddingProviderConfig {
|
|
43
|
+
type: string; // 'fastembed' | 'remote'
|
|
44
|
+
model: string;
|
|
45
|
+
options?: Record<string, unknown>;
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Throws `ResolutionError` if `type` is missing/unknown, or if the model/runtime cannot be loaded.
|
|
50
|
+
Never throws mid-call afterward — resolution failures happen only at factory time.
|
|
51
|
+
|
|
52
|
+
### `EmbeddingProvider`
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
interface EmbeddingProvider {
|
|
56
|
+
readonly metadata: EmbeddingProviderMetadata;
|
|
57
|
+
embedSingle(text: string, role?: EmbedRole): Promise<Float32Array>;
|
|
58
|
+
embedBatch(texts: string[], opts?: { role?: EmbedRole; batchSize?: number }): AsyncIterable<Float32Array>;
|
|
59
|
+
warmUp(texts: string[]): Promise<void>;
|
|
60
|
+
health(): EmbeddingHealth;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
type EmbedRole = 'document' | 'query';
|
|
64
|
+
|
|
65
|
+
interface EmbeddingProviderMetadata {
|
|
66
|
+
modelId: string;
|
|
67
|
+
dimensions: number;
|
|
68
|
+
maxTokens: number;
|
|
69
|
+
isRemote: boolean;
|
|
70
|
+
isDeterministic: boolean;
|
|
71
|
+
providerUri?: string;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
interface EmbeddingHealth {
|
|
75
|
+
configured: string; // e.g. 'fastembed:bge-base-en-v1.5'
|
|
76
|
+
active: string | null; // null until warm — never a placeholder model name
|
|
77
|
+
state: 'uninitialized' | 'warming' | 'real' | 'error';
|
|
78
|
+
dimensions: number | null;
|
|
79
|
+
last_error: string | null;
|
|
80
|
+
execution_provider?: string;
|
|
81
|
+
}
|
|
82
|
+
```
|
|
10
83
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
-
|
|
84
|
+
Every provider advertises its `dimensions` via `metadata` — never hardcode a vector dimension for
|
|
85
|
+
a model; read it from the provider you constructed. `warmUp()` is currently a no-op on every
|
|
86
|
+
shipped provider (fastembed and remote both report `isDeterministic: false`, and warm caching is
|
|
87
|
+
only meaningful for deterministic providers) — it's safe to call, but don't rely on it to
|
|
88
|
+
pre-populate a cache today.
|
|
16
89
|
|
|
17
|
-
|
|
90
|
+
### fastembed — local ONNX models
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
const provider = await createEmbeddingProvider({
|
|
94
|
+
type: 'fastembed',
|
|
95
|
+
model: 'bge-m3', // defaults to 'bge-base-en-v1.5' if omitted
|
|
96
|
+
options: { cacheDir: '/custom/model/cache/path' }, // optional; falls back to $SOX_EMBED_CACHE_DIR, then ~/.cache/sox/models
|
|
97
|
+
});
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Built-in models (`modelId` → dimensions):
|
|
101
|
+
|
|
102
|
+
| `modelId` | dim | max tokens | notes |
|
|
103
|
+
|---|---|---|---|
|
|
104
|
+
| `bge-small-en-v1.5` | 384 | 512 | lightweight, ~33M params |
|
|
105
|
+
| `bge-base-en-v1.5` | 768 | 512 | balanced, ~110M params (default) |
|
|
106
|
+
| `multilingual-e5-large` | 1024 | 512 | 100+ languages, ~335M params |
|
|
107
|
+
| `bge-m3` | 1024 | 8192 | 100+ languages, long context, ~570M params |
|
|
108
|
+
| `codexembed-400m` | 1024 | 8192 | code-only, ~1.6GB RAM, long context |
|
|
109
|
+
|
|
110
|
+
fastembed inference is routed through a single process-wide shared child process rather than a
|
|
111
|
+
worker per provider instance, so multiple `FastembedProvider`s constructed in the same Node process
|
|
112
|
+
(even concurrently) never race each other for the same native ONNX runtime.
|
|
113
|
+
|
|
114
|
+
### remote — call an HTTP embedding endpoint
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
const provider = await createEmbeddingProvider({
|
|
118
|
+
type: 'remote',
|
|
119
|
+
model: 'remote-768',
|
|
120
|
+
options: {
|
|
121
|
+
endpoint: 'https://your-embedding-service.example.com/v1',
|
|
122
|
+
apiKey: process.env.EMBEDDING_API_KEY,
|
|
123
|
+
dimensions: 768, // optional, default 768
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
`options.endpoint` is required — `createEmbeddingProvider` throws `ResolutionError` without it.
|
|
129
|
+
|
|
130
|
+
### Error taxonomy
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
class TransientEmbeddingError extends Error { readonly retryAfterMs?: number; }
|
|
134
|
+
class PermanentEmbeddingError extends Error {}
|
|
135
|
+
class ResolutionError extends Error {}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
- `ResolutionError` — factory-time only (bad config, model can't load). Never thrown mid-call.
|
|
139
|
+
- `TransientEmbeddingError` — the caller may retry (e.g. a transient network hiccup on a remote call).
|
|
140
|
+
- `PermanentEmbeddingError` — the caller must not retry (e.g. empty input text, an invalid API key shape).
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
import { TransientEmbeddingError, PermanentEmbeddingError } from '@adhd/sox-embedding-provider';
|
|
144
|
+
|
|
145
|
+
try {
|
|
146
|
+
await provider.embedSingle(text);
|
|
147
|
+
} catch (err) {
|
|
148
|
+
if (err instanceof TransientEmbeddingError) {
|
|
149
|
+
// back off and retry, honoring err.retryAfterMs if present
|
|
150
|
+
} else if (err instanceof PermanentEmbeddingError) {
|
|
151
|
+
// do not retry — the input or config itself is the problem
|
|
152
|
+
} else {
|
|
153
|
+
throw err;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Invariants
|
|
18
159
|
|
|
19
|
-
|
|
20
|
-
|
|
160
|
+
- `createEmbeddingProvider()` throws `ResolutionError` synchronously or as a rejection if the
|
|
161
|
+
config is invalid or the model/runtime cannot load — never a silent downgrade to another provider.
|
|
162
|
+
- Every provider advertises `{ modelId, dimensions, isRemote, isDeterministic, providerUri? }` via
|
|
163
|
+
`metadata` — callers never hardcode dimensions.
|
|
164
|
+
- `embedBatch()` returns `AsyncIterable<Float32Array>` — callers receive the first result before
|
|
165
|
+
the last batch finishes, which matters for sequential local inference.
|
|
166
|
+
- `warmUp()` is a no-op when `isDeterministic === false` — currently always true, since every
|
|
167
|
+
shipped provider hard-codes `isDeterministic: false`.
|
|
168
|
+
- `TransientEmbeddingError` → caller may retry; `PermanentEmbeddingError` → caller must not retry;
|
|
169
|
+
`ResolutionError` → factory-time only, never thrown mid-call.
|
package/dist/embedWorker.js
CHANGED
|
@@ -74,6 +74,7 @@
|
|
|
74
74
|
* not merely statistically less likely.
|
|
75
75
|
*/
|
|
76
76
|
import { parentPort } from 'node:worker_threads';
|
|
77
|
+
import { bootstrapChildTelemetry, childTelemetrySnapshot } from '@adhd/sox-telemetry';
|
|
77
78
|
// ── Rerank (cross-encoder) — real ONNX inference ──────────────────────────────
|
|
78
79
|
//
|
|
79
80
|
// Cross-encoder scoring uses a sequence-classification ONNX model run through
|
|
@@ -232,6 +233,11 @@ function softmax(logits) {
|
|
|
232
233
|
if (!parentPort) {
|
|
233
234
|
throw new Error('embedWorker must be run as a worker_thread, not directly');
|
|
234
235
|
}
|
|
236
|
+
// BL-618: worker composition root. A worker thread has its own module-level
|
|
237
|
+
// telemetry state (it never inherits the parent's initTelemetry), so bootstrap
|
|
238
|
+
// here and ack the state to the parent over parentPort.
|
|
239
|
+
bootstrapChildTelemetry({ service: 'embedding-provider', role: 'harness', logSink: 'file' });
|
|
240
|
+
parentPort.postMessage({ type: 'telemetry.ready', telemetry: childTelemetrySnapshot() });
|
|
235
241
|
let _queue = Promise.resolve();
|
|
236
242
|
/** Enqueue a request handler so it runs strictly after every previously queued one. */
|
|
237
243
|
function enqueue(task) {
|
package/dist/embedWorker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedWorker.js","sourceRoot":"","sources":["../src/embedWorker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0EG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"embedWorker.js","sourceRoot":"","sources":["../src/embedWorker.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;AA2DH,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQ/C;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"fastembedProcessHost.d.ts","sourceRoot":"","sources":["../src/fastembedProcessHost.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AA2DH,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQ/C;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CA8EjD"}
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
* internal: { __shutdown: true }
|
|
58
58
|
*/
|
|
59
59
|
import * as fs from 'node:fs';
|
|
60
|
-
import {
|
|
61
|
-
import { resolveFastembedLockPath } from './fastembedLock.js';
|
|
60
|
+
import { bootstrapChildTelemetry, childTelemetrySnapshot, log } from '@adhd/sox-telemetry';
|
|
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
|
|
@@ -136,6 +136,11 @@ export function checkAndClaimFastembedLock() {
|
|
|
136
136
|
// preserves today's exact behaviour there. See `fastembedLock.ts`'s
|
|
137
137
|
// `poolGroup` doc comment for why this must be checked before warning.
|
|
138
138
|
const ownPoolGroup = process.env['SOX_FASTEMBED_POOL_GROUP'];
|
|
139
|
+
// (BL-432) The OWNING service's identity, threaded from the parent via
|
|
140
|
+
// `SOX_FASTEMBED_SERVICE` (the same env pattern as `SOX_FASTEMBED_POOL_GROUP`
|
|
141
|
+
// directly above). `undefined` for a host whose owner never declared a
|
|
142
|
+
// service — see `fastembedLock.ts`'s `service` doc comment.
|
|
143
|
+
const ownService = resolveFastembedServiceLabel();
|
|
139
144
|
try {
|
|
140
145
|
if (fs.existsSync(lockPath)) {
|
|
141
146
|
const raw = fs.readFileSync(lockPath, 'utf8');
|
|
@@ -143,11 +148,24 @@ export function checkAndClaimFastembedLock() {
|
|
|
143
148
|
const isKnownPoolSibling = typeof prev.poolGroup === 'string' &&
|
|
144
149
|
ownPoolGroup !== undefined &&
|
|
145
150
|
prev.poolGroup === ownPoolGroup;
|
|
151
|
+
// (BL-432) The sequential-CLI false positive: a lock naming OUR OWN
|
|
152
|
+
// service (e.g. a previous run of the same CLI, or a second instance of
|
|
153
|
+
// the same service) is not "a genuinely unrelated fastembed host".
|
|
154
|
+
// Suppress it exactly as a pool sibling is suppressed. Requires BOTH
|
|
155
|
+
// sides to carry a real identity — `ownService === undefined` (owner
|
|
156
|
+
// never declared one) or an unlabelled/old lock keeps the original
|
|
157
|
+
// warn-on-any-live-pid behaviour.
|
|
158
|
+
const isSameService = typeof prev.service === 'string' &&
|
|
159
|
+
ownService !== undefined &&
|
|
160
|
+
prev.service === ownService;
|
|
146
161
|
if (typeof prev.pid === 'number' &&
|
|
147
162
|
prev.pid !== process.pid &&
|
|
148
163
|
isPidAlive(prev.pid) &&
|
|
149
|
-
!isKnownPoolSibling
|
|
164
|
+
!isKnownPoolSibling &&
|
|
165
|
+
!isSameService) {
|
|
166
|
+
const prevService = typeof prev.service === 'string' ? prev.service : 'unknown';
|
|
150
167
|
const msg = `another fastembed host process (pid ${prev.pid}, ` +
|
|
168
|
+
`service ${prevService}, ` +
|
|
151
169
|
`started ${prev.startedAt ?? 'unknown'}) is ALREADY RUNNING on this machine. ` +
|
|
152
170
|
`Concurrent onnxruntime-node CoreML/ANE execution across separate OS processes has ` +
|
|
153
171
|
`been observed to cause severe (25-50x) embed latency due to Neural Engine/hardware ` +
|
|
@@ -157,6 +175,7 @@ export function checkAndClaimFastembedLock() {
|
|
|
157
175
|
console.error(`[fastembed] WARNING (BL-331): ${msg}`);
|
|
158
176
|
log.warn('embedding_provider.fastembed.competing_host_detected', {
|
|
159
177
|
competing_pid: prev.pid,
|
|
178
|
+
competing_service: prevService,
|
|
160
179
|
competing_started_at: prev.startedAt ?? 'unknown',
|
|
161
180
|
lock_file: lockPath,
|
|
162
181
|
});
|
|
@@ -177,6 +196,7 @@ export function checkAndClaimFastembedLock() {
|
|
|
177
196
|
pid: process.pid,
|
|
178
197
|
startedAt: new Date().toISOString(),
|
|
179
198
|
...(ownPoolGroup !== undefined ? { poolGroup: ownPoolGroup } : {}),
|
|
199
|
+
...(ownService !== undefined ? { service: ownService } : {}),
|
|
180
200
|
};
|
|
181
201
|
fs.writeFileSync(lockPath, JSON.stringify(info));
|
|
182
202
|
}
|
|
@@ -379,15 +399,24 @@ process.on('message', (msg) => {
|
|
|
379
399
|
* (otelDefaultFor) and the default logDir lands under SOX_ECOSYSTEM_HOME when a
|
|
380
400
|
* test sandbox sets it, keeping test runs hermetic.
|
|
381
401
|
*
|
|
402
|
+
* BL-618: this now uses `bootstrapChildTelemetry` (the spawn-time convention)
|
|
403
|
+
* and ACKS its state to the parent with a `telemetry.ready` message, so the
|
|
404
|
+
* parent (`sharedFastembedProcess.ts`) can record this child in
|
|
405
|
+
* `telemetrySelfCheck().children` instead of trusting it silently.
|
|
406
|
+
*
|
|
382
407
|
* Non-fatal by construction: an init failure must never break embedding, so the
|
|
383
408
|
* call is guarded — telemetry is an observability aid, not a correctness
|
|
384
409
|
* mechanism.
|
|
385
410
|
*/
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
411
|
+
bootstrapChildTelemetry({ service: 'embedding-provider', role: 'harness', logSink: 'file' });
|
|
412
|
+
// BL-618: ack the child's telemetry state to the parent. Guarded against the
|
|
413
|
+
// parent already being gone (same BL-405 EPIPE rationale as `send` below).
|
|
414
|
+
if (process.connected) {
|
|
415
|
+
process.send?.({ type: 'telemetry.ready', telemetry: childTelemetrySnapshot() }, (err) => {
|
|
416
|
+
if (err) {
|
|
417
|
+
process.stderr.write(`[fastembed-host] telemetry.ready send failed (parent likely exited): ${err.message}\n`);
|
|
418
|
+
}
|
|
419
|
+
});
|
|
391
420
|
}
|
|
392
421
|
// Let the parent decide the process lifecycle (it never calls `.ref()`/relies
|
|
393
422
|
// on this process staying alive beyond its own `disconnect`/`kill`); nothing
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"fastembedProcessHost.js","sourceRoot":"","sources":["../src/fastembedProcessHost.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -118,7 +118,7 @@ export { FileSystemModelCache } from './cache.js';
|
|
|
118
118
|
* constructing their own — see `sharedOnnxWorker.ts` for the full
|
|
119
119
|
* root-cause writeup and rationale.
|
|
120
120
|
*/
|
|
121
|
-
export { getSharedOnnxWorker, SharedOnnxWorkerClient } from './sharedOnnxWorker.js';
|
|
121
|
+
export { getSharedOnnxWorker, SharedOnnxWorkerClient, resetSharedOnnxWorker } from './sharedOnnxWorker.js';
|
|
122
122
|
/**
|
|
123
123
|
* BL-238/BL-171 fix: the single shared fastembed CHILD PROCESS singleton.
|
|
124
124
|
* This package's own `FastembedProvider` routes ONNX inference through this
|
|
@@ -129,7 +129,7 @@ export { getSharedOnnxWorker, SharedOnnxWorkerClient } from './sharedOnnxWorker.
|
|
|
129
129
|
* `sharedFastembedProcess.ts` / `fastembedProcessHost.ts` for the full
|
|
130
130
|
* root-cause writeup and rationale.
|
|
131
131
|
*/
|
|
132
|
-
export { getSharedFastembedProcess, SharedFastembedProcessClient, } from './sharedFastembedProcess.js';
|
|
132
|
+
export { getSharedFastembedProcess, SharedFastembedProcessClient, resetSharedFastembedProcess, } from './sharedFastembedProcess.js';
|
|
133
133
|
/**
|
|
134
134
|
* (BUG-MEMORY-EMBED-HEAD-OF-LINE-BLOCKING-001 / BL-575) `getSharedFastembedProcess()`
|
|
135
135
|
* returns either a FIXED `FastembedProcessPool` (when `SOX_EMBED_POOL_SIZE`
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -40,7 +40,7 @@ export { FileSystemModelCache } from './cache.js';
|
|
|
40
40
|
* constructing their own — see `sharedOnnxWorker.ts` for the full
|
|
41
41
|
* root-cause writeup and rationale.
|
|
42
42
|
*/
|
|
43
|
-
export { getSharedOnnxWorker, SharedOnnxWorkerClient } from './sharedOnnxWorker.js';
|
|
43
|
+
export { getSharedOnnxWorker, SharedOnnxWorkerClient, resetSharedOnnxWorker } from './sharedOnnxWorker.js';
|
|
44
44
|
/**
|
|
45
45
|
* BL-238/BL-171 fix: the single shared fastembed CHILD PROCESS singleton.
|
|
46
46
|
* This package's own `FastembedProvider` routes ONNX inference through this
|
|
@@ -51,7 +51,7 @@ export { getSharedOnnxWorker, SharedOnnxWorkerClient } from './sharedOnnxWorker.
|
|
|
51
51
|
* `sharedFastembedProcess.ts` / `fastembedProcessHost.ts` for the full
|
|
52
52
|
* root-cause writeup and rationale.
|
|
53
53
|
*/
|
|
54
|
-
export { getSharedFastembedProcess, SharedFastembedProcessClient, } from './sharedFastembedProcess.js';
|
|
54
|
+
export { getSharedFastembedProcess, SharedFastembedProcessClient, resetSharedFastembedProcess, } from './sharedFastembedProcess.js';
|
|
55
55
|
export { FastembedProcessPool, AdaptiveFastembedProcessPool, FastembedBusyError, resolveFastembedPoolSize, resolveFastembedPoolPin, resolveFastembedPoolCeiling, resolveFastembedAdmissionLimit, } from './sharedFastembedProcess.js';
|
|
56
56
|
// ── Factory ───────────────────────────────────────────────────────────────────
|
|
57
57
|
export async function createEmbeddingProvider(config) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,iFAAiF;AAEjF,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA0CjC,gFAAgF;AAEhF,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACvC,YAAY,CAAqB;IAC1C,YAAY,OAAe,EAAE,YAAqB;QAChD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAmED,iFAAiF;AAEjF;;;;;GAKG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;GAOG;AACH,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|