botnote 0.2.3 → 0.2.4
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/dist/cli.js +20 -0
- package/dist/cli.js.map +1 -1
- package/dist/service/embedding.d.ts +25 -1
- package/dist/service/embedding.js +118 -45
- package/dist/service/embedding.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -19,6 +19,9 @@ const DEFAULT_TRASH_RETENTION_DAYS = 30;
|
|
|
19
19
|
const DAILY_MS = 24 * 60 * 60 * 1000;
|
|
20
20
|
const TRASH_PURGE_INTERVAL_MS = DAILY_MS;
|
|
21
21
|
const SESSION_PRUNE_INTERVAL_MS = DAILY_MS;
|
|
22
|
+
// Re-queues task/note rows still without a vector: rows left behind by a
|
|
23
|
+
// restart or by a provider outage become searchable without manual backfill.
|
|
24
|
+
const EMBEDDING_SWEEP_INTERVAL_MS = 10 * 60 * 1000;
|
|
22
25
|
function endOfToday() {
|
|
23
26
|
const end = new Date();
|
|
24
27
|
end.setHours(23, 59, 59, 999);
|
|
@@ -38,6 +41,7 @@ async function runRest() {
|
|
|
38
41
|
const auth = authConfigFromEnv();
|
|
39
42
|
const app = await buildServer({ db, embedding, logLevel, auth, defaultScope });
|
|
40
43
|
await app.listen({ port, host });
|
|
44
|
+
embedding.setLogger((msg) => app.log.warn(`embedding: ${msg}`));
|
|
41
45
|
app.log.info(`botnote v${VERSION} listening on http://${host}:${port} (docs: /docs, embeddings ${embedding.isEnabled() ? "ON" : "OFF"})`);
|
|
42
46
|
if (!auth.required && !isLoopback(host) && host !== "localhost") {
|
|
43
47
|
app.log.warn(`listening on ${host} with auth disabled: anyone who can reach port ${port} can read and write everything. Set BOTNOTE_PASSWORD (and create an API token) or BOTNOTE_REQUIRE_AUTH=1.`);
|
|
@@ -99,6 +103,21 @@ async function runRest() {
|
|
|
99
103
|
};
|
|
100
104
|
await pruneSessions();
|
|
101
105
|
const sessionTimer = setInterval(pruneSessions, SESSION_PRUNE_INTERVAL_MS);
|
|
106
|
+
const sweepMissingEmbeddings = async () => {
|
|
107
|
+
if (!embedding.isEnabled())
|
|
108
|
+
return;
|
|
109
|
+
try {
|
|
110
|
+
const queued = await embedding.enqueueMissing();
|
|
111
|
+
if (queued.enqueued > 0) {
|
|
112
|
+
app.log.info(`queued ${queued.enqueued} entit(ies) for embedding backfill (${queued.pendingCount} pending)`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
app.log.error({ err }, "embedding backfill sweep failed");
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
await sweepMissingEmbeddings();
|
|
120
|
+
const embeddingTimer = setInterval(sweepMissingEmbeddings, EMBEDDING_SWEEP_INTERVAL_MS);
|
|
102
121
|
const shutdown = async (sig) => {
|
|
103
122
|
app.log.info(`shutting down on ${sig}`);
|
|
104
123
|
if (recurrenceTimer)
|
|
@@ -106,6 +125,7 @@ async function runRest() {
|
|
|
106
125
|
if (trashTimer)
|
|
107
126
|
clearInterval(trashTimer);
|
|
108
127
|
clearInterval(sessionTimer);
|
|
128
|
+
clearInterval(embeddingTimer);
|
|
109
129
|
await app.close();
|
|
110
130
|
process.exit(0);
|
|
111
131
|
};
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,0CAA0C,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACjE,iFAAiF;AACjF,MAAM,4BAA4B,GAAG,EAAE,CAAC;AACxC,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACrC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AACzC,MAAM,yBAAyB,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,12 @@ export declare const EMBED_DIM = 384;
|
|
|
6
6
|
export interface EmbedFn {
|
|
7
7
|
(text: string): Promise<number[]>;
|
|
8
8
|
}
|
|
9
|
+
/** Embeds several texts in one provider round-trip; output order matches input. */
|
|
10
|
+
export interface EmbedBatchFn {
|
|
11
|
+
(texts: string[]): Promise<number[][]>;
|
|
12
|
+
}
|
|
13
|
+
export declare const EMBED_BATCH_MAX_TEXTS = 100;
|
|
14
|
+
export declare const EMBED_BATCH_MAX_CHARS = 200000;
|
|
9
15
|
export interface EmbeddingRuntimeStatus {
|
|
10
16
|
enabled: boolean;
|
|
11
17
|
provider: EmbeddingProvider;
|
|
@@ -17,11 +23,18 @@ export interface EmbeddingRuntimeStatus {
|
|
|
17
23
|
apiKeyPreview: string | null;
|
|
18
24
|
reason: "ready" | "disabled" | "missing_api_key" | "missing_base_url" | "injected" | "not_loaded";
|
|
19
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Embedding worker. The queue is in-memory on purpose (a restart drops it);
|
|
28
|
+
* durability comes from `enqueueMissing`, which the daemon runs at start and on
|
|
29
|
+
* a periodic sweep so rows left with body_vec NULL are always picked up again.
|
|
30
|
+
*/
|
|
20
31
|
export declare class EmbeddingService {
|
|
21
32
|
private db;
|
|
22
|
-
private
|
|
33
|
+
private embedBatch;
|
|
23
34
|
private injected;
|
|
24
35
|
private queue;
|
|
36
|
+
private pending;
|
|
37
|
+
private inFlight;
|
|
25
38
|
private working;
|
|
26
39
|
private envApiKey;
|
|
27
40
|
/** The daemon runs one embedding worker; its provider config is read from
|
|
@@ -31,21 +44,32 @@ export declare class EmbeddingService {
|
|
|
31
44
|
constructor(db: Database["db"], opts?: {
|
|
32
45
|
apiKey?: string | undefined;
|
|
33
46
|
embedFn?: EmbedFn;
|
|
47
|
+
embedBatchFn?: EmbedBatchFn;
|
|
34
48
|
logger?: (msg: string) => void;
|
|
35
49
|
scope?: Scope;
|
|
36
50
|
});
|
|
37
51
|
private log;
|
|
52
|
+
setLogger(logger: (msg: string) => void): void;
|
|
38
53
|
reloadConfig(): Promise<EmbeddingRuntimeStatus>;
|
|
39
54
|
runtimeStatus(): EmbeddingRuntimeStatus;
|
|
40
55
|
isEnabled(): boolean;
|
|
56
|
+
/** Queue one entity; a second call for an id still waiting replaces its text. */
|
|
41
57
|
enqueue(id: string, text: string): void;
|
|
58
|
+
private add;
|
|
42
59
|
embedQuery(text: string): Promise<number[] | null>;
|
|
43
60
|
drain(timeoutMs?: number): Promise<void>;
|
|
44
61
|
pendingCount(): number;
|
|
62
|
+
/**
|
|
63
|
+
* Queue every task/note whose body_vec is still NULL, oldest first, skipping
|
|
64
|
+
* ids already waiting or in flight. Safe to call repeatedly: the daemon runs
|
|
65
|
+
* it at start and on a periodic sweep, which also retries rows the worker
|
|
66
|
+
* gave up on earlier.
|
|
67
|
+
*/
|
|
45
68
|
enqueueMissing(limit?: number): Promise<{
|
|
46
69
|
enqueued: number;
|
|
47
70
|
pendingCount: number;
|
|
48
71
|
}>;
|
|
49
72
|
private tick;
|
|
73
|
+
private takeBatch;
|
|
50
74
|
private process;
|
|
51
75
|
}
|
|
@@ -6,11 +6,31 @@ import { setBodyVec } from "./entities.js";
|
|
|
6
6
|
import { DEFAULT_SCOPE } from "./scope.js";
|
|
7
7
|
export const EMBED_MODEL = DEFAULT_EMBEDDING_MODEL;
|
|
8
8
|
export const EMBED_DIM = VECTOR_DIMENSIONS;
|
|
9
|
+
// OpenAI accepts an input array; a 4k-row backfill becomes ~40 calls instead
|
|
10
|
+
// of 4k. The character cap keeps a batch well under the request token budget.
|
|
11
|
+
export const EMBED_BATCH_MAX_TEXTS = 100;
|
|
12
|
+
export const EMBED_BATCH_MAX_CHARS = 200_000;
|
|
13
|
+
const MAX_ATTEMPTS = 3;
|
|
14
|
+
function assertVector(vec) {
|
|
15
|
+
if (!vec)
|
|
16
|
+
throw new Error("embedding provider returned no embedding");
|
|
17
|
+
if (vec.length !== EMBED_DIM) {
|
|
18
|
+
throw new Error(`embedding provider returned ${vec.length} dimensions; expected ${EMBED_DIM}`);
|
|
19
|
+
}
|
|
20
|
+
return vec;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Embedding worker. The queue is in-memory on purpose (a restart drops it);
|
|
24
|
+
* durability comes from `enqueueMissing`, which the daemon runs at start and on
|
|
25
|
+
* a periodic sweep so rows left with body_vec NULL are always picked up again.
|
|
26
|
+
*/
|
|
9
27
|
export class EmbeddingService {
|
|
10
28
|
db;
|
|
11
|
-
|
|
29
|
+
embedBatch;
|
|
12
30
|
injected = false;
|
|
13
31
|
queue = [];
|
|
32
|
+
pending = new Map();
|
|
33
|
+
inFlight = new Set();
|
|
14
34
|
working = false;
|
|
15
35
|
envApiKey;
|
|
16
36
|
/** The daemon runs one embedding worker; its provider config is read from
|
|
@@ -31,9 +51,12 @@ export class EmbeddingService {
|
|
|
31
51
|
this.db = db;
|
|
32
52
|
this.envApiKey = opts.apiKey;
|
|
33
53
|
this.scope = opts.scope ?? DEFAULT_SCOPE;
|
|
34
|
-
|
|
54
|
+
this.log = opts.logger ?? (() => undefined);
|
|
55
|
+
const single = opts.embedFn;
|
|
56
|
+
if (opts.embedBatchFn || single) {
|
|
35
57
|
this.injected = true;
|
|
36
|
-
this.
|
|
58
|
+
this.embedBatch =
|
|
59
|
+
opts.embedBatchFn ?? ((texts) => Promise.all(texts.map((t) => single(t))));
|
|
37
60
|
this.status = {
|
|
38
61
|
enabled: true,
|
|
39
62
|
provider: DEFAULT_EMBEDDING_PROVIDER,
|
|
@@ -47,11 +70,13 @@ export class EmbeddingService {
|
|
|
47
70
|
};
|
|
48
71
|
}
|
|
49
72
|
else {
|
|
50
|
-
this.
|
|
73
|
+
this.embedBatch = null;
|
|
51
74
|
}
|
|
52
|
-
this.log = opts.logger ?? (() => undefined);
|
|
53
75
|
}
|
|
54
76
|
log;
|
|
77
|
+
setLogger(logger) {
|
|
78
|
+
this.log = logger;
|
|
79
|
+
}
|
|
55
80
|
async reloadConfig() {
|
|
56
81
|
if (this.injected)
|
|
57
82
|
return this.status;
|
|
@@ -64,7 +89,7 @@ export class EmbeddingService {
|
|
|
64
89
|
const model = settings.model.trim() || EMBED_MODEL;
|
|
65
90
|
const baseUrl = settings.baseUrl?.trim() || null;
|
|
66
91
|
if (!settings.enabled) {
|
|
67
|
-
this.
|
|
92
|
+
this.embedBatch = null;
|
|
68
93
|
this.status = {
|
|
69
94
|
enabled: false,
|
|
70
95
|
provider,
|
|
@@ -79,7 +104,7 @@ export class EmbeddingService {
|
|
|
79
104
|
return this.status;
|
|
80
105
|
}
|
|
81
106
|
if (!apiKey) {
|
|
82
|
-
this.
|
|
107
|
+
this.embedBatch = null;
|
|
83
108
|
this.status = {
|
|
84
109
|
enabled: false,
|
|
85
110
|
provider,
|
|
@@ -94,7 +119,7 @@ export class EmbeddingService {
|
|
|
94
119
|
return this.status;
|
|
95
120
|
}
|
|
96
121
|
if (provider === "openai_compatible" && !baseUrl) {
|
|
97
|
-
this.
|
|
122
|
+
this.embedBatch = null;
|
|
98
123
|
this.status = {
|
|
99
124
|
enabled: false,
|
|
100
125
|
provider,
|
|
@@ -112,19 +137,17 @@ export class EmbeddingService {
|
|
|
112
137
|
apiKey,
|
|
113
138
|
...(provider === "openai_compatible" && baseUrl ? { baseURL: baseUrl } : {})
|
|
114
139
|
});
|
|
115
|
-
this.
|
|
140
|
+
this.embedBatch = async (texts) => {
|
|
116
141
|
const res = await client.embeddings.create({
|
|
117
142
|
model,
|
|
118
|
-
input:
|
|
143
|
+
input: texts,
|
|
119
144
|
dimensions: EMBED_DIM
|
|
120
145
|
});
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
throw new Error("embedding provider returned no embedding");
|
|
124
|
-
if (vec.length !== EMBED_DIM) {
|
|
125
|
-
throw new Error(`embedding provider returned ${vec.length} dimensions; expected ${EMBED_DIM}`);
|
|
146
|
+
if (res.data.length !== texts.length) {
|
|
147
|
+
throw new Error(`embedding provider returned ${res.data.length} embeddings for ${texts.length} inputs`);
|
|
126
148
|
}
|
|
127
|
-
|
|
149
|
+
const ordered = [...res.data].sort((a, b) => a.index - b.index);
|
|
150
|
+
return ordered.map((d) => assertVector(d.embedding));
|
|
128
151
|
};
|
|
129
152
|
this.status = {
|
|
130
153
|
enabled: true,
|
|
@@ -143,23 +166,36 @@ export class EmbeddingService {
|
|
|
143
166
|
return this.status;
|
|
144
167
|
}
|
|
145
168
|
isEnabled() {
|
|
146
|
-
return this.
|
|
169
|
+
return this.embedBatch != null;
|
|
147
170
|
}
|
|
171
|
+
/** Queue one entity; a second call for an id still waiting replaces its text. */
|
|
148
172
|
enqueue(id, text) {
|
|
149
|
-
|
|
150
|
-
return;
|
|
151
|
-
if (!text.trim())
|
|
152
|
-
return;
|
|
153
|
-
this.queue.push({ id, text, attempts: 0 });
|
|
173
|
+
this.add(id, text);
|
|
154
174
|
this.tick();
|
|
155
175
|
}
|
|
176
|
+
add(id, text) {
|
|
177
|
+
if (!this.embedBatch)
|
|
178
|
+
return false;
|
|
179
|
+
if (!text.trim())
|
|
180
|
+
return false;
|
|
181
|
+
const waiting = this.pending.get(id);
|
|
182
|
+
if (waiting) {
|
|
183
|
+
waiting.text = text;
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
const job = { id, text, attempts: 0, solo: false };
|
|
187
|
+
this.queue.push(job);
|
|
188
|
+
this.pending.set(id, job);
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
156
191
|
async embedQuery(text) {
|
|
157
|
-
if (!this.
|
|
192
|
+
if (!this.embedBatch)
|
|
158
193
|
return null;
|
|
159
194
|
if (!text.trim())
|
|
160
195
|
return null;
|
|
161
196
|
try {
|
|
162
|
-
|
|
197
|
+
const [vec] = await this.embedBatch([text]);
|
|
198
|
+
return assertVector(vec);
|
|
163
199
|
}
|
|
164
200
|
catch (err) {
|
|
165
201
|
this.log(`query embed failed: ${err}`);
|
|
@@ -176,10 +212,16 @@ export class EmbeddingService {
|
|
|
176
212
|
}
|
|
177
213
|
}
|
|
178
214
|
pendingCount() {
|
|
179
|
-
return this.queue.length +
|
|
215
|
+
return this.queue.length + this.inFlight.size;
|
|
180
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* Queue every task/note whose body_vec is still NULL, oldest first, skipping
|
|
219
|
+
* ids already waiting or in flight. Safe to call repeatedly: the daemon runs
|
|
220
|
+
* it at start and on a periodic sweep, which also retries rows the worker
|
|
221
|
+
* gave up on earlier.
|
|
222
|
+
*/
|
|
181
223
|
async enqueueMissing(limit = 100000) {
|
|
182
|
-
if (!this.
|
|
224
|
+
if (!this.embedBatch)
|
|
183
225
|
return { enqueued: 0, pendingCount: this.pendingCount() };
|
|
184
226
|
const rows = await this.db
|
|
185
227
|
.select({
|
|
@@ -193,12 +235,12 @@ export class EmbeddingService {
|
|
|
193
235
|
.limit(limit);
|
|
194
236
|
let enqueued = 0;
|
|
195
237
|
for (const row of rows) {
|
|
196
|
-
|
|
197
|
-
if (!text)
|
|
238
|
+
if (this.pending.has(row.id) || this.inFlight.has(row.id))
|
|
198
239
|
continue;
|
|
199
|
-
this.
|
|
200
|
-
|
|
240
|
+
if (this.add(row.id, `${row.title ?? ""}\n${row.body}`.trim()))
|
|
241
|
+
enqueued++;
|
|
201
242
|
}
|
|
243
|
+
this.tick();
|
|
202
244
|
return { enqueued, pendingCount: this.pendingCount() };
|
|
203
245
|
}
|
|
204
246
|
tick() {
|
|
@@ -215,28 +257,59 @@ export class EmbeddingService {
|
|
|
215
257
|
setImmediate(() => this.tick());
|
|
216
258
|
});
|
|
217
259
|
}
|
|
260
|
+
takeBatch() {
|
|
261
|
+
const batch = [];
|
|
262
|
+
let chars = 0;
|
|
263
|
+
while (this.queue.length > 0) {
|
|
264
|
+
const next = this.queue[0];
|
|
265
|
+
if (batch.length > 0 && (next.solo || chars + next.text.length > EMBED_BATCH_MAX_CHARS))
|
|
266
|
+
break;
|
|
267
|
+
this.queue.shift();
|
|
268
|
+
this.pending.delete(next.id);
|
|
269
|
+
this.inFlight.add(next.id);
|
|
270
|
+
batch.push(next);
|
|
271
|
+
chars += next.text.length;
|
|
272
|
+
if (next.solo || batch.length >= EMBED_BATCH_MAX_TEXTS)
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
return batch;
|
|
276
|
+
}
|
|
218
277
|
async process() {
|
|
219
|
-
const embedFn = this.embedFn;
|
|
220
|
-
if (!embedFn)
|
|
221
|
-
return;
|
|
222
278
|
while (this.queue.length > 0) {
|
|
223
|
-
const
|
|
224
|
-
if (!
|
|
279
|
+
const embedBatch = this.embedBatch;
|
|
280
|
+
if (!embedBatch)
|
|
281
|
+
return;
|
|
282
|
+
const batch = this.takeBatch();
|
|
283
|
+
if (batch.length === 0)
|
|
225
284
|
break;
|
|
226
285
|
try {
|
|
227
|
-
const
|
|
228
|
-
|
|
286
|
+
const vectors = await embedBatch(batch.map((j) => j.text));
|
|
287
|
+
if (vectors.length !== batch.length) {
|
|
288
|
+
throw new Error(`got ${vectors.length} embeddings for ${batch.length} texts`);
|
|
289
|
+
}
|
|
290
|
+
await Promise.all(batch.map((job, i) => setBodyVec(this.db, job.id, assertVector(vectors[i]))));
|
|
291
|
+
for (const job of batch)
|
|
292
|
+
this.inFlight.delete(job.id);
|
|
229
293
|
}
|
|
230
294
|
catch (err) {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
this.
|
|
295
|
+
let maxAttempts = 0;
|
|
296
|
+
for (const job of batch) {
|
|
297
|
+
this.inFlight.delete(job.id);
|
|
298
|
+
job.attempts += 1;
|
|
299
|
+
maxAttempts = Math.max(maxAttempts, job.attempts);
|
|
300
|
+
if (job.attempts >= MAX_ATTEMPTS) {
|
|
301
|
+
this.log(`giving up on ${job.id} after ${job.attempts} attempts (the periodic sweep retries it): ${err}`);
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
job.solo = true;
|
|
305
|
+
if (!this.pending.has(job.id)) {
|
|
306
|
+
this.queue.push(job);
|
|
307
|
+
this.pending.set(job.id, job);
|
|
308
|
+
}
|
|
234
309
|
}
|
|
235
|
-
|
|
236
|
-
this.log(`retry ${
|
|
237
|
-
|
|
238
|
-
await new Promise((r) => setTimeout(r, backoff));
|
|
239
|
-
this.queue.push(job);
|
|
310
|
+
if (batch.some((j) => j.attempts < MAX_ATTEMPTS)) {
|
|
311
|
+
this.log(`retry ${maxAttempts}/${MAX_ATTEMPTS} for ${batch.length} row(s): ${err}`);
|
|
312
|
+
await new Promise((r) => setTimeout(r, 200 * 2 ** maxAttempts));
|
|
240
313
|
}
|
|
241
314
|
}
|
|
242
315
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../src/service/embedding.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../src/service/embedding.ts"],"names":[],"mappings":"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"}
|