agent-discover 1.2.0 → 1.2.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/agent-desk-plugin.json +1 -1
- package/dist/domain/registry.d.ts +3 -1
- package/dist/domain/registry.d.ts.map +1 -1
- package/dist/domain/registry.js +27 -14
- package/dist/domain/registry.js.map +1 -1
- package/dist/embeddings/factory.d.ts +4 -0
- package/dist/embeddings/factory.d.ts.map +1 -0
- package/dist/embeddings/factory.js +58 -0
- package/dist/embeddings/factory.js.map +1 -0
- package/dist/embeddings/index.d.ts +15 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +36 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/embeddings/local.d.ts +13 -0
- package/dist/embeddings/local.d.ts.map +1 -0
- package/dist/embeddings/local.js +125 -0
- package/dist/embeddings/local.js.map +1 -0
- package/dist/embeddings/none.d.ts +10 -0
- package/dist/embeddings/none.d.ts.map +1 -0
- package/dist/embeddings/none.js +24 -0
- package/dist/embeddings/none.js.map +1 -0
- package/dist/embeddings/openai.d.ts +13 -0
- package/dist/embeddings/openai.d.ts.map +1 -0
- package/dist/embeddings/openai.js +66 -0
- package/dist/embeddings/openai.js.map +1 -0
- package/dist/embeddings/types.d.ts +37 -0
- package/dist/embeddings/types.d.ts.map +1 -0
- package/dist/embeddings/types.js +28 -0
- package/dist/embeddings/types.js.map +1 -0
- package/package.json +1 -1
- package/dist/domain/embeddings.d.ts +0 -12
- package/dist/domain/embeddings.d.ts.map +0 -1
- package/dist/domain/embeddings.js +0 -87
- package/dist/domain/embeddings.js.map +0 -1
package/agent-desk-plugin.json
CHANGED
|
@@ -4,8 +4,9 @@ import type { ServerEntry, ServerCreateInput, ServerUpdateInput, ServerTool } fr
|
|
|
4
4
|
export declare class RegistryService {
|
|
5
5
|
private readonly db;
|
|
6
6
|
private readonly events;
|
|
7
|
-
private
|
|
7
|
+
private embeddingsPromise;
|
|
8
8
|
constructor(db: Db, events: EventBus);
|
|
9
|
+
private getEmbeddings;
|
|
9
10
|
register(input: ServerCreateInput): ServerEntry;
|
|
10
11
|
update(name: string, updates: ServerUpdateInput): ServerEntry;
|
|
11
12
|
updateById(id: number, updates: ServerUpdateInput): ServerEntry;
|
|
@@ -43,6 +44,7 @@ export declare class RegistryService {
|
|
|
43
44
|
}>): Promise<{
|
|
44
45
|
embedded: number;
|
|
45
46
|
skipped: number;
|
|
47
|
+
provider: string;
|
|
46
48
|
}>;
|
|
47
49
|
getTools(serverId: number): ServerTool[];
|
|
48
50
|
clearTools(serverId: number): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/domain/registry.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA2JjG,qBAAa,eAAe;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/domain/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/domain/registry.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// and uninstallation of MCP servers.
|
|
6
6
|
// =============================================================================
|
|
7
7
|
import { NotFoundError, ValidationError, ConflictError } from '../types.js';
|
|
8
|
-
import {
|
|
8
|
+
import { getEmbeddingProvider, cosineSimilarity, encodeEmbedding, decodeEmbedding, } from '../embeddings/index.js';
|
|
9
9
|
const VALID_NAME = /^[a-zA-Z0-9][a-zA-Z0-9._-]*$/;
|
|
10
10
|
// Map natural-language verbs to canonical CRUD verbs used in tool names.
|
|
11
11
|
// Each query verb expands to its canonical form (added to the token list,
|
|
@@ -118,11 +118,18 @@ function rowToTool(row) {
|
|
|
118
118
|
export class RegistryService {
|
|
119
119
|
db;
|
|
120
120
|
events;
|
|
121
|
-
|
|
121
|
+
// Lazily-resolved embedding provider. Lookup happens on first use so the
|
|
122
|
+
// factory's dynamic imports don't run at construction time (keeps the
|
|
123
|
+
// synchronous constructor signature for legacy callers).
|
|
124
|
+
embeddingsPromise = null;
|
|
122
125
|
constructor(db, events) {
|
|
123
126
|
this.db = db;
|
|
124
127
|
this.events = events;
|
|
125
|
-
|
|
128
|
+
}
|
|
129
|
+
getEmbeddings() {
|
|
130
|
+
if (!this.embeddingsPromise)
|
|
131
|
+
this.embeddingsPromise = getEmbeddingProvider();
|
|
132
|
+
return this.embeddingsPromise;
|
|
126
133
|
}
|
|
127
134
|
register(input) {
|
|
128
135
|
if (!input.name)
|
|
@@ -309,9 +316,10 @@ export class RegistryService {
|
|
|
309
316
|
* callers don't break — embeddings are an opt-in upgrade.
|
|
310
317
|
*/
|
|
311
318
|
async saveToolsWithEmbeddings(serverId, tools) {
|
|
312
|
-
|
|
319
|
+
const embeddings = await this.getEmbeddings();
|
|
320
|
+
if (embeddings.name === 'none') {
|
|
313
321
|
this.saveTools(serverId, tools);
|
|
314
|
-
return { embedded: 0, skipped: tools.length };
|
|
322
|
+
return { embedded: 0, skipped: tools.length, provider: 'none' };
|
|
315
323
|
}
|
|
316
324
|
// Build the embedding inputs: name + description, with the name repeated
|
|
317
325
|
// to up-weight name matches in the semantic space (mirrors how the BM25
|
|
@@ -319,27 +327,29 @@ export class RegistryService {
|
|
|
319
327
|
const inputs = tools.map((t) => `${t.name}\n${t.name}\n${t.description ?? ''}`.slice(0, 2000));
|
|
320
328
|
let vectors;
|
|
321
329
|
try {
|
|
322
|
-
vectors = await
|
|
330
|
+
vectors = await embeddings.embed(inputs);
|
|
323
331
|
}
|
|
324
332
|
catch (err) {
|
|
325
|
-
process.stderr.write(`[registry] embedding batch failed: ${err.message} — falling back to BM25-only\n`);
|
|
333
|
+
process.stderr.write(`[registry] embedding batch failed (${embeddings.name}): ${err.message} — falling back to BM25-only\n`);
|
|
326
334
|
this.saveTools(serverId, tools);
|
|
327
|
-
return { embedded: 0, skipped: tools.length };
|
|
335
|
+
return { embedded: 0, skipped: tools.length, provider: embeddings.name };
|
|
328
336
|
}
|
|
329
337
|
this.db.run('DELETE FROM server_tools WHERE server_id = ?', [serverId]);
|
|
330
338
|
for (let i = 0; i < tools.length; i++) {
|
|
331
339
|
const tool = tools[i];
|
|
332
|
-
const
|
|
340
|
+
const vec = vectors[i];
|
|
341
|
+
const encoded = vec && vec.length > 0 ? encodeEmbedding(vec) : null;
|
|
333
342
|
this.db.run('INSERT INTO server_tools (server_id, name, description, input_schema, embedding, embedding_model) VALUES (?, ?, ?, ?, ?, ?)', [
|
|
334
343
|
serverId,
|
|
335
344
|
tool.name,
|
|
336
345
|
tool.description ?? '',
|
|
337
346
|
JSON.stringify(tool.inputSchema ?? {}),
|
|
338
347
|
encoded,
|
|
339
|
-
|
|
348
|
+
encoded ? embeddings.model : null,
|
|
340
349
|
]);
|
|
341
350
|
}
|
|
342
|
-
|
|
351
|
+
const embedded = vectors.filter((v) => v && v.length > 0).length;
|
|
352
|
+
return { embedded, skipped: tools.length - embedded, provider: embeddings.name };
|
|
343
353
|
}
|
|
344
354
|
getTools(serverId) {
|
|
345
355
|
return this.db
|
|
@@ -437,13 +447,16 @@ export class RegistryService {
|
|
|
437
447
|
* Falls back to plain BM25 when the embedding provider is disabled.
|
|
438
448
|
*/
|
|
439
449
|
async searchToolsHybrid(query, limit = 5) {
|
|
440
|
-
|
|
450
|
+
const embeddings = await this.getEmbeddings();
|
|
451
|
+
if (embeddings.name === 'none') {
|
|
441
452
|
return this.searchTools(query, limit);
|
|
442
453
|
}
|
|
443
454
|
let queryVec;
|
|
444
455
|
try {
|
|
445
|
-
const [vec] = await
|
|
446
|
-
|
|
456
|
+
const [vec] = await embeddings.embed([query]);
|
|
457
|
+
if (!vec || vec.length === 0)
|
|
458
|
+
return this.searchTools(query, limit);
|
|
459
|
+
queryVec = Float32Array.from(vec);
|
|
447
460
|
}
|
|
448
461
|
catch {
|
|
449
462
|
return this.searchTools(query, limit);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/domain/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/domain/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/embeddings/factory.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAOrE,wBAAsB,oBAAoB,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAM/F;AAsCD,wBAAgB,aAAa,IAAI,IAAI,CAGpC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// agent-discover — Embedding provider factory
|
|
3
|
+
//
|
|
4
|
+
// Resolves AGENT_DISCOVER_EMBEDDING_PROVIDER (or an explicit config object)
|
|
5
|
+
// into a concrete provider instance. Default is 'none' — semantic search is
|
|
6
|
+
// opt-in. When the requested provider is unavailable (missing API key, model
|
|
7
|
+
// can't load, etc.) returns the noop provider so callers transparently fall
|
|
8
|
+
// back to BM25-only ranking.
|
|
9
|
+
// =============================================================================
|
|
10
|
+
import { getEmbeddingConfig } from './types.js';
|
|
11
|
+
import { NoopEmbeddingProvider } from './none.js';
|
|
12
|
+
let _instance = null;
|
|
13
|
+
let _instanceProvider = null;
|
|
14
|
+
export async function getEmbeddingProvider(config) {
|
|
15
|
+
const cfg = config ?? getEmbeddingConfig();
|
|
16
|
+
if (_instance && _instanceProvider === cfg.provider)
|
|
17
|
+
return _instance;
|
|
18
|
+
_instance = (await createProvider(cfg)) ?? new NoopEmbeddingProvider();
|
|
19
|
+
_instanceProvider = cfg.provider;
|
|
20
|
+
return _instance;
|
|
21
|
+
}
|
|
22
|
+
async function createProvider(cfg) {
|
|
23
|
+
switch (cfg.provider) {
|
|
24
|
+
case 'none':
|
|
25
|
+
return new NoopEmbeddingProvider();
|
|
26
|
+
case 'local': {
|
|
27
|
+
const { LocalEmbeddingProvider } = await import('./local.js');
|
|
28
|
+
const idleEnv = process.env.AGENT_DISCOVER_EMBEDDING_IDLE_TIMEOUT;
|
|
29
|
+
const idleMs = idleEnv !== undefined ? parseInt(idleEnv, 10) * 1000 : 60_000;
|
|
30
|
+
const provider = new LocalEmbeddingProvider(cfg.modelOverride, undefined, idleMs);
|
|
31
|
+
if (await provider.isAvailable())
|
|
32
|
+
return provider;
|
|
33
|
+
process.stderr.write('[agent-discover] local embedding provider unavailable\n');
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
case 'openai': {
|
|
37
|
+
if (!cfg.openaiApiKey) {
|
|
38
|
+
process.stderr.write('[agent-discover] AGENT_DISCOVER_OPENAI_API_KEY (or OPENAI_API_KEY) not set\n');
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const { OpenAIEmbeddingProvider } = await import('./openai.js');
|
|
42
|
+
return new OpenAIEmbeddingProvider(cfg.openaiApiKey, cfg.modelOverride);
|
|
43
|
+
}
|
|
44
|
+
case 'claude':
|
|
45
|
+
case 'gemini':
|
|
46
|
+
process.stderr.write(`[agent-discover] embedding provider "${cfg.provider}" not yet implemented in agent-discover ` +
|
|
47
|
+
`(see agent-knowledge/src/embeddings/${cfg.provider}.ts for the reference impl)\n`);
|
|
48
|
+
return null;
|
|
49
|
+
default:
|
|
50
|
+
process.stderr.write(`[agent-discover] unknown embedding provider: ${cfg.provider}\n`);
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export function resetProvider() {
|
|
55
|
+
_instance = null;
|
|
56
|
+
_instanceProvider = null;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/embeddings/factory.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,8CAA8C;AAC9C,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,4EAA4E;AAC5E,6BAA6B;AAC7B,gFAAgF;AAGhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAElD,IAAI,SAAS,GAA6B,IAAI,CAAC;AAC/C,IAAI,iBAAiB,GAAkB,IAAI,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAwB;IACjE,MAAM,GAAG,GAAG,MAAM,IAAI,kBAAkB,EAAE,CAAC;IAC3C,IAAI,SAAS,IAAI,iBAAiB,KAAK,GAAG,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtE,SAAS,GAAG,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,qBAAqB,EAAE,CAAC;IACvE,iBAAiB,GAAG,GAAG,CAAC,QAAQ,CAAC;IACjC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAAoB;IAChD,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC;QACrB,KAAK,MAAM;YACT,OAAO,IAAI,qBAAqB,EAAE,CAAC;QACrC,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC;YAClE,MAAM,MAAM,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YAC7E,MAAM,QAAQ,GAAG,IAAI,sBAAsB,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAClF,IAAI,MAAM,QAAQ,CAAC,WAAW,EAAE;gBAAE,OAAO,QAAQ,CAAC;YAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;YAChF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8EAA8E,CAC/E,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAChE,OAAO,IAAI,uBAAuB,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;QAC1E,CAAC;QACD,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wCAAwC,GAAG,CAAC,QAAQ,0CAA0C;gBAC5F,uCAAuC,GAAG,CAAC,QAAQ,+BAA+B,CACrF,CAAC;YACF,OAAO,IAAI,CAAC;QACd;YACE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;YACvF,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,SAAS,GAAG,IAAI,CAAC;IACjB,iBAAiB,GAAG,IAAI,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type { EmbeddingProvider, EmbeddingConfig, ProviderName } from './types.js';
|
|
2
|
+
export { getEmbeddingConfig } from './types.js';
|
|
3
|
+
export { getEmbeddingProvider, resetProvider } from './factory.js';
|
|
4
|
+
export { NoopEmbeddingProvider } from './none.js';
|
|
5
|
+
export { OpenAIEmbeddingProvider } from './openai.js';
|
|
6
|
+
export { LocalEmbeddingProvider } from './local.js';
|
|
7
|
+
export type Embedding = Float32Array;
|
|
8
|
+
export declare function cosineSimilarity(a: Embedding, b: Embedding): number;
|
|
9
|
+
/**
|
|
10
|
+
* Encode a Float32Array as base64 for SQLite TEXT storage. Compact (~5.3
|
|
11
|
+
* bytes per dim) and round-trips losslessly via decodeEmbedding.
|
|
12
|
+
*/
|
|
13
|
+
export declare function encodeEmbedding(emb: Embedding | number[]): string;
|
|
14
|
+
export declare function decodeEmbedding(encoded: string): Embedding;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/embeddings/index.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,SAAS,GAAG,YAAY,CAAC;AAErC,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAYnE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,EAAE,GAAG,MAAM,CAIjE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAG1D"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// agent-discover — Embeddings module barrel + shared math/encoding helpers
|
|
3
|
+
// =============================================================================
|
|
4
|
+
export { getEmbeddingConfig } from './types.js';
|
|
5
|
+
export { getEmbeddingProvider, resetProvider } from './factory.js';
|
|
6
|
+
export { NoopEmbeddingProvider } from './none.js';
|
|
7
|
+
export { OpenAIEmbeddingProvider } from './openai.js';
|
|
8
|
+
export { LocalEmbeddingProvider } from './local.js';
|
|
9
|
+
export function cosineSimilarity(a, b) {
|
|
10
|
+
if (a.length !== b.length || a.length === 0)
|
|
11
|
+
return 0;
|
|
12
|
+
let dot = 0;
|
|
13
|
+
let normA = 0;
|
|
14
|
+
let normB = 0;
|
|
15
|
+
for (let i = 0; i < a.length; i++) {
|
|
16
|
+
dot += a[i] * b[i];
|
|
17
|
+
normA += a[i] * a[i];
|
|
18
|
+
normB += b[i] * b[i];
|
|
19
|
+
}
|
|
20
|
+
const denom = Math.sqrt(normA) * Math.sqrt(normB);
|
|
21
|
+
return denom === 0 ? 0 : dot / denom;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Encode a Float32Array as base64 for SQLite TEXT storage. Compact (~5.3
|
|
25
|
+
* bytes per dim) and round-trips losslessly via decodeEmbedding.
|
|
26
|
+
*/
|
|
27
|
+
export function encodeEmbedding(emb) {
|
|
28
|
+
const f32 = emb instanceof Float32Array ? emb : Float32Array.from(emb);
|
|
29
|
+
const buf = Buffer.from(f32.buffer, f32.byteOffset, f32.byteLength);
|
|
30
|
+
return buf.toString('base64');
|
|
31
|
+
}
|
|
32
|
+
export function decodeEmbedding(encoded) {
|
|
33
|
+
const buf = Buffer.from(encoded, 'base64');
|
|
34
|
+
return new Float32Array(buf.buffer, buf.byteOffset, buf.byteLength / 4);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embeddings/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,2EAA2E;AAC3E,gFAAgF;AAGhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAIpD,MAAM,UAAU,gBAAgB,CAAC,CAAY,EAAE,CAAY;IACzD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtD,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;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAyB;IACvD,MAAM,GAAG,GAAG,GAAG,YAAY,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACpE,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { EmbeddingProvider } from './types.js';
|
|
2
|
+
export declare class LocalEmbeddingProvider implements EmbeddingProvider {
|
|
3
|
+
readonly name = "local";
|
|
4
|
+
readonly dimensions: number;
|
|
5
|
+
readonly model: string;
|
|
6
|
+
private readonly batchSize;
|
|
7
|
+
constructor(modelOverride?: string, batchSize?: number, idleTimeoutMs?: number);
|
|
8
|
+
embed(texts: string[]): Promise<number[][]>;
|
|
9
|
+
embedOne(text: string): Promise<number[]>;
|
|
10
|
+
isAvailable(): Promise<boolean>;
|
|
11
|
+
private getPipeline;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/embeddings/local.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAmFpD,qBAAa,sBAAuB,YAAW,iBAAiB;IAC9D,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;IAOxE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAqB3C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKzC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;YAIvB,WAAW;CAW1B"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// agent-discover — Local embedding provider
|
|
3
|
+
//
|
|
4
|
+
// Runs Xenova/all-MiniLM-L6-v2 (or any HF feature-extraction model) inside
|
|
5
|
+
// the agent-discover process via @huggingface/transformers. No API key, no
|
|
6
|
+
// network call after the initial model download. Default dimensions: 384.
|
|
7
|
+
//
|
|
8
|
+
// Loaded lazily so installs without @huggingface/transformers don't break —
|
|
9
|
+
// the import is dynamic, and isAvailable() returns false if the package or
|
|
10
|
+
// the model can't be loaded. Mirrors agent-knowledge's local provider so
|
|
11
|
+
// the same model is downloaded once and reused across both servers.
|
|
12
|
+
// =============================================================================
|
|
13
|
+
const DEFAULT_MODEL = 'Xenova/all-MiniLM-L6-v2';
|
|
14
|
+
const DEFAULT_DIMENSIONS = 384;
|
|
15
|
+
const DEFAULT_BATCH_SIZE = 8;
|
|
16
|
+
const DEFAULT_IDLE_TIMEOUT_MS = 60_000;
|
|
17
|
+
const DEFAULT_NUM_THREADS = 1;
|
|
18
|
+
let _pipeline = null;
|
|
19
|
+
let _pipelineLoading = null;
|
|
20
|
+
let _idleTimer = null;
|
|
21
|
+
let _idleTimeoutMs = DEFAULT_IDLE_TIMEOUT_MS;
|
|
22
|
+
const _numThreads = parseInt(process.env.AGENT_DISCOVER_EMBEDDING_THREADS ?? String(DEFAULT_NUM_THREADS), 10);
|
|
23
|
+
process.env.ONNX_NUM_THREADS = String(_numThreads);
|
|
24
|
+
process.env.OMP_NUM_THREADS = String(_numThreads);
|
|
25
|
+
async function loadPipeline(model) {
|
|
26
|
+
try {
|
|
27
|
+
process.stderr.write(`[agent-discover] Loading embedding model ${model} (q8, ${_numThreads} thread(s))...\n`);
|
|
28
|
+
// Indirect import so TypeScript doesn't require the optional
|
|
29
|
+
// @huggingface/transformers package at compile time. The factory only
|
|
30
|
+
// calls this provider when the user explicitly requests local embeddings.
|
|
31
|
+
const moduleName = '@huggingface/transformers';
|
|
32
|
+
const dynamicImport = new Function('m', 'return import(m)');
|
|
33
|
+
const mod = (await dynamicImport(moduleName).catch(() => null));
|
|
34
|
+
if (!mod || typeof mod.pipeline !== 'function') {
|
|
35
|
+
process.stderr.write('[agent-discover] @huggingface/transformers not installed — local embeddings unavailable. ' +
|
|
36
|
+
'Install with: npm install @huggingface/transformers\n');
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
const pipelineFn = mod.pipeline;
|
|
40
|
+
const pipe = await pipelineFn('feature-extraction', model, {
|
|
41
|
+
dtype: 'q8',
|
|
42
|
+
session_options: {
|
|
43
|
+
intraOpNumThreads: _numThreads,
|
|
44
|
+
interOpNumThreads: _numThreads,
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
if (!pipe || typeof pipe !== 'function') {
|
|
48
|
+
throw new Error('failed to construct transformer pipeline');
|
|
49
|
+
}
|
|
50
|
+
process.stderr.write(`[agent-discover] Embedding model loaded\n`);
|
|
51
|
+
return pipe;
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
process.stderr.write(`[agent-discover] Failed to load embedding model ${model}: ${err.message}\n`);
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function resetIdleTimer() {
|
|
59
|
+
if (_idleTimer)
|
|
60
|
+
clearTimeout(_idleTimer);
|
|
61
|
+
if (_idleTimeoutMs <= 0)
|
|
62
|
+
return;
|
|
63
|
+
_idleTimer = setTimeout(() => {
|
|
64
|
+
if (_pipeline) {
|
|
65
|
+
process.stderr.write('[agent-discover] Unloading embedding model (idle timeout)\n');
|
|
66
|
+
_pipeline = null;
|
|
67
|
+
_pipelineLoading = null;
|
|
68
|
+
}
|
|
69
|
+
_idleTimer = null;
|
|
70
|
+
}, _idleTimeoutMs);
|
|
71
|
+
}
|
|
72
|
+
export class LocalEmbeddingProvider {
|
|
73
|
+
name = 'local';
|
|
74
|
+
dimensions;
|
|
75
|
+
model;
|
|
76
|
+
batchSize;
|
|
77
|
+
constructor(modelOverride, batchSize, idleTimeoutMs) {
|
|
78
|
+
this.model = modelOverride || DEFAULT_MODEL;
|
|
79
|
+
this.dimensions = DEFAULT_DIMENSIONS;
|
|
80
|
+
this.batchSize = batchSize ?? DEFAULT_BATCH_SIZE;
|
|
81
|
+
if (idleTimeoutMs !== undefined)
|
|
82
|
+
_idleTimeoutMs = idleTimeoutMs;
|
|
83
|
+
}
|
|
84
|
+
async embed(texts) {
|
|
85
|
+
const pipe = await this.getPipeline();
|
|
86
|
+
if (!pipe)
|
|
87
|
+
return texts.map(() => []);
|
|
88
|
+
resetIdleTimer();
|
|
89
|
+
const results = [];
|
|
90
|
+
for (let i = 0; i < texts.length; i += this.batchSize) {
|
|
91
|
+
const batch = texts.slice(i, i + this.batchSize);
|
|
92
|
+
try {
|
|
93
|
+
const output = await pipe(batch, { pooling: 'mean', normalize: true });
|
|
94
|
+
results.push(...output.tolist());
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
process.stderr.write(`[agent-discover] embedding batch failed: ${err.message}\n`);
|
|
98
|
+
results.push(...batch.map(() => []));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
resetIdleTimer();
|
|
102
|
+
return results;
|
|
103
|
+
}
|
|
104
|
+
async embedOne(text) {
|
|
105
|
+
const r = await this.embed([text]);
|
|
106
|
+
return r[0] ?? [];
|
|
107
|
+
}
|
|
108
|
+
async isAvailable() {
|
|
109
|
+
return (await this.getPipeline()) !== null;
|
|
110
|
+
}
|
|
111
|
+
async getPipeline() {
|
|
112
|
+
if (_pipeline)
|
|
113
|
+
return _pipeline;
|
|
114
|
+
if (!_pipelineLoading) {
|
|
115
|
+
_pipelineLoading = loadPipeline(this.model).then((pipe) => {
|
|
116
|
+
_pipeline = pipe;
|
|
117
|
+
if (pipe)
|
|
118
|
+
resetIdleTimer();
|
|
119
|
+
return pipe;
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
return _pipelineLoading;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/embeddings/local.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { EmbeddingProvider } from './types.js';
|
|
2
|
+
export declare class NoopEmbeddingProvider implements EmbeddingProvider {
|
|
3
|
+
readonly name = "none";
|
|
4
|
+
readonly dimensions = 0;
|
|
5
|
+
readonly model = "none";
|
|
6
|
+
embed(): Promise<number[][]>;
|
|
7
|
+
embedOne(): Promise<number[]>;
|
|
8
|
+
isAvailable(): Promise<boolean>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=none.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"none.d.ts","sourceRoot":"","sources":["../../src/embeddings/none.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,qBAAa,qBAAsB,YAAW,iBAAiB;IAC7D,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,UAAU,KAAK;IACxB,QAAQ,CAAC,KAAK,UAAU;IAElB,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAG5B,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAG7B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAGtC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// agent-discover — No-op embedding provider
|
|
3
|
+
//
|
|
4
|
+
// Returned when AGENT_DISCOVER_EMBEDDING_PROVIDER is unset or 'none'. Lets
|
|
5
|
+
// callers use the same EmbeddingProvider interface throughout the codebase
|
|
6
|
+
// without branching on whether semantic search is enabled — this provider
|
|
7
|
+
// just refuses to embed and reports unavailable, so saveToolsWithEmbeddings
|
|
8
|
+
// transparently falls back to BM25-only ranking.
|
|
9
|
+
// =============================================================================
|
|
10
|
+
export class NoopEmbeddingProvider {
|
|
11
|
+
name = 'none';
|
|
12
|
+
dimensions = 0;
|
|
13
|
+
model = 'none';
|
|
14
|
+
async embed() {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
async embedOne() {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
async isAvailable() {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=none.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"none.js","sourceRoot":"","sources":["../../src/embeddings/none.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,4CAA4C;AAC5C,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,0EAA0E;AAC1E,4EAA4E;AAC5E,iDAAiD;AACjD,gFAAgF;AAIhF,MAAM,OAAO,qBAAqB;IACvB,IAAI,GAAG,MAAM,CAAC;IACd,UAAU,GAAG,CAAC,CAAC;IACf,KAAK,GAAG,MAAM,CAAC;IAExB,KAAK,CAAC,KAAK;QACT,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,KAAK,CAAC,QAAQ;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,KAAK,CAAC,WAAW;QACf,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { EmbeddingProvider } from './types.js';
|
|
2
|
+
export declare class OpenAIEmbeddingProvider implements EmbeddingProvider {
|
|
3
|
+
readonly name = "openai";
|
|
4
|
+
readonly dimensions: number;
|
|
5
|
+
readonly model: string;
|
|
6
|
+
private readonly apiKey;
|
|
7
|
+
constructor(apiKey: string, modelOverride?: string);
|
|
8
|
+
embed(texts: string[]): Promise<number[][]>;
|
|
9
|
+
embedOne(text: string): Promise<number[]>;
|
|
10
|
+
isAvailable(): Promise<boolean>;
|
|
11
|
+
private requestBatch;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/embeddings/openai.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AASpD,qBAAa,uBAAwB,YAAW,iBAAiB;IAC/D,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;IAM5C,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAU3C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKzC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;YASvB,YAAY;CAiB3B"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// agent-discover — OpenAI embedding provider
|
|
3
|
+
//
|
|
4
|
+
// Wraps the OpenAI embeddings REST API. Default model is
|
|
5
|
+
// text-embedding-3-small (1536 dims) — same as agent-knowledge so the two
|
|
6
|
+
// servers can share an embeddings DB if you want to. No SDK dependency,
|
|
7
|
+
// just native fetch.
|
|
8
|
+
// =============================================================================
|
|
9
|
+
const DEFAULT_MODEL = 'text-embedding-3-small';
|
|
10
|
+
const DEFAULT_DIMENSIONS = 1536;
|
|
11
|
+
const MAX_BATCH = 256;
|
|
12
|
+
const ENDPOINT = process.env.OPENAI_API_BASE
|
|
13
|
+
? `${process.env.OPENAI_API_BASE}/embeddings`
|
|
14
|
+
: 'https://api.openai.com/v1/embeddings';
|
|
15
|
+
export class OpenAIEmbeddingProvider {
|
|
16
|
+
name = 'openai';
|
|
17
|
+
dimensions;
|
|
18
|
+
model;
|
|
19
|
+
apiKey;
|
|
20
|
+
constructor(apiKey, modelOverride) {
|
|
21
|
+
this.apiKey = apiKey;
|
|
22
|
+
this.model = modelOverride || DEFAULT_MODEL;
|
|
23
|
+
this.dimensions = DEFAULT_DIMENSIONS;
|
|
24
|
+
}
|
|
25
|
+
async embed(texts) {
|
|
26
|
+
if (texts.length === 0)
|
|
27
|
+
return [];
|
|
28
|
+
const out = [];
|
|
29
|
+
for (let i = 0; i < texts.length; i += MAX_BATCH) {
|
|
30
|
+
const batch = texts.slice(i, i + MAX_BATCH);
|
|
31
|
+
out.push(...(await this.requestBatch(batch)));
|
|
32
|
+
}
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
35
|
+
async embedOne(text) {
|
|
36
|
+
const r = await this.embed([text]);
|
|
37
|
+
return r[0] ?? [];
|
|
38
|
+
}
|
|
39
|
+
async isAvailable() {
|
|
40
|
+
try {
|
|
41
|
+
const r = await this.embed(['test']);
|
|
42
|
+
return r.length === 1 && r[0].length > 0;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async requestBatch(texts) {
|
|
49
|
+
const res = await fetch(ENDPOINT, {
|
|
50
|
+
method: 'POST',
|
|
51
|
+
headers: {
|
|
52
|
+
'Content-Type': 'application/json',
|
|
53
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
54
|
+
},
|
|
55
|
+
body: JSON.stringify({ model: this.model, input: texts }),
|
|
56
|
+
});
|
|
57
|
+
if (!res.ok) {
|
|
58
|
+
const text = await res.text().catch(() => '');
|
|
59
|
+
throw new Error(`OpenAI embeddings HTTP ${res.status}: ${text.slice(0, 200)}`);
|
|
60
|
+
}
|
|
61
|
+
const json = (await res.json());
|
|
62
|
+
const sorted = [...json.data].sort((a, b) => a.index - b.index);
|
|
63
|
+
return sorted.map((d) => d.embedding);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=openai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/embeddings/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface EmbeddingProvider {
|
|
2
|
+
/** Provider identifier — 'none' | 'local' | 'openai' | 'claude' | 'gemini'. */
|
|
3
|
+
readonly name: string;
|
|
4
|
+
/** Vector dimensions produced by this provider. */
|
|
5
|
+
readonly dimensions: number;
|
|
6
|
+
/** Model identifier (provider-specific string). */
|
|
7
|
+
readonly model: string;
|
|
8
|
+
/** Embed one or more texts. Returns one number[] per input, in order. */
|
|
9
|
+
embed(texts: string[]): Promise<number[][]>;
|
|
10
|
+
/** Convenience wrapper for a single text. */
|
|
11
|
+
embedOne(text: string): Promise<number[]>;
|
|
12
|
+
/** True when the provider is usable (model loaded, API key valid, etc.). */
|
|
13
|
+
isAvailable(): Promise<boolean>;
|
|
14
|
+
}
|
|
15
|
+
export type ProviderName = 'none' | 'local' | 'openai' | 'claude' | 'gemini';
|
|
16
|
+
export interface EmbeddingConfig {
|
|
17
|
+
/** Which provider to use. 'none' disables semantic search entirely. */
|
|
18
|
+
provider: ProviderName;
|
|
19
|
+
openaiApiKey?: string;
|
|
20
|
+
anthropicApiKey?: string;
|
|
21
|
+
geminiApiKey?: string;
|
|
22
|
+
/** Override the provider's default model id. */
|
|
23
|
+
modelOverride?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Read embedding configuration from environment variables.
|
|
27
|
+
*
|
|
28
|
+
* Default provider is 'none' — agent-discover ships disabled-by-default for
|
|
29
|
+
* semantic search so existing installs without an embedding key keep working
|
|
30
|
+
* with BM25-only ranking. Opt in by setting AGENT_DISCOVER_EMBEDDING_PROVIDER.
|
|
31
|
+
*
|
|
32
|
+
* Provider-specific API keys fall back to the generic env vars (OPENAI_API_KEY
|
|
33
|
+
* etc.) when the prefixed AGENT_DISCOVER_* variants aren't set, so a user who
|
|
34
|
+
* already has OPENAI_API_KEY exported just needs to flip the provider flag.
|
|
35
|
+
*/
|
|
36
|
+
export declare function getEmbeddingConfig(): EmbeddingConfig;
|
|
37
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/embeddings/types.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,4EAA4E;IAC5E,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7E,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,QAAQ,EAAE,YAAY,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAQpD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// agent-discover — Embedding provider interface
|
|
3
|
+
//
|
|
4
|
+
// All providers (none, local, openai, claude, gemini) implement this. Mirrors
|
|
5
|
+
// agent-knowledge's embedding subsystem so the env-var conventions and the
|
|
6
|
+
// switch-on-provider semantics stay identical across the agent-* family.
|
|
7
|
+
// =============================================================================
|
|
8
|
+
/**
|
|
9
|
+
* Read embedding configuration from environment variables.
|
|
10
|
+
*
|
|
11
|
+
* Default provider is 'none' — agent-discover ships disabled-by-default for
|
|
12
|
+
* semantic search so existing installs without an embedding key keep working
|
|
13
|
+
* with BM25-only ranking. Opt in by setting AGENT_DISCOVER_EMBEDDING_PROVIDER.
|
|
14
|
+
*
|
|
15
|
+
* Provider-specific API keys fall back to the generic env vars (OPENAI_API_KEY
|
|
16
|
+
* etc.) when the prefixed AGENT_DISCOVER_* variants aren't set, so a user who
|
|
17
|
+
* already has OPENAI_API_KEY exported just needs to flip the provider flag.
|
|
18
|
+
*/
|
|
19
|
+
export function getEmbeddingConfig() {
|
|
20
|
+
return {
|
|
21
|
+
provider: process.env.AGENT_DISCOVER_EMBEDDING_PROVIDER || 'none',
|
|
22
|
+
openaiApiKey: process.env.AGENT_DISCOVER_OPENAI_API_KEY || process.env.OPENAI_API_KEY,
|
|
23
|
+
anthropicApiKey: process.env.AGENT_DISCOVER_ANTHROPIC_API_KEY || process.env.ANTHROPIC_API_KEY,
|
|
24
|
+
geminiApiKey: process.env.AGENT_DISCOVER_GEMINI_API_KEY || process.env.GEMINI_API_KEY,
|
|
25
|
+
modelOverride: process.env.AGENT_DISCOVER_EMBEDDING_MODEL,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/embeddings/types.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,gDAAgD;AAChD,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,yEAAyE;AACzE,gFAAgF;AA6BhF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,QAAQ,EAAG,OAAO,CAAC,GAAG,CAAC,iCAAkD,IAAI,MAAM;QACnF,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;QACrF,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC9F,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;QACrF,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B;KAC1D,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export type Embedding = Float32Array;
|
|
2
|
-
export interface EmbeddingProvider {
|
|
3
|
-
enabled: boolean;
|
|
4
|
-
model: string;
|
|
5
|
-
/** Embed a batch of texts. Returns one Float32Array per input, in order. */
|
|
6
|
-
embed(texts: string[]): Promise<Embedding[]>;
|
|
7
|
-
}
|
|
8
|
-
export declare function makeEmbeddingProvider(): EmbeddingProvider;
|
|
9
|
-
export declare function cosineSimilarity(a: Embedding, b: Embedding): number;
|
|
10
|
-
export declare function encodeEmbedding(emb: Embedding): string;
|
|
11
|
-
export declare function decodeEmbedding(encoded: string): Embedding;
|
|
12
|
-
//# sourceMappingURL=embeddings.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/domain/embeddings.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,SAAS,GAAG,YAAY,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;CAC9C;AAED,wBAAgB,qBAAqB,IAAI,iBAAiB,CAgBzD;AAgCD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAYnE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAKtD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAI1D"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
// =============================================================================
|
|
2
|
-
// agent-discover — Embeddings provider
|
|
3
|
-
//
|
|
4
|
-
// Generates dense vector representations of tool names + descriptions for
|
|
5
|
-
// semantic search. Uses OpenAI text-embedding-3-small (1536 dims) when an
|
|
6
|
-
// OPENAI_API_KEY is available; falls back to a no-op (BM25-only ranking
|
|
7
|
-
// stays the default behavior in that case).
|
|
8
|
-
//
|
|
9
|
-
// The provider is intentionally minimal — no abstractions, no plugin layer,
|
|
10
|
-
// no batching beyond the API's natural multi-input request. Adding more
|
|
11
|
-
// providers later (Cohere, local sentence-transformers, etc.) is a copy-and-
|
|
12
|
-
// modify rather than a framework decision.
|
|
13
|
-
// =============================================================================
|
|
14
|
-
const EMBEDDING_MODEL = process.env.AGENT_DISCOVER_EMBEDDING_MODEL ?? 'text-embedding-3-small';
|
|
15
|
-
const EMBEDDING_DIMS = 1536; // text-embedding-3-small native dimensionality
|
|
16
|
-
const OPENAI_API_BASE = process.env.OPENAI_API_BASE ?? 'https://api.openai.com/v1';
|
|
17
|
-
export function makeEmbeddingProvider() {
|
|
18
|
-
const apiKey = process.env.OPENAI_API_KEY;
|
|
19
|
-
if (!apiKey) {
|
|
20
|
-
return {
|
|
21
|
-
enabled: false,
|
|
22
|
-
model: EMBEDDING_MODEL,
|
|
23
|
-
async embed(texts) {
|
|
24
|
-
return texts.map(() => new Float32Array(EMBEDDING_DIMS));
|
|
25
|
-
},
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
return {
|
|
29
|
-
enabled: true,
|
|
30
|
-
model: EMBEDDING_MODEL,
|
|
31
|
-
embed: (texts) => embedOpenAI(texts, apiKey),
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
// OpenAI embeddings API supports up to ~2048 inputs per request and ~8191
|
|
35
|
-
// tokens per input. We chunk large batches into safe-sized requests.
|
|
36
|
-
const MAX_BATCH = 256;
|
|
37
|
-
async function embedOpenAI(texts, apiKey) {
|
|
38
|
-
const out = [];
|
|
39
|
-
for (let i = 0; i < texts.length; i += MAX_BATCH) {
|
|
40
|
-
const batch = texts.slice(i, i + MAX_BATCH);
|
|
41
|
-
const res = await fetch(`${OPENAI_API_BASE}/embeddings`, {
|
|
42
|
-
method: 'POST',
|
|
43
|
-
headers: {
|
|
44
|
-
'Content-Type': 'application/json',
|
|
45
|
-
Authorization: `Bearer ${apiKey}`,
|
|
46
|
-
},
|
|
47
|
-
body: JSON.stringify({ model: EMBEDDING_MODEL, input: batch }),
|
|
48
|
-
});
|
|
49
|
-
if (!res.ok) {
|
|
50
|
-
const text = await res.text().catch(() => '');
|
|
51
|
-
throw new Error(`OpenAI embeddings failed: HTTP ${res.status} ${text.slice(0, 200)}`);
|
|
52
|
-
}
|
|
53
|
-
const json = (await res.json());
|
|
54
|
-
// The API returns results in input-order, but be defensive: sort by index.
|
|
55
|
-
const sorted = [...json.data].sort((a, b) => a.index - b.index);
|
|
56
|
-
for (const row of sorted) {
|
|
57
|
-
out.push(Float32Array.from(row.embedding));
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return out;
|
|
61
|
-
}
|
|
62
|
-
export function cosineSimilarity(a, b) {
|
|
63
|
-
if (a.length !== b.length)
|
|
64
|
-
return 0;
|
|
65
|
-
let dot = 0;
|
|
66
|
-
let normA = 0;
|
|
67
|
-
let normB = 0;
|
|
68
|
-
for (let i = 0; i < a.length; i++) {
|
|
69
|
-
dot += a[i] * b[i];
|
|
70
|
-
normA += a[i] * a[i];
|
|
71
|
-
normB += b[i] * b[i];
|
|
72
|
-
}
|
|
73
|
-
const denom = Math.sqrt(normA) * Math.sqrt(normB);
|
|
74
|
-
return denom === 0 ? 0 : dot / denom;
|
|
75
|
-
}
|
|
76
|
-
export function encodeEmbedding(emb) {
|
|
77
|
-
// Float32Array → base64 string. Compact (4 bytes per dim, base64-encoded
|
|
78
|
-
// = ~5.3 bytes per dim), and SQLite TEXT-friendly.
|
|
79
|
-
const buf = Buffer.from(emb.buffer, emb.byteOffset, emb.byteLength);
|
|
80
|
-
return buf.toString('base64');
|
|
81
|
-
}
|
|
82
|
-
export function decodeEmbedding(encoded) {
|
|
83
|
-
const buf = Buffer.from(encoded, 'base64');
|
|
84
|
-
// Buffer's underlying ArrayBuffer may be a slice — pass the right offset+length.
|
|
85
|
-
return new Float32Array(buf.buffer, buf.byteOffset, buf.byteLength / 4);
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=embeddings.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/domain/embeddings.ts"],"names":[],"mappings":"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"}
|