cognitive-core 0.0.2 → 0.1.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 (329) hide show
  1. package/README.md +302 -116
  2. package/SKILL.md +193 -0
  3. package/dist/agents/index.d.ts +3 -0
  4. package/dist/agents/index.d.ts.map +1 -0
  5. package/dist/agents/index.js +5 -0
  6. package/dist/agents/index.js.map +1 -0
  7. package/dist/agents/mock-provider.d.ts +23 -0
  8. package/dist/agents/mock-provider.d.ts.map +1 -0
  9. package/dist/agents/mock-provider.js +71 -0
  10. package/dist/agents/mock-provider.js.map +1 -0
  11. package/dist/agents/types.d.ts +98 -0
  12. package/dist/agents/types.d.ts.map +1 -0
  13. package/dist/agents/types.js +44 -0
  14. package/dist/agents/types.js.map +1 -0
  15. package/dist/atlas.d.ts +196 -0
  16. package/dist/atlas.d.ts.map +1 -0
  17. package/dist/atlas.js +373 -0
  18. package/dist/atlas.js.map +1 -0
  19. package/dist/bin/cognitive-core.d.ts +18 -0
  20. package/dist/bin/cognitive-core.d.ts.map +1 -0
  21. package/dist/bin/cognitive-core.js +419 -0
  22. package/dist/bin/cognitive-core.js.map +1 -0
  23. package/dist/embeddings/bm25.d.ts +104 -0
  24. package/dist/embeddings/bm25.d.ts.map +1 -0
  25. package/dist/embeddings/bm25.js +264 -0
  26. package/dist/embeddings/bm25.js.map +1 -0
  27. package/dist/embeddings/index.d.ts +12 -0
  28. package/dist/embeddings/index.d.ts.map +1 -0
  29. package/dist/embeddings/index.js +16 -0
  30. package/dist/embeddings/index.js.map +1 -0
  31. package/dist/embeddings/manager.d.ts +112 -0
  32. package/dist/embeddings/manager.d.ts.map +1 -0
  33. package/dist/embeddings/manager.js +215 -0
  34. package/dist/embeddings/manager.js.map +1 -0
  35. package/dist/embeddings/provider.d.ts +101 -0
  36. package/dist/embeddings/provider.d.ts.map +1 -0
  37. package/dist/embeddings/provider.js +232 -0
  38. package/dist/embeddings/provider.js.map +1 -0
  39. package/dist/embeddings/vector-store.d.ts +101 -0
  40. package/dist/embeddings/vector-store.d.ts.map +1 -0
  41. package/dist/embeddings/vector-store.js +256 -0
  42. package/dist/embeddings/vector-store.js.map +1 -0
  43. package/dist/factory.d.ts +193 -0
  44. package/dist/factory.d.ts.map +1 -0
  45. package/dist/factory.js +109 -0
  46. package/dist/factory.js.map +1 -0
  47. package/dist/index.d.ts +30 -453
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +84 -509
  50. package/dist/index.js.map +1 -0
  51. package/dist/learning/analyzer.d.ts +110 -0
  52. package/dist/learning/analyzer.d.ts.map +1 -0
  53. package/dist/learning/analyzer.js +213 -0
  54. package/dist/learning/analyzer.js.map +1 -0
  55. package/dist/learning/effectiveness.d.ts +158 -0
  56. package/dist/learning/effectiveness.d.ts.map +1 -0
  57. package/dist/learning/effectiveness.js +251 -0
  58. package/dist/learning/effectiveness.js.map +1 -0
  59. package/dist/learning/index.d.ts +8 -0
  60. package/dist/learning/index.d.ts.map +1 -0
  61. package/dist/learning/index.js +11 -0
  62. package/dist/learning/index.js.map +1 -0
  63. package/dist/learning/llm-extractor.d.ts +88 -0
  64. package/dist/learning/llm-extractor.d.ts.map +1 -0
  65. package/dist/learning/llm-extractor.js +372 -0
  66. package/dist/learning/llm-extractor.js.map +1 -0
  67. package/dist/learning/meta-learner.d.ts +80 -0
  68. package/dist/learning/meta-learner.d.ts.map +1 -0
  69. package/dist/learning/meta-learner.js +355 -0
  70. package/dist/learning/meta-learner.js.map +1 -0
  71. package/dist/learning/pipeline.d.ts +65 -0
  72. package/dist/learning/pipeline.d.ts.map +1 -0
  73. package/dist/learning/pipeline.js +170 -0
  74. package/dist/learning/pipeline.js.map +1 -0
  75. package/dist/learning/playbook-extractor.d.ts +113 -0
  76. package/dist/learning/playbook-extractor.d.ts.map +1 -0
  77. package/dist/learning/playbook-extractor.js +523 -0
  78. package/dist/learning/playbook-extractor.js.map +1 -0
  79. package/dist/learning/usage-inference.d.ts +82 -0
  80. package/dist/learning/usage-inference.d.ts.map +1 -0
  81. package/dist/learning/usage-inference.js +261 -0
  82. package/dist/learning/usage-inference.js.map +1 -0
  83. package/dist/mcp/index.d.ts +6 -0
  84. package/dist/mcp/index.d.ts.map +1 -0
  85. package/dist/mcp/index.js +6 -0
  86. package/dist/mcp/index.js.map +1 -0
  87. package/dist/mcp/playbook-server.d.ts +120 -0
  88. package/dist/mcp/playbook-server.d.ts.map +1 -0
  89. package/dist/mcp/playbook-server.js +427 -0
  90. package/dist/mcp/playbook-server.js.map +1 -0
  91. package/dist/memory/curated-loader.d.ts +62 -0
  92. package/dist/memory/curated-loader.d.ts.map +1 -0
  93. package/dist/memory/curated-loader.js +106 -0
  94. package/dist/memory/curated-loader.js.map +1 -0
  95. package/dist/memory/experience.d.ts +122 -0
  96. package/dist/memory/experience.d.ts.map +1 -0
  97. package/dist/memory/experience.js +392 -0
  98. package/dist/memory/experience.js.map +1 -0
  99. package/dist/memory/index.d.ts +6 -0
  100. package/dist/memory/index.d.ts.map +1 -0
  101. package/dist/memory/index.js +9 -0
  102. package/dist/memory/index.js.map +1 -0
  103. package/dist/memory/meta.d.ts +90 -0
  104. package/dist/memory/meta.d.ts.map +1 -0
  105. package/dist/memory/meta.js +362 -0
  106. package/dist/memory/meta.js.map +1 -0
  107. package/dist/memory/playbook.d.ts +133 -0
  108. package/dist/memory/playbook.d.ts.map +1 -0
  109. package/dist/memory/playbook.js +357 -0
  110. package/dist/memory/playbook.js.map +1 -0
  111. package/dist/memory/system.d.ts +167 -0
  112. package/dist/memory/system.d.ts.map +1 -0
  113. package/dist/memory/system.js +383 -0
  114. package/dist/memory/system.js.map +1 -0
  115. package/dist/runtime/backends/acp.d.ts +67 -0
  116. package/dist/runtime/backends/acp.d.ts.map +1 -0
  117. package/dist/runtime/backends/acp.js +290 -0
  118. package/dist/runtime/backends/acp.js.map +1 -0
  119. package/dist/runtime/backends/index.d.ts +5 -0
  120. package/dist/runtime/backends/index.d.ts.map +1 -0
  121. package/dist/runtime/backends/index.js +6 -0
  122. package/dist/runtime/backends/index.js.map +1 -0
  123. package/dist/runtime/backends/mock.d.ts +67 -0
  124. package/dist/runtime/backends/mock.d.ts.map +1 -0
  125. package/dist/runtime/backends/mock.js +153 -0
  126. package/dist/runtime/backends/mock.js.map +1 -0
  127. package/dist/runtime/backends/subprocess.d.ts +56 -0
  128. package/dist/runtime/backends/subprocess.d.ts.map +1 -0
  129. package/dist/runtime/backends/subprocess.js +260 -0
  130. package/dist/runtime/backends/subprocess.js.map +1 -0
  131. package/dist/runtime/flows/learning.d.ts +73 -0
  132. package/dist/runtime/flows/learning.d.ts.map +1 -0
  133. package/dist/runtime/flows/learning.js +116 -0
  134. package/dist/runtime/flows/learning.js.map +1 -0
  135. package/dist/runtime/flows/validation.d.ts +122 -0
  136. package/dist/runtime/flows/validation.d.ts.map +1 -0
  137. package/dist/runtime/flows/validation.js +223 -0
  138. package/dist/runtime/flows/validation.js.map +1 -0
  139. package/dist/runtime/index.d.ts +6 -0
  140. package/dist/runtime/index.d.ts.map +1 -0
  141. package/dist/runtime/index.js +8 -0
  142. package/dist/runtime/index.js.map +1 -0
  143. package/dist/runtime/manager.d.ts +116 -0
  144. package/dist/runtime/manager.d.ts.map +1 -0
  145. package/dist/runtime/manager.js +416 -0
  146. package/dist/runtime/manager.js.map +1 -0
  147. package/dist/runtime/types.d.ts +138 -0
  148. package/dist/runtime/types.d.ts.map +1 -0
  149. package/dist/runtime/types.js +2 -0
  150. package/dist/runtime/types.js.map +1 -0
  151. package/dist/search/evaluator.d.ts +102 -0
  152. package/dist/search/evaluator.d.ts.map +1 -0
  153. package/dist/search/evaluator.js +352 -0
  154. package/dist/search/evaluator.js.map +1 -0
  155. package/dist/search/index.d.ts +7 -0
  156. package/dist/search/index.d.ts.map +1 -0
  157. package/dist/search/index.js +11 -0
  158. package/dist/search/index.js.map +1 -0
  159. package/dist/search/refinement-loop.d.ts +73 -0
  160. package/dist/search/refinement-loop.d.ts.map +1 -0
  161. package/dist/search/refinement-loop.js +245 -0
  162. package/dist/search/refinement-loop.js.map +1 -0
  163. package/dist/search/refinement-types.d.ts +154 -0
  164. package/dist/search/refinement-types.d.ts.map +1 -0
  165. package/dist/search/refinement-types.js +99 -0
  166. package/dist/search/refinement-types.js.map +1 -0
  167. package/dist/search/router.d.ts +61 -0
  168. package/dist/search/router.d.ts.map +1 -0
  169. package/dist/search/router.js +197 -0
  170. package/dist/search/router.js.map +1 -0
  171. package/dist/search/solver.d.ts +75 -0
  172. package/dist/search/solver.d.ts.map +1 -0
  173. package/dist/search/solver.js +216 -0
  174. package/dist/search/solver.js.map +1 -0
  175. package/dist/search/verification-runner.d.ts +125 -0
  176. package/dist/search/verification-runner.d.ts.map +1 -0
  177. package/dist/search/verification-runner.js +440 -0
  178. package/dist/search/verification-runner.js.map +1 -0
  179. package/dist/surfacing/index.d.ts +2 -0
  180. package/dist/surfacing/index.d.ts.map +1 -0
  181. package/dist/surfacing/index.js +2 -0
  182. package/dist/surfacing/index.js.map +1 -0
  183. package/dist/surfacing/skill-library.d.ts +158 -0
  184. package/dist/surfacing/skill-library.d.ts.map +1 -0
  185. package/dist/surfacing/skill-library.js +429 -0
  186. package/dist/surfacing/skill-library.js.map +1 -0
  187. package/dist/types/config.d.ts +1113 -0
  188. package/dist/types/config.d.ts.map +1 -0
  189. package/dist/types/config.js +274 -0
  190. package/dist/types/config.js.map +1 -0
  191. package/dist/types/index.d.ts +9 -0
  192. package/dist/types/index.d.ts.map +1 -0
  193. package/dist/types/index.js +14 -0
  194. package/dist/types/index.js.map +1 -0
  195. package/dist/types/memory.d.ts +339 -0
  196. package/dist/types/memory.d.ts.map +1 -0
  197. package/dist/types/memory.js +207 -0
  198. package/dist/types/memory.js.map +1 -0
  199. package/dist/types/meta.d.ts +146 -0
  200. package/dist/types/meta.d.ts.map +1 -0
  201. package/dist/types/meta.js +51 -0
  202. package/dist/types/meta.js.map +1 -0
  203. package/dist/types/outcome.d.ts +42 -0
  204. package/dist/types/outcome.d.ts.map +1 -0
  205. package/dist/types/outcome.js +50 -0
  206. package/dist/types/outcome.js.map +1 -0
  207. package/dist/types/playbook.d.ts +119 -0
  208. package/dist/types/playbook.d.ts.map +1 -0
  209. package/dist/types/playbook.js +71 -0
  210. package/dist/types/playbook.js.map +1 -0
  211. package/dist/types/step.d.ts +44 -0
  212. package/dist/types/step.d.ts.map +1 -0
  213. package/dist/types/step.js +32 -0
  214. package/dist/types/step.js.map +1 -0
  215. package/dist/types/task.d.ts +91 -0
  216. package/dist/types/task.d.ts.map +1 -0
  217. package/dist/types/task.js +39 -0
  218. package/dist/types/task.js.map +1 -0
  219. package/dist/types/trajectory.d.ts +221 -0
  220. package/dist/types/trajectory.d.ts.map +1 -0
  221. package/dist/types/trajectory.js +60 -0
  222. package/dist/types/trajectory.js.map +1 -0
  223. package/dist/utils/index.d.ts +4 -0
  224. package/dist/utils/index.d.ts.map +1 -0
  225. package/dist/utils/index.js +4 -0
  226. package/dist/utils/index.js.map +1 -0
  227. package/dist/utils/similarity.d.ts +31 -0
  228. package/dist/utils/similarity.d.ts.map +1 -0
  229. package/dist/utils/similarity.js +107 -0
  230. package/dist/utils/similarity.js.map +1 -0
  231. package/dist/utils/storage.d.ts +106 -0
  232. package/dist/utils/storage.d.ts.map +1 -0
  233. package/dist/utils/storage.js +203 -0
  234. package/dist/utils/storage.js.map +1 -0
  235. package/dist/utils/validation.d.ts +129 -0
  236. package/dist/utils/validation.d.ts.map +1 -0
  237. package/dist/utils/validation.js +171 -0
  238. package/dist/utils/validation.js.map +1 -0
  239. package/package.json +50 -34
  240. package/scripts/migrate-to-playbooks.ts +307 -0
  241. package/src/agents/index.ts +14 -0
  242. package/src/agents/mock-provider.ts +93 -0
  243. package/src/agents/types.ts +137 -0
  244. package/src/atlas.ts +560 -0
  245. package/src/bin/cognitive-core.ts +470 -0
  246. package/src/embeddings/bm25.ts +337 -0
  247. package/src/embeddings/index.ts +39 -0
  248. package/src/embeddings/manager.ts +288 -0
  249. package/src/embeddings/provider.ts +311 -0
  250. package/src/embeddings/vector-store.ts +353 -0
  251. package/src/factory.ts +263 -0
  252. package/src/index.ts +246 -0
  253. package/src/learning/analyzer.ts +335 -0
  254. package/src/learning/effectiveness.ts +428 -0
  255. package/src/learning/index.ts +58 -0
  256. package/src/learning/llm-extractor.ts +542 -0
  257. package/src/learning/meta-learner.ts +516 -0
  258. package/src/learning/pipeline.ts +244 -0
  259. package/src/learning/playbook-extractor.ts +702 -0
  260. package/src/learning/usage-inference.ts +372 -0
  261. package/src/mcp/index.ts +12 -0
  262. package/src/mcp/playbook-server.ts +565 -0
  263. package/src/memory/curated-loader.ts +160 -0
  264. package/src/memory/experience.ts +515 -0
  265. package/src/memory/index.ts +27 -0
  266. package/src/memory/meta.ts +506 -0
  267. package/src/memory/playbook.ts +493 -0
  268. package/src/memory/system.ts +551 -0
  269. package/src/runtime/backends/acp.ts +378 -0
  270. package/src/runtime/backends/index.ts +24 -0
  271. package/src/runtime/backends/mock.ts +218 -0
  272. package/src/runtime/backends/subprocess.ts +356 -0
  273. package/src/runtime/flows/learning.ts +183 -0
  274. package/src/runtime/flows/validation.ts +381 -0
  275. package/src/runtime/index.ts +53 -0
  276. package/src/runtime/manager.ts +541 -0
  277. package/src/runtime/types.ts +157 -0
  278. package/src/search/evaluator.ts +474 -0
  279. package/src/search/index.ts +59 -0
  280. package/src/search/refinement-loop.ts +363 -0
  281. package/src/search/refinement-types.ts +159 -0
  282. package/src/search/router.ts +261 -0
  283. package/src/search/solver.ts +303 -0
  284. package/src/search/verification-runner.ts +570 -0
  285. package/src/surfacing/index.ts +6 -0
  286. package/src/surfacing/skill-library.ts +594 -0
  287. package/src/types/config.ts +333 -0
  288. package/src/types/index.ts +130 -0
  289. package/src/types/memory.ts +270 -0
  290. package/src/types/meta.ts +218 -0
  291. package/src/types/outcome.ts +66 -0
  292. package/src/types/playbook.ts +196 -0
  293. package/src/types/step.ts +40 -0
  294. package/src/types/task.ts +52 -0
  295. package/src/types/trajectory.ts +80 -0
  296. package/src/utils/index.ts +38 -0
  297. package/src/utils/similarity.ts +139 -0
  298. package/src/utils/storage.ts +249 -0
  299. package/src/utils/validation.ts +286 -0
  300. package/tests/embeddings/bm25.test.ts +130 -0
  301. package/tests/embeddings/manager.test.ts +205 -0
  302. package/tests/integration/atlas.test.ts +266 -0
  303. package/tests/integration/e2e.test.ts +929 -0
  304. package/tests/learning/analyzer.test.ts +426 -0
  305. package/tests/learning/effectiveness.test.ts +542 -0
  306. package/tests/learning/pipeline.test.ts +176 -0
  307. package/tests/learning/playbook-extractor-provenance.test.ts +114 -0
  308. package/tests/learning/usage-inference.test.ts +254 -0
  309. package/tests/mcp/playbook-server.test.ts +252 -0
  310. package/tests/memory/experience.test.ts +198 -0
  311. package/tests/memory/playbook.test.ts +338 -0
  312. package/tests/memory/provenance.test.ts +639 -0
  313. package/tests/memory/system.test.ts +325 -0
  314. package/tests/runtime/agent-manager.test.ts +512 -0
  315. package/tests/runtime/mock-backend.test.ts +248 -0
  316. package/tests/search/refinement-loop.test.ts +468 -0
  317. package/tests/search/refinement.test.ts +267 -0
  318. package/tests/search/router.test.ts +427 -0
  319. package/tests/surfacing/skill-library.test.ts +292 -0
  320. package/tests/types/outcome.test.ts +147 -0
  321. package/tests/types/step.test.ts +133 -0
  322. package/tests/types/task.test.ts +158 -0
  323. package/tests/types/trajectory.test.ts +253 -0
  324. package/tests/utils/similarity.test.ts +188 -0
  325. package/tests/utils/validation.test.ts +252 -0
  326. package/tsconfig.json +25 -0
  327. package/vitest.config.ts +22 -0
  328. package/dist/index.d.mts +0 -466
  329. package/dist/index.mjs +0 -478
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Embedding Provider Interface and Implementations
3
+ *
4
+ * Provides a unified interface for generating embeddings from text.
5
+ * Supports hosted providers (OpenAI, etc.) and local models.
6
+ */
7
+ /**
8
+ * Interface for embedding providers (hosted or local)
9
+ */
10
+ export interface EmbeddingProvider {
11
+ /** Provider name for logging/debugging */
12
+ readonly name: string;
13
+ /** Embedding dimension */
14
+ readonly dimension: number;
15
+ /** Embed a single text */
16
+ embed(text: string): Promise<number[]>;
17
+ /** Embed multiple texts (batch) */
18
+ embedBatch(texts: string[]): Promise<number[][]>;
19
+ }
20
+ /**
21
+ * OpenAI embedding provider
22
+ */
23
+ export declare class OpenAIEmbeddingProvider implements EmbeddingProvider {
24
+ readonly name = "openai";
25
+ readonly dimension: number;
26
+ private apiKey;
27
+ private model;
28
+ private baseUrl;
29
+ constructor(options: {
30
+ apiKey: string;
31
+ model?: string;
32
+ dimension?: number;
33
+ baseUrl?: string;
34
+ });
35
+ embed(text: string): Promise<number[]>;
36
+ embedBatch(texts: string[]): Promise<number[][]>;
37
+ }
38
+ /**
39
+ * Anthropic Voyage embedding provider
40
+ * Uses Voyage AI embeddings via Anthropic partnership
41
+ */
42
+ export declare class VoyageEmbeddingProvider implements EmbeddingProvider {
43
+ readonly name = "voyage";
44
+ readonly dimension: number;
45
+ private apiKey;
46
+ private model;
47
+ constructor(options: {
48
+ apiKey: string;
49
+ model?: string;
50
+ dimension?: number;
51
+ });
52
+ embed(text: string): Promise<number[]>;
53
+ embedBatch(texts: string[]): Promise<number[][]>;
54
+ }
55
+ /**
56
+ * Local embedding provider using @huggingface/transformers
57
+ * Runs transformer models locally in Node.js using ONNX runtime
58
+ */
59
+ export declare class LocalEmbeddingProvider implements EmbeddingProvider {
60
+ readonly name = "local";
61
+ readonly dimension: number;
62
+ private modelName;
63
+ private extractor;
64
+ private initPromise;
65
+ /** Default model - all-MiniLM-L6-v2 is small and fast with good quality */
66
+ static readonly DEFAULT_MODEL = "sentence-transformers/all-MiniLM-L6-v2";
67
+ /** Dimensions for common models */
68
+ static readonly MODEL_DIMENSIONS: Record<string, number>;
69
+ constructor(options?: {
70
+ modelName?: string;
71
+ modelPath?: string;
72
+ dimension?: number;
73
+ });
74
+ /** Get the model name/path */
75
+ get modelPath(): string;
76
+ private initialize;
77
+ private doInitialize;
78
+ embed(text: string): Promise<number[]>;
79
+ embedBatch(texts: string[]): Promise<number[][]>;
80
+ /**
81
+ * Check if a model is available locally (cached)
82
+ * This can be used to pre-warm the cache
83
+ */
84
+ isModelCached(): Promise<boolean>;
85
+ }
86
+ /**
87
+ * Configuration for embedding providers
88
+ */
89
+ export interface EmbeddingProviderConfig {
90
+ type: "openai" | "voyage" | "local" | "none";
91
+ apiKey?: string;
92
+ model?: string;
93
+ modelPath?: string;
94
+ dimension?: number;
95
+ baseUrl?: string;
96
+ }
97
+ /**
98
+ * Create an embedding provider from configuration
99
+ */
100
+ export declare function createEmbeddingProvider(config: EmbeddingProviderConfig): EmbeddingProvider | null;
101
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/embeddings/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,232 @@
1
+ /**
2
+ * Embedding Provider Interface and Implementations
3
+ *
4
+ * Provides a unified interface for generating embeddings from text.
5
+ * Supports hosted providers (OpenAI, etc.) and local models.
6
+ */
7
+ /**
8
+ * OpenAI embedding provider
9
+ */
10
+ export class OpenAIEmbeddingProvider {
11
+ name = "openai";
12
+ dimension;
13
+ apiKey;
14
+ model;
15
+ baseUrl;
16
+ constructor(options) {
17
+ this.apiKey = options.apiKey;
18
+ this.model = options.model ?? "text-embedding-3-small";
19
+ this.dimension = options.dimension ?? 1536;
20
+ this.baseUrl = options.baseUrl ?? "https://api.openai.com/v1";
21
+ }
22
+ async embed(text) {
23
+ const [embedding] = await this.embedBatch([text]);
24
+ return embedding;
25
+ }
26
+ async embedBatch(texts) {
27
+ const response = await fetch(`${this.baseUrl}/embeddings`, {
28
+ method: "POST",
29
+ headers: {
30
+ Authorization: `Bearer ${this.apiKey}`,
31
+ "Content-Type": "application/json",
32
+ },
33
+ body: JSON.stringify({
34
+ model: this.model,
35
+ input: texts,
36
+ dimensions: this.dimension,
37
+ }),
38
+ });
39
+ if (!response.ok) {
40
+ const error = await response.text();
41
+ throw new Error(`OpenAI embedding error: ${response.status} - ${error}`);
42
+ }
43
+ const data = (await response.json());
44
+ // Sort by index to maintain order
45
+ const sorted = data.data.sort((a, b) => a.index - b.index);
46
+ return sorted.map((item) => item.embedding);
47
+ }
48
+ }
49
+ /**
50
+ * Anthropic Voyage embedding provider
51
+ * Uses Voyage AI embeddings via Anthropic partnership
52
+ */
53
+ export class VoyageEmbeddingProvider {
54
+ name = "voyage";
55
+ dimension;
56
+ apiKey;
57
+ model;
58
+ constructor(options) {
59
+ this.apiKey = options.apiKey;
60
+ this.model = options.model ?? "voyage-2";
61
+ this.dimension = options.dimension ?? 1024;
62
+ }
63
+ async embed(text) {
64
+ const [embedding] = await this.embedBatch([text]);
65
+ return embedding;
66
+ }
67
+ async embedBatch(texts) {
68
+ const response = await fetch("https://api.voyageai.com/v1/embeddings", {
69
+ method: "POST",
70
+ headers: {
71
+ Authorization: `Bearer ${this.apiKey}`,
72
+ "Content-Type": "application/json",
73
+ },
74
+ body: JSON.stringify({
75
+ model: this.model,
76
+ input: texts,
77
+ }),
78
+ });
79
+ if (!response.ok) {
80
+ const error = await response.text();
81
+ throw new Error(`Voyage embedding error: ${response.status} - ${error}`);
82
+ }
83
+ const data = (await response.json());
84
+ const sorted = data.data.sort((a, b) => a.index - b.index);
85
+ return sorted.map((item) => item.embedding);
86
+ }
87
+ }
88
+ /**
89
+ * Local embedding provider using @huggingface/transformers
90
+ * Runs transformer models locally in Node.js using ONNX runtime
91
+ */
92
+ export class LocalEmbeddingProvider {
93
+ name = "local";
94
+ dimension;
95
+ modelName;
96
+ extractor = null;
97
+ initPromise = null;
98
+ /** Default model - all-MiniLM-L6-v2 is small and fast with good quality */
99
+ static DEFAULT_MODEL = "sentence-transformers/all-MiniLM-L6-v2";
100
+ /** Dimensions for common models */
101
+ static MODEL_DIMENSIONS = {
102
+ "sentence-transformers/all-MiniLM-L6-v2": 384,
103
+ "sentence-transformers/all-MiniLM-L12-v2": 384,
104
+ "BAAI/bge-small-en-v1.5": 384,
105
+ "BAAI/bge-base-en-v1.5": 768,
106
+ "intfloat/e5-small-v2": 384,
107
+ "intfloat/e5-base-v2": 768,
108
+ // Keep Xenova aliases for backwards compatibility
109
+ "Xenova/all-MiniLM-L6-v2": 384,
110
+ "Xenova/all-MiniLM-L12-v2": 384,
111
+ "Xenova/bge-small-en-v1.5": 384,
112
+ "Xenova/bge-base-en-v1.5": 768,
113
+ "Xenova/e5-small-v2": 384,
114
+ "Xenova/e5-base-v2": 768,
115
+ };
116
+ constructor(options) {
117
+ this.modelName =
118
+ options?.modelName ??
119
+ options?.modelPath ??
120
+ LocalEmbeddingProvider.DEFAULT_MODEL;
121
+ // Auto-detect dimension from known models or use provided/default
122
+ this.dimension =
123
+ options?.dimension ??
124
+ LocalEmbeddingProvider.MODEL_DIMENSIONS[this.modelName] ??
125
+ 384;
126
+ }
127
+ /** Get the model name/path */
128
+ get modelPath() {
129
+ return this.modelName;
130
+ }
131
+ async initialize() {
132
+ if (this.extractor)
133
+ return;
134
+ // Prevent multiple concurrent initializations
135
+ if (this.initPromise) {
136
+ await this.initPromise;
137
+ return;
138
+ }
139
+ this.initPromise = this.doInitialize();
140
+ await this.initPromise;
141
+ }
142
+ async doInitialize() {
143
+ try {
144
+ // Dynamic import to avoid issues if transformers.js isn't installed
145
+ const { pipeline } = await import("@huggingface/transformers");
146
+ // Create feature-extraction pipeline for embeddings
147
+ this.extractor = await pipeline("feature-extraction", this.modelName, {
148
+ dtype: "fp32", // Use fp32 for better compatibility
149
+ });
150
+ }
151
+ catch (error) {
152
+ const message = error instanceof Error ? error.message : String(error);
153
+ throw new Error(`Failed to initialize local embedding model "${this.modelName}": ${message}`);
154
+ }
155
+ }
156
+ async embed(text) {
157
+ await this.initialize();
158
+ // Run the extractor
159
+ const output = await this.extractor(text, {
160
+ pooling: "mean", // Mean pooling over tokens
161
+ normalize: true, // L2 normalize the output
162
+ });
163
+ // Convert tensor to array
164
+ return Array.from(output.data);
165
+ }
166
+ async embedBatch(texts) {
167
+ await this.initialize();
168
+ // Process in batch for better efficiency
169
+ const results = [];
170
+ for (const text of texts) {
171
+ const output = await this.extractor(text, {
172
+ pooling: "mean",
173
+ normalize: true,
174
+ });
175
+ results.push(Array.from(output.data));
176
+ }
177
+ return results;
178
+ }
179
+ /**
180
+ * Check if a model is available locally (cached)
181
+ * This can be used to pre-warm the cache
182
+ */
183
+ async isModelCached() {
184
+ try {
185
+ const { env } = await import("@huggingface/transformers");
186
+ // Check if model files exist in cache
187
+ // This is a simplified check - the actual cache structure may vary
188
+ return env.cacheDir !== undefined;
189
+ }
190
+ catch {
191
+ return false;
192
+ }
193
+ }
194
+ }
195
+ /**
196
+ * Create an embedding provider from configuration
197
+ */
198
+ export function createEmbeddingProvider(config) {
199
+ switch (config.type) {
200
+ case "openai":
201
+ if (!config.apiKey) {
202
+ throw new Error("OpenAI embedding provider requires apiKey");
203
+ }
204
+ return new OpenAIEmbeddingProvider({
205
+ apiKey: config.apiKey,
206
+ model: config.model,
207
+ dimension: config.dimension,
208
+ baseUrl: config.baseUrl,
209
+ });
210
+ case "voyage":
211
+ if (!config.apiKey) {
212
+ throw new Error("Voyage embedding provider requires apiKey");
213
+ }
214
+ return new VoyageEmbeddingProvider({
215
+ apiKey: config.apiKey,
216
+ model: config.model,
217
+ dimension: config.dimension,
218
+ });
219
+ case "local":
220
+ // Local provider now has sensible defaults
221
+ return new LocalEmbeddingProvider({
222
+ modelName: config.model,
223
+ modelPath: config.modelPath,
224
+ dimension: config.dimension,
225
+ });
226
+ case "none":
227
+ return null;
228
+ default:
229
+ return null;
230
+ }
231
+ }
232
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/embeddings/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Vector Store using sqlite-vec
3
+ *
4
+ * Provides efficient vector similarity search using SQLite with the sqlite-vec extension.
5
+ * sqlite-vec is optimized for in-process vector search without the overhead of external services.
6
+ */
7
+ import type { MemoryItemType } from './bm25.js';
8
+ export interface VectorSearchResult {
9
+ id: string;
10
+ score: number;
11
+ content: string;
12
+ type: MemoryItemType;
13
+ }
14
+ /**
15
+ * Vector store using sqlite-vec for efficient similarity search
16
+ */
17
+ export declare class SqliteVectorStore {
18
+ private db;
19
+ private dimension;
20
+ private tableName;
21
+ private initialized;
22
+ constructor(options: {
23
+ dbPath: string;
24
+ dimension: number;
25
+ tableName?: string;
26
+ });
27
+ /**
28
+ * Initialize the database schema
29
+ */
30
+ private initialize;
31
+ /**
32
+ * Insert or update a vector with metadata
33
+ */
34
+ insert(id: string, embedding: number[], type: MemoryItemType, content: string): void;
35
+ /**
36
+ * Insert multiple vectors in batch
37
+ */
38
+ insertBatch(items: Array<{
39
+ id: string;
40
+ embedding: number[];
41
+ type: MemoryItemType;
42
+ content: string;
43
+ }>): void;
44
+ /**
45
+ * Search for similar vectors
46
+ */
47
+ search(queryEmbedding: number[], options?: {
48
+ k?: number;
49
+ type?: MemoryItemType;
50
+ threshold?: number;
51
+ }): VectorSearchResult[];
52
+ /**
53
+ * Get a vector by ID
54
+ */
55
+ get(id: string): {
56
+ embedding: number[];
57
+ type: MemoryItemType;
58
+ content: string;
59
+ } | null;
60
+ /**
61
+ * Check if an ID exists
62
+ */
63
+ has(id: string): boolean;
64
+ /**
65
+ * Delete a vector
66
+ */
67
+ delete(id: string): boolean;
68
+ /**
69
+ * Get the number of vectors stored
70
+ */
71
+ get count(): number;
72
+ /**
73
+ * Get count by type
74
+ */
75
+ countByType(type: MemoryItemType): number;
76
+ /**
77
+ * Clear all vectors
78
+ */
79
+ clear(): void;
80
+ /**
81
+ * Close the database connection
82
+ */
83
+ close(): void;
84
+ /**
85
+ * Get database statistics
86
+ */
87
+ getStats(): {
88
+ totalVectors: number;
89
+ byType: Record<MemoryItemType, number>;
90
+ dimension: number;
91
+ };
92
+ }
93
+ /**
94
+ * Create a new vector store
95
+ */
96
+ export declare function createVectorStore(options: {
97
+ dbPath: string;
98
+ dimension: number;
99
+ tableName?: string;
100
+ }): SqliteVectorStore;
101
+ //# sourceMappingURL=vector-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-store.d.ts","sourceRoot":"","sources":["../../src/embeddings/vector-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAkB;gBAEzB,OAAO,EAAE;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;IAaD;;OAEG;IACH,OAAO,CAAC,UAAU;IA+BlB;;OAEG;IACH,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EAAE,EACnB,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,MAAM,GACd,IAAI;IA4BP;;OAEG;IACH,WAAW,CACT,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,IAAI,EAAE,cAAc,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,GACD,IAAI;IA0BP;;OAEG;IACH,MAAM,CACJ,cAAc,EAAE,MAAM,EAAE,EACxB,OAAO,GAAE;QACP,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,cAAc,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACf,GACL,kBAAkB,EAAE;IA+DvB;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAsBtF;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAOxB;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAkB3B;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAMlB;IAED;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IAQzC;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,QAAQ,IAAI;QACV,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC;KACnB;CAcF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,iBAAiB,CAEpB"}