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.
- package/README.md +33 -5
- package/dist/cjs/cli/download.js +12 -11
- package/dist/cjs/cli/download.js.map +1 -1
- package/dist/cjs/cli/index.d.cts +1 -1
- package/dist/cjs/cli/index.d.ts +1 -1
- package/dist/cjs/cli/index.js +1 -1
- package/dist/cjs/cli/index.js.map +1 -1
- package/dist/cjs/cli/init.js +31 -5
- package/dist/cjs/cli/init.js.map +1 -1
- package/dist/cjs/cli/status.js +343 -99
- package/dist/cjs/cli/status.js.map +1 -1
- package/dist/cjs/commands/related.js +17 -13
- package/dist/cjs/commands/related.js.map +1 -1
- package/dist/cjs/commands/search.js +25 -96
- package/dist/cjs/commands/search.js.map +1 -1
- package/dist/cjs/commands/signals.d.cts +18 -0
- package/dist/cjs/commands/signals.d.ts +18 -0
- package/dist/cjs/commands/signals.js +299 -0
- package/dist/cjs/commands/signals.js.map +1 -0
- package/dist/cjs/commands/status.d.cts +2 -2
- package/dist/cjs/commands/status.d.ts +2 -2
- package/dist/cjs/commands/status.js +1 -1
- package/dist/cjs/commands/status.js.map +1 -1
- package/dist/cjs/config/access.d.cts +5 -2
- package/dist/cjs/config/access.d.ts +5 -2
- package/dist/cjs/config/access.js +30 -12
- package/dist/cjs/config/access.js.map +1 -1
- package/dist/cjs/config/index.d.cts +4 -1
- package/dist/cjs/config/index.d.ts +4 -1
- package/dist/cjs/config/index.js +12 -2
- package/dist/cjs/config/index.js.map +1 -1
- package/dist/cjs/config/load.d.cts +6 -1
- package/dist/cjs/config/load.d.ts +6 -1
- package/dist/cjs/config/load.js +83 -8
- package/dist/cjs/config/load.js.map +1 -1
- package/dist/cjs/config/resolve.js +1 -1
- package/dist/cjs/config/resolve.js.map +1 -1
- package/dist/cjs/config/signals.d.cts +4 -0
- package/dist/cjs/config/signals.d.ts +4 -0
- package/dist/cjs/config/signals.js +30 -0
- package/dist/cjs/config/signals.js.map +1 -0
- package/dist/cjs/config/types.d.cts +6 -4
- package/dist/cjs/config/types.d.ts +6 -4
- package/dist/cjs/config/types.js +1 -1
- package/dist/cjs/config/types.js.map +1 -1
- package/dist/cjs/config/validate.js +120 -11
- package/dist/cjs/config/validate.js.map +1 -1
- package/dist/cjs/db/open.d.cts +1 -1
- package/dist/cjs/db/open.d.ts +1 -1
- package/dist/cjs/db/open.js +6 -1
- package/dist/cjs/db/open.js.map +1 -1
- package/dist/cjs/db/reconcile.d.cts +1 -0
- package/dist/cjs/db/reconcile.d.ts +1 -0
- package/dist/cjs/db/reconcile.js +15 -0
- package/dist/cjs/db/reconcile.js.map +1 -1
- package/dist/cjs/embed/cohere.d.cts +2 -0
- package/dist/cjs/embed/cohere.d.ts +2 -0
- package/dist/cjs/embed/cohere.js +238 -0
- package/dist/cjs/embed/cohere.js.map +1 -0
- package/dist/cjs/embed/http.d.cts +2 -0
- package/dist/cjs/embed/http.d.ts +2 -0
- package/dist/cjs/embed/http.js +258 -0
- package/dist/cjs/embed/http.js.map +1 -0
- package/dist/cjs/embed/identity.d.cts +13 -0
- package/dist/cjs/embed/identity.d.ts +13 -0
- package/dist/cjs/embed/identity.js +194 -0
- package/dist/cjs/embed/identity.js.map +1 -0
- package/dist/cjs/embed/langfit.d.cts +6 -0
- package/dist/cjs/embed/langfit.d.ts +6 -0
- package/dist/cjs/embed/langfit.js +326 -0
- package/dist/cjs/embed/langfit.js.map +1 -0
- package/dist/cjs/embed/languages.d.cts +3 -0
- package/dist/cjs/embed/languages.d.ts +3 -0
- package/dist/cjs/embed/languages.js +98 -0
- package/dist/cjs/embed/languages.js.map +1 -0
- package/dist/cjs/embed/openai.d.cts +2 -0
- package/dist/cjs/embed/openai.d.ts +2 -0
- package/dist/cjs/embed/openai.js +268 -0
- package/dist/cjs/embed/openai.js.map +1 -0
- package/dist/cjs/embed/query.d.cts +21 -0
- package/dist/cjs/embed/query.d.ts +21 -0
- package/dist/cjs/embed/query.js +610 -0
- package/dist/cjs/embed/query.js.map +1 -0
- package/dist/cjs/embed/registry.d.cts +3 -0
- package/dist/cjs/embed/registry.d.ts +3 -0
- package/dist/cjs/embed/registry.js +114 -0
- package/dist/cjs/embed/registry.js.map +1 -0
- package/dist/cjs/embed/static.d.cts +2 -0
- package/dist/cjs/embed/static.d.ts +2 -0
- package/dist/cjs/embed/static.js +367 -0
- package/dist/cjs/embed/static.js.map +1 -0
- package/dist/cjs/embed/store.d.cts +8 -0
- package/dist/cjs/embed/store.d.ts +8 -0
- package/dist/cjs/embed/store.js +498 -0
- package/dist/cjs/embed/store.js.map +1 -0
- package/dist/cjs/embed/types.d.cts +8 -0
- package/dist/cjs/embed/types.d.ts +8 -0
- package/dist/cjs/embed/types.js +7 -0
- package/dist/cjs/embed/types.js.map +1 -0
- package/dist/cjs/errors.d.cts +1 -1
- package/dist/cjs/errors.d.ts +1 -1
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/features/embed.d.cts +4 -27
- package/dist/cjs/features/embed.d.ts +4 -27
- package/dist/cjs/features/embed.js +3 -969
- package/dist/cjs/features/embed.js.map +1 -1
- package/dist/cjs/index.d.cts +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/output.d.cts +2 -2
- package/dist/cjs/output.d.ts +2 -2
- package/dist/cjs/output.js +9 -2
- package/dist/cjs/output.js.map +1 -1
- package/dist/cjs/scan.js +8 -5
- package/dist/cjs/scan.js.map +1 -1
- package/dist/cjs/segment.js +67 -14
- package/dist/cjs/segment.js.map +1 -1
- package/dist/esm/cli/download.js +9 -8
- package/dist/esm/cli/download.js.map +1 -1
- package/dist/esm/cli/index.d.ts +1 -1
- package/dist/esm/cli/index.js +1 -1
- package/dist/esm/cli/index.js.map +1 -1
- package/dist/esm/cli/init.js +32 -6
- package/dist/esm/cli/init.js.map +1 -1
- package/dist/esm/cli/status.js +36 -8
- package/dist/esm/cli/status.js.map +1 -1
- package/dist/esm/commands/related.js +14 -10
- package/dist/esm/commands/related.js.map +1 -1
- package/dist/esm/commands/search.js +27 -78
- package/dist/esm/commands/search.js.map +1 -1
- package/dist/esm/commands/signals.d.ts +18 -0
- package/dist/esm/commands/signals.js +78 -0
- package/dist/esm/commands/signals.js.map +1 -0
- package/dist/esm/commands/status.d.ts +2 -2
- package/dist/esm/commands/status.js +2 -2
- package/dist/esm/commands/status.js.map +1 -1
- package/dist/esm/config/access.d.ts +5 -2
- package/dist/esm/config/access.js +31 -12
- package/dist/esm/config/access.js.map +1 -1
- package/dist/esm/config/index.d.ts +4 -1
- package/dist/esm/config/index.js +2 -1
- package/dist/esm/config/index.js.map +1 -1
- package/dist/esm/config/load.d.ts +6 -1
- package/dist/esm/config/load.js +67 -9
- package/dist/esm/config/load.js.map +1 -1
- package/dist/esm/config/resolve.js +2 -2
- package/dist/esm/config/resolve.js.map +1 -1
- package/dist/esm/config/signals.d.ts +4 -0
- package/dist/esm/config/signals.js +14 -0
- package/dist/esm/config/signals.js.map +1 -0
- package/dist/esm/config/types.d.ts +6 -4
- package/dist/esm/config/types.js +1 -1
- package/dist/esm/config/types.js.map +1 -1
- package/dist/esm/config/validate.js +58 -11
- package/dist/esm/config/validate.js.map +1 -1
- package/dist/esm/db/open.d.ts +1 -1
- package/dist/esm/db/open.js +7 -2
- package/dist/esm/db/open.js.map +1 -1
- package/dist/esm/db/reconcile.d.ts +1 -0
- package/dist/esm/db/reconcile.js +10 -0
- package/dist/esm/db/reconcile.js.map +1 -1
- package/dist/esm/embed/cohere.d.ts +2 -0
- package/dist/esm/embed/cohere.js +46 -0
- package/dist/esm/embed/cohere.js.map +1 -0
- package/dist/esm/embed/http.d.ts +2 -0
- package/dist/esm/embed/http.js +33 -0
- package/dist/esm/embed/http.js.map +1 -0
- package/dist/esm/embed/identity.d.ts +13 -0
- package/dist/esm/embed/identity.js +92 -0
- package/dist/esm/embed/identity.js.map +1 -0
- package/dist/esm/embed/langfit.d.ts +6 -0
- package/dist/esm/embed/langfit.js +44 -0
- package/dist/esm/embed/langfit.js.map +1 -0
- package/dist/esm/embed/languages.d.ts +3 -0
- package/dist/esm/embed/languages.js +80 -0
- package/dist/esm/embed/languages.js.map +1 -0
- package/dist/esm/embed/openai.d.ts +2 -0
- package/dist/esm/embed/openai.js +49 -0
- package/dist/esm/embed/openai.js.map +1 -0
- package/dist/esm/embed/query.d.ts +21 -0
- package/dist/esm/embed/query.js +181 -0
- package/dist/esm/embed/query.js.map +1 -0
- package/dist/esm/embed/registry.d.ts +3 -0
- package/dist/esm/embed/registry.js +45 -0
- package/dist/esm/embed/registry.js.map +1 -0
- package/dist/esm/embed/static.d.ts +2 -0
- package/dist/esm/embed/static.js +72 -0
- package/dist/esm/embed/static.js.map +1 -0
- package/dist/esm/embed/store.d.ts +8 -0
- package/dist/esm/embed/store.js +123 -0
- package/dist/esm/embed/store.js.map +1 -0
- package/dist/esm/embed/types.d.ts +8 -0
- package/dist/esm/embed/types.js +3 -0
- package/dist/esm/embed/types.js.map +1 -0
- package/dist/esm/errors.d.ts +1 -1
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/features/embed.d.ts +4 -27
- package/dist/esm/features/embed.js +0 -346
- package/dist/esm/features/embed.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/output.d.ts +2 -2
- package/dist/esm/output.js +6 -2
- package/dist/esm/output.js.map +1 -1
- package/dist/esm/scan.js +7 -4
- package/dist/esm/scan.js.map +1 -1
- package/dist/esm/segment.js +49 -19
- package/dist/esm/segment.js.map +1 -1
- package/package.json +9 -1
- package/schema.json +14 -7
- package/skills/sense/SKILL.md +21 -5
- package/skills/sense-setup/EXAMPLES.md +6 -6
- package/skills/sense-setup/SKILL.md +6 -4
|
@@ -2,282 +2,32 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
11
|
var _fencests = require("../fences.js");
|
|
52
|
-
var _progressts = require("../progress.js");
|
|
53
|
-
var _scants = require("../scan.js");
|
|
54
12
|
function _array_like_to_array(arr, len) {
|
|
55
13
|
if (len == null || len > arr.length) len = arr.length;
|
|
56
14
|
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
57
15
|
return arr2;
|
|
58
16
|
}
|
|
59
|
-
function _array_with_holes(arr) {
|
|
60
|
-
if (Array.isArray(arr)) return arr;
|
|
61
|
-
}
|
|
62
17
|
function _array_without_holes(arr) {
|
|
63
18
|
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
64
19
|
}
|
|
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
20
|
function _iterable_to_array(iter) {
|
|
122
21
|
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) {
|
|
123
22
|
return Array.from(iter);
|
|
124
23
|
}
|
|
125
24
|
}
|
|
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
25
|
function _non_iterable_spread() {
|
|
154
26
|
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
27
|
}
|
|
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
28
|
function _to_consumable_array(arr) {
|
|
160
29
|
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
161
30
|
}
|
|
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
31
|
function _unsupported_iterable_to_array(o, minLen) {
|
|
282
32
|
if (!o) return;
|
|
283
33
|
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
@@ -286,14 +36,6 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
286
36
|
if (n === "Map" || n === "Set") return Array.from(n);
|
|
287
37
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
288
38
|
}
|
|
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
39
|
// Deterministic, so embed time can re-derive text from stored line ranges. Heading-delimited,
|
|
298
40
|
// preamble kept, whole body when no headings; the title/summary prefix mirrors bm25 weighting.
|
|
299
41
|
//
|
|
@@ -359,712 +101,4 @@ var embed = {
|
|
|
359
101
|
return file.embed;
|
|
360
102
|
}
|
|
361
103
|
};
|
|
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
104
|
/* 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; }
|