@askdkc/kiokuko 0.2.6 → 0.2.8

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 (251) hide show
  1. package/README.ja.md +18 -0
  2. package/README.ko.md +17 -0
  3. package/README.md +23 -0
  4. package/README.zh-CN.md +16 -0
  5. package/dist/akinator/agent-task.d.ts +5 -0
  6. package/dist/akinator/agent-task.d.ts.map +1 -1
  7. package/dist/akinator/agent-task.js +98 -28
  8. package/dist/akinator/agent-task.js.map +1 -1
  9. package/dist/cli.d.ts +4 -0
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +94 -8
  12. package/dist/cli.js.map +1 -1
  13. package/dist/commands/doctor.d.ts +4 -0
  14. package/dist/commands/doctor.d.ts.map +1 -1
  15. package/dist/commands/doctor.js +46 -1
  16. package/dist/commands/doctor.js.map +1 -1
  17. package/dist/commands/embeddings.d.ts +26 -0
  18. package/dist/commands/embeddings.d.ts.map +1 -0
  19. package/dist/commands/embeddings.js +190 -0
  20. package/dist/commands/embeddings.js.map +1 -0
  21. package/dist/commands/import.d.ts.map +1 -1
  22. package/dist/commands/import.js +7 -0
  23. package/dist/commands/import.js.map +1 -1
  24. package/dist/commands/use.d.ts.map +1 -1
  25. package/dist/commands/use.js +22 -8
  26. package/dist/commands/use.js.map +1 -1
  27. package/dist/config/paths.d.ts +5 -0
  28. package/dist/config/paths.d.ts.map +1 -1
  29. package/dist/config/paths.js +34 -0
  30. package/dist/config/paths.js.map +1 -1
  31. package/dist/context/broker.d.ts +3 -1
  32. package/dist/context/broker.d.ts.map +1 -1
  33. package/dist/context/broker.js +11 -7
  34. package/dist/context/broker.js.map +1 -1
  35. package/dist/context/delivery.d.ts.map +1 -1
  36. package/dist/context/delivery.js +5 -3
  37. package/dist/context/delivery.js.map +1 -1
  38. package/dist/context/ranking.d.ts +1 -1
  39. package/dist/context/ranking.d.ts.map +1 -1
  40. package/dist/context/ranking.js +1 -0
  41. package/dist/context/ranking.js.map +1 -1
  42. package/dist/context/scoped-broker.d.ts +4 -3
  43. package/dist/context/scoped-broker.d.ts.map +1 -1
  44. package/dist/context/scoped-broker.js +45 -7
  45. package/dist/context/scoped-broker.js.map +1 -1
  46. package/dist/context/selection-state.d.ts +12 -0
  47. package/dist/context/selection-state.d.ts.map +1 -1
  48. package/dist/context/selection-state.js +117 -7
  49. package/dist/context/selection-state.js.map +1 -1
  50. package/dist/db/capabilities.d.ts +8 -0
  51. package/dist/db/capabilities.d.ts.map +1 -1
  52. package/dist/db/capabilities.js +14 -0
  53. package/dist/db/capabilities.js.map +1 -1
  54. package/dist/db/connection.d.ts +7 -0
  55. package/dist/db/connection.d.ts.map +1 -1
  56. package/dist/db/connection.js +56 -0
  57. package/dist/db/connection.js.map +1 -1
  58. package/dist/db/migrate.d.ts.map +1 -1
  59. package/dist/db/migrate.js +3 -0
  60. package/dist/db/migrate.js.map +1 -1
  61. package/dist/embedding/backend.d.ts +27 -0
  62. package/dist/embedding/backend.d.ts.map +1 -0
  63. package/dist/embedding/backend.js +67 -0
  64. package/dist/embedding/backend.js.map +1 -0
  65. package/dist/embedding/config.d.ts +10 -0
  66. package/dist/embedding/config.d.ts.map +1 -0
  67. package/dist/embedding/config.js +142 -0
  68. package/dist/embedding/config.js.map +1 -0
  69. package/dist/embedding/diagnostics.d.ts +34 -0
  70. package/dist/embedding/diagnostics.d.ts.map +1 -0
  71. package/dist/embedding/diagnostics.js +263 -0
  72. package/dist/embedding/diagnostics.js.map +1 -0
  73. package/dist/embedding/document.d.ts +20 -0
  74. package/dist/embedding/document.d.ts.map +1 -0
  75. package/dist/embedding/document.js +122 -0
  76. package/dist/embedding/document.js.map +1 -0
  77. package/dist/embedding/javascript-backend.d.ts +11 -0
  78. package/dist/embedding/javascript-backend.d.ts.map +1 -0
  79. package/dist/embedding/javascript-backend.js +164 -0
  80. package/dist/embedding/javascript-backend.js.map +1 -0
  81. package/dist/embedding/jobs.d.ts +67 -0
  82. package/dist/embedding/jobs.d.ts.map +1 -0
  83. package/dist/embedding/jobs.js +259 -0
  84. package/dist/embedding/jobs.js.map +1 -0
  85. package/dist/embedding/local-model-loader.d.ts +24 -0
  86. package/dist/embedding/local-model-loader.d.ts.map +1 -0
  87. package/dist/embedding/local-model-loader.js +64 -0
  88. package/dist/embedding/local-model-loader.js.map +1 -0
  89. package/dist/embedding/local-transformers-provider.d.ts +17 -0
  90. package/dist/embedding/local-transformers-provider.d.ts.map +1 -0
  91. package/dist/embedding/local-transformers-provider.js +54 -0
  92. package/dist/embedding/local-transformers-provider.js.map +1 -0
  93. package/dist/embedding/model-download.d.ts +32 -0
  94. package/dist/embedding/model-download.d.ts.map +1 -0
  95. package/dist/embedding/model-download.js +41 -0
  96. package/dist/embedding/model-download.js.map +1 -0
  97. package/dist/embedding/model-installation.d.ts +17 -0
  98. package/dist/embedding/model-installation.d.ts.map +1 -0
  99. package/dist/embedding/model-installation.js +71 -0
  100. package/dist/embedding/model-installation.js.map +1 -0
  101. package/dist/embedding/model-manifest.d.ts +18 -0
  102. package/dist/embedding/model-manifest.d.ts.map +1 -0
  103. package/dist/embedding/model-manifest.js +86 -0
  104. package/dist/embedding/model-manifest.js.map +1 -0
  105. package/dist/embedding/openai-compatible-provider.d.ts +24 -0
  106. package/dist/embedding/openai-compatible-provider.d.ts.map +1 -0
  107. package/dist/embedding/openai-compatible-provider.js +330 -0
  108. package/dist/embedding/openai-compatible-provider.js.map +1 -0
  109. package/dist/embedding/presets/local-small.d.ts +8 -0
  110. package/dist/embedding/presets/local-small.d.ts.map +1 -0
  111. package/dist/embedding/presets/local-small.js +67 -0
  112. package/dist/embedding/presets/local-small.js.map +1 -0
  113. package/dist/embedding/presets/manifest.d.ts +27 -0
  114. package/dist/embedding/presets/manifest.d.ts.map +1 -0
  115. package/dist/embedding/presets/manifest.js +5 -0
  116. package/dist/embedding/presets/manifest.js.map +1 -0
  117. package/dist/embedding/profile.d.ts +10 -0
  118. package/dist/embedding/profile.d.ts.map +1 -0
  119. package/dist/embedding/profile.js +67 -0
  120. package/dist/embedding/profile.js.map +1 -0
  121. package/dist/embedding/provider.d.ts +13 -0
  122. package/dist/embedding/provider.d.ts.map +1 -0
  123. package/dist/embedding/provider.js +17 -0
  124. package/dist/embedding/provider.js.map +1 -0
  125. package/dist/embedding/query-cache.d.ts +45 -0
  126. package/dist/embedding/query-cache.d.ts.map +1 -0
  127. package/dist/embedding/query-cache.js +181 -0
  128. package/dist/embedding/query-cache.js.map +1 -0
  129. package/dist/embedding/runtime.d.ts +14 -0
  130. package/dist/embedding/runtime.d.ts.map +1 -0
  131. package/dist/embedding/runtime.js +407 -0
  132. package/dist/embedding/runtime.js.map +1 -0
  133. package/dist/embedding/settings.d.ts +6 -0
  134. package/dist/embedding/settings.d.ts.map +1 -0
  135. package/dist/embedding/settings.js +69 -0
  136. package/dist/embedding/settings.js.map +1 -0
  137. package/dist/embedding/setup-lock.d.ts +7 -0
  138. package/dist/embedding/setup-lock.d.ts.map +1 -0
  139. package/dist/embedding/setup-lock.js +35 -0
  140. package/dist/embedding/setup-lock.js.map +1 -0
  141. package/dist/embedding/setup-service.d.ts +53 -0
  142. package/dist/embedding/setup-service.d.ts.map +1 -0
  143. package/dist/embedding/setup-service.js +184 -0
  144. package/dist/embedding/setup-service.js.map +1 -0
  145. package/dist/embedding/sqlite-vec-backend.d.ts +9 -0
  146. package/dist/embedding/sqlite-vec-backend.d.ts.map +1 -0
  147. package/dist/embedding/sqlite-vec-backend.js +106 -0
  148. package/dist/embedding/sqlite-vec-backend.js.map +1 -0
  149. package/dist/embedding/sqlite-vec-loader.d.ts +17 -0
  150. package/dist/embedding/sqlite-vec-loader.d.ts.map +1 -0
  151. package/dist/embedding/sqlite-vec-loader.js +51 -0
  152. package/dist/embedding/sqlite-vec-loader.js.map +1 -0
  153. package/dist/embedding/store.d.ts +66 -0
  154. package/dist/embedding/store.d.ts.map +1 -0
  155. package/dist/embedding/store.js +490 -0
  156. package/dist/embedding/store.js.map +1 -0
  157. package/dist/embedding/types.d.ts +126 -0
  158. package/dist/embedding/types.d.ts.map +1 -0
  159. package/dist/embedding/types.js +2 -0
  160. package/dist/embedding/types.js.map +1 -0
  161. package/dist/embedding/vector.d.ts +9 -0
  162. package/dist/embedding/vector.d.ts.map +1 -0
  163. package/dist/embedding/vector.js +90 -0
  164. package/dist/embedding/vector.js.map +1 -0
  165. package/dist/embedding/worker.d.ts +23 -0
  166. package/dist/embedding/worker.d.ts.map +1 -0
  167. package/dist/embedding/worker.js +84 -0
  168. package/dist/embedding/worker.js.map +1 -0
  169. package/dist/enno-oduno/schemas.d.ts +2 -2
  170. package/dist/ledger/checkpoint-contract.d.ts +2 -2
  171. package/dist/mcp/bounded-stdio-transport.d.ts +3 -0
  172. package/dist/mcp/bounded-stdio-transport.d.ts.map +1 -1
  173. package/dist/mcp/bounded-stdio-transport.js +15 -3
  174. package/dist/mcp/bounded-stdio-transport.js.map +1 -1
  175. package/dist/mcp/request-deadline.d.ts +51 -0
  176. package/dist/mcp/request-deadline.d.ts.map +1 -0
  177. package/dist/mcp/request-deadline.js +155 -0
  178. package/dist/mcp/request-deadline.js.map +1 -0
  179. package/dist/mcp/runtime-owner.d.ts +27 -0
  180. package/dist/mcp/runtime-owner.d.ts.map +1 -0
  181. package/dist/mcp/runtime-owner.js +129 -0
  182. package/dist/mcp/runtime-owner.js.map +1 -0
  183. package/dist/mcp/server.d.ts +11 -1
  184. package/dist/mcp/server.d.ts.map +1 -1
  185. package/dist/mcp/server.js +83 -22
  186. package/dist/mcp/server.js.map +1 -1
  187. package/dist/memory/checkpoint-contract.d.ts +3 -3
  188. package/dist/memory/entries.d.ts.map +1 -1
  189. package/dist/memory/entries.js +13 -0
  190. package/dist/memory/entries.js.map +1 -1
  191. package/dist/memory/federated-retrieval.d.ts +3 -2
  192. package/dist/memory/federated-retrieval.d.ts.map +1 -1
  193. package/dist/memory/federated-retrieval.js +112 -31
  194. package/dist/memory/federated-retrieval.js.map +1 -1
  195. package/dist/memory/hybrid-retrieval.d.ts +9 -2
  196. package/dist/memory/hybrid-retrieval.d.ts.map +1 -1
  197. package/dist/memory/hybrid-retrieval.js +60 -13
  198. package/dist/memory/hybrid-retrieval.js.map +1 -1
  199. package/dist/memory/retrieval.d.ts +4 -3
  200. package/dist/memory/retrieval.d.ts.map +1 -1
  201. package/dist/memory/retrieval.js +6 -6
  202. package/dist/memory/retrieval.js.map +1 -1
  203. package/dist/memory/scoped-memory.d.ts +3 -2
  204. package/dist/memory/scoped-memory.d.ts.map +1 -1
  205. package/dist/memory/scoped-memory.js +7 -3
  206. package/dist/memory/scoped-memory.js.map +1 -1
  207. package/dist/server/agent-application.js +1 -1
  208. package/dist/server/agent-application.js.map +1 -1
  209. package/dist/server/http.d.ts +17 -1
  210. package/dist/server/http.d.ts.map +1 -1
  211. package/dist/server/http.js +79 -13
  212. package/dist/server/http.js.map +1 -1
  213. package/dist/skills/discovery-service.d.ts.map +1 -1
  214. package/dist/skills/discovery-service.js +10 -8
  215. package/dist/skills/discovery-service.js.map +1 -1
  216. package/dist/skills/find.d.ts +1 -0
  217. package/dist/skills/find.d.ts.map +1 -1
  218. package/dist/skills/find.js +1 -0
  219. package/dist/skills/find.js.map +1 -1
  220. package/dist/skills/materialization-authority.d.ts +1 -1
  221. package/dist/skills/materialization-authority.d.ts.map +1 -1
  222. package/dist/skills/materialization-authority.js +2 -2
  223. package/dist/skills/materialization-authority.js.map +1 -1
  224. package/dist/skills/providers/skills-sh-compat.d.ts.map +1 -1
  225. package/dist/skills/providers/skills-sh-compat.js +4 -2
  226. package/dist/skills/providers/skills-sh-compat.js.map +1 -1
  227. package/dist/skills/providers/skills-sh-v1.d.ts +2 -2
  228. package/dist/skills/providers/skills-sh-v1.d.ts.map +1 -1
  229. package/dist/skills/providers/skills-sh-v1.js +22 -4
  230. package/dist/skills/providers/skills-sh-v1.js.map +1 -1
  231. package/dist/skills/source/github-fetcher.d.ts.map +1 -1
  232. package/dist/skills/source/github-fetcher.js +8 -4
  233. package/dist/skills/source/github-fetcher.js.map +1 -1
  234. package/dist/skills/types.d.ts +3 -2
  235. package/dist/skills/types.d.ts.map +1 -1
  236. package/docs/agent-file.md +72 -0
  237. package/docs/agent-gateway.md +104 -0
  238. package/docs/architecture.md +12 -0
  239. package/docs/cli-contract.md +13 -0
  240. package/docs/client-compatibility.md +298 -0
  241. package/docs/database.md +11 -0
  242. package/docs/execution-ledger.md +89 -0
  243. package/docs/release-notes-0.1.18.md +103 -0
  244. package/docs/retrieval-evaluation.md +10 -0
  245. package/docs/security.md +11 -0
  246. package/docs/sqlite-driver-adr.md +8 -0
  247. package/migrations/021_semantic_embeddings.sql +122 -0
  248. package/migrations/022_embedding_setup_v2.sql +236 -0
  249. package/migrations/down/021_semantic_embeddings.sql +17 -0
  250. package/migrations/down/022_embedding_setup_v2.sql +133 -0
  251. package/package.json +10 -1
@@ -0,0 +1,67 @@
1
+ /**
2
+ * The only public local model preset. Every artifact coordinate is immutable;
3
+ * model installation code must consume this value rather than user input.
4
+ */
5
+ export const LOCAL_SMALL_PRESET = Object.freeze({
6
+ id: 'local-small',
7
+ schemaVersion: 1,
8
+ displayName: 'multilingual-e5-small',
9
+ sourceModel: 'intfloat/multilingual-e5-small',
10
+ artifactRepository: 'Xenova/multilingual-e5-small',
11
+ revision: 'ae61bf0193ce3851dc8a45147e459b04ed783d8a',
12
+ transformersJsVersion: '4.2.0',
13
+ dimensions: 384,
14
+ maximumTokens: 512,
15
+ dtype: 'q8',
16
+ pooling: 'mean',
17
+ normalize: true,
18
+ distanceMetric: 'cosine',
19
+ distanceCeiling: 0.8,
20
+ inputContract: 'e5-query-passage-v1',
21
+ queryPrefix: 'query: ',
22
+ documentPrefix: 'passage: ',
23
+ files: Object.freeze([
24
+ {
25
+ path: 'README.md',
26
+ size: 553,
27
+ sha256: '000754b7b0eb4d281504ade130052d4ce887d132bb5c8a77ed53f1926b910f8b',
28
+ },
29
+ {
30
+ path: 'config.json',
31
+ size: 658,
32
+ sha256: 'cb99455288675345e1a4f411438d5d0adbba5fbd3a67ea4fb03c015433b996c1',
33
+ },
34
+ {
35
+ path: 'quant_config.json',
36
+ size: 674,
37
+ sha256: '59d175f15264115f18c698d76e443b5d49fc6c8c599911c421405ef4f236e87d',
38
+ },
39
+ {
40
+ path: 'tokenizer.json',
41
+ size: 17_082_730,
42
+ sha256: '0b44a9d7b51c3c62626640cda0e2c2f70fdacdc25bbbd68038369d14ebdf4c39',
43
+ },
44
+ {
45
+ path: 'tokenizer_config.json',
46
+ size: 443,
47
+ sha256: 'a1d6bc8734a6f635dc158508bef000f8e2e5a759c7d92f984b2c86e5ff53425b',
48
+ },
49
+ {
50
+ path: 'special_tokens_map.json',
51
+ size: 167,
52
+ sha256: 'd05497f1da52c5e09554c0cd874037a083e1dc1b9cfd48034d1c717f1afc07a7',
53
+ },
54
+ {
55
+ path: 'sentencepiece.bpe.model',
56
+ size: 5_069_051,
57
+ sha256: 'cfc8146abe2a0488e9e2a0c56de7952f7c11ab059eca145a0a727afce0db2865',
58
+ },
59
+ {
60
+ path: 'onnx/model_quantized.onnx',
61
+ size: 118_308_185,
62
+ sha256: 'f80102d3f2a1229f387d3c81909990d8945513e347b0eab049f7de3c6f98c193',
63
+ },
64
+ ]),
65
+ });
66
+ export const LOCAL_SMALL_PRESET_MANIFEST_HASH = '85d724217ffdda4333b6c2892f5138754d716f62e08a82cb0093ca5baca24fe4';
67
+ //# sourceMappingURL=local-small.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-small.js","sourceRoot":"","sources":["../../../src/embedding/presets/local-small.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAyB,MAAM,CAAC,MAAM,CAAC;IACpE,EAAE,EAAE,aAAa;IACjB,aAAa,EAAE,CAAC;IAChB,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,gCAAgC;IAC7C,kBAAkB,EAAE,8BAA8B;IAClD,QAAQ,EAAE,0CAA0C;IACpD,qBAAqB,EAAE,OAAO;IAC9B,UAAU,EAAE,GAAG;IACf,aAAa,EAAE,GAAG;IAClB,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,IAAI;IACf,cAAc,EAAE,QAAQ;IACxB,eAAe,EAAE,GAAG;IACpB,aAAa,EAAE,qBAAqB;IACpC,WAAW,EAAE,SAAS;IACtB,cAAc,EAAE,WAAW;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QACnB;YACE,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,kEAAkE;SAC3E;QACD;YACE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,kEAAkE;SAC3E;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,kEAAkE;SAC3E;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,kEAAkE;SAC3E;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,kEAAkE;SAC3E;QACD;YACE,IAAI,EAAE,yBAAyB;YAC/B,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,kEAAkE;SAC3E;QACD;YACE,IAAI,EAAE,yBAAyB;YAC/B,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,kEAAkE;SAC3E;QACD;YACE,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,kEAAkE;SAC3E;KACF,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gCAAgC,GAC3C,kEAAkE,CAAC"}
@@ -0,0 +1,27 @@
1
+ export interface LocalEmbeddingPresetFile {
2
+ readonly path: string;
3
+ readonly size: number;
4
+ readonly sha256: string;
5
+ }
6
+ export interface LocalEmbeddingPreset {
7
+ readonly id: 'local-small';
8
+ readonly schemaVersion: 1;
9
+ readonly displayName: string;
10
+ readonly sourceModel: 'intfloat/multilingual-e5-small';
11
+ readonly artifactRepository: 'Xenova/multilingual-e5-small';
12
+ readonly revision: string;
13
+ readonly transformersJsVersion: string;
14
+ readonly dimensions: 384;
15
+ readonly maximumTokens: 512;
16
+ readonly dtype: 'q8';
17
+ readonly pooling: 'mean';
18
+ readonly normalize: true;
19
+ readonly distanceMetric: 'cosine';
20
+ readonly distanceCeiling: number;
21
+ readonly inputContract: 'e5-query-passage-v1';
22
+ readonly queryPrefix: 'query: ';
23
+ readonly documentPrefix: 'passage: ';
24
+ readonly files: readonly LocalEmbeddingPresetFile[];
25
+ }
26
+ export declare function presetManifestHash(preset: LocalEmbeddingPreset): string;
27
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/embedding/presets/manifest.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,gCAAgC,CAAC;IACvD,QAAQ,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,wBAAwB,EAAE,CAAC;CACrD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAEvE"}
@@ -0,0 +1,5 @@
1
+ import { canonicalContentHash } from '../../serialization/validate.js';
2
+ export function presetManifestHash(preset) {
3
+ return canonicalContentHash(preset);
4
+ }
5
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/embedding/presets/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AA6BvE,MAAM,UAAU,kBAAkB,CAAC,MAA4B;IAC7D,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { EmbeddingConfig, EmbeddingProfile, EmbeddingProfileIdentity, EnabledEmbeddingConfig, LocalEmbeddingProfile, LocalEmbeddingProfileIdentity } from './types.js';
2
+ import type { LocalEmbeddingPreset } from './presets/manifest.js';
3
+ export declare function endpointFingerprint(endpoint: string): string;
4
+ export declare function embeddingProfileId(identity: EmbeddingProfileIdentity | LocalEmbeddingProfileIdentity): string;
5
+ export declare function localEmbeddingProfileId(identity: LocalEmbeddingProfileIdentity): string;
6
+ export declare function createEmbeddingProfileIdentity(config: EnabledEmbeddingConfig): EmbeddingProfileIdentity;
7
+ export declare function createEmbeddingProfile(config: EmbeddingConfig): EmbeddingProfile;
8
+ export declare function createLocalEmbeddingProfileIdentity(preset: LocalEmbeddingPreset, inferenceEngineVersion?: string): LocalEmbeddingProfileIdentity;
9
+ export declare function createLocalEmbeddingProfile(preset: LocalEmbeddingPreset, inferenceEngineVersion?: string): LocalEmbeddingProfile;
10
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/embedding/profile.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,6BAA6B,EAC9B,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAOlE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,6BAA6B,GAAG,MAAM,CAE7G;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,6BAA6B,GAAG,MAAM,CAEvF;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,sBAAsB,GAAG,wBAAwB,CAYvG;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,CAIhF;AAED,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,oBAAoB,EAC5B,sBAAsB,SAA+B,GACpD,6BAA6B,CAwB/B;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,oBAAoB,EAC5B,sBAAsB,SAA+B,GACpD,qBAAqB,CAMvB"}
@@ -0,0 +1,67 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { canonicalJson } from '../serialization/validate.js';
3
+ import { requireEnabledEmbeddingConfig } from './config.js';
4
+ import { presetManifestHash } from './presets/manifest.js';
5
+ function sha256(value) {
6
+ return createHash('sha256').update(value).digest('hex');
7
+ }
8
+ export function endpointFingerprint(endpoint) {
9
+ return sha256(endpoint);
10
+ }
11
+ export function embeddingProfileId(identity) {
12
+ return sha256(canonicalJson(identity));
13
+ }
14
+ export function localEmbeddingProfileId(identity) {
15
+ return sha256(canonicalJson(identity));
16
+ }
17
+ export function createEmbeddingProfileIdentity(config) {
18
+ return {
19
+ schemaVersion: 1,
20
+ providerKind: config.provider,
21
+ endpointFingerprint: endpointFingerprint(config.baseUrl),
22
+ model: config.model,
23
+ dimensions: config.dimensions,
24
+ distanceMetric: 'cosine',
25
+ documentTemplateVersion: 1,
26
+ queryTemplateVersion: 1,
27
+ distanceCeiling: config.distanceCeiling,
28
+ };
29
+ }
30
+ export function createEmbeddingProfile(config) {
31
+ const enabled = requireEnabledEmbeddingConfig(config);
32
+ const identity = createEmbeddingProfileIdentity(enabled);
33
+ return Object.freeze({ profileId: embeddingProfileId(identity), identity: Object.freeze(identity) });
34
+ }
35
+ export function createLocalEmbeddingProfileIdentity(preset, inferenceEngineVersion = preset.transformersJsVersion) {
36
+ return {
37
+ schemaVersion: 2,
38
+ providerKind: 'local-transformers',
39
+ presetId: preset.id,
40
+ sourceModel: preset.sourceModel,
41
+ artifactRepository: preset.artifactRepository,
42
+ modelRevision: preset.revision,
43
+ artifactManifestHash: presetManifestHash(preset),
44
+ inferenceEngine: 'transformers-js',
45
+ inferenceEngineVersion,
46
+ dtype: preset.dtype,
47
+ pooling: preset.pooling,
48
+ normalize: preset.normalize,
49
+ maximumTokens: preset.maximumTokens,
50
+ dimensions: preset.dimensions,
51
+ distanceMetric: preset.distanceMetric,
52
+ distanceCeiling: preset.distanceCeiling,
53
+ inputContract: preset.inputContract,
54
+ documentTemplateVersion: 2,
55
+ queryTemplateVersion: 2,
56
+ queryPrefix: preset.queryPrefix,
57
+ documentPrefix: preset.documentPrefix,
58
+ };
59
+ }
60
+ export function createLocalEmbeddingProfile(preset, inferenceEngineVersion = preset.transformersJsVersion) {
61
+ const identity = createLocalEmbeddingProfileIdentity(preset, inferenceEngineVersion);
62
+ return Object.freeze({
63
+ profileId: localEmbeddingProfileId(identity),
64
+ identity: Object.freeze(identity),
65
+ });
66
+ }
67
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/embedding/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { EmbeddingProvider } from './types.js';
2
+ export type EmbeddingProviderFailureCode = 'timeout' | 'rate_limited' | 'provider_unavailable' | 'invalid_response' | 'dimension_mismatch' | 'secret_blocked';
3
+ /** A provider failure contains only a stable classification, never remote data. */
4
+ export declare class EmbeddingProviderError extends Error {
5
+ readonly code: EmbeddingProviderFailureCode;
6
+ readonly retryable: boolean;
7
+ readonly retryAfterMs: number | null;
8
+ readonly name = "EmbeddingProviderError";
9
+ constructor(code: EmbeddingProviderFailureCode, retryable: boolean, retryAfterMs?: number | null);
10
+ }
11
+ export declare function isEmbeddingProviderError(value: unknown): value is EmbeddingProviderError;
12
+ export type { EmbeddingProvider };
13
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/embedding/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,4BAA4B,GACpC,SAAS,GACT,cAAc,GACd,sBAAsB,GACtB,kBAAkB,GAClB,oBAAoB,GACpB,gBAAgB,CAAC;AAErB,mFAAmF;AACnF,qBAAa,sBAAuB,SAAQ,KAAK;IAI7C,QAAQ,CAAC,IAAI,EAAE,4BAA4B;IAC3C,QAAQ,CAAC,SAAS,EAAE,OAAO;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IALtC,SAAkB,IAAI,4BAA4B;gBAGvC,IAAI,EAAE,4BAA4B,EAClC,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,MAAM,GAAG,IAAW;CAI9C;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CAExF;AAED,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,17 @@
1
+ /** A provider failure contains only a stable classification, never remote data. */
2
+ export class EmbeddingProviderError extends Error {
3
+ code;
4
+ retryable;
5
+ retryAfterMs;
6
+ name = 'EmbeddingProviderError';
7
+ constructor(code, retryable, retryAfterMs = null) {
8
+ super(code);
9
+ this.code = code;
10
+ this.retryable = retryable;
11
+ this.retryAfterMs = retryAfterMs;
12
+ }
13
+ }
14
+ export function isEmbeddingProviderError(value) {
15
+ return value instanceof EmbeddingProviderError;
16
+ }
17
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/embedding/provider.ts"],"names":[],"mappings":"AAUA,mFAAmF;AACnF,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAIpC;IACA;IACA;IALO,IAAI,GAAG,wBAAwB,CAAC;IAElD,YACW,IAAkC,EAClC,SAAkB,EAClB,eAA8B,IAAI;QAE3C,KAAK,CAAC,IAAI,CAAC,CAAC;QAJH,SAAI,GAAJ,IAAI,CAA8B;QAClC,cAAS,GAAT,SAAS,CAAS;QAClB,iBAAY,GAAZ,YAAY,CAAsB;IAG7C,CAAC;CACF;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,KAAK,YAAY,sBAAsB,CAAC;AACjD,CAAC"}
@@ -0,0 +1,45 @@
1
+ import type { SqliteDatabase } from '../db/adapter.js';
2
+ export declare const QUERY_TEMPLATE_VERSION: 1;
3
+ export declare const QUERY_TEMPLATE_VERSION_V2: 2;
4
+ export declare const EMBEDDING_QUERY_INPUT_CONTRACT: "e5-query-passage-v1";
5
+ export declare const MAX_QUERY_TEXT_BYTES: number;
6
+ export declare const QUERY_EMBEDDING_CACHE_LIMIT = 512;
7
+ export interface StoredQueryEmbedding {
8
+ readonly profileId: string;
9
+ readonly queryHash: string;
10
+ readonly dimensions: number;
11
+ readonly vector: Float32Array;
12
+ readonly vectorHash: string;
13
+ readonly createdAt: string;
14
+ readonly lastUsedAt: string;
15
+ }
16
+ export interface QueryEmbeddingInput {
17
+ readonly profileId: string;
18
+ readonly queryHash: string;
19
+ readonly vector: Float32Array | readonly number[];
20
+ }
21
+ export interface QueryEmbeddingWriteOptions {
22
+ readonly now?: string;
23
+ readonly expectedGeneration?: number;
24
+ }
25
+ export declare function normalizeEmbeddingQuery(value: string): string;
26
+ /** Hash only the canonical query template; the raw query is never stored. */
27
+ export declare function queryEmbeddingHash(value: string): string;
28
+ export declare function normalizeCanonicalEmbeddingQuery(value: string): string;
29
+ export declare function renderEmbeddingQueryInput(value: string, prefix?: string): string;
30
+ /** Hash the complete v2 provider input contract without storing raw query text. */
31
+ export declare function queryEmbeddingHashV2(value: string): string;
32
+ export declare const embeddingQueryHash: typeof queryEmbeddingHash;
33
+ export declare function readQueryEmbeddingInTransaction(database: SqliteDatabase, input: {
34
+ profileId: string;
35
+ queryHash: string;
36
+ now?: string;
37
+ }): StoredQueryEmbedding | undefined;
38
+ export declare function readQueryEmbedding(database: SqliteDatabase, input: {
39
+ profileId: string;
40
+ queryHash: string;
41
+ now?: string;
42
+ }): StoredQueryEmbedding | undefined;
43
+ export declare function writeQueryEmbeddingInTransaction(database: SqliteDatabase, input: QueryEmbeddingInput, options?: QueryEmbeddingWriteOptions): StoredQueryEmbedding;
44
+ export declare function writeQueryEmbedding(database: SqliteDatabase, input: QueryEmbeddingInput, options?: QueryEmbeddingWriteOptions): StoredQueryEmbedding;
45
+ //# sourceMappingURL=query-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-cache.d.ts","sourceRoot":"","sources":["../../src/embedding/query-cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,kBAAkB,CAAC;AAKlE,eAAO,MAAM,sBAAsB,EAAG,CAAU,CAAC;AACjD,eAAO,MAAM,yBAAyB,EAAG,CAAU,CAAC;AACpD,eAAO,MAAM,8BAA8B,EAAG,qBAA8B,CAAC;AAC7E,eAAO,MAAM,oBAAoB,QAAY,CAAC;AAC9C,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAM/C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;CACnD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAqCD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAY,GAAG,MAAM,CAInF;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ1D;AAED,eAAO,MAAM,kBAAkB,2BAAqB,CAAC;AA2DrD,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D,oBAAoB,GAAG,SAAS,CAoBlC;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D,oBAAoB,GAAG,SAAS,CAElC;AAED,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,mBAAmB,EAC1B,OAAO,GAAE,0BAA+B,GACvC,oBAAoB,CA0BtB;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,mBAAmB,EAC1B,OAAO,GAAE,0BAA+B,GACvC,oBAAoB,CAEtB"}
@@ -0,0 +1,181 @@
1
+ import { canonicalContentHash } from '../serialization/validate.js';
2
+ import { validateTimestamp } from '../ledger/validate.js';
3
+ import { withImmediateTransaction } from '../db/transaction.js';
4
+ import { KiokukoError } from '../errors.js';
5
+ import { readEmbeddingProfile, readEmbeddingRuntimeState } from './store.js';
6
+ import { decodeVector, encodeVector, hashVectorBytes } from './vector.js';
7
+ export const QUERY_TEMPLATE_VERSION = 1;
8
+ export const QUERY_TEMPLATE_VERSION_V2 = 2;
9
+ export const EMBEDDING_QUERY_INPUT_CONTRACT = 'e5-query-passage-v1';
10
+ export const MAX_QUERY_TEXT_BYTES = 32 * 1024;
11
+ export const QUERY_EMBEDDING_CACHE_LIMIT = 512;
12
+ const HASH_PATTERN = /^[0-9a-f]{64}$/u;
13
+ const INVALID_CONTROL = /[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/u;
14
+ const INVALID_UNICODE = /[\p{Cs}\uFFFD]/u;
15
+ function invalid(message) {
16
+ throw new KiokukoError('VALIDATION_ERROR', message);
17
+ }
18
+ function integrity(message) {
19
+ throw new KiokukoError('INTEGRITY_ERROR', message);
20
+ }
21
+ function conflict(message) {
22
+ throw new KiokukoError('CONFLICT', message);
23
+ }
24
+ function hash(value, label) {
25
+ if (typeof value !== 'string' || !HASH_PATTERN.test(value))
26
+ invalid(`${label} must be a lowercase SHA-256 hash`);
27
+ return value;
28
+ }
29
+ function canonicalQueryText(value) {
30
+ if (typeof value !== 'string')
31
+ invalid('Query text must be a string');
32
+ const normalized = value.normalize('NFKC').replaceAll('\r\n', '\n').replaceAll('\r', '\n').trim();
33
+ if (normalized.length === 0 || INVALID_CONTROL.test(normalized) || INVALID_UNICODE.test(normalized))
34
+ invalid('Query text is invalid');
35
+ if (Buffer.byteLength(normalized, 'utf8') > MAX_QUERY_TEXT_BYTES)
36
+ invalid('Query text exceeds the byte limit');
37
+ return normalized;
38
+ }
39
+ export function normalizeEmbeddingQuery(value) {
40
+ return canonicalQueryText(value);
41
+ }
42
+ /** Hash only the canonical query template; the raw query is never stored. */
43
+ export function queryEmbeddingHash(value) {
44
+ return canonicalContentHash({ templateVersion: QUERY_TEMPLATE_VERSION, text: canonicalQueryText(value) });
45
+ }
46
+ export function normalizeCanonicalEmbeddingQuery(value) {
47
+ return canonicalQueryText(value);
48
+ }
49
+ export function renderEmbeddingQueryInput(value, prefix = 'query: ') {
50
+ const normalized = normalizeCanonicalEmbeddingQuery(value);
51
+ if (prefix !== 'query: ')
52
+ invalid('Embedding provider query prefix is invalid');
53
+ return `${prefix}${normalized}`;
54
+ }
55
+ /** Hash the complete v2 provider input contract without storing raw query text. */
56
+ export function queryEmbeddingHashV2(value) {
57
+ const normalized = normalizeCanonicalEmbeddingQuery(value);
58
+ return canonicalContentHash({
59
+ contract: EMBEDDING_QUERY_INPUT_CONTRACT,
60
+ prefix: 'query: ',
61
+ templateVersion: QUERY_TEMPLATE_VERSION_V2,
62
+ text: normalized,
63
+ });
64
+ }
65
+ export const embeddingQueryHash = queryEmbeddingHash;
66
+ function storedTimestamp(value, label) {
67
+ if (typeof value !== 'string')
68
+ integrity(`${label} is invalid`);
69
+ try {
70
+ return validateTimestamp(value, label);
71
+ }
72
+ catch {
73
+ integrity(`${label} is invalid`);
74
+ }
75
+ }
76
+ function storedQueryEmbedding(row) {
77
+ const profileId = hash(row.profile_id, 'Stored query embedding profile ID');
78
+ const queryHash = hash(row.query_hash, 'Stored query embedding query hash');
79
+ if (typeof row.dimensions !== 'number' || !Number.isSafeInteger(row.dimensions) || row.dimensions < 2 || row.dimensions > 8192) {
80
+ integrity('Stored query embedding dimensions are invalid');
81
+ }
82
+ const vectorHash = hash(row.vector_hash, 'Stored query embedding vector hash');
83
+ let vector;
84
+ try {
85
+ vector = decodeVector(row.embedding, row.dimensions, vectorHash);
86
+ }
87
+ catch {
88
+ integrity('Stored query embedding vector is invalid');
89
+ }
90
+ const createdAt = storedTimestamp(row.created_at, 'query embedding created_at');
91
+ const lastUsedAt = storedTimestamp(row.last_used_at, 'query embedding last_used_at');
92
+ return { profileId, queryHash, dimensions: row.dimensions, vector, vectorHash, createdAt, lastUsedAt };
93
+ }
94
+ function validateWriteInput(input) {
95
+ return {
96
+ profileId: hash(input.profileId, 'profileId'),
97
+ queryHash: hash(input.queryHash, 'queryHash'),
98
+ };
99
+ }
100
+ function assertExpectedGeneration(database, profileId, expectedGeneration) {
101
+ if (expectedGeneration === undefined)
102
+ return;
103
+ if (!Number.isSafeInteger(expectedGeneration) || expectedGeneration < 1)
104
+ invalid('expectedGeneration must be a positive integer');
105
+ const runtime = readEmbeddingRuntimeState(database);
106
+ if (runtime.activeProfileId !== profileId || runtime.generation !== expectedGeneration) {
107
+ conflict('Embedding profile changed while writing the query cache');
108
+ }
109
+ }
110
+ function pruneProfileCache(database, profileId) {
111
+ database.prepare(`
112
+ DELETE FROM query_embeddings
113
+ WHERE profile_id = ?
114
+ AND query_hash NOT IN (
115
+ SELECT query_hash
116
+ FROM query_embeddings
117
+ WHERE profile_id = ?
118
+ ORDER BY last_used_at DESC, query_hash ASC
119
+ LIMIT ?
120
+ )
121
+ `).run(profileId, profileId, QUERY_EMBEDDING_CACHE_LIMIT);
122
+ }
123
+ export function readQueryEmbeddingInTransaction(database, input) {
124
+ const profileId = hash(input.profileId, 'profileId');
125
+ const queryHash = hash(input.queryHash, 'queryHash');
126
+ const now = validateTimestamp(input.now ?? new Date().toISOString(), 'now');
127
+ readEmbeddingRuntimeState(database);
128
+ const row = database.prepare(`
129
+ SELECT profile_id, query_hash, dimensions, embedding, vector_hash, created_at, last_used_at
130
+ FROM query_embeddings
131
+ WHERE profile_id = ? AND query_hash = ?
132
+ `).get(profileId, queryHash);
133
+ if (row === undefined)
134
+ return undefined;
135
+ const stored = storedQueryEmbedding(row);
136
+ const profile = readEmbeddingProfile(database, profileId);
137
+ if (profile === undefined || profile.identity.dimensions !== stored.dimensions)
138
+ integrity('Stored query embedding profile is invalid');
139
+ database.prepare(`
140
+ UPDATE query_embeddings
141
+ SET last_used_at = ?
142
+ WHERE profile_id = ? AND query_hash = ?
143
+ `).run(now, profileId, queryHash);
144
+ return { ...stored, lastUsedAt: now, vector: new Float32Array(stored.vector) };
145
+ }
146
+ export function readQueryEmbedding(database, input) {
147
+ return withImmediateTransaction(database, () => readQueryEmbeddingInTransaction(database, input));
148
+ }
149
+ export function writeQueryEmbeddingInTransaction(database, input, options = {}) {
150
+ const { profileId, queryHash } = validateWriteInput(input);
151
+ const now = validateTimestamp(options.now ?? new Date().toISOString(), 'now');
152
+ assertExpectedGeneration(database, profileId, options.expectedGeneration);
153
+ const profile = readEmbeddingProfile(database, profileId);
154
+ if (profile === undefined)
155
+ throw new KiokukoError('NOT_FOUND', 'Embedding profile not found');
156
+ const bytes = encodeVector(input.vector, profile.identity.dimensions);
157
+ const vectorHash = hashVectorBytes(bytes);
158
+ database.prepare(`
159
+ INSERT INTO query_embeddings (
160
+ profile_id, query_hash, dimensions, embedding, vector_hash, created_at, last_used_at
161
+ ) VALUES (?, ?, ?, ?, ?, ?, ?)
162
+ ON CONFLICT(profile_id, query_hash) DO UPDATE SET
163
+ dimensions = excluded.dimensions,
164
+ embedding = excluded.embedding,
165
+ vector_hash = excluded.vector_hash,
166
+ last_used_at = excluded.last_used_at
167
+ `).run(profileId, queryHash, profile.identity.dimensions, bytes, vectorHash, now, now);
168
+ pruneProfileCache(database, profileId);
169
+ const row = database.prepare(`
170
+ SELECT profile_id, query_hash, dimensions, embedding, vector_hash, created_at, last_used_at
171
+ FROM query_embeddings
172
+ WHERE profile_id = ? AND query_hash = ?
173
+ `).get(profileId, queryHash);
174
+ if (row === undefined)
175
+ integrity('Query embedding write could not be read back');
176
+ return storedQueryEmbedding(row);
177
+ }
178
+ export function writeQueryEmbedding(database, input, options = {}) {
179
+ return withImmediateTransaction(database, () => writeQueryEmbeddingInTransaction(database, input, options));
180
+ }
181
+ //# sourceMappingURL=query-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-cache.js","sourceRoot":"","sources":["../../src/embedding/query-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { EmbeddingConfig, EmbeddingProfile, EmbeddingProvider, EmbeddingRuntime, VectorSearchBackend } from './types.js';
2
+ import type { SqliteDatabase } from '../db/adapter.js';
3
+ import type { HybridSearchRuntime } from '../memory/hybrid-retrieval.js';
4
+ export interface EmbeddingRuntimeOptions {
5
+ readonly provider?: EmbeddingProvider;
6
+ readonly backend?: VectorSearchBackend;
7
+ readonly now?: () => string;
8
+ readonly enqueueWrite?: <T>(operation: () => T | PromiseLike<T>) => Promise<T>;
9
+ readonly profile?: EmbeddingProfile;
10
+ }
11
+ export declare function createEmbeddingRuntime(database: SqliteDatabase, config?: EmbeddingConfig, options?: EmbeddingRuntimeOptions): EmbeddingRuntime;
12
+ /** Convert an owned runtime into the retrieval-only shape consumed by search lanes. */
13
+ export declare function prepareEmbeddingSearchRuntime(runtime: EmbeddingRuntime | undefined, database: SqliteDatabase, text: string): Promise<HybridSearchRuntime>;
14
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/embedding/runtime.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EACV,eAAe,EAGf,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAGhB,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAOzE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/E,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;CACrC;AA8VD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,eAAe,EACxB,OAAO,GAAE,uBAA4B,GACpC,gBAAgB,CA4BlB;AAED,uFAAuF;AACvF,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,mBAAmB,CAAC,CAK9B"}