ghagga-core 3.1.0 → 3.2.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.
Files changed (45) hide show
  1. package/dist/embed.d.ts +140 -0
  2. package/dist/embed.d.ts.map +1 -1
  3. package/dist/embed.js +288 -0
  4. package/dist/embed.js.map +1 -1
  5. package/dist/index.d.ts +4 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/memory/backfill.d.ts +58 -0
  10. package/dist/memory/backfill.d.ts.map +1 -0
  11. package/dist/memory/backfill.js +85 -0
  12. package/dist/memory/backfill.js.map +1 -0
  13. package/dist/memory/sqlite.d.ts +78 -12
  14. package/dist/memory/sqlite.d.ts.map +1 -1
  15. package/dist/memory/sqlite.js +265 -85
  16. package/dist/memory/sqlite.js.map +1 -1
  17. package/dist/pipeline/gather-context.d.ts.map +1 -1
  18. package/dist/pipeline/gather-context.js +4 -2
  19. package/dist/pipeline/gather-context.js.map +1 -1
  20. package/dist/pipeline/gather-safe.d.ts +24 -4
  21. package/dist/pipeline/gather-safe.d.ts.map +1 -1
  22. package/dist/pipeline/gather-safe.js +42 -6
  23. package/dist/pipeline/gather-safe.js.map +1 -1
  24. package/dist/pipeline/prepare.d.ts.map +1 -1
  25. package/dist/pipeline/prepare.js +26 -0
  26. package/dist/pipeline/prepare.js.map +1 -1
  27. package/dist/pipeline/state.d.ts +3 -1
  28. package/dist/pipeline/state.d.ts.map +1 -1
  29. package/dist/providers/gateway-discovery.d.ts +5 -5
  30. package/dist/providers/gateway-discovery.d.ts.map +1 -1
  31. package/dist/providers/gateway-discovery.js +11 -9
  32. package/dist/providers/gateway-discovery.js.map +1 -1
  33. package/dist/providers/gateway.d.ts +87 -0
  34. package/dist/providers/gateway.d.ts.map +1 -1
  35. package/dist/providers/gateway.js +386 -8
  36. package/dist/providers/gateway.js.map +1 -1
  37. package/dist/types.d.ts +40 -2
  38. package/dist/types.d.ts.map +1 -1
  39. package/dist/types.js.map +1 -1
  40. package/dist/utils/concurrency.d.ts.map +1 -1
  41. package/dist/utils/concurrency.js +37 -1
  42. package/dist/utils/concurrency.js.map +1 -1
  43. package/dist/utils/llm-timeout.d.ts +1 -1
  44. package/dist/utils/llm-timeout.d.ts.map +1 -1
  45. package/package.json +8 -8
package/dist/embed.d.ts CHANGED
@@ -5,13 +5,152 @@
5
5
  * - Feature #4: Hybrid search (BM25 + semantic vector search)
6
6
  * - Feature #12: Semantic ranking of findings
7
7
  * - Feature #13: Negative example filtering
8
+ *
9
+ * Also provides config resolution + a provider registry/factory
10
+ * (`resolveEmbeddingConfig` / `createEmbeddingProvider`) so every
11
+ * construction site (server, CLI, Action) can share one config surface.
12
+ * Default provider is `none` — no behavior change until a context opts in.
8
13
  */
14
+ import { z } from 'zod';
9
15
  export interface EmbeddingProvider {
10
16
  embed(text: string): Promise<number[]>;
11
17
  embedBatch(texts: string[]): Promise<number[][]>;
12
18
  dimension: number;
13
19
  }
14
20
  export type EmbeddingProviderFactory = () => EmbeddingProvider | null;
21
+ /**
22
+ * Thrown by provider implementations when an embed/embedBatch call fails
23
+ * (network error, non-2xx response, unparseable body). Callers at the
24
+ * search/save layer are responsible for catching this and degrading
25
+ * gracefully (spec: "Graceful Degradation on Provider/API Failure") —
26
+ * this module never swallows the failure itself.
27
+ */
28
+ export declare class EmbeddingProviderError extends Error {
29
+ constructor(message: string, options?: ErrorOptions);
30
+ }
31
+ declare const embeddingConfigSchema: z.ZodObject<{
32
+ provider: z.ZodDefault<z.ZodString>;
33
+ model: z.ZodOptional<z.ZodString>;
34
+ baseUrl: z.ZodOptional<z.ZodString>;
35
+ apiKey: z.ZodOptional<z.ZodString>;
36
+ dimension: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
37
+ candidateK: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
38
+ }, z.core.$strip>;
39
+ export type EmbeddingConfig = z.infer<typeof embeddingConfigSchema>;
40
+ /**
41
+ * Resolve embedding config from an env-like record (design D2).
42
+ * Server reads `process.env` directly; CLI/Action map their own
43
+ * config/inputs onto these same keys before calling this.
44
+ */
45
+ export declare function resolveEmbeddingConfig(env: Record<string, string | undefined>): EmbeddingConfig;
46
+ /**
47
+ * Resolve a concrete EmbeddingProvider from config (spec: "Provider
48
+ * Selection via Registry/Factory"). Unknown provider ids fall back to
49
+ * `none` and log a warning instead of throwing.
50
+ */
51
+ export declare function createEmbeddingProvider(config: EmbeddingConfig): EmbeddingProvider | null;
52
+ interface OpenAICompatibleProviderConfig {
53
+ baseUrl: string;
54
+ model: string;
55
+ dimension: number;
56
+ apiKey?: string;
57
+ }
58
+ /**
59
+ * Generic `/v1/embeddings`-shaped HTTP provider (design D1). Covers
60
+ * OpenAI, Voyage-compatible endpoints, and self-hosted servers (Ollama,
61
+ * LM Studio, text-embeddings-inference) by base URL alone.
62
+ */
63
+ export declare class OpenAICompatibleEmbeddingProvider implements EmbeddingProvider {
64
+ readonly dimension: number;
65
+ private readonly baseUrl;
66
+ private readonly model;
67
+ private readonly apiKey?;
68
+ constructor(config: OpenAICompatibleProviderConfig);
69
+ embed(text: string): Promise<number[]>;
70
+ /** Issues ONE request for all inputs (spec: "Batched Embedding Calls"). */
71
+ embedBatch(texts: string[]): Promise<number[][]>;
72
+ }
73
+ /**
74
+ * Default local model + dimension used when `EMBEDDING_PROVIDER=local` is
75
+ * selected without an explicit `EMBEDDING_MODEL`/`EMBEDDING_DIMENSION`
76
+ * (design D7, task 7.2).
77
+ */
78
+ export declare const DEFAULT_LOCAL_MODEL = "Xenova/all-MiniLM-L6-v2";
79
+ export declare const DEFAULT_LOCAL_DIMENSION = 384;
80
+ interface LocalEmbeddingProviderConfig {
81
+ model: string;
82
+ dimension: number;
83
+ }
84
+ /**
85
+ * Output shape of a `@xenova/transformers` feature-extraction pipeline
86
+ * call — the real `Tensor` return value exposes `.tolist()`. Hand-rolled
87
+ * instead of importing the package's types because `@xenova/transformers`
88
+ * is an undeclared, user-installed optional peer and may not be present.
89
+ */
90
+ interface TensorLike {
91
+ tolist(): number[][];
92
+ }
93
+ type LocalPipelineFn = (texts: string[], options: {
94
+ pooling: 'mean';
95
+ normalize: true;
96
+ }) => Promise<TensorLike>;
97
+ /**
98
+ * Loads (and returns) a ready-to-call feature-extraction pipeline for
99
+ * `model`. Injectable so tests can simulate import/init success or
100
+ * failure without the optional package actually being installed;
101
+ * defaults to {@link defaultLoadLocalPipeline} in production.
102
+ */
103
+ export type LoadLocalPipeline = (model: string) => Promise<LocalPipelineFn>;
104
+ /**
105
+ * Local, offline embedding provider backed by `@xenova/transformers`
106
+ * (Transformers.js) running entirely in-process — no network calls, no
107
+ * API key required.
108
+ *
109
+ * Optional dependency handling (design D7, task 7.2): the underlying
110
+ * pipeline is loaded lazily on first `embed`/`embedBatch` call, not in
111
+ * the constructor or the factory. If the dynamic import fails (package
112
+ * not installed) OR the pipeline itself throws during initialization
113
+ * (bad model id, unsupported runtime), this provider logs a warning once
114
+ * and permanently degrades — from then on every `embed`/`embedBatch`
115
+ * call THROWS an {@link EmbeddingProviderError} rather than producing a
116
+ * vector. It must NOT return zero vectors: a zero vector persisted on the
117
+ * save path is an indistinguishable-but-useless "valid" embedding (it
118
+ * passes the read guard, contributes cosine 0 forever, and is invisible
119
+ * to backfill because its model/dim MATCH). Throwing instead routes the
120
+ * caller to the correct fallback: the save path catches it and persists a
121
+ * NULL embedding (backfillable later once the dependency is fixed), and
122
+ * the search path catches it and degrades to keyword-only for that query.
123
+ * The "warn once, never crash the caller" intent is preserved — the warn
124
+ * fires a single time on first failure, and the throw is always caught by
125
+ * the save/search layers.
126
+ */
127
+ export declare class LocalEmbeddingProvider implements EmbeddingProvider {
128
+ readonly dimension: number;
129
+ private readonly model;
130
+ private readonly loadPipeline;
131
+ private pipelinePromise;
132
+ private degraded;
133
+ constructor(config: LocalEmbeddingProviderConfig, loadPipeline?: LoadLocalPipeline);
134
+ embed(text: string): Promise<number[]>;
135
+ embedBatch(texts: string[]): Promise<number[][]>;
136
+ /**
137
+ * Lazily loads and memoizes the pipeline. On failure, warns once and
138
+ * permanently marks this instance as degraded (`getPipeline` returns
139
+ * `null` from then on) — the loader is never retried on later calls.
140
+ */
141
+ private getPipeline;
142
+ }
143
+ /**
144
+ * Deterministic hash-of-tokens provider for tests (design D8). No network
145
+ * calls, no randomness: the same text always yields the same unit vector,
146
+ * enabling reproducible cosine-similarity assertions across suites.
147
+ */
148
+ export declare class FakeEmbeddingProvider implements EmbeddingProvider {
149
+ readonly dimension: number;
150
+ constructor(dimension?: number);
151
+ embed(text: string): Promise<number[]>;
152
+ embedBatch(texts: string[]): Promise<number[][]>;
153
+ }
15
154
  /**
16
155
  * Cosine similarity between two vectors of equal length.
17
156
  */
@@ -27,4 +166,5 @@ export declare function serializeEmbedding(vec: number[]): Buffer;
27
166
  * BLOB columns as Uint8Array, which has no readFloatLE method.
28
167
  */
29
168
  export declare function deserializeEmbedding(buf: Buffer | Uint8Array): number[];
169
+ export {};
30
170
  //# sourceMappingURL=embed.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,wBAAwB,GAAG,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAItE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAWjE;AAID;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAMxD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,EAAE,CAQvE"}
1
+ {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"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"}
package/dist/embed.js CHANGED
@@ -5,7 +5,295 @@
5
5
  * - Feature #4: Hybrid search (BM25 + semantic vector search)
6
6
  * - Feature #12: Semantic ranking of findings
7
7
  * - Feature #13: Negative example filtering
8
+ *
9
+ * Also provides config resolution + a provider registry/factory
10
+ * (`resolveEmbeddingConfig` / `createEmbeddingProvider`) so every
11
+ * construction site (server, CLI, Action) can share one config surface.
12
+ * Default provider is `none` — no behavior change until a context opts in.
13
+ */
14
+ import { z } from 'zod';
15
+ /**
16
+ * Thrown by provider implementations when an embed/embedBatch call fails
17
+ * (network error, non-2xx response, unparseable body). Callers at the
18
+ * search/save layer are responsible for catching this and degrading
19
+ * gracefully (spec: "Graceful Degradation on Provider/API Failure") —
20
+ * this module never swallows the failure itself.
8
21
  */
22
+ export class EmbeddingProviderError extends Error {
23
+ constructor(message, options) {
24
+ super(message, options);
25
+ this.name = 'EmbeddingProviderError';
26
+ }
27
+ }
28
+ // ─── Config Resolution ─────────────────────────────────────────
29
+ const embeddingConfigSchema = z.object({
30
+ /** Provider id, e.g. `none` | `openai-compatible` | `local`. Not enum-restricted here — unknown ids are handled (fallback + warn) by createEmbeddingProvider, not by config parsing. */
31
+ provider: z.string().trim().min(1).default('none'),
32
+ model: z.string().trim().min(1).optional(),
33
+ baseUrl: z.string().trim().min(1).optional(),
34
+ apiKey: z.string().trim().min(1).optional(),
35
+ dimension: z.coerce.number().int().positive().optional(),
36
+ /** Bounded cosine candidate set size (design D4). Read by later PRs. */
37
+ candidateK: z.coerce.number().int().positive().default(200),
38
+ });
39
+ /**
40
+ * Resolve embedding config from an env-like record (design D2).
41
+ * Server reads `process.env` directly; CLI/Action map their own
42
+ * config/inputs onto these same keys before calling this.
43
+ */
44
+ export function resolveEmbeddingConfig(env) {
45
+ return embeddingConfigSchema.parse({
46
+ provider: env.EMBEDDING_PROVIDER,
47
+ model: env.EMBEDDING_MODEL,
48
+ baseUrl: env.EMBEDDING_BASE_URL,
49
+ apiKey: env.EMBEDDING_API_KEY,
50
+ dimension: env.EMBEDDING_DIMENSION,
51
+ candidateK: env.EMBEDDING_CANDIDATE_K,
52
+ });
53
+ }
54
+ /**
55
+ * Registry of known provider ids. `local` (design D7) never throws or
56
+ * requires config: it falls back to `DEFAULT_LOCAL_MODEL`/`DEFAULT_LOCAL_DIMENSION`
57
+ * when `EMBEDDING_MODEL`/`EMBEDDING_DIMENSION` are unset, and the underlying
58
+ * `@xenova/transformers` package is loaded lazily on first use — a missing
59
+ * or failing optional dependency degrades the provider instance itself
60
+ * (never the factory) to keyword-only output. The GitHub Action never
61
+ * reaches this branch: its own config resolver coerces `local` → `none`
62
+ * before calling `createEmbeddingProvider` (task 5.3), and its `ncc` build
63
+ * excludes `@xenova/transformers` from the bundle entirely (task 7.3).
64
+ */
65
+ const providerRegistry = {
66
+ none: () => null,
67
+ 'openai-compatible': (config) => {
68
+ if (!config.baseUrl || !config.model || !config.dimension) {
69
+ console.warn('[ghagga] embedding provider "openai-compatible" requires baseUrl, model, and dimension — falling back to none.');
70
+ return null;
71
+ }
72
+ return new OpenAICompatibleEmbeddingProvider({
73
+ baseUrl: config.baseUrl,
74
+ model: config.model,
75
+ dimension: config.dimension,
76
+ apiKey: config.apiKey,
77
+ });
78
+ },
79
+ local: (config) => new LocalEmbeddingProvider({
80
+ model: config.model ?? DEFAULT_LOCAL_MODEL,
81
+ dimension: config.dimension ?? DEFAULT_LOCAL_DIMENSION,
82
+ }),
83
+ };
84
+ /**
85
+ * Resolve a concrete EmbeddingProvider from config (spec: "Provider
86
+ * Selection via Registry/Factory"). Unknown provider ids fall back to
87
+ * `none` and log a warning instead of throwing.
88
+ */
89
+ export function createEmbeddingProvider(config) {
90
+ const build = providerRegistry[config.provider];
91
+ if (!build) {
92
+ console.warn(`[ghagga] Unknown embedding provider id "${config.provider}" — falling back to none.`);
93
+ return null;
94
+ }
95
+ return build(config);
96
+ }
97
+ /**
98
+ * Generic `/v1/embeddings`-shaped HTTP provider (design D1). Covers
99
+ * OpenAI, Voyage-compatible endpoints, and self-hosted servers (Ollama,
100
+ * LM Studio, text-embeddings-inference) by base URL alone.
101
+ */
102
+ export class OpenAICompatibleEmbeddingProvider {
103
+ dimension;
104
+ baseUrl;
105
+ model;
106
+ apiKey;
107
+ constructor(config) {
108
+ this.baseUrl = config.baseUrl.replace(/\/+$/, '');
109
+ this.model = config.model;
110
+ this.dimension = config.dimension;
111
+ this.apiKey = config.apiKey;
112
+ }
113
+ async embed(text) {
114
+ const vectors = await this.embedBatch([text]);
115
+ const [vector] = vectors;
116
+ return vector;
117
+ }
118
+ /** Issues ONE request for all inputs (spec: "Batched Embedding Calls"). */
119
+ async embedBatch(texts) {
120
+ let response;
121
+ try {
122
+ response = await fetch(`${this.baseUrl}/embeddings`, {
123
+ method: 'POST',
124
+ headers: {
125
+ 'Content-Type': 'application/json',
126
+ ...(this.apiKey ? { Authorization: `Bearer ${this.apiKey}` } : {}),
127
+ },
128
+ body: JSON.stringify({ model: this.model, input: texts }),
129
+ });
130
+ }
131
+ catch (error) {
132
+ throw new EmbeddingProviderError(`Embedding request to ${this.baseUrl}/embeddings failed: ${error.message}`, { cause: error });
133
+ }
134
+ if (!response.ok) {
135
+ throw new EmbeddingProviderError(`Embedding API returned ${response.status} ${response.statusText}`);
136
+ }
137
+ let body;
138
+ try {
139
+ body = (await response.json());
140
+ }
141
+ catch (error) {
142
+ throw new EmbeddingProviderError(`Failed to parse embedding API response: ${error.message}`, { cause: error });
143
+ }
144
+ if (!Array.isArray(body.data)) {
145
+ throw new EmbeddingProviderError('Embedding API response is missing a "data" array');
146
+ }
147
+ return body.data.map((item, index) => {
148
+ if (!Array.isArray(item.embedding)) {
149
+ throw new EmbeddingProviderError(`Embedding API response is missing "embedding" at data[${index}]`);
150
+ }
151
+ return item.embedding;
152
+ });
153
+ }
154
+ }
155
+ // ─── Local Transformers.js Provider (Optional) ─────────────────
156
+ /**
157
+ * Default local model + dimension used when `EMBEDDING_PROVIDER=local` is
158
+ * selected without an explicit `EMBEDDING_MODEL`/`EMBEDDING_DIMENSION`
159
+ * (design D7, task 7.2).
160
+ */
161
+ export const DEFAULT_LOCAL_MODEL = 'Xenova/all-MiniLM-L6-v2';
162
+ export const DEFAULT_LOCAL_DIMENSION = 384;
163
+ const LOCAL_MODULE_SPECIFIER = '@xenova/transformers';
164
+ async function defaultLoadLocalPipeline(model) {
165
+ // Lazy + dynamic on purpose (design D7): `@xenova/transformers` is an
166
+ // undeclared user-installed optional peer, never statically imported, and the
167
+ // Action's `ncc` build excludes it from the bundle entirely (task 7.3). Routing the
168
+ // specifier through a `string`-typed local (rather than passing the
169
+ // string literal directly to `import()`) also stops TypeScript from
170
+ // trying to resolve the module's types at compile time, which would
171
+ // fail whenever the optional dependency isn't installed.
172
+ const specifier = LOCAL_MODULE_SPECIFIER;
173
+ const transformers = (await import(specifier));
174
+ return transformers.pipeline('feature-extraction', model);
175
+ }
176
+ /**
177
+ * Local, offline embedding provider backed by `@xenova/transformers`
178
+ * (Transformers.js) running entirely in-process — no network calls, no
179
+ * API key required.
180
+ *
181
+ * Optional dependency handling (design D7, task 7.2): the underlying
182
+ * pipeline is loaded lazily on first `embed`/`embedBatch` call, not in
183
+ * the constructor or the factory. If the dynamic import fails (package
184
+ * not installed) OR the pipeline itself throws during initialization
185
+ * (bad model id, unsupported runtime), this provider logs a warning once
186
+ * and permanently degrades — from then on every `embed`/`embedBatch`
187
+ * call THROWS an {@link EmbeddingProviderError} rather than producing a
188
+ * vector. It must NOT return zero vectors: a zero vector persisted on the
189
+ * save path is an indistinguishable-but-useless "valid" embedding (it
190
+ * passes the read guard, contributes cosine 0 forever, and is invisible
191
+ * to backfill because its model/dim MATCH). Throwing instead routes the
192
+ * caller to the correct fallback: the save path catches it and persists a
193
+ * NULL embedding (backfillable later once the dependency is fixed), and
194
+ * the search path catches it and degrades to keyword-only for that query.
195
+ * The "warn once, never crash the caller" intent is preserved — the warn
196
+ * fires a single time on first failure, and the throw is always caught by
197
+ * the save/search layers.
198
+ */
199
+ export class LocalEmbeddingProvider {
200
+ dimension;
201
+ model;
202
+ loadPipeline;
203
+ pipelinePromise = null;
204
+ degraded = false;
205
+ constructor(config, loadPipeline = defaultLoadLocalPipeline) {
206
+ this.model = config.model;
207
+ this.dimension = config.dimension;
208
+ this.loadPipeline = loadPipeline;
209
+ }
210
+ async embed(text) {
211
+ const vectors = await this.embedBatch([text]);
212
+ const [vector] = vectors;
213
+ return vector;
214
+ }
215
+ async embedBatch(texts) {
216
+ const pipe = await this.getPipeline();
217
+ if (!pipe) {
218
+ // Degraded (import/init failed): throw instead of returning zero
219
+ // vectors so the save path persists NULL (backfillable) and the
220
+ // search path degrades to keyword-only. See class-level docstring.
221
+ throw new EmbeddingProviderError(`Local embedding provider "${this.model}" is degraded ` +
222
+ `(@xenova/transformers missing or pipeline init failed) — no embedding produced.`);
223
+ }
224
+ const output = await pipe(texts, { pooling: 'mean', normalize: true });
225
+ return output.tolist();
226
+ }
227
+ /**
228
+ * Lazily loads and memoizes the pipeline. On failure, warns once and
229
+ * permanently marks this instance as degraded (`getPipeline` returns
230
+ * `null` from then on) — the loader is never retried on later calls.
231
+ */
232
+ async getPipeline() {
233
+ if (this.degraded) {
234
+ return null;
235
+ }
236
+ if (!this.pipelinePromise) {
237
+ this.pipelinePromise = this.loadPipeline(this.model);
238
+ }
239
+ try {
240
+ return await this.pipelinePromise;
241
+ }
242
+ catch (error) {
243
+ this.degraded = true;
244
+ console.warn(`[ghagga] local embedding provider "${this.model}" failed to load ` +
245
+ `(@xenova/transformers missing or pipeline init failed) — degrading ` +
246
+ `to keyword-only ranking for the rest of this process: ${error.message}`);
247
+ return null;
248
+ }
249
+ }
250
+ }
251
+ // ─── Fake Provider (Testing) ───────────────────────────────────
252
+ /**
253
+ * Deterministic hash-of-tokens provider for tests (design D8). No network
254
+ * calls, no randomness: the same text always yields the same unit vector,
255
+ * enabling reproducible cosine-similarity assertions across suites.
256
+ */
257
+ export class FakeEmbeddingProvider {
258
+ dimension;
259
+ constructor(dimension = 8) {
260
+ this.dimension = dimension;
261
+ }
262
+ async embed(text) {
263
+ return hashTokensToUnitVector(text, this.dimension);
264
+ }
265
+ async embedBatch(texts) {
266
+ return texts.map((text) => hashTokensToUnitVector(text, this.dimension));
267
+ }
268
+ }
269
+ function hashTokensToUnitVector(text, dimension) {
270
+ const vector = new Array(dimension).fill(0);
271
+ const tokens = text.toLowerCase().split(/\s+/).filter(Boolean);
272
+ for (const token of tokens) {
273
+ let hash = 0;
274
+ for (let i = 0; i < token.length; i++) {
275
+ hash = (hash * 31 + token.charCodeAt(i)) >>> 0;
276
+ }
277
+ vector[hash % dimension] += 1;
278
+ }
279
+ // Degenerate input (empty string / all-whitespace) still needs a valid
280
+ // unit vector rather than a NaN-producing zero-norm division.
281
+ // Note: a manual loop (not `.every(x => x === 0)`) avoids TS's inferred
282
+ // array-literal-type narrowing, which would otherwise narrow `vector` to
283
+ // `0[]` inside the branch and reject the `vector[0] = 1` assignment.
284
+ let hasNonZeroComponent = false;
285
+ for (const component of vector) {
286
+ if (component !== 0) {
287
+ hasNonZeroComponent = true;
288
+ break;
289
+ }
290
+ }
291
+ if (!hasNonZeroComponent) {
292
+ vector[0] = 1;
293
+ }
294
+ const norm = Math.sqrt(vector.reduce((sum, component) => sum + component * component, 0));
295
+ return vector.map((component) => component / norm);
296
+ }
9
297
  // ─── Vector Math ───────────────────────────────────────────────
10
298
  /**
11
299
  * Cosine similarity between two vectors of equal length.
package/dist/embed.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"embed.js","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,kEAAkE;AAElE;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAW,EAAE,CAAW;IACvD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC;AACvC,CAAC;AAED,kEAAkE;AAElE;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAa;IAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAwB;IAC3D,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/F,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACzB,MAAM,GAAG,GAAa,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"embed.js","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -60,9 +60,11 @@ export type { ExploitabilityDetail, ExploitabilityLabel } from './exploitability
60
60
  export { analyzeExploitability, checkReachability, extractVulnPackages, findEntryPoints, tracePackageImports, } from './exploitability/index.js';
61
61
  export type { CodeIntelMetadata, CodeIntelProvider, CodeIntelResult, SymbolReference, } from './code-intel/index.js';
62
62
  export { buildCodeIntelContext, McpCodeIntelClient } from './code-intel/index.js';
63
- export type { EmbeddingProvider, EmbeddingProviderFactory } from './embed.js';
64
- export { cosineSimilarity, deserializeEmbedding, serializeEmbedding } from './embed.js';
63
+ export type { EmbeddingConfig, EmbeddingProvider, EmbeddingProviderFactory } from './embed.js';
64
+ export { cosineSimilarity, createEmbeddingProvider, deserializeEmbedding, EmbeddingProviderError, FakeEmbeddingProvider, OpenAICompatibleEmbeddingProvider, resolveEmbeddingConfig, serializeEmbedding, } from './embed.js';
65
65
  export type { AuthorTrustScore, AuthorTrustTier, NegativeExample } from './types.js';
66
+ export type { BackfillOptions, BackfillResult } from './memory/backfill.js';
67
+ export { backfillEmbeddings } from './memory/backfill.js';
66
68
  export type { TrustScoringOptions } from './trust/index.js';
67
69
  export { computeAuthorTrustScore, getReviewModeForTier } from './trust/index.js';
68
70
  export { rankFindings } from './ranking/index.js';
@@ -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
@@ -42,7 +42,8 @@ export { buildGraph, buildGraphIncremental, buildReverseIndex, computeBlastRadiu
42
42
  export { computeHealthScore, computeTrend, formatTopIssues, generateRecommendations, getScoreColor, loadHistory, SEVERITY_WEIGHTS, saveHistory, } from './health/index.js';
43
43
  export { analyzeExploitability, checkReachability, extractVulnPackages, findEntryPoints, tracePackageImports, } from './exploitability/index.js';
44
44
  export { buildCodeIntelContext, McpCodeIntelClient } from './code-intel/index.js';
45
- export { cosineSimilarity, deserializeEmbedding, serializeEmbedding } from './embed.js';
45
+ export { cosineSimilarity, createEmbeddingProvider, deserializeEmbedding, EmbeddingProviderError, FakeEmbeddingProvider, OpenAICompatibleEmbeddingProvider, resolveEmbeddingConfig, serializeEmbedding, } from './embed.js';
46
+ export { backfillEmbeddings } from './memory/backfill.js';
46
47
  export { computeAuthorTrustScore, getReviewModeForTier } from './trust/index.js';
47
48
  // ─── Semantic Ranking (Intelligence v2 — Feature #12) ──────────
48
49
  export { rankFindings } from './ranking/index.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Backfill mechanism for per-row embeddings (design D6, spec: "Backfill of
3
+ * NULL-Embedding Observations").
4
+ *
5
+ * Reusable across every storage backend that implements the backfill
6
+ * extension of `MemoryStorage` (`SqliteMemoryStorage`, `PostgresMemoryStorage`).
7
+ * Iterates observations needing an embedding in id-ordered batches, calls
8
+ * the active provider's `embedBatch` ONCE per batch (never N `embed()` calls
9
+ * — spec: "Batched Embedding Calls"), and persists the result.
10
+ *
11
+ * Idempotent + resumable: each batch is selected fresh from storage via
12
+ * `listObservationsNeedingEmbedding`, which only ever matches NULL-embedding
13
+ * rows (plus model/dimension-mismatched rows when `reEmbed` is set) — a row
14
+ * already embedded with a matching model/dimension is never re-selected. A
15
+ * failure mid-run (network error, process crash) leaves all rows updated
16
+ * before the failure committed (SQLite: flushed to disk after each
17
+ * successfully completed batch via `storage.flush()`; PostgreSQL: each
18
+ * `UPDATE` commits per-statement, no explicit transaction) — re-running this
19
+ * function picks up exactly where it left off with no duplicate work.
20
+ */
21
+ import type { EmbeddingProvider } from '../embed.js';
22
+ import type { MemoryStorage } from '../types.js';
23
+ export interface BackfillOptions {
24
+ /** Rows processed per `embedBatch()` call. Defaults to 100 (design D6). */
25
+ batchSize?: number;
26
+ /** Max total rows to process across the whole run. Unlimited when omitted. */
27
+ limit?: number;
28
+ /**
29
+ * Also re-embed rows whose stored `embedding_model`/`embedding_dim`
30
+ * mismatches the active provider — not just NULL-embedding rows. Use
31
+ * after a provider/model swap (design D6, task 8.3 rollout note).
32
+ * Defaults to false.
33
+ */
34
+ reEmbed?: boolean;
35
+ /** Delay (ms) between batches — rate/cost control for paid API providers. Defaults to 0. */
36
+ delayMs?: number;
37
+ /** Optional progress callback, invoked after each successfully committed batch. */
38
+ onProgress?: (progress: {
39
+ batch: number;
40
+ batchSize: number;
41
+ totalProcessed: number;
42
+ }) => void;
43
+ }
44
+ export interface BackfillResult {
45
+ totalProcessed: number;
46
+ totalBatches: number;
47
+ }
48
+ /**
49
+ * Run the backfill against `storage`, using `provider` as the active
50
+ * embedding provider and `activeModel` as the model id to persist alongside
51
+ * each embedding.
52
+ *
53
+ * Throws if `storage` doesn't implement the backfill extension methods
54
+ * (`listObservationsNeedingEmbedding` / `updateObservationEmbedding`) — e.g.
55
+ * `EngramMemoryStorage`, which has no local embedding column to backfill.
56
+ */
57
+ export declare function backfillEmbeddings(storage: MemoryStorage, provider: EmbeddingProvider, activeModel: string, options?: BackfillOptions): Promise<BackfillResult>;
58
+ //# sourceMappingURL=backfill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backfill.d.ts","sourceRoot":"","sources":["../../src/memory/backfill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC/F;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAID;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,iBAAiB,EAC3B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAuEzB"}