sensemaking 0.15.4 → 0.16.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 (213) hide show
  1. package/README.md +33 -5
  2. package/dist/cjs/cli/download.js +12 -11
  3. package/dist/cjs/cli/download.js.map +1 -1
  4. package/dist/cjs/cli/index.d.cts +1 -1
  5. package/dist/cjs/cli/index.d.ts +1 -1
  6. package/dist/cjs/cli/index.js +1 -1
  7. package/dist/cjs/cli/index.js.map +1 -1
  8. package/dist/cjs/cli/init.js +31 -5
  9. package/dist/cjs/cli/init.js.map +1 -1
  10. package/dist/cjs/cli/status.js +343 -99
  11. package/dist/cjs/cli/status.js.map +1 -1
  12. package/dist/cjs/commands/related.js +17 -13
  13. package/dist/cjs/commands/related.js.map +1 -1
  14. package/dist/cjs/commands/search.js +25 -96
  15. package/dist/cjs/commands/search.js.map +1 -1
  16. package/dist/cjs/commands/signals.d.cts +18 -0
  17. package/dist/cjs/commands/signals.d.ts +18 -0
  18. package/dist/cjs/commands/signals.js +299 -0
  19. package/dist/cjs/commands/signals.js.map +1 -0
  20. package/dist/cjs/commands/status.d.cts +2 -2
  21. package/dist/cjs/commands/status.d.ts +2 -2
  22. package/dist/cjs/commands/status.js +1 -1
  23. package/dist/cjs/commands/status.js.map +1 -1
  24. package/dist/cjs/config/access.d.cts +5 -2
  25. package/dist/cjs/config/access.d.ts +5 -2
  26. package/dist/cjs/config/access.js +30 -12
  27. package/dist/cjs/config/access.js.map +1 -1
  28. package/dist/cjs/config/index.d.cts +4 -1
  29. package/dist/cjs/config/index.d.ts +4 -1
  30. package/dist/cjs/config/index.js +12 -2
  31. package/dist/cjs/config/index.js.map +1 -1
  32. package/dist/cjs/config/load.d.cts +6 -1
  33. package/dist/cjs/config/load.d.ts +6 -1
  34. package/dist/cjs/config/load.js +83 -8
  35. package/dist/cjs/config/load.js.map +1 -1
  36. package/dist/cjs/config/resolve.js +1 -1
  37. package/dist/cjs/config/resolve.js.map +1 -1
  38. package/dist/cjs/config/signals.d.cts +4 -0
  39. package/dist/cjs/config/signals.d.ts +4 -0
  40. package/dist/cjs/config/signals.js +30 -0
  41. package/dist/cjs/config/signals.js.map +1 -0
  42. package/dist/cjs/config/types.d.cts +6 -4
  43. package/dist/cjs/config/types.d.ts +6 -4
  44. package/dist/cjs/config/types.js +1 -1
  45. package/dist/cjs/config/types.js.map +1 -1
  46. package/dist/cjs/config/validate.js +120 -11
  47. package/dist/cjs/config/validate.js.map +1 -1
  48. package/dist/cjs/db/open.d.cts +1 -1
  49. package/dist/cjs/db/open.d.ts +1 -1
  50. package/dist/cjs/db/open.js +6 -1
  51. package/dist/cjs/db/open.js.map +1 -1
  52. package/dist/cjs/db/reconcile.d.cts +1 -0
  53. package/dist/cjs/db/reconcile.d.ts +1 -0
  54. package/dist/cjs/db/reconcile.js +15 -0
  55. package/dist/cjs/db/reconcile.js.map +1 -1
  56. package/dist/cjs/embed/cohere.d.cts +2 -0
  57. package/dist/cjs/embed/cohere.d.ts +2 -0
  58. package/dist/cjs/embed/cohere.js +238 -0
  59. package/dist/cjs/embed/cohere.js.map +1 -0
  60. package/dist/cjs/embed/http.d.cts +2 -0
  61. package/dist/cjs/embed/http.d.ts +2 -0
  62. package/dist/cjs/embed/http.js +258 -0
  63. package/dist/cjs/embed/http.js.map +1 -0
  64. package/dist/cjs/embed/identity.d.cts +13 -0
  65. package/dist/cjs/embed/identity.d.ts +13 -0
  66. package/dist/cjs/embed/identity.js +194 -0
  67. package/dist/cjs/embed/identity.js.map +1 -0
  68. package/dist/cjs/embed/langfit.d.cts +6 -0
  69. package/dist/cjs/embed/langfit.d.ts +6 -0
  70. package/dist/cjs/embed/langfit.js +326 -0
  71. package/dist/cjs/embed/langfit.js.map +1 -0
  72. package/dist/cjs/embed/languages.d.cts +3 -0
  73. package/dist/cjs/embed/languages.d.ts +3 -0
  74. package/dist/cjs/embed/languages.js +98 -0
  75. package/dist/cjs/embed/languages.js.map +1 -0
  76. package/dist/cjs/embed/openai.d.cts +2 -0
  77. package/dist/cjs/embed/openai.d.ts +2 -0
  78. package/dist/cjs/embed/openai.js +268 -0
  79. package/dist/cjs/embed/openai.js.map +1 -0
  80. package/dist/cjs/embed/query.d.cts +21 -0
  81. package/dist/cjs/embed/query.d.ts +21 -0
  82. package/dist/cjs/embed/query.js +610 -0
  83. package/dist/cjs/embed/query.js.map +1 -0
  84. package/dist/cjs/embed/registry.d.cts +3 -0
  85. package/dist/cjs/embed/registry.d.ts +3 -0
  86. package/dist/cjs/embed/registry.js +114 -0
  87. package/dist/cjs/embed/registry.js.map +1 -0
  88. package/dist/cjs/embed/static.d.cts +2 -0
  89. package/dist/cjs/embed/static.d.ts +2 -0
  90. package/dist/cjs/embed/static.js +367 -0
  91. package/dist/cjs/embed/static.js.map +1 -0
  92. package/dist/cjs/embed/store.d.cts +8 -0
  93. package/dist/cjs/embed/store.d.ts +8 -0
  94. package/dist/cjs/embed/store.js +498 -0
  95. package/dist/cjs/embed/store.js.map +1 -0
  96. package/dist/cjs/embed/types.d.cts +8 -0
  97. package/dist/cjs/embed/types.d.ts +8 -0
  98. package/dist/cjs/embed/types.js +7 -0
  99. package/dist/cjs/embed/types.js.map +1 -0
  100. package/dist/cjs/errors.d.cts +1 -1
  101. package/dist/cjs/errors.d.ts +1 -1
  102. package/dist/cjs/errors.js.map +1 -1
  103. package/dist/cjs/features/embed.d.cts +4 -27
  104. package/dist/cjs/features/embed.d.ts +4 -27
  105. package/dist/cjs/features/embed.js +3 -969
  106. package/dist/cjs/features/embed.js.map +1 -1
  107. package/dist/cjs/index.d.cts +1 -1
  108. package/dist/cjs/index.d.ts +1 -1
  109. package/dist/cjs/index.js.map +1 -1
  110. package/dist/cjs/output.d.cts +2 -2
  111. package/dist/cjs/output.d.ts +2 -2
  112. package/dist/cjs/output.js +9 -2
  113. package/dist/cjs/output.js.map +1 -1
  114. package/dist/cjs/scan.js +8 -5
  115. package/dist/cjs/scan.js.map +1 -1
  116. package/dist/cjs/segment.js +67 -14
  117. package/dist/cjs/segment.js.map +1 -1
  118. package/dist/esm/cli/download.js +9 -8
  119. package/dist/esm/cli/download.js.map +1 -1
  120. package/dist/esm/cli/index.d.ts +1 -1
  121. package/dist/esm/cli/index.js +1 -1
  122. package/dist/esm/cli/index.js.map +1 -1
  123. package/dist/esm/cli/init.js +32 -6
  124. package/dist/esm/cli/init.js.map +1 -1
  125. package/dist/esm/cli/status.js +36 -8
  126. package/dist/esm/cli/status.js.map +1 -1
  127. package/dist/esm/commands/related.js +14 -10
  128. package/dist/esm/commands/related.js.map +1 -1
  129. package/dist/esm/commands/search.js +27 -78
  130. package/dist/esm/commands/search.js.map +1 -1
  131. package/dist/esm/commands/signals.d.ts +18 -0
  132. package/dist/esm/commands/signals.js +78 -0
  133. package/dist/esm/commands/signals.js.map +1 -0
  134. package/dist/esm/commands/status.d.ts +2 -2
  135. package/dist/esm/commands/status.js +2 -2
  136. package/dist/esm/commands/status.js.map +1 -1
  137. package/dist/esm/config/access.d.ts +5 -2
  138. package/dist/esm/config/access.js +31 -12
  139. package/dist/esm/config/access.js.map +1 -1
  140. package/dist/esm/config/index.d.ts +4 -1
  141. package/dist/esm/config/index.js +2 -1
  142. package/dist/esm/config/index.js.map +1 -1
  143. package/dist/esm/config/load.d.ts +6 -1
  144. package/dist/esm/config/load.js +67 -9
  145. package/dist/esm/config/load.js.map +1 -1
  146. package/dist/esm/config/resolve.js +2 -2
  147. package/dist/esm/config/resolve.js.map +1 -1
  148. package/dist/esm/config/signals.d.ts +4 -0
  149. package/dist/esm/config/signals.js +14 -0
  150. package/dist/esm/config/signals.js.map +1 -0
  151. package/dist/esm/config/types.d.ts +6 -4
  152. package/dist/esm/config/types.js +1 -1
  153. package/dist/esm/config/types.js.map +1 -1
  154. package/dist/esm/config/validate.js +58 -11
  155. package/dist/esm/config/validate.js.map +1 -1
  156. package/dist/esm/db/open.d.ts +1 -1
  157. package/dist/esm/db/open.js +7 -2
  158. package/dist/esm/db/open.js.map +1 -1
  159. package/dist/esm/db/reconcile.d.ts +1 -0
  160. package/dist/esm/db/reconcile.js +10 -0
  161. package/dist/esm/db/reconcile.js.map +1 -1
  162. package/dist/esm/embed/cohere.d.ts +2 -0
  163. package/dist/esm/embed/cohere.js +46 -0
  164. package/dist/esm/embed/cohere.js.map +1 -0
  165. package/dist/esm/embed/http.d.ts +2 -0
  166. package/dist/esm/embed/http.js +33 -0
  167. package/dist/esm/embed/http.js.map +1 -0
  168. package/dist/esm/embed/identity.d.ts +13 -0
  169. package/dist/esm/embed/identity.js +92 -0
  170. package/dist/esm/embed/identity.js.map +1 -0
  171. package/dist/esm/embed/langfit.d.ts +6 -0
  172. package/dist/esm/embed/langfit.js +44 -0
  173. package/dist/esm/embed/langfit.js.map +1 -0
  174. package/dist/esm/embed/languages.d.ts +3 -0
  175. package/dist/esm/embed/languages.js +80 -0
  176. package/dist/esm/embed/languages.js.map +1 -0
  177. package/dist/esm/embed/openai.d.ts +2 -0
  178. package/dist/esm/embed/openai.js +49 -0
  179. package/dist/esm/embed/openai.js.map +1 -0
  180. package/dist/esm/embed/query.d.ts +21 -0
  181. package/dist/esm/embed/query.js +181 -0
  182. package/dist/esm/embed/query.js.map +1 -0
  183. package/dist/esm/embed/registry.d.ts +3 -0
  184. package/dist/esm/embed/registry.js +45 -0
  185. package/dist/esm/embed/registry.js.map +1 -0
  186. package/dist/esm/embed/static.d.ts +2 -0
  187. package/dist/esm/embed/static.js +72 -0
  188. package/dist/esm/embed/static.js.map +1 -0
  189. package/dist/esm/embed/store.d.ts +8 -0
  190. package/dist/esm/embed/store.js +123 -0
  191. package/dist/esm/embed/store.js.map +1 -0
  192. package/dist/esm/embed/types.d.ts +8 -0
  193. package/dist/esm/embed/types.js +3 -0
  194. package/dist/esm/embed/types.js.map +1 -0
  195. package/dist/esm/errors.d.ts +1 -1
  196. package/dist/esm/errors.js.map +1 -1
  197. package/dist/esm/features/embed.d.ts +4 -27
  198. package/dist/esm/features/embed.js +0 -346
  199. package/dist/esm/features/embed.js.map +1 -1
  200. package/dist/esm/index.d.ts +1 -1
  201. package/dist/esm/index.js.map +1 -1
  202. package/dist/esm/output.d.ts +2 -2
  203. package/dist/esm/output.js +6 -2
  204. package/dist/esm/output.js.map +1 -1
  205. package/dist/esm/scan.js +7 -4
  206. package/dist/esm/scan.js.map +1 -1
  207. package/dist/esm/segment.js +49 -19
  208. package/dist/esm/segment.js.map +1 -1
  209. package/package.json +9 -1
  210. package/schema.json +14 -7
  211. package/skills/sense/SKILL.md +21 -5
  212. package/skills/sense-setup/EXAMPLES.md +6 -6
  213. package/skills/sense-setup/SKILL.md +6 -4
@@ -0,0 +1,610 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
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 embedPending () {
13
+ return embedPending;
14
+ },
15
+ get hasEmbedding () {
16
+ return hasEmbedding;
17
+ },
18
+ get semanticCandidates () {
19
+ return semanticCandidates;
20
+ },
21
+ get similarNotes () {
22
+ return similarNotes;
23
+ },
24
+ get toStore () {
25
+ return toStore;
26
+ }
27
+ });
28
+ var _nodepath = require("node:path");
29
+ var _errorsts = require("../errors.js");
30
+ var _embedts = require("../features/embed.js");
31
+ var _progressts = require("../progress.js");
32
+ var _scants = require("../scan.js");
33
+ var _langfitts = require("./langfit.js");
34
+ var _registryts = require("./registry.js");
35
+ function _array_like_to_array(arr, len) {
36
+ if (len == null || len > arr.length) len = arr.length;
37
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
38
+ return arr2;
39
+ }
40
+ function _array_with_holes(arr) {
41
+ if (Array.isArray(arr)) return arr;
42
+ }
43
+ function _array_without_holes(arr) {
44
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
45
+ }
46
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
47
+ try {
48
+ var info = gen[key](arg);
49
+ var value = info.value;
50
+ } catch (error) {
51
+ reject(error);
52
+ return;
53
+ }
54
+ if (info.done) resolve(value);
55
+ else Promise.resolve(value).then(_next, _throw);
56
+ }
57
+ function _async_to_generator(fn) {
58
+ return function() {
59
+ var self = this, args = arguments;
60
+ return new Promise(function(resolve, reject) {
61
+ var gen = fn.apply(self, args);
62
+ function _next(value) {
63
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
64
+ }
65
+ function _throw(err) {
66
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
67
+ }
68
+ _next(undefined);
69
+ });
70
+ };
71
+ }
72
+ function _iterable_to_array(iter) {
73
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) {
74
+ return Array.from(iter);
75
+ }
76
+ }
77
+ function _iterable_to_array_limit(arr, i) {
78
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
79
+ if (_i == null) return;
80
+ var _arr = [];
81
+ var _n = true;
82
+ var _d = false;
83
+ var _s, _e;
84
+ try {
85
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
86
+ _arr.push(_s.value);
87
+ if (i && _arr.length === i) break;
88
+ }
89
+ } catch (err) {
90
+ _d = true;
91
+ _e = err;
92
+ } finally{
93
+ try {
94
+ if (!_n && _i["return"] != null) _i["return"]();
95
+ } finally{
96
+ if (_d) throw _e;
97
+ }
98
+ }
99
+ return _arr;
100
+ }
101
+ function _non_iterable_rest() {
102
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
103
+ }
104
+ function _non_iterable_spread() {
105
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
106
+ }
107
+ function _sliced_to_array(arr, i) {
108
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
109
+ }
110
+ function _to_consumable_array(arr) {
111
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
112
+ }
113
+ function _ts_generator(thisArg, body) {
114
+ var f, y, t, _ = {
115
+ label: 0,
116
+ sent: function() {
117
+ if (t[0] & 1) throw t[1];
118
+ return t[1];
119
+ },
120
+ trys: [],
121
+ ops: []
122
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
123
+ return d(g, "next", {
124
+ value: verb(0)
125
+ }), d(g, "throw", {
126
+ value: verb(1)
127
+ }), d(g, "return", {
128
+ value: verb(2)
129
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
130
+ value: function() {
131
+ return this;
132
+ }
133
+ }), g;
134
+ function verb(n) {
135
+ return function(v) {
136
+ return step([
137
+ n,
138
+ v
139
+ ]);
140
+ };
141
+ }
142
+ function step(op) {
143
+ if (f) throw new TypeError("Generator is already executing.");
144
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
145
+ 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;
146
+ if (y = 0, t) op = [
147
+ op[0] & 2,
148
+ t.value
149
+ ];
150
+ switch(op[0]){
151
+ case 0:
152
+ case 1:
153
+ t = op;
154
+ break;
155
+ case 4:
156
+ _.label++;
157
+ return {
158
+ value: op[1],
159
+ done: false
160
+ };
161
+ case 5:
162
+ _.label++;
163
+ y = op[1];
164
+ op = [
165
+ 0
166
+ ];
167
+ continue;
168
+ case 7:
169
+ op = _.ops.pop();
170
+ _.trys.pop();
171
+ continue;
172
+ default:
173
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
174
+ _ = 0;
175
+ continue;
176
+ }
177
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
178
+ _.label = op[1];
179
+ break;
180
+ }
181
+ if (op[0] === 6 && _.label < t[1]) {
182
+ _.label = t[1];
183
+ t = op;
184
+ break;
185
+ }
186
+ if (t && _.label < t[2]) {
187
+ _.label = t[2];
188
+ _.ops.push(op);
189
+ break;
190
+ }
191
+ if (t[2]) _.ops.pop();
192
+ _.trys.pop();
193
+ continue;
194
+ }
195
+ op = body.call(thisArg, _);
196
+ } catch (e) {
197
+ op = [
198
+ 6,
199
+ e
200
+ ];
201
+ y = 0;
202
+ } finally{
203
+ f = t = 0;
204
+ }
205
+ if (op[0] & 5) throw op[1];
206
+ return {
207
+ value: op[0] ? op[1] : void 0,
208
+ done: true
209
+ };
210
+ }
211
+ }
212
+ function _ts_values(o) {
213
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
214
+ if (m) {
215
+ return m.call(o);
216
+ }
217
+ if (o && typeof o.length === "number") {
218
+ return {
219
+ next: function() {
220
+ if (o && i >= o.length) {
221
+ o = void 0;
222
+ }
223
+ return {
224
+ value: o && o[i++],
225
+ done: !o
226
+ };
227
+ }
228
+ };
229
+ }
230
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
231
+ }
232
+ function _unsupported_iterable_to_array(o, minLen) {
233
+ if (!o) return;
234
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
235
+ var n = Object.prototype.toString.call(o).slice(8, -1);
236
+ if (n === "Object" && o.constructor) n = o.constructor.name;
237
+ if (n === "Map" || n === "Set") return Array.from(n);
238
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
239
+ }
240
+ // Storage lever fixed by the bake-off (BENCHMARKING.md): int8 at 256 dims is
241
+ // quality-free vs f32-512 when fused. Queries stay f32 at the same dims.
242
+ var STORE_DIMS = 256;
243
+ // Seed chunks that participate in a `related` scan; see similarNotes for the measurement.
244
+ var TARGET_CHUNK_CAP = 16;
245
+ function toStore(full, dims, int8) {
246
+ var v = new Float32Array(dims);
247
+ var norm = 0;
248
+ for(var d = 0; d < dims; d++)norm += full[d] * full[d];
249
+ norm = Math.sqrt(norm) + 1e-32;
250
+ for(var d1 = 0; d1 < dims; d1++)v[d1] = full[d1] / norm;
251
+ if (!int8) return {
252
+ v: v,
253
+ scale: 1
254
+ };
255
+ var max = 0;
256
+ for(var d2 = 0; d2 < dims; d2++)max = Math.max(max, Math.abs(v[d2]));
257
+ return {
258
+ v: v,
259
+ scale: max / 127 || 1
260
+ };
261
+ }
262
+ function embedPending(db, cfg, baseDir) {
263
+ return _async_to_generator(function() {
264
+ 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;
265
+ return _ts_generator(this, function(_state) {
266
+ switch(_state.label){
267
+ case 0:
268
+ _loop = function(i) {
269
+ var batch, vectors;
270
+ return _ts_generator(this, function(_state) {
271
+ switch(_state.label){
272
+ case 0:
273
+ batch = jobs.slice(i, i + provider.batchCap);
274
+ return [
275
+ 4,
276
+ provider.embedDocuments(batch.map(function(j) {
277
+ return j.text;
278
+ }))
279
+ ];
280
+ case 1:
281
+ vectors = _state.sent();
282
+ db.exec('BEGIN');
283
+ try {
284
+ batch.forEach(function(job, j) {
285
+ var _toStore = toStore(vectors[j], storeDims, true), v = _toStore.v, scale = _toStore.scale;
286
+ var q = new Int8Array(storeDims);
287
+ for(var d = 0; d < storeDims; d++)q[d] = Math.round(v[d] / scale);
288
+ update.run(scale, Buffer.from(q.buffer), job.path, job.chunk);
289
+ });
290
+ db.exec('COMMIT');
291
+ } catch (err) {
292
+ db.exec('ROLLBACK');
293
+ throw err;
294
+ }
295
+ report.tick(Math.min(i + provider.batchCap, jobs.length));
296
+ return [
297
+ 2
298
+ ];
299
+ }
300
+ });
301
+ };
302
+ return [
303
+ 4,
304
+ (0, _registryts.getProvider)(cfg)
305
+ ];
306
+ case 1:
307
+ provider = _state.sent();
308
+ dirty = db.prepare('SELECT "path", chunk FROM embeddings WHERE vector IS NULL ORDER BY "path", chunk').all();
309
+ if (dirty.length === 0) return [
310
+ 2
311
+ ];
312
+ storeDims = Math.min(STORE_DIMS, provider.dims);
313
+ byPath = new Map();
314
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
315
+ try {
316
+ for(_iterator = dirty[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
317
+ row = _step.value;
318
+ ;
319
+ list = (_byPath_get = byPath.get(row.path)) !== null && _byPath_get !== void 0 ? _byPath_get : [];
320
+ list.push(row.chunk);
321
+ byPath.set(row.path, list);
322
+ }
323
+ } catch (err) {
324
+ _didIteratorError = true;
325
+ _iteratorError = err;
326
+ } finally{
327
+ try {
328
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
329
+ _iterator.return();
330
+ }
331
+ } finally{
332
+ if (_didIteratorError) {
333
+ throw _iteratorError;
334
+ }
335
+ }
336
+ }
337
+ jobs = [];
338
+ _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
339
+ try {
340
+ for(_iterator1 = byPath[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
341
+ _step_value = _sliced_to_array(_step1.value, 2), path = _step_value[0], chunkIdxs = _step_value[1];
342
+ chunks = void 0;
343
+ try {
344
+ // presets/embed are irrelevant here -- re-deriving chunk text for a doc that already
345
+ // has embeddings rows means the tree had an embedding model at reconcile time.
346
+ chunks = (0, _scants.parseFile)({
347
+ relPath: path,
348
+ absPath: (0, _nodepath.join)(baseDir, path),
349
+ mtimeMs: 0,
350
+ ctimeMs: 0,
351
+ size: 0,
352
+ presets: [],
353
+ embed: true
354
+ }, [
355
+ _embedts.embed
356
+ ]).doc.extracted.embed;
357
+ } catch (unused) {
358
+ continue; // vanished since reconcile; the next reconcile removes its rows
359
+ }
360
+ _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;
361
+ try {
362
+ for(_iterator2 = chunkIdxs[Symbol.iterator](); !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true){
363
+ idx = _step2.value;
364
+ if (chunks[idx]) jobs.push({
365
+ path: path,
366
+ chunk: idx,
367
+ text: chunks[idx].text
368
+ });
369
+ }
370
+ } catch (err) {
371
+ _didIteratorError2 = true;
372
+ _iteratorError2 = err;
373
+ } finally{
374
+ try {
375
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
376
+ _iterator2.return();
377
+ }
378
+ } finally{
379
+ if (_didIteratorError2) {
380
+ throw _iteratorError2;
381
+ }
382
+ }
383
+ }
384
+ }
385
+ } catch (err) {
386
+ _didIteratorError1 = true;
387
+ _iteratorError1 = err;
388
+ } finally{
389
+ try {
390
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
391
+ _iterator1.return();
392
+ }
393
+ } finally{
394
+ if (_didIteratorError1) {
395
+ throw _iteratorError1;
396
+ }
397
+ }
398
+ }
399
+ // Over the exact texts about to be embedded, before any of them are: a mismatch fails
400
+ // this run loudly instead of quietly storing vectors from the wrong model.
401
+ return [
402
+ 4,
403
+ (0, _langfitts.checkLanguageFit)(db, provider, jobs.map(function(j) {
404
+ return j.text;
405
+ }))
406
+ ];
407
+ case 2:
408
+ _state.sent();
409
+ update = db.prepare('UPDATE embeddings SET scale = ?, vector = ? WHERE "path" = ? AND chunk = ?');
410
+ // The lazy build is the one long silence a first search hits (measured 23s at
411
+ // 26k notes); progress makes it distinguishable from a hang.
412
+ report = (0, _progressts.progress)('embedding chunks', jobs.length);
413
+ i = 0;
414
+ _state.label = 3;
415
+ case 3:
416
+ if (!(i < jobs.length)) return [
417
+ 3,
418
+ 6
419
+ ];
420
+ return [
421
+ 5,
422
+ _ts_values(_loop(i))
423
+ ];
424
+ case 4:
425
+ _state.sent();
426
+ _state.label = 5;
427
+ case 5:
428
+ i += provider.batchCap;
429
+ return [
430
+ 3,
431
+ 3
432
+ ];
433
+ case 6:
434
+ report.finish();
435
+ return [
436
+ 2
437
+ ];
438
+ }
439
+ });
440
+ })();
441
+ }
442
+ // Dequantised int8 dot products land a little either side of a true cosine, so an identical
443
+ // pair prints 1.001 and undermines a column whose whole job is being a bounded number.
444
+ function asCosine(score) {
445
+ return Math.round(Math.min(1, Math.max(-1, score)) * 1000) / 1000;
446
+ }
447
+ function semanticCandidates(db, cfg, terms, fetch, allowed) {
448
+ return _async_to_generator(function() {
449
+ var _terms_match, baseDir, provider, storeDims, text, _toStore, qv, rows, best, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, row, q, dot, d, score, existing;
450
+ return _ts_generator(this, function(_state) {
451
+ switch(_state.label){
452
+ case 0:
453
+ baseDir = cfg.baseDir;
454
+ if (!baseDir) throw new _errorsts.SenseError('EMBED_MODEL', 'semantic expansion needs a config with baseDir (use loadConfig/open)');
455
+ return [
456
+ 4,
457
+ embedPending(db, cfg, baseDir)
458
+ ];
459
+ case 1:
460
+ _state.sent();
461
+ return [
462
+ 4,
463
+ (0, _registryts.getProvider)(cfg)
464
+ ];
465
+ case 2:
466
+ provider = _state.sent();
467
+ storeDims = Math.min(STORE_DIMS, provider.dims);
468
+ 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) {
469
+ return ![
470
+ 'AND',
471
+ 'OR',
472
+ 'NOT',
473
+ 'NEAR'
474
+ ].includes(t);
475
+ }).join(' ');
476
+ return [
477
+ 4,
478
+ provider.embedQuery(text)
479
+ ];
480
+ case 3:
481
+ _toStore = toStore.apply(void 0, [
482
+ _state.sent(),
483
+ storeDims,
484
+ false
485
+ ]), qv = _toStore.v;
486
+ rows = db.prepare('SELECT "path", start_line, end_line, scale, vector FROM embeddings WHERE vector IS NOT NULL').all();
487
+ best = new Map();
488
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
489
+ try {
490
+ for(_iterator = rows[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
491
+ row = _step.value;
492
+ if (allowed && !allowed.has(row.path)) continue;
493
+ q = new Int8Array(row.vector.buffer, row.vector.byteOffset, Math.min(storeDims, row.vector.byteLength));
494
+ dot = 0;
495
+ for(d = 0; d < q.length; d++)dot += q[d] * qv[d];
496
+ score = dot * row.scale;
497
+ existing = best.get(row.path);
498
+ if (!existing || score > existing.score) best.set(row.path, {
499
+ score: score,
500
+ lines: "L".concat(row.start_line, "-").concat(row.end_line)
501
+ });
502
+ }
503
+ } catch (err) {
504
+ _didIteratorError = true;
505
+ _iteratorError = err;
506
+ } finally{
507
+ try {
508
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
509
+ _iterator.return();
510
+ }
511
+ } finally{
512
+ if (_didIteratorError) {
513
+ throw _iteratorError;
514
+ }
515
+ }
516
+ }
517
+ return [
518
+ 2,
519
+ _to_consumable_array(best.entries()).sort(function(a, b) {
520
+ return b[1].score - a[1].score;
521
+ }).slice(0, fetch).map(function(param) {
522
+ var _param = _sliced_to_array(param, 2), path = _param[0], b = _param[1];
523
+ return {
524
+ path: path,
525
+ lines: b.lines,
526
+ similarity: asCosine(b.score)
527
+ };
528
+ })
529
+ ];
530
+ }
531
+ });
532
+ })();
533
+ }
534
+ function hasEmbedding(db, path) {
535
+ var row = db.prepare('SELECT 1 AS ok FROM embeddings WHERE "path" = ? AND vector IS NOT NULL LIMIT 1').get(path);
536
+ return row !== undefined;
537
+ }
538
+ function similarNotes(db, _cfg, path, opts) {
539
+ // Cost is target_chunks x stored_chunks, so a heading-dense seed multiplies a full-corpus
540
+ // scan (12.7s at 201 chunks/note). Sample evenly, so late sections still get a vote.
541
+ var targetRows = db.prepare('SELECT scale, vector FROM embeddings WHERE "path" = ? AND vector IS NOT NULL ORDER BY chunk').all(path);
542
+ if (targetRows.length === 0) return [];
543
+ var step = Math.max(1, Math.ceil(targetRows.length / TARGET_CHUNK_CAP));
544
+ var target = targetRows.filter(function(_, i) {
545
+ return i % step === 0;
546
+ }).map(function(row) {
547
+ return {
548
+ v: new Int8Array(row.vector.buffer, row.vector.byteOffset, row.vector.byteLength),
549
+ scale: row.scale
550
+ };
551
+ });
552
+ var rows = db.prepare('SELECT "path", scale, vector FROM embeddings WHERE vector IS NOT NULL').all();
553
+ var best = new Map();
554
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
555
+ try {
556
+ for(var _iterator = rows[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
557
+ var row = _step.value;
558
+ if (row.path === path || opts.exclude.has(row.path) || opts.allowed && !opts.allowed.has(row.path)) continue;
559
+ var other = new Int8Array(row.vector.buffer, row.vector.byteOffset, row.vector.byteLength);
560
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
561
+ try {
562
+ for(var _iterator1 = target[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
563
+ var t = _step1.value;
564
+ var dot = 0;
565
+ var len = Math.min(t.v.length, other.length);
566
+ for(var d = 0; d < len; d++)dot += t.v[d] * other[d];
567
+ var score = dot * t.scale * row.scale;
568
+ var existing = best.get(row.path);
569
+ if (existing === undefined || score > existing) best.set(row.path, score);
570
+ }
571
+ } catch (err) {
572
+ _didIteratorError1 = true;
573
+ _iteratorError1 = err;
574
+ } finally{
575
+ try {
576
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
577
+ _iterator1.return();
578
+ }
579
+ } finally{
580
+ if (_didIteratorError1) {
581
+ throw _iteratorError1;
582
+ }
583
+ }
584
+ }
585
+ }
586
+ } catch (err) {
587
+ _didIteratorError = true;
588
+ _iteratorError = err;
589
+ } finally{
590
+ try {
591
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
592
+ _iterator.return();
593
+ }
594
+ } finally{
595
+ if (_didIteratorError) {
596
+ throw _iteratorError;
597
+ }
598
+ }
599
+ }
600
+ return _to_consumable_array(best.entries()).sort(function(a, b) {
601
+ return b[1] - a[1];
602
+ }).slice(0, opts.k).map(function(param) {
603
+ var _param = _sliced_to_array(param, 2), p = _param[0], score = _param[1];
604
+ return {
605
+ path: p,
606
+ similarity: asCosine(score)
607
+ };
608
+ });
609
+ }
610
+ /* 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; }