sensemaking 0.15.4 → 0.17.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 (435) hide show
  1. package/README.md +33 -5
  2. package/dist/cjs/chunk/extract.d.cts +2 -0
  3. package/dist/cjs/chunk/extract.d.ts +2 -0
  4. package/dist/cjs/chunk/extract.js +139 -0
  5. package/dist/cjs/chunk/extract.js.map +1 -0
  6. package/dist/cjs/chunk/group.d.cts +4 -0
  7. package/dist/cjs/chunk/group.d.ts +4 -0
  8. package/dist/cjs/chunk/group.js +489 -0
  9. package/dist/cjs/chunk/group.js.map +1 -0
  10. package/dist/cjs/chunk/index.d.cts +8 -0
  11. package/dist/cjs/chunk/index.d.ts +8 -0
  12. package/dist/cjs/chunk/index.js +44 -0
  13. package/dist/cjs/chunk/index.js.map +1 -0
  14. package/dist/cjs/chunk/parse.d.cts +2 -0
  15. package/dist/cjs/chunk/parse.d.ts +2 -0
  16. package/dist/cjs/chunk/parse.js +71 -0
  17. package/dist/cjs/chunk/parse.js.map +1 -0
  18. package/dist/cjs/chunk/types.d.cts +19 -0
  19. package/dist/cjs/chunk/types.d.ts +19 -0
  20. package/dist/cjs/chunk/types.js +5 -0
  21. package/dist/cjs/chunk/types.js.map +1 -0
  22. package/dist/cjs/chunk/version.d.cts +1 -0
  23. package/dist/cjs/chunk/version.d.ts +1 -0
  24. package/dist/cjs/chunk/version.js +14 -0
  25. package/dist/cjs/chunk/version.js.map +1 -0
  26. package/dist/cjs/cli/download.js +12 -11
  27. package/dist/cjs/cli/download.js.map +1 -1
  28. package/dist/cjs/cli/index.d.cts +1 -1
  29. package/dist/cjs/cli/index.d.ts +1 -1
  30. package/dist/cjs/cli/index.js +1 -1
  31. package/dist/cjs/cli/index.js.map +1 -1
  32. package/dist/cjs/cli/init.js +31 -5
  33. package/dist/cjs/cli/init.js.map +1 -1
  34. package/dist/cjs/cli/map.js +1 -1
  35. package/dist/cjs/cli/map.js.map +1 -1
  36. package/dist/cjs/cli/named.js +1 -1
  37. package/dist/cjs/cli/named.js.map +1 -1
  38. package/dist/cjs/cli/path.js +2 -2
  39. package/dist/cjs/cli/path.js.map +1 -1
  40. package/dist/cjs/cli/peek.js +1 -1
  41. package/dist/cjs/cli/peek.js.map +1 -1
  42. package/dist/cjs/cli/related.js +1 -1
  43. package/dist/cjs/cli/related.js.map +1 -1
  44. package/dist/cjs/cli/search.js +1 -1
  45. package/dist/cjs/cli/search.js.map +1 -1
  46. package/dist/cjs/cli/shared.d.cts +1 -1
  47. package/dist/cjs/cli/shared.d.ts +1 -1
  48. package/dist/cjs/cli/shared.js +3 -3
  49. package/dist/cjs/cli/shared.js.map +1 -1
  50. package/dist/cjs/cli/status.js +344 -100
  51. package/dist/cjs/cli/status.js.map +1 -1
  52. package/dist/cjs/commands/map.d.cts +1 -1
  53. package/dist/cjs/commands/map.d.ts +1 -1
  54. package/dist/cjs/commands/map.js.map +1 -1
  55. package/dist/cjs/commands/peek.d.cts +1 -1
  56. package/dist/cjs/commands/peek.d.ts +1 -1
  57. package/dist/cjs/commands/peek.js +13 -6
  58. package/dist/cjs/commands/peek.js.map +1 -1
  59. package/dist/cjs/commands/related.js +17 -13
  60. package/dist/cjs/commands/related.js.map +1 -1
  61. package/dist/cjs/commands/scope.js +1 -1
  62. package/dist/cjs/commands/scope.js.map +1 -1
  63. package/dist/cjs/commands/search.d.cts +1 -1
  64. package/dist/cjs/commands/search.d.ts +1 -1
  65. package/dist/cjs/commands/search.js +28 -99
  66. package/dist/cjs/commands/search.js.map +1 -1
  67. package/dist/cjs/commands/signals.d.cts +18 -0
  68. package/dist/cjs/commands/signals.d.ts +18 -0
  69. package/dist/cjs/commands/signals.js +299 -0
  70. package/dist/cjs/commands/signals.js.map +1 -0
  71. package/dist/cjs/commands/status.d.cts +2 -2
  72. package/dist/cjs/commands/status.d.ts +2 -2
  73. package/dist/cjs/commands/status.js +1 -1
  74. package/dist/cjs/commands/status.js.map +1 -1
  75. package/dist/cjs/config/access.d.cts +8 -3
  76. package/dist/cjs/config/access.d.ts +8 -3
  77. package/dist/cjs/config/access.js +35 -17
  78. package/dist/cjs/config/access.js.map +1 -1
  79. package/dist/cjs/config/index.d.cts +5 -1
  80. package/dist/cjs/config/index.d.ts +5 -1
  81. package/dist/cjs/config/index.js +16 -2
  82. package/dist/cjs/config/index.js.map +1 -1
  83. package/dist/cjs/config/load.d.cts +6 -1
  84. package/dist/cjs/config/load.d.ts +6 -1
  85. package/dist/cjs/config/load.js +83 -8
  86. package/dist/cjs/config/load.js.map +1 -1
  87. package/dist/cjs/config/resolve.js +1 -1
  88. package/dist/cjs/config/resolve.js.map +1 -1
  89. package/dist/cjs/config/signals.d.cts +4 -0
  90. package/dist/cjs/config/signals.d.ts +4 -0
  91. package/dist/cjs/config/signals.js +30 -0
  92. package/dist/cjs/config/signals.js.map +1 -0
  93. package/dist/cjs/config/types.d.cts +7 -4
  94. package/dist/cjs/config/types.d.ts +7 -4
  95. package/dist/cjs/config/types.js +1 -1
  96. package/dist/cjs/config/types.js.map +1 -1
  97. package/dist/cjs/config/validate.d.cts +1 -0
  98. package/dist/cjs/config/validate.d.ts +1 -0
  99. package/dist/cjs/config/validate.js +127 -11
  100. package/dist/cjs/config/validate.js.map +1 -1
  101. package/dist/cjs/db/open.d.cts +1 -1
  102. package/dist/cjs/db/open.d.ts +1 -1
  103. package/dist/cjs/db/open.js +9 -4
  104. package/dist/cjs/db/open.js.map +1 -1
  105. package/dist/cjs/db/reconcile.d.cts +1 -0
  106. package/dist/cjs/db/reconcile.d.ts +1 -0
  107. package/dist/cjs/db/reconcile.js +23 -8
  108. package/dist/cjs/db/reconcile.js.map +1 -1
  109. package/dist/cjs/{sql-functions.js → db/sql-functions.js} +1 -1
  110. package/dist/cjs/db/sql-functions.js.map +1 -0
  111. package/dist/cjs/embed/cohere.d.cts +2 -0
  112. package/dist/cjs/embed/cohere.d.ts +2 -0
  113. package/dist/cjs/embed/cohere.js +238 -0
  114. package/dist/cjs/embed/cohere.js.map +1 -0
  115. package/dist/cjs/embed/http.d.cts +2 -0
  116. package/dist/cjs/embed/http.d.ts +2 -0
  117. package/dist/cjs/embed/http.js +258 -0
  118. package/dist/cjs/embed/http.js.map +1 -0
  119. package/dist/cjs/embed/identity.d.cts +13 -0
  120. package/dist/cjs/embed/identity.d.ts +13 -0
  121. package/dist/cjs/embed/identity.js +194 -0
  122. package/dist/cjs/embed/identity.js.map +1 -0
  123. package/dist/cjs/embed/langfit.d.cts +6 -0
  124. package/dist/cjs/embed/langfit.d.ts +6 -0
  125. package/dist/cjs/embed/langfit.js +286 -0
  126. package/dist/cjs/embed/langfit.js.map +1 -0
  127. package/dist/cjs/embed/languages.d.cts +3 -0
  128. package/dist/cjs/embed/languages.d.ts +3 -0
  129. package/dist/cjs/embed/languages.js +98 -0
  130. package/dist/cjs/embed/languages.js.map +1 -0
  131. package/dist/cjs/embed/openai.d.cts +2 -0
  132. package/dist/cjs/embed/openai.d.ts +2 -0
  133. package/dist/cjs/embed/openai.js +268 -0
  134. package/dist/cjs/embed/openai.js.map +1 -0
  135. package/dist/cjs/embed/query.d.cts +21 -0
  136. package/dist/cjs/embed/query.d.ts +21 -0
  137. package/dist/cjs/embed/query.js +610 -0
  138. package/dist/cjs/embed/query.js.map +1 -0
  139. package/dist/cjs/embed/registry.d.cts +3 -0
  140. package/dist/cjs/embed/registry.d.ts +3 -0
  141. package/dist/cjs/embed/registry.js +114 -0
  142. package/dist/cjs/embed/registry.js.map +1 -0
  143. package/dist/cjs/embed/static.d.cts +2 -0
  144. package/dist/cjs/embed/static.d.ts +2 -0
  145. package/dist/cjs/embed/static.js +330 -0
  146. package/dist/cjs/embed/static.js.map +1 -0
  147. package/dist/cjs/embed/store.d.cts +8 -0
  148. package/dist/cjs/embed/store.d.ts +8 -0
  149. package/dist/cjs/embed/store.js +498 -0
  150. package/dist/cjs/embed/store.js.map +1 -0
  151. package/dist/cjs/embed/types.d.cts +8 -0
  152. package/dist/cjs/embed/types.d.ts +8 -0
  153. package/dist/cjs/embed/types.js +7 -0
  154. package/dist/cjs/embed/types.js.map +1 -0
  155. package/dist/cjs/errors.d.cts +1 -1
  156. package/dist/cjs/errors.d.ts +1 -1
  157. package/dist/cjs/errors.js.map +1 -1
  158. package/dist/cjs/features/embed.d.cts +2 -28
  159. package/dist/cjs/features/embed.d.ts +2 -28
  160. package/dist/cjs/features/embed.js +39 -1027
  161. package/dist/cjs/features/embed.js.map +1 -1
  162. package/dist/cjs/{fences.js → features/fences.js} +1 -1
  163. package/dist/cjs/features/fences.js.map +1 -0
  164. package/dist/cjs/features/links.js +1 -1
  165. package/dist/cjs/features/links.js.map +1 -1
  166. package/dist/cjs/features/rank.js +1 -1
  167. package/dist/cjs/features/rank.js.map +1 -1
  168. package/dist/cjs/features/sections.js +4 -3
  169. package/dist/cjs/features/sections.js.map +1 -1
  170. package/dist/cjs/features/tags.js +1 -1
  171. package/dist/cjs/features/tags.js.map +1 -1
  172. package/dist/cjs/features/types.d.cts +4 -2
  173. package/dist/cjs/features/types.d.ts +4 -2
  174. package/dist/cjs/graph/graph.js.map +1 -0
  175. package/dist/cjs/graph/traverse.js.map +1 -0
  176. package/dist/cjs/index.d.cts +4 -4
  177. package/dist/cjs/index.d.ts +4 -4
  178. package/dist/cjs/index.js +4 -1
  179. package/dist/cjs/index.js.map +1 -1
  180. package/dist/cjs/output/column-hint.js.map +1 -0
  181. package/dist/cjs/{output.d.cts → output/output.d.cts} +2 -2
  182. package/dist/cjs/{output.d.ts → output/output.d.ts} +2 -2
  183. package/dist/cjs/{output.js → output/output.js} +9 -2
  184. package/dist/cjs/output/output.js.map +1 -0
  185. package/dist/cjs/output/progress.js.map +1 -0
  186. package/dist/cjs/{search-error.js → output/search-error.js} +1 -1
  187. package/dist/cjs/output/search-error.js.map +1 -0
  188. package/dist/cjs/scan/frontmatter.d.cts +13 -0
  189. package/dist/cjs/scan/frontmatter.d.ts +13 -0
  190. package/dist/cjs/scan/frontmatter.js +229 -0
  191. package/dist/cjs/scan/frontmatter.js.map +1 -0
  192. package/dist/cjs/scan/index.d.cts +25 -0
  193. package/dist/cjs/scan/index.d.ts +25 -0
  194. package/dist/cjs/scan/index.js +107 -0
  195. package/dist/cjs/scan/index.js.map +1 -0
  196. package/dist/cjs/scan/list.d.cts +12 -0
  197. package/dist/cjs/scan/list.d.ts +12 -0
  198. package/dist/cjs/scan/list.js +154 -0
  199. package/dist/cjs/scan/list.js.map +1 -0
  200. package/dist/cjs/text/segment.d.cts +3 -0
  201. package/dist/cjs/text/segment.d.ts +3 -0
  202. package/dist/cjs/text/segment.js +154 -0
  203. package/dist/cjs/text/segment.js.map +1 -0
  204. package/dist/cjs/text/strip.d.cts +3 -0
  205. package/dist/cjs/text/strip.d.ts +3 -0
  206. package/dist/cjs/text/strip.js +32 -0
  207. package/dist/cjs/text/strip.js.map +1 -0
  208. package/dist/esm/chunk/extract.d.ts +2 -0
  209. package/dist/esm/chunk/extract.js +114 -0
  210. package/dist/esm/chunk/extract.js.map +1 -0
  211. package/dist/esm/chunk/group.d.ts +4 -0
  212. package/dist/esm/chunk/group.js +253 -0
  213. package/dist/esm/chunk/group.js.map +1 -0
  214. package/dist/esm/chunk/index.d.ts +8 -0
  215. package/dist/esm/chunk/index.js +16 -0
  216. package/dist/esm/chunk/index.js.map +1 -0
  217. package/dist/esm/chunk/parse.d.ts +2 -0
  218. package/dist/esm/chunk/parse.js +63 -0
  219. package/dist/esm/chunk/parse.js.map +1 -0
  220. package/dist/esm/chunk/types.d.ts +19 -0
  221. package/dist/esm/chunk/types.js +2 -0
  222. package/dist/esm/chunk/types.js.map +1 -0
  223. package/dist/esm/chunk/version.d.ts +1 -0
  224. package/dist/esm/chunk/version.js +3 -0
  225. package/dist/esm/chunk/version.js.map +1 -0
  226. package/dist/esm/cli/download.js +9 -8
  227. package/dist/esm/cli/download.js.map +1 -1
  228. package/dist/esm/cli/index.d.ts +1 -1
  229. package/dist/esm/cli/index.js +1 -1
  230. package/dist/esm/cli/index.js.map +1 -1
  231. package/dist/esm/cli/init.js +32 -6
  232. package/dist/esm/cli/init.js.map +1 -1
  233. package/dist/esm/cli/map.js +1 -1
  234. package/dist/esm/cli/map.js.map +1 -1
  235. package/dist/esm/cli/named.js +1 -1
  236. package/dist/esm/cli/named.js.map +1 -1
  237. package/dist/esm/cli/path.js +2 -2
  238. package/dist/esm/cli/path.js.map +1 -1
  239. package/dist/esm/cli/peek.js +1 -1
  240. package/dist/esm/cli/peek.js.map +1 -1
  241. package/dist/esm/cli/related.js +1 -1
  242. package/dist/esm/cli/related.js.map +1 -1
  243. package/dist/esm/cli/search.js +1 -1
  244. package/dist/esm/cli/search.js.map +1 -1
  245. package/dist/esm/cli/shared.d.ts +1 -1
  246. package/dist/esm/cli/shared.js +3 -3
  247. package/dist/esm/cli/shared.js.map +1 -1
  248. package/dist/esm/cli/status.js +37 -9
  249. package/dist/esm/cli/status.js.map +1 -1
  250. package/dist/esm/commands/map.d.ts +1 -1
  251. package/dist/esm/commands/map.js.map +1 -1
  252. package/dist/esm/commands/peek.d.ts +1 -1
  253. package/dist/esm/commands/peek.js +8 -1
  254. package/dist/esm/commands/peek.js.map +1 -1
  255. package/dist/esm/commands/related.js +14 -10
  256. package/dist/esm/commands/related.js.map +1 -1
  257. package/dist/esm/commands/scope.js +1 -1
  258. package/dist/esm/commands/scope.js.map +1 -1
  259. package/dist/esm/commands/search.d.ts +1 -1
  260. package/dist/esm/commands/search.js +30 -81
  261. package/dist/esm/commands/search.js.map +1 -1
  262. package/dist/esm/commands/signals.d.ts +18 -0
  263. package/dist/esm/commands/signals.js +78 -0
  264. package/dist/esm/commands/signals.js.map +1 -0
  265. package/dist/esm/commands/status.d.ts +2 -2
  266. package/dist/esm/commands/status.js +2 -2
  267. package/dist/esm/commands/status.js.map +1 -1
  268. package/dist/esm/config/access.d.ts +8 -3
  269. package/dist/esm/config/access.js +34 -15
  270. package/dist/esm/config/access.js.map +1 -1
  271. package/dist/esm/config/index.d.ts +5 -1
  272. package/dist/esm/config/index.js +3 -1
  273. package/dist/esm/config/index.js.map +1 -1
  274. package/dist/esm/config/load.d.ts +6 -1
  275. package/dist/esm/config/load.js +67 -9
  276. package/dist/esm/config/load.js.map +1 -1
  277. package/dist/esm/config/resolve.js +2 -2
  278. package/dist/esm/config/resolve.js.map +1 -1
  279. package/dist/esm/config/signals.d.ts +4 -0
  280. package/dist/esm/config/signals.js +14 -0
  281. package/dist/esm/config/signals.js.map +1 -0
  282. package/dist/esm/config/types.d.ts +7 -4
  283. package/dist/esm/config/types.js +1 -1
  284. package/dist/esm/config/types.js.map +1 -1
  285. package/dist/esm/config/validate.d.ts +1 -0
  286. package/dist/esm/config/validate.js +65 -12
  287. package/dist/esm/config/validate.js.map +1 -1
  288. package/dist/esm/db/open.d.ts +1 -1
  289. package/dist/esm/db/open.js +11 -6
  290. package/dist/esm/db/open.js.map +1 -1
  291. package/dist/esm/db/reconcile.d.ts +1 -0
  292. package/dist/esm/db/reconcile.js +14 -4
  293. package/dist/esm/db/reconcile.js.map +1 -1
  294. package/dist/esm/{sql-functions.js → db/sql-functions.js} +1 -1
  295. package/dist/esm/db/sql-functions.js.map +1 -0
  296. package/dist/esm/embed/cohere.d.ts +2 -0
  297. package/dist/esm/embed/cohere.js +46 -0
  298. package/dist/esm/embed/cohere.js.map +1 -0
  299. package/dist/esm/embed/http.d.ts +2 -0
  300. package/dist/esm/embed/http.js +33 -0
  301. package/dist/esm/embed/http.js.map +1 -0
  302. package/dist/esm/embed/identity.d.ts +13 -0
  303. package/dist/esm/embed/identity.js +92 -0
  304. package/dist/esm/embed/identity.js.map +1 -0
  305. package/dist/esm/embed/langfit.d.ts +6 -0
  306. package/dist/esm/embed/langfit.js +44 -0
  307. package/dist/esm/embed/langfit.js.map +1 -0
  308. package/dist/esm/embed/languages.d.ts +3 -0
  309. package/dist/esm/embed/languages.js +80 -0
  310. package/dist/esm/embed/languages.js.map +1 -0
  311. package/dist/esm/embed/openai.d.ts +2 -0
  312. package/dist/esm/embed/openai.js +49 -0
  313. package/dist/esm/embed/openai.js.map +1 -0
  314. package/dist/esm/embed/query.d.ts +21 -0
  315. package/dist/esm/embed/query.js +181 -0
  316. package/dist/esm/embed/query.js.map +1 -0
  317. package/dist/esm/embed/registry.d.ts +3 -0
  318. package/dist/esm/embed/registry.js +45 -0
  319. package/dist/esm/embed/registry.js.map +1 -0
  320. package/dist/esm/embed/static.d.ts +2 -0
  321. package/dist/esm/embed/static.js +71 -0
  322. package/dist/esm/embed/static.js.map +1 -0
  323. package/dist/esm/embed/store.d.ts +8 -0
  324. package/dist/esm/embed/store.js +123 -0
  325. package/dist/esm/embed/store.js.map +1 -0
  326. package/dist/esm/embed/types.d.ts +8 -0
  327. package/dist/esm/embed/types.js +3 -0
  328. package/dist/esm/embed/types.js.map +1 -0
  329. package/dist/esm/errors.d.ts +1 -1
  330. package/dist/esm/errors.js.map +1 -1
  331. package/dist/esm/features/embed.d.ts +2 -28
  332. package/dist/esm/features/embed.js +33 -377
  333. package/dist/esm/features/embed.js.map +1 -1
  334. package/dist/esm/{fences.js → features/fences.js} +1 -1
  335. package/dist/esm/features/fences.js.map +1 -0
  336. package/dist/esm/features/links.js +1 -1
  337. package/dist/esm/features/links.js.map +1 -1
  338. package/dist/esm/features/rank.js +1 -1
  339. package/dist/esm/features/rank.js.map +1 -1
  340. package/dist/esm/features/sections.js +4 -3
  341. package/dist/esm/features/sections.js.map +1 -1
  342. package/dist/esm/features/tags.js +1 -1
  343. package/dist/esm/features/tags.js.map +1 -1
  344. package/dist/esm/features/types.d.ts +4 -2
  345. package/dist/esm/features/types.js.map +1 -1
  346. package/dist/esm/graph/graph.js.map +1 -0
  347. package/dist/esm/graph/traverse.js.map +1 -0
  348. package/dist/esm/index.d.ts +4 -4
  349. package/dist/esm/index.js +2 -2
  350. package/dist/esm/index.js.map +1 -1
  351. package/dist/esm/output/column-hint.js.map +1 -0
  352. package/dist/esm/{output.d.ts → output/output.d.ts} +2 -2
  353. package/dist/esm/{output.js → output/output.js} +6 -2
  354. package/dist/esm/output/output.js.map +1 -0
  355. package/dist/esm/output/progress.js.map +1 -0
  356. package/dist/esm/{search-error.js → output/search-error.js} +1 -1
  357. package/dist/esm/output/search-error.js.map +1 -0
  358. package/dist/esm/scan/frontmatter.d.ts +13 -0
  359. package/dist/esm/{scan.js → scan/frontmatter.js} +4 -120
  360. package/dist/esm/scan/frontmatter.js.map +1 -0
  361. package/dist/esm/scan/index.d.ts +25 -0
  362. package/dist/esm/scan/index.js +58 -0
  363. package/dist/esm/scan/index.js.map +1 -0
  364. package/dist/esm/scan/list.d.ts +12 -0
  365. package/dist/esm/scan/list.js +58 -0
  366. package/dist/esm/scan/list.js.map +1 -0
  367. package/dist/esm/text/segment.d.ts +3 -0
  368. package/dist/esm/text/segment.js +95 -0
  369. package/dist/esm/text/segment.js.map +1 -0
  370. package/dist/esm/text/strip.d.ts +3 -0
  371. package/dist/esm/text/strip.js +12 -0
  372. package/dist/esm/text/strip.js.map +1 -0
  373. package/package.json +23 -2
  374. package/schema.json +22 -8
  375. package/skills/sense/SKILL.md +21 -5
  376. package/skills/sense-setup/EXAMPLES.md +6 -6
  377. package/skills/sense-setup/SKILL.md +7 -5
  378. package/dist/cjs/column-hint.js.map +0 -1
  379. package/dist/cjs/fences.js.map +0 -1
  380. package/dist/cjs/graph.js.map +0 -1
  381. package/dist/cjs/output.js.map +0 -1
  382. package/dist/cjs/progress.js.map +0 -1
  383. package/dist/cjs/scan.d.cts +0 -35
  384. package/dist/cjs/scan.d.ts +0 -35
  385. package/dist/cjs/scan.js +0 -433
  386. package/dist/cjs/scan.js.map +0 -1
  387. package/dist/cjs/search-error.js.map +0 -1
  388. package/dist/cjs/segment.d.cts +0 -2
  389. package/dist/cjs/segment.d.ts +0 -2
  390. package/dist/cjs/segment.js +0 -98
  391. package/dist/cjs/segment.js.map +0 -1
  392. package/dist/cjs/sql-functions.js.map +0 -1
  393. package/dist/cjs/traverse.js.map +0 -1
  394. package/dist/esm/column-hint.js.map +0 -1
  395. package/dist/esm/fences.js.map +0 -1
  396. package/dist/esm/graph.js.map +0 -1
  397. package/dist/esm/output.js.map +0 -1
  398. package/dist/esm/progress.js.map +0 -1
  399. package/dist/esm/scan.d.ts +0 -35
  400. package/dist/esm/scan.js.map +0 -1
  401. package/dist/esm/search-error.js.map +0 -1
  402. package/dist/esm/segment.d.ts +0 -2
  403. package/dist/esm/segment.js +0 -65
  404. package/dist/esm/segment.js.map +0 -1
  405. package/dist/esm/sql-functions.js.map +0 -1
  406. package/dist/esm/traverse.js.map +0 -1
  407. /package/dist/cjs/{sql-functions.d.cts → db/sql-functions.d.cts} +0 -0
  408. /package/dist/cjs/{sql-functions.d.ts → db/sql-functions.d.ts} +0 -0
  409. /package/dist/cjs/{fences.d.cts → features/fences.d.cts} +0 -0
  410. /package/dist/cjs/{fences.d.ts → features/fences.d.ts} +0 -0
  411. /package/dist/cjs/{graph.d.cts → graph/graph.d.cts} +0 -0
  412. /package/dist/cjs/{graph.d.ts → graph/graph.d.ts} +0 -0
  413. /package/dist/cjs/{graph.js → graph/graph.js} +0 -0
  414. /package/dist/cjs/{traverse.d.cts → graph/traverse.d.cts} +0 -0
  415. /package/dist/cjs/{traverse.d.ts → graph/traverse.d.ts} +0 -0
  416. /package/dist/cjs/{traverse.js → graph/traverse.js} +0 -0
  417. /package/dist/cjs/{column-hint.d.cts → output/column-hint.d.cts} +0 -0
  418. /package/dist/cjs/{column-hint.d.ts → output/column-hint.d.ts} +0 -0
  419. /package/dist/cjs/{column-hint.js → output/column-hint.js} +0 -0
  420. /package/dist/cjs/{progress.d.cts → output/progress.d.cts} +0 -0
  421. /package/dist/cjs/{progress.d.ts → output/progress.d.ts} +0 -0
  422. /package/dist/cjs/{progress.js → output/progress.js} +0 -0
  423. /package/dist/cjs/{search-error.d.cts → output/search-error.d.cts} +0 -0
  424. /package/dist/cjs/{search-error.d.ts → output/search-error.d.ts} +0 -0
  425. /package/dist/esm/{sql-functions.d.ts → db/sql-functions.d.ts} +0 -0
  426. /package/dist/esm/{fences.d.ts → features/fences.d.ts} +0 -0
  427. /package/dist/esm/{graph.d.ts → graph/graph.d.ts} +0 -0
  428. /package/dist/esm/{graph.js → graph/graph.js} +0 -0
  429. /package/dist/esm/{traverse.d.ts → graph/traverse.d.ts} +0 -0
  430. /package/dist/esm/{traverse.js → graph/traverse.js} +0 -0
  431. /package/dist/esm/{column-hint.d.ts → output/column-hint.d.ts} +0 -0
  432. /package/dist/esm/{column-hint.js → output/column-hint.js} +0 -0
  433. /package/dist/esm/{progress.d.ts → output/progress.d.ts} +0 -0
  434. /package/dist/esm/{progress.js → output/progress.js} +0 -0
  435. /package/dist/esm/{search-error.d.ts → output/search-error.d.ts} +0 -0
@@ -2,346 +2,52 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get MODEL_FILENAMES () {
13
- return MODEL_FILENAMES;
14
- },
15
- get downloadModel () {
16
- return downloadModel;
17
- },
18
- get embed () {
5
+ Object.defineProperty(exports, "embed", {
6
+ enumerable: true,
7
+ get: function() {
19
8
  return embed;
20
- },
21
- get embedPending () {
22
- return embedPending;
23
- },
24
- get hasEmbedding () {
25
- return hasEmbedding;
26
- },
27
- get hasModelFiles () {
28
- return hasModelFiles;
29
- },
30
- get isDownloadable () {
31
- return isDownloadable;
32
- },
33
- get modelDir () {
34
- return modelDir;
35
- },
36
- get modelPresent () {
37
- return modelPresent;
38
- },
39
- get semanticCandidates () {
40
- return semanticCandidates;
41
- },
42
- get similarNotes () {
43
- return similarNotes;
44
9
  }
45
10
  });
46
- var _nodefs = require("node:fs");
47
- var _nodeos = require("node:os");
48
- var _nodepath = require("node:path");
49
- var _indexts = require("../config/index.js");
50
- var _errorsts = require("../errors.js");
51
- var _fencests = require("../fences.js");
52
- var _progressts = require("../progress.js");
53
- var _scants = require("../scan.js");
54
- function _array_like_to_array(arr, len) {
55
- if (len == null || len > arr.length) len = arr.length;
56
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
57
- return arr2;
58
- }
59
- function _array_with_holes(arr) {
60
- if (Array.isArray(arr)) return arr;
61
- }
62
- function _array_without_holes(arr) {
63
- if (Array.isArray(arr)) return _array_like_to_array(arr);
64
- }
65
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
66
- try {
67
- var info = gen[key](arg);
68
- var value = info.value;
69
- } catch (error) {
70
- reject(error);
71
- return;
72
- }
73
- if (info.done) resolve(value);
74
- else Promise.resolve(value).then(_next, _throw);
75
- }
76
- function _async_to_generator(fn) {
77
- return function() {
78
- var self = this, args = arguments;
79
- return new Promise(function(resolve, reject) {
80
- var gen = fn.apply(self, args);
81
- function _next(value) {
82
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
83
- }
84
- function _throw(err) {
85
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
86
- }
87
- _next(undefined);
88
- });
89
- };
90
- }
91
- function _getRequireWildcardCache(nodeInterop) {
92
- if (typeof WeakMap !== "function") return null;
93
- var cacheBabelInterop = new WeakMap();
94
- var cacheNodeInterop = new WeakMap();
95
- return (_getRequireWildcardCache = function(nodeInterop) {
96
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
97
- })(nodeInterop);
98
- }
99
- function _interop_require_wildcard(obj, nodeInterop) {
100
- if (!nodeInterop && obj && obj.__esModule) return obj;
101
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") return {
102
- default: obj
103
- };
104
- var cache = _getRequireWildcardCache(nodeInterop);
105
- if (cache && cache.has(obj)) return cache.get(obj);
106
- var newObj = {
107
- __proto__: null
108
- };
109
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
110
- for(var key in obj){
111
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
112
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
113
- if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);
114
- else newObj[key] = obj[key];
115
- }
116
- }
117
- newObj.default = obj;
118
- if (cache) cache.set(obj, newObj);
119
- return newObj;
120
- }
121
- function _iterable_to_array(iter) {
122
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) {
123
- return Array.from(iter);
124
- }
125
- }
126
- function _iterable_to_array_limit(arr, i) {
127
- var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
128
- if (_i == null) return;
129
- var _arr = [];
130
- var _n = true;
131
- var _d = false;
132
- var _s, _e;
133
- try {
134
- for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
135
- _arr.push(_s.value);
136
- if (i && _arr.length === i) break;
137
- }
138
- } catch (err) {
139
- _d = true;
140
- _e = err;
141
- } finally{
142
- try {
143
- if (!_n && _i["return"] != null) _i["return"]();
144
- } finally{
145
- if (_d) throw _e;
146
- }
147
- }
148
- return _arr;
149
- }
150
- function _non_iterable_rest() {
151
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
152
- }
153
- function _non_iterable_spread() {
154
- throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
155
- }
156
- function _sliced_to_array(arr, i) {
157
- return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
158
- }
159
- function _to_consumable_array(arr) {
160
- return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
161
- }
162
- function _ts_generator(thisArg, body) {
163
- var f, y, t, _ = {
164
- label: 0,
165
- sent: function() {
166
- if (t[0] & 1) throw t[1];
167
- return t[1];
168
- },
169
- trys: [],
170
- ops: []
171
- }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
172
- return d(g, "next", {
173
- value: verb(0)
174
- }), d(g, "throw", {
175
- value: verb(1)
176
- }), d(g, "return", {
177
- value: verb(2)
178
- }), typeof Symbol === "function" && d(g, Symbol.iterator, {
179
- value: function() {
180
- return this;
181
- }
182
- }), g;
183
- function verb(n) {
184
- return function(v) {
185
- return step([
186
- n,
187
- v
188
- ]);
189
- };
190
- }
191
- function step(op) {
192
- if (f) throw new TypeError("Generator is already executing.");
193
- while(g && (g = 0, op[0] && (_ = 0)), _)try {
194
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
195
- if (y = 0, t) op = [
196
- op[0] & 2,
197
- t.value
198
- ];
199
- switch(op[0]){
200
- case 0:
201
- case 1:
202
- t = op;
203
- break;
204
- case 4:
205
- _.label++;
206
- return {
207
- value: op[1],
208
- done: false
209
- };
210
- case 5:
211
- _.label++;
212
- y = op[1];
213
- op = [
214
- 0
215
- ];
216
- continue;
217
- case 7:
218
- op = _.ops.pop();
219
- _.trys.pop();
220
- continue;
221
- default:
222
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
223
- _ = 0;
224
- continue;
225
- }
226
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
227
- _.label = op[1];
228
- break;
229
- }
230
- if (op[0] === 6 && _.label < t[1]) {
231
- _.label = t[1];
232
- t = op;
233
- break;
234
- }
235
- if (t && _.label < t[2]) {
236
- _.label = t[2];
237
- _.ops.push(op);
238
- break;
239
- }
240
- if (t[2]) _.ops.pop();
241
- _.trys.pop();
242
- continue;
243
- }
244
- op = body.call(thisArg, _);
245
- } catch (e) {
246
- op = [
247
- 6,
248
- e
249
- ];
250
- y = 0;
251
- } finally{
252
- f = t = 0;
253
- }
254
- if (op[0] & 5) throw op[1];
255
- return {
256
- value: op[0] ? op[1] : void 0,
257
- done: true
258
- };
259
- }
260
- }
261
- function _ts_values(o) {
262
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
263
- if (m) {
264
- return m.call(o);
265
- }
266
- if (o && typeof o.length === "number") {
267
- return {
268
- next: function() {
269
- if (o && i >= o.length) {
270
- o = void 0;
271
- }
272
- return {
273
- value: o && o[i++],
274
- done: !o
275
- };
276
- }
277
- };
278
- }
279
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
280
- }
281
- function _unsupported_iterable_to_array(o, minLen) {
282
- if (!o) return;
283
- if (typeof o === "string") return _array_like_to_array(o, minLen);
284
- var n = Object.prototype.toString.call(o).slice(8, -1);
285
- if (n === "Object" && o.constructor) n = o.constructor.name;
286
- if (n === "Map" || n === "Set") return Array.from(n);
287
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
288
- }
289
- // Heading-based chunks, int8 vectors with a per-vector scale, NULL vector = not yet embedded.
290
- // Reconcile writes dirty rows; embedding tops up on the next search, so staleness costs recall.
291
- // Storage lever fixed by the bake-off (BENCHMARKING.md): int8 at 256 dims is
292
- // quality-free vs f32-512 when fused. Queries stay f32 at the same dims.
293
- var STORE_DIMS = 256;
294
- // Seed chunks that participate in a `related` scan; see similarNotes for the measurement.
295
- var TARGET_CHUNK_CAP = 16;
296
- var BATCH = 64;
297
- // Deterministic, so embed time can re-derive text from stored line ranges. Heading-delimited,
298
- // preamble kept, whole body when no headings; the title/summary prefix mirrors bm25 weighting.
11
+ var _indexts = require("../chunk/index.js");
12
+ var _indexts1 = require("../config/index.js");
13
+ var _identityts = require("../embed/identity.js");
14
+ // Deterministic, so embed time can re-derive text from stored line ranges; the title/summary
15
+ // prefix mirrors bm25 field weighting, and an empty chunk is dropped before the prefix is added.
299
16
  //
300
17
  // Chunks the body, not the raw file, with `offset` shifting line numbers back onto the raw
301
18
  // file so a range stays a direct Read range (sections is 1-indexed over raw too). Chunking raw
302
19
  // put the frontmatter block in its own leading chunk on every note with a heading, which made
303
20
  // `lines` point at YAML and made frontmatter-only notes near-identical to each other. It also
304
21
  // disagreed with FTS, which indexes the body alone.
305
- function chunksOf(body, search) {
306
- var offset = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0;
307
- var lines = body.split('\n');
308
- var starts = [];
309
- var fence = (0, _fencests.fenceTracker)();
310
- for(var i = 0; i < lines.length; i++){
311
- if (fence.feed(lines[i])) continue;
312
- if (!fence.inFence && /^#{1,6} +/.test(lines[i])) starts.push(i + 1);
313
- }
314
- var bounds = starts.length === 0 ? [
315
- 1
316
- ] : starts[0] > 1 ? [
317
- 1
318
- ].concat(_to_consumable_array(starts)) : starts;
22
+ function chunksOf(blocks, body, search) {
23
+ var offset = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0, chunkTokens = arguments.length > 4 ? arguments[4] : void 0;
319
24
  var prefix = [
320
25
  search === null || search === void 0 ? void 0 : search.title,
321
26
  search === null || search === void 0 ? void 0 : search.summary
322
27
  ].filter(Boolean).join('\n');
323
- var chunks = [];
324
- bounds.forEach(function(start, i) {
325
- var end = i + 1 < bounds.length ? bounds[i + 1] - 1 : lines.length;
326
- var text = lines.slice(start - 1, end).join('\n').trim();
327
- // A body with nothing in it yields no chunks at all, so a frontmatter-only note has no
328
- // vectors rather than a vector of its own YAML.
329
- if (text.length > 0) chunks.push({
330
- startLine: start + offset,
331
- endLine: end + offset,
332
- text: prefix ? "".concat(prefix, "\n").concat(text) : text
333
- });
28
+ // chunk()'s default text mode is 'raw' (D9), the shipped choice. A hardcoded option change
29
+ // here must bump src/chunk/version.ts's CHUNK_VERSION -- the signature for every chunker
30
+ // input not already carried in config.
31
+ return (0, _indexts.chunkFromBlocks)(blocks, body, chunkTokens !== undefined ? {
32
+ targetTokens: chunkTokens
33
+ } : undefined).map(function(c) {
34
+ return {
35
+ startLine: c.startLine + offset,
36
+ endLine: c.endLine + offset,
37
+ text: prefix ? "".concat(prefix, "\n").concat(c.text) : c.text
38
+ };
334
39
  });
335
- return chunks;
336
40
  }
337
41
  var embed = {
338
42
  name: 'embed',
339
43
  schema: function schema(db) {
340
44
  db.exec('CREATE TABLE IF NOT EXISTS embeddings ("path" TEXT, chunk INTEGER, start_line INTEGER, end_line INTEGER, scale REAL, vector BLOB, PRIMARY KEY ("path", chunk))');
341
45
  },
342
- extract: function extract(raw, body, search) {
46
+ extract: function extract(raw, body, search, _data, cfg, blocks) {
47
+ var _cfg_embed;
343
48
  // Lines the frontmatter occupies, so body line 1 maps back to its raw line number.
344
- return chunksOf(body, search, raw.split('\n').length - body.split('\n').length);
49
+ // blocks comes from parseFile's shared parse; falls back to parsing body for a direct call.
50
+ return chunksOf(blocks !== null && blocks !== void 0 ? blocks : (0, _indexts.parse)(body), body, search, raw.split('\n').length - body.split('\n').length, cfg === null || cfg === void 0 ? void 0 : (_cfg_embed = cfg.embed) === null || _cfg_embed === void 0 ? void 0 : _cfg_embed.chunkTokens);
345
51
  },
346
52
  remove: function remove(db, path) {
347
53
  db.prepare('DELETE FROM embeddings WHERE "path" = ?').run(path);
@@ -357,714 +63,20 @@ var embed = {
357
63
  },
358
64
  enabledForFile: function enabledForFile(_cfg, file) {
359
65
  return file.embed;
66
+ },
67
+ // Provider/model/chunk-version/identity, keyed so a rebuild notice can name it "embed
68
+ // settings". Driven by embedConfig(cfg) directly (a model can be configured with no preset
69
+ // yet using vectors), not by whether this feature is itself active.
70
+ signature: function signature(cfg) {
71
+ var e = (0, _indexts1.embedConfig)(cfg);
72
+ if (!e) return 'embed:off';
73
+ // Weight identity from identity.ts, no network: a static model's resolved sha or local
74
+ // size+mtime, appended once known so changed weights re-embed.
75
+ var identity = e.provider === 'static' ? (0, _identityts.modelIdentity)(e.model) : undefined;
76
+ // W3b: chunkTokens rides the version token, since it's the one owner lever the chunker
77
+ // itself takes -- changing or clearing it must rebuild exactly like a chunker version bump.
78
+ var chunkVersion = e.chunkTokens !== undefined ? "".concat(_indexts.CHUNK_VERSION, ":").concat(e.chunkTokens) : _indexts.CHUNK_VERSION;
79
+ return "embed:".concat(e.provider, ":").concat(e.model, ":").concat(chunkVersion).concat(identity !== undefined ? "@".concat(identity) : '');
360
80
  }
361
81
  };
362
- // --- static type: Model2Vec safetensors + pure-JS tokenizer, model cached in ~/.cache ---
363
- // Encode convention from model2vec/model.py: no special tokens, drop unk ids, mean-pool,
364
- // L2-normalize.
365
- var MODEL_FILES = [
366
- 'model.safetensors',
367
- 'tokenizer.json'
368
- ];
369
- var MODEL_FILENAMES = MODEL_FILES.join(' and ');
370
- // A Hugging Face repo id: one slash, HF's charset. Anything else is a path, used as one rather
371
- // than flattened into a cache key Windows would reject.
372
- var HF_MODEL_ID = /^[A-Za-z0-9][\w.-]*\/[A-Za-z0-9][\w.-]*$/;
373
- function isDownloadable(model) {
374
- return HF_MODEL_ID.test(model);
375
- }
376
- // Machine-wide, not per-tree: `.sense/` is the index a rebuild throws away, while a 124 MB
377
- // model is shared by every tree on the machine. Honors XDG_CACHE_HOME where it is set;
378
- // elsewhere ~/.cache, which is also where Hugging Face's own libraries keep theirs.
379
- function cacheRoot() {
380
- var xdg = process.env.XDG_CACHE_HOME;
381
- return (0, _nodepath.join)(xdg && xdg.length > 0 ? xdg : (0, _nodepath.join)((0, _nodeos.homedir)(), '.cache'), 'sensemaking', 'models');
382
- }
383
- function modelDir(model) {
384
- if (!HF_MODEL_ID.test(model)) return model;
385
- return (0, _nodepath.join)(cacheRoot(), model.replace(/\//g, '--'));
386
- }
387
- function hasModelFiles(model) {
388
- var dir = modelDir(model);
389
- return MODEL_FILES.every(function(file) {
390
- return (0, _nodefs.existsSync)((0, _nodepath.join)(dir, file));
391
- });
392
- }
393
- function modelPresent(cfg) {
394
- var e = (0, _indexts.embedConfig)(cfg);
395
- if (!e) return false;
396
- return e.type === 'api' || hasModelFiles(e.model);
397
- }
398
- function fetchToFile(url, dest) {
399
- return fetch(url).then(function(res) {
400
- return _async_to_generator(function() {
401
- var _tmp, _;
402
- return _ts_generator(this, function(_state) {
403
- switch(_state.label){
404
- case 0:
405
- if (!res.ok) throw new _errorsts.SenseError('EMBED_MODEL', "model download failed: ".concat(url, " -> HTTP ").concat(res.status));
406
- _tmp = [
407
- "".concat(dest, ".part")
408
- ];
409
- _ = Buffer.from;
410
- return [
411
- 4,
412
- res.arrayBuffer()
413
- ];
414
- case 1:
415
- _nodefs.writeFileSync.apply(void 0, _tmp.concat([
416
- _.apply(Buffer, [
417
- _state.sent()
418
- ])
419
- ]));
420
- (0, _nodefs.renameSync)("".concat(dest, ".part"), dest);
421
- return [
422
- 2
423
- ];
424
- }
425
- });
426
- })();
427
- });
428
- }
429
- function downloadModel(model, onFile) {
430
- return _async_to_generator(function() {
431
- var dir, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, file, err;
432
- return _ts_generator(this, function(_state) {
433
- switch(_state.label){
434
- case 0:
435
- if (!isDownloadable(model)) {
436
- throw new _errorsts.SenseError('EMBED_MODEL', 'embed.model "'.concat(model, '" is a local path, not a Hugging Face model id, so there is nothing to download; put model.safetensors and tokenizer.json in that directory, or name a model id like "minishlab/potion-retrieval-32M"'));
437
- }
438
- dir = modelDir(model);
439
- (0, _nodefs.mkdirSync)(dir, {
440
- recursive: true
441
- });
442
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
443
- _state.label = 1;
444
- case 1:
445
- _state.trys.push([
446
- 1,
447
- 6,
448
- 7,
449
- 8
450
- ]);
451
- _iterator = MODEL_FILES[Symbol.iterator]();
452
- _state.label = 2;
453
- case 2:
454
- if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
455
- 3,
456
- 5
457
- ];
458
- file = _step.value;
459
- if ((0, _nodefs.existsSync)((0, _nodepath.join)(dir, file))) return [
460
- 3,
461
- 4
462
- ];
463
- onFile === null || onFile === void 0 ? void 0 : onFile(file, dir);
464
- return [
465
- 4,
466
- fetchToFile("https://huggingface.co/".concat(model, "/resolve/main/").concat(file), (0, _nodepath.join)(dir, file))
467
- ];
468
- case 3:
469
- _state.sent();
470
- _state.label = 4;
471
- case 4:
472
- _iteratorNormalCompletion = true;
473
- return [
474
- 3,
475
- 2
476
- ];
477
- case 5:
478
- return [
479
- 3,
480
- 8
481
- ];
482
- case 6:
483
- err = _state.sent();
484
- _didIteratorError = true;
485
- _iteratorError = err;
486
- return [
487
- 3,
488
- 8
489
- ];
490
- case 7:
491
- try {
492
- if (!_iteratorNormalCompletion && _iterator.return != null) {
493
- _iterator.return();
494
- }
495
- } finally{
496
- if (_didIteratorError) {
497
- throw _iteratorError;
498
- }
499
- }
500
- return [
501
- 7
502
- ];
503
- case 8:
504
- return [
505
- 2,
506
- dir
507
- ];
508
- }
509
- });
510
- })();
511
- }
512
- function staticProvider(model) {
513
- return _async_to_generator(function() {
514
- var _ref, _tokenizerJson_model, _tokenizerJson_model_vocab, _tokenizerJson_model1, dir, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, file, fix, raw, headerLen, header, entry, spec, dims, dataStart, matrix, tokenizerJson, Tokenizer, tok, unkId;
515
- function one(text) {
516
- // The tokenizer yields undefined (not the unk id) for tokens outside the vocab; an
517
- // undefined id would index the matrix at NaN and poison the whole mean-pool -- and the
518
- // int8 conversion then stores the NaN vector as all zeros, silently. Keep integers only.
519
- var ids = tok.encode(text, {
520
- add_special_tokens: false
521
- }).ids.filter(function(id) {
522
- return Number.isInteger(id) && id !== unkId;
523
- });
524
- var v = new Float32Array(dims);
525
- if (ids.length === 0) return v;
526
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
527
- try {
528
- for(var _iterator = ids[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
529
- var id = _step.value;
530
- var off = id * dims;
531
- for(var d = 0; d < dims; d++)v[d] += matrix[off + d];
532
- }
533
- } catch (err) {
534
- _didIteratorError = true;
535
- _iteratorError = err;
536
- } finally{
537
- try {
538
- if (!_iteratorNormalCompletion && _iterator.return != null) {
539
- _iterator.return();
540
- }
541
- } finally{
542
- if (_didIteratorError) {
543
- throw _iteratorError;
544
- }
545
- }
546
- }
547
- var norm = 0;
548
- for(var d1 = 0; d1 < dims; d1++){
549
- v[d1] /= ids.length;
550
- norm += v[d1] * v[d1];
551
- }
552
- norm = Math.sqrt(norm) + 1e-32;
553
- for(var d2 = 0; d2 < dims; d2++)v[d2] /= norm;
554
- return v;
555
- }
556
- return _ts_generator(this, function(_state) {
557
- switch(_state.label){
558
- case 0:
559
- dir = modelDir(model);
560
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
561
- try {
562
- for(_iterator = MODEL_FILES[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
563
- file = _step.value;
564
- if (!(0, _nodefs.existsSync)((0, _nodepath.join)(dir, file))) {
565
- // A local path the caller controls gets told what is missing where; only a repo id can
566
- // be fixed by downloading.
567
- fix = isDownloadable(model) ? 'run `sense download`' : "expected ".concat(MODEL_FILENAMES, " in that directory");
568
- throw new _errorsts.SenseError('EMBED_MODEL_MISSING', "embed model ".concat(model, " is not available (looked in ").concat(dir, "); ").concat(fix));
569
- }
570
- }
571
- } catch (err) {
572
- _didIteratorError = true;
573
- _iteratorError = err;
574
- } finally{
575
- try {
576
- if (!_iteratorNormalCompletion && _iterator.return != null) {
577
- _iterator.return();
578
- }
579
- } finally{
580
- if (_didIteratorError) {
581
- throw _iteratorError;
582
- }
583
- }
584
- }
585
- raw = (0, _nodefs.readFileSync)((0, _nodepath.join)(dir, 'model.safetensors'));
586
- headerLen = Number(raw.readBigUInt64LE(0));
587
- header = JSON.parse(raw.subarray(8, 8 + headerLen).toString('utf8'));
588
- entry = Object.entries(header).find(function(param) {
589
- var _param = _sliced_to_array(param, 1), k = _param[0];
590
- return k !== '__metadata__';
591
- });
592
- if (!entry || entry[1].dtype !== 'F32') throw new _errorsts.SenseError('EMBED_MODEL', "".concat(model, ": expected an F32 safetensors matrix"));
593
- spec = entry[1];
594
- dims = spec.shape[1];
595
- dataStart = raw.byteOffset + 8 + headerLen + spec.data_offsets[0];
596
- matrix = dataStart % 4 === 0 ? new Float32Array(raw.buffer, dataStart, spec.shape[0] * dims) : new Float32Array(raw.buffer.slice(dataStart, dataStart + spec.shape[0] * dims * 4));
597
- tokenizerJson = JSON.parse((0, _nodefs.readFileSync)((0, _nodepath.join)(dir, 'tokenizer.json'), 'utf8'));
598
- return [
599
- 4,
600
- Promise.resolve().then(function() {
601
- return /*#__PURE__*/ _interop_require_wildcard(require("@huggingface/tokenizers"));
602
- })
603
- ];
604
- case 1:
605
- Tokenizer = _state.sent().Tokenizer;
606
- tok = new Tokenizer(tokenizerJson, {});
607
- unkId = (_ref = (_tokenizerJson_model1 = tokenizerJson.model) === null || _tokenizerJson_model1 === void 0 ? void 0 : (_tokenizerJson_model_vocab = _tokenizerJson_model1.vocab) === null || _tokenizerJson_model_vocab === void 0 ? void 0 : _tokenizerJson_model_vocab[(_tokenizerJson_model = tokenizerJson.model) === null || _tokenizerJson_model === void 0 ? void 0 : _tokenizerJson_model.unk_token]) !== null && _ref !== void 0 ? _ref : -1;
608
- return [
609
- 2,
610
- {
611
- id: "static:".concat(model),
612
- dims: dims,
613
- embed: function embed(texts) {
614
- return _async_to_generator(function() {
615
- return _ts_generator(this, function(_state) {
616
- return [
617
- 2,
618
- texts.map(one)
619
- ];
620
- });
621
- })();
622
- }
623
- }
624
- ];
625
- }
626
- });
627
- })();
628
- }
629
- // --- api type: one POST against any OpenAI-compatible /embeddings endpoint ---
630
- function apiProvider(model, url, keyEnv) {
631
- return _async_to_generator(function() {
632
- var base, headers, key, dims;
633
- function post(texts) {
634
- return _async_to_generator(function() {
635
- var res, body;
636
- return _ts_generator(this, function(_state) {
637
- switch(_state.label){
638
- case 0:
639
- return [
640
- 4,
641
- fetch("".concat(base, "/embeddings"), {
642
- method: 'POST',
643
- headers: headers,
644
- body: JSON.stringify({
645
- model: model,
646
- input: texts
647
- })
648
- })
649
- ];
650
- case 1:
651
- res = _state.sent();
652
- if (!res.ok) throw new _errorsts.SenseError('EMBED_MODEL', "".concat(base, "/embeddings -> HTTP ").concat(res.status));
653
- return [
654
- 4,
655
- res.json()
656
- ];
657
- case 2:
658
- body = _state.sent();
659
- return [
660
- 2,
661
- body.data.map(function(d) {
662
- return Float32Array.from(d.embedding);
663
- })
664
- ];
665
- }
666
- });
667
- })();
668
- }
669
- return _ts_generator(this, function(_state) {
670
- switch(_state.label){
671
- case 0:
672
- if (!url) throw new _errorsts.SenseError('EMBED_MODEL', 'features.embed.type "api" requires a url');
673
- base = url.replace(/\/+$/, '');
674
- headers = {
675
- 'content-type': 'application/json'
676
- };
677
- key = keyEnv ? process.env[keyEnv] : undefined;
678
- if (key) headers.authorization = "Bearer ".concat(key);
679
- return [
680
- 4,
681
- post([
682
- 'dimension probe'
683
- ])
684
- ];
685
- case 1:
686
- dims = _state.sent()[0].length;
687
- return [
688
- 2,
689
- {
690
- id: "api:".concat(base, ":").concat(model),
691
- dims: dims,
692
- embed: post
693
- }
694
- ];
695
- }
696
- });
697
- })();
698
- }
699
- var providers = new Map();
700
- function getProvider(cfg) {
701
- var _e_url;
702
- var e = (0, _indexts.embedConfig)(cfg);
703
- if (!e) throw new _errorsts.SenseError('EMBED_DISABLED', 'this tree has no embedding model: add an "embed" block naming one to sense.config.json, then run `sense download`');
704
- var sig = "".concat(e.type, ":").concat(e.model, ":").concat((_e_url = e.url) !== null && _e_url !== void 0 ? _e_url : '');
705
- var p = providers.get(sig);
706
- if (!p) {
707
- p = e.type === 'api' ? apiProvider(e.model, e.url, e.key) : staticProvider(e.model);
708
- providers.set(sig, p);
709
- }
710
- return p;
711
- }
712
- // Slice + re-normalize (Matryoshka); optionally round through int8 storage.
713
- function toStore(full, dims, int8) {
714
- var v = new Float32Array(dims);
715
- var norm = 0;
716
- for(var d = 0; d < dims; d++)norm += full[d] * full[d];
717
- norm = Math.sqrt(norm) + 1e-32;
718
- for(var d1 = 0; d1 < dims; d1++)v[d1] = full[d1] / norm;
719
- if (!int8) return {
720
- v: v,
721
- scale: 1
722
- };
723
- var max = 0;
724
- for(var d2 = 0; d2 < dims; d2++)max = Math.max(max, Math.abs(v[d2]));
725
- return {
726
- v: v,
727
- scale: max / 127 || 1
728
- };
729
- }
730
- function embedPending(db, cfg, baseDir) {
731
- return _async_to_generator(function() {
732
- var _loop, provider, dirty, storeDims, byPath, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, row, _byPath_get, list, jobs, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, _step_value, path, chunkIdxs, chunks, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, idx, update, report, i;
733
- return _ts_generator(this, function(_state) {
734
- switch(_state.label){
735
- case 0:
736
- _loop = function(i) {
737
- var batch, vectors;
738
- return _ts_generator(this, function(_state) {
739
- switch(_state.label){
740
- case 0:
741
- batch = jobs.slice(i, i + BATCH);
742
- return [
743
- 4,
744
- provider.embed(batch.map(function(j) {
745
- return j.text;
746
- }))
747
- ];
748
- case 1:
749
- vectors = _state.sent();
750
- db.exec('BEGIN');
751
- try {
752
- batch.forEach(function(job, j) {
753
- var _toStore = toStore(vectors[j], storeDims, true), v = _toStore.v, scale = _toStore.scale;
754
- var q = new Int8Array(storeDims);
755
- for(var d = 0; d < storeDims; d++)q[d] = Math.round(v[d] / scale);
756
- update.run(scale, Buffer.from(q.buffer), job.path, job.chunk);
757
- });
758
- db.exec('COMMIT');
759
- } catch (err) {
760
- db.exec('ROLLBACK');
761
- throw err;
762
- }
763
- report.tick(Math.min(i + BATCH, jobs.length));
764
- return [
765
- 2
766
- ];
767
- }
768
- });
769
- };
770
- return [
771
- 4,
772
- getProvider(cfg)
773
- ];
774
- case 1:
775
- provider = _state.sent();
776
- dirty = db.prepare('SELECT "path", chunk FROM embeddings WHERE vector IS NULL ORDER BY "path", chunk').all();
777
- if (dirty.length === 0) return [
778
- 2
779
- ];
780
- storeDims = Math.min(STORE_DIMS, provider.dims);
781
- byPath = new Map();
782
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
783
- try {
784
- for(_iterator = dirty[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
785
- row = _step.value;
786
- ;
787
- list = (_byPath_get = byPath.get(row.path)) !== null && _byPath_get !== void 0 ? _byPath_get : [];
788
- list.push(row.chunk);
789
- byPath.set(row.path, list);
790
- }
791
- } catch (err) {
792
- _didIteratorError = true;
793
- _iteratorError = err;
794
- } finally{
795
- try {
796
- if (!_iteratorNormalCompletion && _iterator.return != null) {
797
- _iterator.return();
798
- }
799
- } finally{
800
- if (_didIteratorError) {
801
- throw _iteratorError;
802
- }
803
- }
804
- }
805
- jobs = [];
806
- _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
807
- try {
808
- for(_iterator1 = byPath[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
809
- _step_value = _sliced_to_array(_step1.value, 2), path = _step_value[0], chunkIdxs = _step_value[1];
810
- chunks = void 0;
811
- try {
812
- // presets/embed are irrelevant here -- re-deriving chunk text for a doc that already
813
- // has embeddings rows means the tree had an embedding model at reconcile time.
814
- chunks = (0, _scants.parseFile)({
815
- relPath: path,
816
- absPath: (0, _nodepath.join)(baseDir, path),
817
- mtimeMs: 0,
818
- ctimeMs: 0,
819
- size: 0,
820
- presets: [],
821
- embed: true
822
- }, [
823
- embed
824
- ]).doc.extracted.embed;
825
- } catch (unused) {
826
- continue; // vanished since reconcile; the next reconcile removes its rows
827
- }
828
- _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;
829
- try {
830
- for(_iterator2 = chunkIdxs[Symbol.iterator](); !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true){
831
- idx = _step2.value;
832
- if (chunks[idx]) jobs.push({
833
- path: path,
834
- chunk: idx,
835
- text: chunks[idx].text
836
- });
837
- }
838
- } catch (err) {
839
- _didIteratorError2 = true;
840
- _iteratorError2 = err;
841
- } finally{
842
- try {
843
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
844
- _iterator2.return();
845
- }
846
- } finally{
847
- if (_didIteratorError2) {
848
- throw _iteratorError2;
849
- }
850
- }
851
- }
852
- }
853
- } catch (err) {
854
- _didIteratorError1 = true;
855
- _iteratorError1 = err;
856
- } finally{
857
- try {
858
- if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
859
- _iterator1.return();
860
- }
861
- } finally{
862
- if (_didIteratorError1) {
863
- throw _iteratorError1;
864
- }
865
- }
866
- }
867
- update = db.prepare('UPDATE embeddings SET scale = ?, vector = ? WHERE "path" = ? AND chunk = ?');
868
- // The lazy build is the one long silence a first search hits (measured 23s at
869
- // 26k notes); progress makes it distinguishable from a hang.
870
- report = (0, _progressts.progress)('embedding chunks', jobs.length);
871
- i = 0;
872
- _state.label = 2;
873
- case 2:
874
- if (!(i < jobs.length)) return [
875
- 3,
876
- 5
877
- ];
878
- return [
879
- 5,
880
- _ts_values(_loop(i))
881
- ];
882
- case 3:
883
- _state.sent();
884
- _state.label = 4;
885
- case 4:
886
- i += BATCH;
887
- return [
888
- 3,
889
- 2
890
- ];
891
- case 5:
892
- report.finish();
893
- return [
894
- 2
895
- ];
896
- }
897
- });
898
- })();
899
- }
900
- // Dequantised int8 dot products land a little either side of a true cosine, so an identical
901
- // pair prints 1.001 and undermines a column whose whole job is being a bounded number.
902
- function asCosine(score) {
903
- return Math.round(Math.min(1, Math.max(-1, score)) * 1000) / 1000;
904
- }
905
- function semanticCandidates(db, cfg, terms, fetch1, allowed) {
906
- return _async_to_generator(function() {
907
- var _terms_match, baseDir, provider, storeDims, text, _toStore, qv, rows, best, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, row, q, dot, d, score, existing;
908
- return _ts_generator(this, function(_state) {
909
- switch(_state.label){
910
- case 0:
911
- baseDir = cfg.baseDir;
912
- if (!baseDir) throw new _errorsts.SenseError('EMBED_MODEL', 'semantic expansion needs a config with baseDir (use loadConfig/open)');
913
- return [
914
- 4,
915
- embedPending(db, cfg, baseDir)
916
- ];
917
- case 1:
918
- _state.sent();
919
- return [
920
- 4,
921
- getProvider(cfg)
922
- ];
923
- case 2:
924
- provider = _state.sent();
925
- storeDims = Math.min(STORE_DIMS, provider.dims);
926
- text = ((_terms_match = terms.match(RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376-\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E-\\u066F\\u0671-\\u06D3\\u06D5\\u06E5-\\u06E6\\u06EE-\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4-\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088F\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC-\\u09DD\\u09DF-\\u09E1\\u09F0-\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0-\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F-\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5C-\\u0C5D\\u0C60-\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDC-\\u0CDE\\u0CE0-\\u0CE1\\u0CF1-\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E46\\u0E81-\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065-\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE-\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C8A\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5-\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183-\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3006\\u3031-\\u3035\\u303B-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7DC\\uA7F1-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD-\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40-\\uFB41\\uFB43-\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}-\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{10300}-\\u{1031F}\\u{1032D}-\\u{10340}\\u{10342}-\\u{10349}\\u{10350}-\\u{10375}\\u{10380}-\\u{1039D}\\u{103A0}-\\u{103C3}\\u{103C8}-\\u{103CF}\\u{10400}-\\u{1049D}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{10570}-\\u{1057A}\\u{1057C}-\\u{1058A}\\u{1058C}-\\u{10592}\\u{10594}-\\u{10595}\\u{10597}-\\u{105A1}\\u{105A3}-\\u{105B1}\\u{105B3}-\\u{105B9}\\u{105BB}-\\u{105BC}\\u{105C0}-\\u{105F3}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{10780}-\\u{10785}\\u{10787}-\\u{107B0}\\u{107B2}-\\u{107BA}\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}-\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10860}-\\u{10876}\\u{10880}-\\u{1089E}\\u{108E0}-\\u{108F2}\\u{108F4}-\\u{108F5}\\u{10900}-\\u{10915}\\u{10920}-\\u{10939}\\u{10940}-\\u{10959}\\u{10980}-\\u{109B7}\\u{109BE}-\\u{109BF}\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A60}-\\u{10A7C}\\u{10A80}-\\u{10A9C}\\u{10AC0}-\\u{10AC7}\\u{10AC9}-\\u{10AE4}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B60}-\\u{10B72}\\u{10B80}-\\u{10B91}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10D00}-\\u{10D23}\\u{10D4A}-\\u{10D65}\\u{10D6F}-\\u{10D85}\\u{10E80}-\\u{10EA9}\\u{10EB0}-\\u{10EB1}\\u{10EC2}-\\u{10EC7}\\u{10F00}-\\u{10F1C}\\u{10F27}\\u{10F30}-\\u{10F45}\\u{10F70}-\\u{10F81}\\u{10FB0}-\\u{10FC4}\\u{10FE0}-\\u{10FF6}\\u{11003}-\\u{11037}\\u{11071}-\\u{11072}\\u{11075}\\u{11083}-\\u{110AF}\\u{110D0}-\\u{110E8}\\u{11103}-\\u{11126}\\u{11144}\\u{11147}\\u{11150}-\\u{11172}\\u{11176}\\u{11183}-\\u{111B2}\\u{111C1}-\\u{111C4}\\u{111DA}\\u{111DC}\\u{11200}-\\u{11211}\\u{11213}-\\u{1122B}\\u{1123F}-\\u{11240}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A8}\\u{112B0}-\\u{112DE}\\u{11305}-\\u{1130C}\\u{1130F}-\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}-\\u{11333}\\u{11335}-\\u{11339}\\u{1133D}\\u{11350}\\u{1135D}-\\u{11361}\\u{11380}-\\u{11389}\\u{1138B}\\u{1138E}\\u{11390}-\\u{113B5}\\u{113B7}\\u{113D1}\\u{113D3}\\u{11400}-\\u{11434}\\u{11447}-\\u{1144A}\\u{1145F}-\\u{11461}\\u{11480}-\\u{114AF}\\u{114C4}-\\u{114C5}\\u{114C7}\\u{11580}-\\u{115AE}\\u{115D8}-\\u{115DB}\\u{11600}-\\u{1162F}\\u{11644}\\u{11680}-\\u{116AA}\\u{116B8}\\u{11700}-\\u{1171A}\\u{11740}-\\u{11746}\\u{11800}-\\u{1182B}\\u{118A0}-\\u{118DF}\\u{118FF}-\\u{11906}\\u{11909}\\u{1190C}-\\u{11913}\\u{11915}-\\u{11916}\\u{11918}-\\u{1192F}\\u{1193F}\\u{11941}\\u{119A0}-\\u{119A7}\\u{119AA}-\\u{119D0}\\u{119E1}\\u{119E3}\\u{11A00}\\u{11A0B}-\\u{11A32}\\u{11A3A}\\u{11A50}\\u{11A5C}-\\u{11A89}\\u{11A9D}\\u{11AB0}-\\u{11AF8}\\u{11BC0}-\\u{11BE0}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C2E}\\u{11C40}\\u{11C72}-\\u{11C8F}\\u{11D00}-\\u{11D06}\\u{11D08}-\\u{11D09}\\u{11D0B}-\\u{11D30}\\u{11D46}\\u{11D60}-\\u{11D65}\\u{11D67}-\\u{11D68}\\u{11D6A}-\\u{11D89}\\u{11D98}\\u{11DB0}-\\u{11DDB}\\u{11EE0}-\\u{11EF2}\\u{11F02}\\u{11F04}-\\u{11F10}\\u{11F12}-\\u{11F33}\\u{11FB0}\\u{12000}-\\u{12399}\\u{12480}-\\u{12543}\\u{12F90}-\\u{12FF0}\\u{13000}-\\u{1342F}\\u{13441}-\\u{13446}\\u{13460}-\\u{143FA}\\u{14400}-\\u{14646}\\u{16100}-\\u{1611D}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A70}-\\u{16ABE}\\u{16AD0}-\\u{16AED}\\u{16B00}-\\u{16B2F}\\u{16B40}-\\u{16B43}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16D40}-\\u{16D6C}\\u{16E40}-\\u{16E7F}\\u{16EA0}-\\u{16EB8}\\u{16EBB}-\\u{16ED3}\\u{16F00}-\\u{16F4A}\\u{16F50}\\u{16F93}-\\u{16F9F}\\u{16FE0}-\\u{16FE1}\\u{16FE3}\\u{16FF2}-\\u{16FF3}\\u{17000}-\\u{18CD5}\\u{18CFF}-\\u{18D1E}\\u{18D80}-\\u{18DF2}\\u{1AFF0}-\\u{1AFF3}\\u{1AFF5}-\\u{1AFFB}\\u{1AFFD}-\\u{1AFFE}\\u{1B000}-\\u{1B122}\\u{1B132}\\u{1B150}-\\u{1B152}\\u{1B155}\\u{1B164}-\\u{1B167}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}-\\u{1D49F}\\u{1D4A2}\\u{1D4A5}-\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D6C0}\\u{1D6C2}-\\u{1D6DA}\\u{1D6DC}-\\u{1D6FA}\\u{1D6FC}-\\u{1D714}\\u{1D716}-\\u{1D734}\\u{1D736}-\\u{1D74E}\\u{1D750}-\\u{1D76E}\\u{1D770}-\\u{1D788}\\u{1D78A}-\\u{1D7A8}\\u{1D7AA}-\\u{1D7C2}\\u{1D7C4}-\\u{1D7CB}\\u{1DF00}-\\u{1DF1E}\\u{1DF25}-\\u{1DF2A}\\u{1E030}-\\u{1E06D}\\u{1E100}-\\u{1E12C}\\u{1E137}-\\u{1E13D}\\u{1E14E}\\u{1E290}-\\u{1E2AD}\\u{1E2C0}-\\u{1E2EB}\\u{1E4D0}-\\u{1E4EB}\\u{1E5D0}-\\u{1E5ED}\\u{1E5F0}\\u{1E6C0}-\\u{1E6DE}\\u{1E6E0}-\\u{1E6E2}\\u{1E6E4}-\\u{1E6E5}\\u{1E6E7}-\\u{1E6ED}\\u{1E6F0}-\\u{1E6F4}\\u{1E6FE}-\\u{1E6FF}\\u{1E7E0}-\\u{1E7E6}\\u{1E7E8}-\\u{1E7EB}\\u{1E7ED}-\\u{1E7EE}\\u{1E7F0}-\\u{1E7FE}\\u{1E800}-\\u{1E8C4}\\u{1E900}-\\u{1E943}\\u{1E94B}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}-\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}-\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}-\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}\\u{20000}-\\u{2A6DF}\\u{2A700}-\\u{2B81D}\\u{2B820}-\\u{2CEAD}\\u{2CEB0}-\\u{2EBE0}\\u{2EBF0}-\\u{2EE5D}\\u{2F800}-\\u{2FA1D}\\u{30000}-\\u{3134A}\\u{31350}-\\u{33479}\\u0030-\\u0039\\u00B2-\\u00B3\\u00B9\\u00BC-\\u00BE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D58-\\u0D5E\\u0D66-\\u0D78\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19\\u{10107}-\\u{10133}\\u{10140}-\\u{10178}\\u{1018A}-\\u{1018B}\\u{102E1}-\\u{102FB}\\u{10320}-\\u{10323}\\u{10341}\\u{1034A}\\u{103D1}-\\u{103D5}\\u{104A0}-\\u{104A9}\\u{10858}-\\u{1085F}\\u{10879}-\\u{1087F}\\u{108A7}-\\u{108AF}\\u{108FB}-\\u{108FF}\\u{10916}-\\u{1091B}\\u{109BC}-\\u{109BD}\\u{109C0}-\\u{109CF}\\u{109D2}-\\u{109FF}\\u{10A40}-\\u{10A48}\\u{10A7D}-\\u{10A7E}\\u{10A9D}-\\u{10A9F}\\u{10AEB}-\\u{10AEF}\\u{10B58}-\\u{10B5F}\\u{10B78}-\\u{10B7F}\\u{10BA9}-\\u{10BAF}\\u{10CFA}-\\u{10CFF}\\u{10D30}-\\u{10D39}\\u{10D40}-\\u{10D49}\\u{10E60}-\\u{10E7E}\\u{10F1D}-\\u{10F26}\\u{10F51}-\\u{10F54}\\u{10FC5}-\\u{10FCB}\\u{11052}-\\u{1106F}\\u{110F0}-\\u{110F9}\\u{11136}-\\u{1113F}\\u{111D0}-\\u{111D9}\\u{111E1}-\\u{111F4}\\u{112F0}-\\u{112F9}\\u{11450}-\\u{11459}\\u{114D0}-\\u{114D9}\\u{11650}-\\u{11659}\\u{116C0}-\\u{116C9}\\u{116D0}-\\u{116E3}\\u{11730}-\\u{1173B}\\u{118E0}-\\u{118F2}\\u{11950}-\\u{11959}\\u{11BF0}-\\u{11BF9}\\u{11C50}-\\u{11C6C}\\u{11D50}-\\u{11D59}\\u{11DA0}-\\u{11DA9}\\u{11DE0}-\\u{11DE9}\\u{11F50}-\\u{11F59}\\u{11FC0}-\\u{11FD4}\\u{12400}-\\u{1246E}\\u{16130}-\\u{16139}\\u{16A60}-\\u{16A69}\\u{16AC0}-\\u{16AC9}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16D70}-\\u{16D79}\\u{16E80}-\\u{16E96}\\u{16FF4}-\\u{16FF6}\\u{1CCF0}-\\u{1CCF9}\\u{1D2C0}-\\u{1D2D3}\\u{1D2E0}-\\u{1D2F3}\\u{1D360}-\\u{1D378}\\u{1D7CE}-\\u{1D7FF}\\u{1E140}-\\u{1E149}\\u{1E2F0}-\\u{1E2F9}\\u{1E4F0}-\\u{1E4F9}\\u{1E5F1}-\\u{1E5FA}\\u{1E8C7}-\\u{1E8CF}\\u{1E950}-\\u{1E959}\\u{1EC71}-\\u{1ECAB}\\u{1ECAD}-\\u{1ECAF}\\u{1ECB1}-\\u{1ECB4}\\u{1ED01}-\\u{1ED2D}\\u{1ED2F}-\\u{1ED3D}\\u{1F100}-\\u{1F10C}\\u{1FBF0}-\\u{1FBF9}]+", "gu"))) !== null && _terms_match !== void 0 ? _terms_match : []).filter(function(t) {
927
- return ![
928
- 'AND',
929
- 'OR',
930
- 'NOT',
931
- 'NEAR'
932
- ].includes(t);
933
- }).join(' ');
934
- return [
935
- 4,
936
- provider.embed([
937
- text
938
- ])
939
- ];
940
- case 3:
941
- _toStore = toStore.apply(void 0, [
942
- _state.sent()[0],
943
- storeDims,
944
- false
945
- ]), qv = _toStore.v;
946
- rows = db.prepare('SELECT "path", start_line, end_line, scale, vector FROM embeddings WHERE vector IS NOT NULL').all();
947
- best = new Map();
948
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
949
- try {
950
- for(_iterator = rows[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
951
- row = _step.value;
952
- if (allowed && !allowed.has(row.path)) continue;
953
- q = new Int8Array(row.vector.buffer, row.vector.byteOffset, Math.min(storeDims, row.vector.byteLength));
954
- dot = 0;
955
- for(d = 0; d < q.length; d++)dot += q[d] * qv[d];
956
- score = dot * row.scale;
957
- existing = best.get(row.path);
958
- if (!existing || score > existing.score) best.set(row.path, {
959
- score: score,
960
- lines: "L".concat(row.start_line, "-").concat(row.end_line)
961
- });
962
- }
963
- } catch (err) {
964
- _didIteratorError = true;
965
- _iteratorError = err;
966
- } finally{
967
- try {
968
- if (!_iteratorNormalCompletion && _iterator.return != null) {
969
- _iterator.return();
970
- }
971
- } finally{
972
- if (_didIteratorError) {
973
- throw _iteratorError;
974
- }
975
- }
976
- }
977
- return [
978
- 2,
979
- _to_consumable_array(best.entries()).sort(function(a, b) {
980
- return b[1].score - a[1].score;
981
- }).slice(0, fetch1).map(function(param) {
982
- var _param = _sliced_to_array(param, 2), path = _param[0], b = _param[1];
983
- return {
984
- path: path,
985
- lines: b.lines,
986
- similarity: asCosine(b.score)
987
- };
988
- })
989
- ];
990
- }
991
- });
992
- })();
993
- }
994
- function hasEmbedding(db, path) {
995
- var row = db.prepare('SELECT 1 AS ok FROM embeddings WHERE "path" = ? AND vector IS NOT NULL LIMIT 1').get(path);
996
- return row !== undefined;
997
- }
998
- function similarNotes(db, _cfg, path, opts) {
999
- // Cost is target_chunks x stored_chunks, so a heading-dense seed multiplies a full-corpus
1000
- // scan (12.7s at 201 chunks/note). Sample evenly, so late sections still get a vote.
1001
- var targetRows = db.prepare('SELECT scale, vector FROM embeddings WHERE "path" = ? AND vector IS NOT NULL ORDER BY chunk').all(path);
1002
- if (targetRows.length === 0) return [];
1003
- var step = Math.max(1, Math.ceil(targetRows.length / TARGET_CHUNK_CAP));
1004
- var target = targetRows.filter(function(_, i) {
1005
- return i % step === 0;
1006
- }).map(function(row) {
1007
- return {
1008
- v: new Int8Array(row.vector.buffer, row.vector.byteOffset, row.vector.byteLength),
1009
- scale: row.scale
1010
- };
1011
- });
1012
- var rows = db.prepare('SELECT "path", scale, vector FROM embeddings WHERE vector IS NOT NULL').all();
1013
- var best = new Map();
1014
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
1015
- try {
1016
- for(var _iterator = rows[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
1017
- var row = _step.value;
1018
- if (row.path === path || opts.exclude.has(row.path) || opts.allowed && !opts.allowed.has(row.path)) continue;
1019
- var other = new Int8Array(row.vector.buffer, row.vector.byteOffset, row.vector.byteLength);
1020
- var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
1021
- try {
1022
- for(var _iterator1 = target[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
1023
- var t = _step1.value;
1024
- var dot = 0;
1025
- var len = Math.min(t.v.length, other.length);
1026
- for(var d = 0; d < len; d++)dot += t.v[d] * other[d];
1027
- var score = dot * t.scale * row.scale;
1028
- var existing = best.get(row.path);
1029
- if (existing === undefined || score > existing) best.set(row.path, score);
1030
- }
1031
- } catch (err) {
1032
- _didIteratorError1 = true;
1033
- _iteratorError1 = err;
1034
- } finally{
1035
- try {
1036
- if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
1037
- _iterator1.return();
1038
- }
1039
- } finally{
1040
- if (_didIteratorError1) {
1041
- throw _iteratorError1;
1042
- }
1043
- }
1044
- }
1045
- }
1046
- } catch (err) {
1047
- _didIteratorError = true;
1048
- _iteratorError = err;
1049
- } finally{
1050
- try {
1051
- if (!_iteratorNormalCompletion && _iterator.return != null) {
1052
- _iterator.return();
1053
- }
1054
- } finally{
1055
- if (_didIteratorError) {
1056
- throw _iteratorError;
1057
- }
1058
- }
1059
- }
1060
- return _to_consumable_array(best.entries()).sort(function(a, b) {
1061
- return b[1] - a[1];
1062
- }).slice(0, opts.k).map(function(param) {
1063
- var _param = _sliced_to_array(param, 2), p = _param[0], score = _param[1];
1064
- return {
1065
- path: p,
1066
- similarity: asCosine(score)
1067
- };
1068
- });
1069
- }
1070
82
  /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }