@theromans/convex-dobty 0.1.13 → 0.1.14

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.
@@ -330,30 +330,19 @@ export declare class DobtAddon {
330
330
  language: "en" | "de";
331
331
  limit?: number;
332
332
  }): Promise<any>;
333
- /** Re-embed stale knowledge chunks for both English and Deutsch separately. */
334
- refreshEmbeddings(ctx: ActionCtx, args: {
335
- apiToken: string;
336
- }): Promise<any>;
337
333
  /** List knowledge chunks by topic. */
338
334
  listKnowledgeChunks(ctx: QueryCtx, args: {
339
335
  topic: string;
340
336
  }): Promise<any>;
341
337
  /** Return distinct topic strings from knowledge base. */
342
338
  listKnowledgeTopics(ctx: QueryCtx): Promise<any>;
343
- /** List chunks with stale English embeddings (no embedding vectors in payload). */
344
- listStaleKnowledgeChunksEn(ctx: QueryCtx): Promise<any>;
345
- /** List chunks with stale Deutsch embeddings (no embedding vectors in payload). */
346
- listStaleKnowledgeChunksDe(ctx: QueryCtx): Promise<any>;
347
- /** Update a single chunk's English embedding by ID. */
348
- updateKnowledgeEmbeddingEn(ctx: MutationCtx, args: {
349
- chunkId: string;
350
- embedding: number[];
351
- }): Promise<any>;
352
- /** Update a single chunk's Deutsch embedding by ID. */
353
- updateKnowledgeEmbeddingDe(ctx: MutationCtx, args: {
354
- chunkId: string;
355
- embedding: number[];
356
- }): Promise<any>;
339
+ /**
340
+ * Schedule embedding jobs for all chunks where updatedAt > embeddedAt_en/de.
341
+ * Embeddings are processed individually in the background via the scheduler.
342
+ * Called automatically by seedKnowledgeChunks — only needed manually to
343
+ * recover from a stuck state.
344
+ */
345
+ scheduleStaleEmbeddings(ctx: ActionCtx): Promise<any>;
357
346
  }
358
347
  export {};
359
348
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -246,10 +246,6 @@ export class DobtAddon {
246
246
  async searchByVector(ctx, args) {
247
247
  return await ctx.runAction(this.component.knowledgeSearch.searchByVector, args);
248
248
  }
249
- /** Re-embed stale knowledge chunks for both English and Deutsch separately. */
250
- async refreshEmbeddings(ctx, args) {
251
- return await ctx.runAction(this.component.knowledgeSearch.refreshEmbeddings, args);
252
- }
253
249
  /** List knowledge chunks by topic. */
254
250
  async listKnowledgeChunks(ctx, args) {
255
251
  return await ctx.runQuery(this.component.knowledge.listChunks, args);
@@ -258,21 +254,14 @@ export class DobtAddon {
258
254
  async listKnowledgeTopics(ctx) {
259
255
  return await ctx.runQuery(this.component.knowledge.listTopics, {});
260
256
  }
261
- /** List chunks with stale English embeddings (no embedding vectors in payload). */
262
- async listStaleKnowledgeChunksEn(ctx) {
263
- return await ctx.runQuery(this.component.knowledge.listStaleChunksEn, {});
264
- }
265
- /** List chunks with stale Deutsch embeddings (no embedding vectors in payload). */
266
- async listStaleKnowledgeChunksDe(ctx) {
267
- return await ctx.runQuery(this.component.knowledge.listStaleChunksDe, {});
268
- }
269
- /** Update a single chunk's English embedding by ID. */
270
- async updateKnowledgeEmbeddingEn(ctx, args) {
271
- return await ctx.runMutation(this.component.knowledge.updateChunkEmbeddingEn, args);
272
- }
273
- /** Update a single chunk's Deutsch embedding by ID. */
274
- async updateKnowledgeEmbeddingDe(ctx, args) {
275
- return await ctx.runMutation(this.component.knowledge.updateChunkEmbeddingDe, args);
257
+ /**
258
+ * Schedule embedding jobs for all chunks where updatedAt > embeddedAt_en/de.
259
+ * Embeddings are processed individually in the background via the scheduler.
260
+ * Called automatically by seedKnowledgeChunks — only needed manually to
261
+ * recover from a stuck state.
262
+ */
263
+ async scheduleStaleEmbeddings(ctx) {
264
+ return await ctx.runAction(this.component.knowledgeSearch.scheduleStaleEmbeddings, {});
276
265
  }
277
266
  }
278
267
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAqBH,MAAM,OAAO,SAAS;IACD;IAAnB,YAAmB,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAE9C,mBAAmB;IAEnB,oEAAoE;IACpE,KAAK,CAAC,aAAa,CAAC,GAAgB;QAClC,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACxE,CAAC;IAED,wDAAwD;IACxD,KAAK,CAAC,YAAY,CAChB,GAAa,EACb,IAA6C;QAE7C,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,gBAAgB,CACpB,GAAa,EACb,IAA8D;QAE9D,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,qDAAqD;IACrD,KAAK,CAAC,YAAY,CAChB,GAAgB,EAChB,IAQC;QAED,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,UAAU,CACd,GAAa,EACb,IAA8C;QAE9C,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,uBAAuB;IACvB,KAAK,CAAC,YAAY,CAChB,GAAgB,EAChB,IAAsE;QAEtE,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,uBAAuB;IACvB,KAAK,CAAC,YAAY,CAChB,GAAgB,EAChB,IAAkD;QAElD,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,WAAW,CAAC,GAAa,EAAE,IAA6B;QAC5D,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,gBAAgB;IAEhB,0CAA0C;IAC1C,KAAK,CAAC,UAAU,CACd,GAAa,EACb,IAA8C;QAE9C,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,kBAAkB,CACtB,GAAa,EACb,IAA6C;QAE7C,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,iCAAiC;IACjC,KAAK,CAAC,oBAAoB,CACxB,GAAa,EACb,IAA8C;QAE9C,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAC/E,CAAC;IAED,8BAA8B;IAC9B,KAAK,CAAC,gBAAgB,CAAC,GAAa,EAAE,IAA6B;QACjE,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,oCAAoC;IACpC,KAAK,CAAC,YAAY,CAChB,GAAa,EACb,IAA8C;QAE9C,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,kBAAkB;IAElB,2DAA2D;IAC3D,KAAK,CAAC,aAAa,CACjB,GAAa,EACb,IAAgC;QAEhC,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,wBAAwB;IAExB,oDAAoD;IACpD,KAAK,CAAC,kBAAkB,CAAC,GAAa;QACpC,OAAO,MAAM,GAAG,CAAC,QAAQ,CACvB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,kBAAkB,CACF,CAAC;IAC/C,CAAC;IAED,eAAe;IAEf,uBAAuB;IACvB,KAAK,CAAC,SAAS,CAAC,GAAa;QAC3B,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;IAED,0BAA0B;IAC1B,KAAK,CAAC,YAAY,CAChB,GAAgB,EAChB,IAOC;QAED,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,iCAAiC;IACjC,KAAK,CAAC,gBAAgB,CACpB,GAAgB,EAChB,IAA2C;QAE3C,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACjF,CAAC;IAED,yBAAyB;IACzB,KAAK,CAAC,gBAAgB,CAAC,GAAa,EAAE,IAA6B;QACjE,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,sBAAsB;IAEtB,+DAA+D;IAC/D,KAAK,CAAC,eAAe,CAAC,GAAa,EAAE,IAA+B;QAClE,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,iCAAiC;IAEjC,sCAAsC;IACtC,KAAK,CAAC,cAAc,CAClB,GAAgB,EAChB,IAA4D;QAE5D,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;IAED,2CAA2C;IAC3C,KAAK,CAAC,WAAW,CAAC,GAAa,EAAE,IAA4B;QAC3D,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;IAED,kCAAkC;IAClC,KAAK,CAAC,iBAAiB,CAAC,GAAa,EAAE,IAA4B;QACjE,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;IAED,oCAAoC;IACpC,KAAK,CAAC,YAAY,CAAC,GAAa,EAAE,IAA6B;QAC7D,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACjF,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,oBAAoB,CACxB,GAAgB,EAChB,IAeC;QAED,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAC5F,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAC,mBAAmB,CACvB,GAAgB,EAChB,IAKC;QAED,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IAC3F,CAAC;IAED,uCAAuC;IACvC,KAAK,CAAC,sBAAsB,CAC1B,GAAgB,EAChB,IAKC;QAED,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;IAC9F,CAAC;IAED,uCAAuC;IACvC,KAAK,CAAC,sBAAsB,CAAC,GAAgB,EAAE,IAAuB;QACpE,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;IAC9F,CAAC;IAED,0CAA0C;IAC1C,KAAK,CAAC,mBAAmB,CACvB,GAAgB,EAChB,IAKC;QAED,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IAC3F,CAAC;IAED,iCAAiC;IACjC,KAAK,CAAC,qBAAqB,CAAC,GAAgB,EAAE,IAAwB;QACpE,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IAC7F,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,gBAAgB,CACpB,GAAgB,EAChB,IAKC;QAED,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACxF,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,mBAAmB,CAAC,GAAgB,EAAE,IAAuB;QACjE,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IAC3F,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,gBAAgB,CACpB,GAAgB,EAChB,IAQC;QAED,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACxF,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,mBAAmB,CAAC,GAAgB,EAAE,IAAuB;QACjE,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IAC3F,CAAC;IAED,0DAA0D;IAC1D,KAAK,CAAC,kBAAkB,CACtB,GAAgB,EAChB,IAaC;QAED,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;IAED,6CAA6C;IAC7C,KAAK,CAAC,aAAa,CACjB,GAAgB,EAChB,IAAuE;QAEvE,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACrF,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,gBAAgB,CAAC,GAAgB,EAAE,IAAwB;QAC/D,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACxF,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,cAAc,CAClB,GAAgB,EAChB,IAOC;QAED,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;IAED,iCAAiC;IACjC,KAAK,CAAC,iBAAiB,CAAC,GAAgB,EAAE,IAAwB;QAChE,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACzF,CAAC;IAED,6CAA6C;IAC7C,KAAK,CAAC,yBAAyB,CAC7B,GAAgB,EAChB,IAAuE;QAEvE,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;IACjG,CAAC;IAED,+CAA+C;IAC/C,KAAK,CAAC,WAAW,CACf,GAAgB,EAChB,IAAgD;QAEhD,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACnF,CAAC;IAED,wBAAwB;IAExB,oDAAoD;IACpD,KAAK,CAAC,qBAAqB,CAAC,GAAa,EAAE,IAA4B;QACrE,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;IAED,oCAAoC;IACpC,KAAK,CAAC,iBAAiB,CACrB,GAAa,EACb,IAA4C;QAE5C,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,qBAAqB,CAAC,GAAa,EAAE,IAA4B;QACrE,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;IAED,mBAAmB;IAEnB,+CAA+C;IAC/C,KAAK,CAAC,sBAAsB,CAAC,GAAa,EAAE,IAA8B;QACxE,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;IACjF,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAC,gBAAgB,CAAC,GAAa,EAAE,IAA6B;QACjE,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,oBAAoB,CAAC,GAAa,EAAE,IAAgC;QACxE,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAC/E,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,6BAA6B,CACjC,GAAa,EACb,IAAkD;QAElD,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;IAClG,CAAC;IAED,uBAAuB;IAEvB,0HAA0H;IAC1H,KAAK,CAAC,oBAAoB,CACxB,GAAgB,EAChB,IAAwB;QAExB,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IACpF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB,CACvB,GAAgB,EAChB,IASC;QAED,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,eAAe,CACnB,GAAc,EACd,IAMC;QAED,OAAO,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACnF,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAClB,GAAc,EACd,IAKC;QAED,OAAO,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAClF,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,iBAAiB,CACrB,GAAc,EACd,IAA0B;QAE1B,OAAO,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACrF,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,mBAAmB,CACvB,GAAa,EACb,IAAuB;QAEvB,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,mBAAmB,CAAC,GAAa;QACrC,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,mFAAmF;IACnF,KAAK,CAAC,0BAA0B,CAAC,GAAa;QAC5C,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,mFAAmF;IACnF,KAAK,CAAC,0BAA0B,CAAC,GAAa;QAC5C,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,uDAAuD;IACvD,KAAK,CAAC,0BAA0B,CAC9B,GAAgB,EAChB,IAA8C;QAE9C,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;IAED,uDAAuD;IACvD,KAAK,CAAC,0BAA0B,CAC9B,GAAgB,EAChB,IAA8C;QAE9C,OAAO,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -44,41 +44,15 @@ export declare const listChunks: import("convex/server").RegisteredQuery<"public
44
44
  }[]>>;
45
45
  /** Return distinct topic strings. */
46
46
  export declare const listTopics: import("convex/server").RegisteredQuery<"public", {}, Promise<string[]>>;
47
- /** List chunks that need (re-)embedding for English. */
48
- export declare const listStaleChunksEn: import("convex/server").RegisteredQuery<"public", {}, Promise<{
49
- _id: import("convex/values").GenericId<"knowledgeChunks">;
50
- topic: string;
51
- chunkKey: string;
52
- title: string | undefined;
53
- content: string | undefined;
54
- }[]>>;
55
- /** List chunks that need (re-)embedding for Deutsch. */
56
- export declare const listStaleChunksDe: import("convex/server").RegisteredQuery<"public", {}, Promise<{
57
- _id: import("convex/values").GenericId<"knowledgeChunks">;
58
- topic: string;
59
- chunkKey: string;
60
- title: string | undefined;
61
- content: string | undefined;
62
- }[]>>;
63
- /** Update a chunk's English embedding by ID. */
64
- export declare const updateChunkEmbeddingEn: import("convex/server").RegisteredMutation<"public", {
65
- chunkId: import("convex/values").GenericId<"knowledgeChunks">;
66
- embedding: number[];
67
- }, Promise<void>>;
68
- /** Update a chunk's Deutsch embedding by ID. */
69
- export declare const updateChunkEmbeddingDe: import("convex/server").RegisteredMutation<"public", {
70
- chunkId: import("convex/values").GenericId<"knowledgeChunks">;
71
- embedding: number[];
72
- }, Promise<void>>;
73
47
  /** Patch English embedding for a single chunk. */
74
48
  export declare const updateEmbeddingEn: import("convex/server").RegisteredMutation<"internal", {
75
- chunkId: import("convex/values").GenericId<"knowledgeChunks">;
76
49
  embedding: number[];
50
+ chunkId: import("convex/values").GenericId<"knowledgeChunks">;
77
51
  }, Promise<void>>;
78
52
  /** Patch Deutsch embedding for a single chunk. */
79
53
  export declare const updateEmbeddingDe: import("convex/server").RegisteredMutation<"internal", {
80
- chunkId: import("convex/values").GenericId<"knowledgeChunks">;
81
54
  embedding: number[];
55
+ chunkId: import("convex/values").GenericId<"knowledgeChunks">;
82
56
  }, Promise<void>>;
83
57
  /** List all chunks across all topics. */
84
58
  export declare const listAllChunks: import("convex/server").RegisteredQuery<"internal", {}, Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../src/component/knowledge.ts"],"names":[],"mappings":"AAQA,oFAAoF;AACpF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;GA6E9B,CAAC;AAEH,wGAAwG;AACxG,eAAO,MAAM,oBAAoB;;;;GAgB/B,CAAC;AAEH,4BAA4B;AAC5B,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;KAQrB,CAAC;AAEH,qCAAqC;AACrC,eAAO,MAAM,UAAU,0EAOrB,CAAC;AAEH,wDAAwD;AACxD,eAAO,MAAM,iBAAiB;;;;;;KAmB5B,CAAC;AAEH,wDAAwD;AACxD,eAAO,MAAM,iBAAiB;;;;;;KAmB5B,CAAC;AAEH,gDAAgD;AAChD,eAAO,MAAM,sBAAsB;;;iBAWjC,CAAC;AAEH,gDAAgD;AAChD,eAAO,MAAM,sBAAsB;;;iBAWjC,CAAC;AAIH,kDAAkD;AAClD,eAAO,MAAM,iBAAiB;;;iBAW5B,CAAC;AAEH,kDAAkD;AAClD,eAAO,MAAM,iBAAiB;;;iBAW5B,CAAC;AAEH,yCAAyC;AACzC,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;KAKxB,CAAC;AAEH,gCAAgC;AAChC,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;UAKnB,CAAC"}
1
+ {"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../src/component/knowledge.ts"],"names":[],"mappings":"AASA,oFAAoF;AACpF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;GAiG9B,CAAC;AAEH,wGAAwG;AACxG,eAAO,MAAM,oBAAoB;;;;GAgB/B,CAAC;AAEH,4BAA4B;AAC5B,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;KAQrB,CAAC;AAEH,qCAAqC;AACrC,eAAO,MAAM,UAAU,0EAOrB,CAAC;AAMH,kDAAkD;AAClD,eAAO,MAAM,iBAAiB;;;iBAW5B,CAAC;AAEH,kDAAkD;AAClD,eAAO,MAAM,iBAAiB;;;iBAW5B,CAAC;AAEH,yCAAyC;AACzC,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;KAKxB,CAAC;AAEH,gCAAgC;AAChC,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;UAKnB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { mutation, query, internalMutation, internalQuery, } from "./_generated/server.js";
2
+ import { internal } from "./_generated/api.js";
2
3
  import { v } from "convex/values";
3
4
  /** Upsert knowledge chunks by topic + chunkKey. Only updates if content changed. */
4
5
  export const seedKnowledgeChunks = mutation({
@@ -34,19 +35,33 @@ export const seedKnowledgeChunks = mutation({
34
35
  title_Deutsch: chunk.title_Deutsch,
35
36
  content_English: chunk.content_English,
36
37
  content_Deutsch: chunk.content_Deutsch,
37
- // Invalidate both embeddings so they get re-embedded
38
- embeddedAt_en: undefined,
39
- embeddedAt_de: undefined,
38
+ // Bump updatedAt scheduler will detect embeddedAt < updatedAt and re-embed
40
39
  updatedAt: Date.now(),
41
40
  });
41
+ // Schedule EN embedding; it will chain to DE automatically
42
+ await ctx.scheduler.runAfter(0, internal.knowledgeSearch.embedChunk, {
43
+ chunkId: existing._id,
44
+ language: "en",
45
+ });
42
46
  updated++;
43
47
  }
44
48
  else {
49
+ // Content unchanged — but schedule embedding if vectors are missing
50
+ const needsEmbed = !existing.embedding_en ||
51
+ !existing.embedding_de ||
52
+ !existing.embeddedAt_en ||
53
+ !existing.embeddedAt_de;
54
+ if (needsEmbed) {
55
+ await ctx.scheduler.runAfter(0, internal.knowledgeSearch.embedChunk, {
56
+ chunkId: existing._id,
57
+ language: "en",
58
+ });
59
+ }
45
60
  skipped++;
46
61
  }
47
62
  }
48
63
  else {
49
- await ctx.db.insert("knowledgeChunks", {
64
+ const id = await ctx.db.insert("knowledgeChunks", {
50
65
  topic: chunk.topic,
51
66
  chunkKey: chunk.chunkKey,
52
67
  title_English: chunk.title_English,
@@ -55,6 +70,11 @@ export const seedKnowledgeChunks = mutation({
55
70
  content_Deutsch: chunk.content_Deutsch,
56
71
  updatedAt: Date.now(),
57
72
  });
73
+ // Schedule EN embedding; it will chain to DE automatically
74
+ await ctx.scheduler.runAfter(0, internal.knowledgeSearch.embedChunk, {
75
+ chunkId: id,
76
+ language: "en",
77
+ });
58
78
  inserted++;
59
79
  }
60
80
  }
@@ -107,68 +127,6 @@ export const listTopics = query({
107
127
  return [...topics];
108
128
  },
109
129
  });
110
- /** List chunks that need (re-)embedding for English. */
111
- export const listStaleChunksEn = query({
112
- args: {},
113
- handler: async (ctx) => {
114
- const all = await ctx.db.query("knowledgeChunks").collect();
115
- return all
116
- .filter((c) => !c.embedding_en ||
117
- !c.embeddedAt_en ||
118
- c.embeddedAt_en < c.updatedAt)
119
- .map((c) => ({
120
- _id: c._id,
121
- topic: c.topic,
122
- chunkKey: c.chunkKey,
123
- title: c.title_English,
124
- content: c.content_English,
125
- }));
126
- },
127
- });
128
- /** List chunks that need (re-)embedding for Deutsch. */
129
- export const listStaleChunksDe = query({
130
- args: {},
131
- handler: async (ctx) => {
132
- const all = await ctx.db.query("knowledgeChunks").collect();
133
- return all
134
- .filter((c) => !c.embedding_de ||
135
- !c.embeddedAt_de ||
136
- c.embeddedAt_de < c.updatedAt)
137
- .map((c) => ({
138
- _id: c._id,
139
- topic: c.topic,
140
- chunkKey: c.chunkKey,
141
- title: c.title_Deutsch,
142
- content: c.content_Deutsch,
143
- }));
144
- },
145
- });
146
- /** Update a chunk's English embedding by ID. */
147
- export const updateChunkEmbeddingEn = mutation({
148
- args: {
149
- chunkId: v.id("knowledgeChunks"),
150
- embedding: v.array(v.float64()),
151
- },
152
- handler: async (ctx, { chunkId, embedding }) => {
153
- await ctx.db.patch(chunkId, {
154
- embedding_en: embedding,
155
- embeddedAt_en: Date.now(),
156
- });
157
- },
158
- });
159
- /** Update a chunk's Deutsch embedding by ID. */
160
- export const updateChunkEmbeddingDe = mutation({
161
- args: {
162
- chunkId: v.id("knowledgeChunks"),
163
- embedding: v.array(v.float64()),
164
- },
165
- handler: async (ctx, { chunkId, embedding }) => {
166
- await ctx.db.patch(chunkId, {
167
- embedding_de: embedding,
168
- embeddedAt_de: Date.now(),
169
- });
170
- },
171
- });
172
130
  // ── Internal functions (called by knowledgeSearch.ts) ──
173
131
  /** Patch English embedding for a single chunk. */
174
132
  export const updateEmbeddingEn = internalMutation({
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../src/component/knowledge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../src/component/knowledge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,KAAK,EACL,gBAAgB,EAChB,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAElC,oFAAoF;AACpF,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IAC1C,IAAI,EAAE;QACJ,MAAM,EAAE,CAAC,CAAC,KAAK,CACb,CAAC,CAAC,MAAM,CAAC;YACP,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;YACpB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;YACzB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;YACzB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;YAC3B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;SAC5B,CAAC,CACH;KACF;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACjC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,oEAAoE;QACpE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE7E,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,EAAE;iBAC1B,KAAK,CAAC,iBAAiB,CAAC;iBACxB,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,CACpC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAC1D;iBACA,MAAM,EAAE,CAAC;YAEZ,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,cAAc,GAClB,QAAQ,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe;oBAClD,QAAQ,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe;oBAClD,QAAQ,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa;oBAC9C,QAAQ,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa,CAAC;gBAEjD,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;wBAC/B,aAAa,EAAE,KAAK,CAAC,aAAa;wBAClC,aAAa,EAAE,KAAK,CAAC,aAAa;wBAClC,eAAe,EAAE,KAAK,CAAC,eAAe;wBACtC,eAAe,EAAE,KAAK,CAAC,eAAe;wBACtC,6EAA6E;wBAC7E,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;qBACtB,CAAC,CAAC;oBACH,2DAA2D;oBAC3D,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE;wBACnE,OAAO,EAAE,QAAQ,CAAC,GAAG;wBACrB,QAAQ,EAAE,IAAI;qBACf,CAAC,CAAC;oBACH,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,oEAAoE;oBACpE,MAAM,UAAU,GACd,CAAC,QAAQ,CAAC,YAAY;wBACtB,CAAC,QAAQ,CAAC,YAAY;wBACtB,CAAC,QAAQ,CAAC,aAAa;wBACvB,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,UAAU,EAAE,CAAC;wBACf,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE;4BACnE,OAAO,EAAE,QAAQ,CAAC,GAAG;4BACrB,QAAQ,EAAE,IAAI;yBACf,CAAC,CAAC;oBACL,CAAC;oBACD,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE;oBAChD,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,aAAa,EAAE,KAAK,CAAC,aAAa;oBAClC,aAAa,EAAE,KAAK,CAAC,aAAa;oBAClC,eAAe,EAAE,KAAK,CAAC,eAAe;oBACtC,eAAe,EAAE,KAAK,CAAC,eAAe;oBACtC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACtB,CAAC,CAAC;gBACH,2DAA2D;gBAC3D,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE;oBACnE,OAAO,EAAE,EAAE;oBACX,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC;gBACH,QAAQ,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED,oFAAoF;QACpF,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC;QACpE,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;gBACjE,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAClC,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACjD,CAAC;CACF,CAAC,CAAC;AAEH,wGAAwG;AACxG,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC3C,IAAI,EAAE;QACJ,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC9B;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAChC,MAAM,GAAG,GAAG,KAAK;YACf,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;iBACT,KAAK,CAAC,iBAAiB,CAAC;iBACxB,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;iBAClD,OAAO,EAAE;YACd,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC;QACpD,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;CACF,CAAC,CAAC;AAEH,4BAA4B;AAC5B,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC;IAC9B,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;IAC3B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAChC,OAAO,MAAM,GAAG,CAAC,EAAE;aAChB,KAAK,CAAC,iBAAiB,CAAC;aACxB,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aAClD,OAAO,EAAE,CAAC;IACf,CAAC;CACF,CAAC,CAAC;AAEH,qCAAqC;AACrC,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC;IAC9B,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;IACrB,CAAC;CACF,CAAC,CAAC;AAIH,0DAA0D;AAE1D,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;IAChD,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;KAChC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;QAC7C,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;YAC1B,YAAY,EAAE,SAAS;YACvB,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AAEH,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;IAChD,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;KAChC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;QAC7C,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;YAC1B,YAAY,EAAE,SAAS;YACvB,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AAEH,yCAAyC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;IACzC,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACrB,OAAO,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC;IACzD,CAAC;CACF,CAAC,CAAC;AAEH,gCAAgC;AAChC,MAAM,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC;IACpC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE;IAC1C,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAClC,OAAO,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;CACF,CAAC,CAAC"}
@@ -1,3 +1,21 @@
1
+ /**
2
+ * Embed a single chunk for a single language.
3
+ * Called by the scheduler after a chunk is seeded or updated.
4
+ * Automatically schedules the other language if it is also stale.
5
+ */
6
+ export declare const embedChunk: import("convex/server").RegisteredAction<"internal", {
7
+ chunkId: import("convex/values").GenericId<"knowledgeChunks">;
8
+ language: "en" | "de";
9
+ }, Promise<void>>;
10
+ /**
11
+ * Schedule embedding jobs for all chunks that are stale
12
+ * (updatedAt > embeddedAt_en or embeddedAt_de).
13
+ * Called automatically after seedKnowledgeChunks, or can be triggered manually.
14
+ */
15
+ export declare const scheduleStaleEmbeddings: import("convex/server").RegisteredAction<"internal", {}, Promise<{
16
+ total: number;
17
+ scheduled: number;
18
+ }>>;
1
19
  export interface KnowledgeResult {
2
20
  title: string;
3
21
  content: string;
@@ -11,25 +29,19 @@ export interface KnowledgeResult {
11
29
  }
12
30
  /**
13
31
  * Search knowledge chunks by embedding similarity.
14
- *
15
- * - language: the requested language for returned title/content ("en" | "de")
16
- * - Uses the embedding index for the requested language.
17
- * - Falls back to the other language's index if the primary has no vectors.
18
- * - Returns up to `limit` results (default 5).
32
+ * - language: "en" | "de" — which index to search and which fields to return
33
+ * - Falls back to the other language index if primary has no vectors yet
34
+ * - Returns up to `limit` results (default 5)
19
35
  */
20
36
  export declare const searchKnowledge: import("convex/server").RegisteredAction<"public", {
21
37
  limit?: number | undefined;
22
38
  query: string;
23
39
  topic: string;
24
- apiToken: string;
25
40
  language: "en" | "de";
41
+ apiToken: string;
26
42
  }, Promise<KnowledgeResult[]>>;
27
43
  /**
28
- * Search knowledge chunks by pre-computed embedding vector (no outbound fetch needed).
29
- *
30
- * - language: the requested language for returned title/content ("en" | "de")
31
- * - Falls back to the other language's index if primary has no vectors.
32
- * - Returns up to `limit` results (default 5).
44
+ * Search with a pre-computed embedding vector (no outbound fetch).
33
45
  */
34
46
  export declare const searchByVector: import("convex/server").RegisteredAction<"public", {
35
47
  limit?: number | undefined;
@@ -37,18 +49,4 @@ export declare const searchByVector: import("convex/server").RegisteredAction<"p
37
49
  embedding: number[];
38
50
  language: "en" | "de";
39
51
  }, Promise<KnowledgeResult[]>>;
40
- /**
41
- * Re-embed stale chunks for both languages.
42
- * Embeds English and Deutsch separately, storing embedding_en and embedding_de.
43
- */
44
- export declare const refreshEmbeddings: import("convex/server").RegisteredAction<"public", {
45
- apiToken: string;
46
- }, Promise<{
47
- total: number;
48
- staleEn: number;
49
- staleDe: number;
50
- embeddedEn: number;
51
- embeddedDe: number;
52
- errors: number;
53
- }>>;
54
52
  //# sourceMappingURL=knowledgeSearch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"knowledgeSearch.d.ts","sourceRoot":"","sources":["../../src/component/knowledgeSearch.ts"],"names":[],"mappings":"AAmDA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,iBAAiB,EAAE,IAAI,GAAG,IAAI,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;;;;;;8BAgB1B,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;;8BAazB,CAAC;AAqEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;WAQnB,MAAM;aACJ,MAAM;aACN,MAAM;gBACH,MAAM;gBACN,MAAM;YACV,MAAM;GAmEhB,CAAC"}
1
+ {"version":3,"file":"knowledgeSearch.d.ts","sourceRoot":"","sources":["../../src/component/knowledgeSearch.ts"],"names":[],"mappings":"AA4CA;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;iBAyErB,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;GAmClC,CAAC;AAEH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,iBAAiB,EAAE,IAAI,GAAG,IAAI,CAAC;CAChC;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;;;8BAY1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;8BAUzB,CAAC"}
@@ -1,10 +1,10 @@
1
- import { action } from "./_generated/server.js";
1
+ import { internalAction, action } from "./_generated/server.js";
2
2
  import { internal } from "./_generated/api.js";
3
3
  import { v } from "convex/values";
4
4
  const EMBEDDING_ENDPOINT = "https://openai.inference.de-txl.ionos.com/v1/embeddings";
5
5
  const EMBEDDING_MODEL = "BAAI/bge-m3";
6
6
  const EMBEDDING_DIMENSIONS = 1024;
7
- const EMBEDDING_TIMEOUT_MS = 10_000;
7
+ const EMBEDDING_TIMEOUT_MS = 15_000;
8
8
  const DEFAULT_SEARCH_LIMIT = 5;
9
9
  async function getEmbedding(text, apiToken) {
10
10
  const controller = new AbortController();
@@ -25,7 +25,7 @@ async function getEmbedding(text, apiToken) {
25
25
  });
26
26
  if (!response.ok) {
27
27
  const body = await response.text();
28
- throw new Error(`Embedding API error ${response.status}: ${body}`);
28
+ throw new Error(`Embedding API ${response.status}: ${body}`);
29
29
  }
30
30
  const json = await response.json();
31
31
  return json.data[0].embedding;
@@ -40,13 +40,118 @@ async function getEmbedding(text, apiToken) {
40
40
  clearTimeout(timer);
41
41
  }
42
42
  }
43
+ /**
44
+ * Embed a single chunk for a single language.
45
+ * Called by the scheduler after a chunk is seeded or updated.
46
+ * Automatically schedules the other language if it is also stale.
47
+ */
48
+ export const embedChunk = internalAction({
49
+ args: {
50
+ chunkId: v.id("knowledgeChunks"),
51
+ language: v.union(v.literal("en"), v.literal("de")),
52
+ },
53
+ handler: async (ctx, { chunkId, language }) => {
54
+ const apiToken = globalThis.process?.env?.IONOS_API_TOKEN;
55
+ if (!apiToken) {
56
+ console.error("[embedChunk] IONOS_API_TOKEN not set — cannot embed");
57
+ return;
58
+ }
59
+ const chunk = await ctx.runQuery(internal.knowledge.getChunk, { chunkId });
60
+ if (!chunk) {
61
+ console.warn(`[embedChunk] chunk ${chunkId} not found, skipping`);
62
+ return;
63
+ }
64
+ const isStaleEn = !chunk.embedding_en ||
65
+ !chunk.embeddedAt_en ||
66
+ chunk.embeddedAt_en < chunk.updatedAt;
67
+ const isStaleDe = !chunk.embedding_de ||
68
+ !chunk.embeddedAt_de ||
69
+ chunk.embeddedAt_de < chunk.updatedAt;
70
+ const isStale = language === "en" ? isStaleEn : isStaleDe;
71
+ if (!isStale) {
72
+ // Already up to date — schedule the other language if needed
73
+ const otherLanguage = language === "en" ? "de" : "en";
74
+ const otherStale = language === "en" ? isStaleDe : isStaleEn;
75
+ if (otherStale) {
76
+ await ctx.scheduler.runAfter(0, internal.knowledgeSearch.embedChunk, {
77
+ chunkId,
78
+ language: otherLanguage,
79
+ });
80
+ }
81
+ return;
82
+ }
83
+ const title = language === "en" ? chunk.title_English : chunk.title_Deutsch;
84
+ const content = language === "en" ? chunk.content_English : chunk.content_Deutsch;
85
+ if (!title || !content) {
86
+ console.warn(`[embedChunk] chunk ${chunk.chunkKey} missing ${language} content, skipping`);
87
+ return;
88
+ }
89
+ try {
90
+ const embedding = await getEmbedding(`${title}\n\n${content}`, apiToken);
91
+ if (language === "en") {
92
+ await ctx.runMutation(internal.knowledge.updateEmbeddingEn, { chunkId, embedding });
93
+ }
94
+ else {
95
+ await ctx.runMutation(internal.knowledge.updateEmbeddingDe, { chunkId, embedding });
96
+ }
97
+ console.log(`[embedChunk] embedded ${chunk.chunkKey} (${language})`);
98
+ // Schedule the other language if it is also stale
99
+ const otherLanguage = language === "en" ? "de" : "en";
100
+ const otherStale = language === "en" ? isStaleDe : isStaleEn;
101
+ if (otherStale) {
102
+ await ctx.scheduler.runAfter(0, internal.knowledgeSearch.embedChunk, {
103
+ chunkId,
104
+ language: otherLanguage,
105
+ });
106
+ }
107
+ }
108
+ catch (e) {
109
+ console.error(`[embedChunk] failed for ${chunk.chunkKey} (${language}): ${e.message}`);
110
+ }
111
+ },
112
+ });
113
+ /**
114
+ * Schedule embedding jobs for all chunks that are stale
115
+ * (updatedAt > embeddedAt_en or embeddedAt_de).
116
+ * Called automatically after seedKnowledgeChunks, or can be triggered manually.
117
+ */
118
+ export const scheduleStaleEmbeddings = internalAction({
119
+ args: {},
120
+ handler: async (ctx) => {
121
+ const all = await ctx.runQuery(internal.knowledge.listAllChunks, {});
122
+ let scheduled = 0;
123
+ for (const chunk of all) {
124
+ const staleEn = !chunk.embedding_en ||
125
+ !chunk.embeddedAt_en ||
126
+ chunk.embeddedAt_en < chunk.updatedAt;
127
+ const staleDe = !chunk.embedding_de ||
128
+ !chunk.embeddedAt_de ||
129
+ chunk.embeddedAt_de < chunk.updatedAt;
130
+ if (staleEn) {
131
+ await ctx.scheduler.runAfter(0, internal.knowledgeSearch.embedChunk, {
132
+ chunkId: chunk._id,
133
+ language: "en",
134
+ });
135
+ scheduled++;
136
+ }
137
+ else if (staleDe) {
138
+ // embedChunk for EN will chain to DE when EN is already fresh
139
+ await ctx.scheduler.runAfter(0, internal.knowledgeSearch.embedChunk, {
140
+ chunkId: chunk._id,
141
+ language: "de",
142
+ });
143
+ scheduled++;
144
+ }
145
+ }
146
+ console.log(`[scheduleStaleEmbeddings] scheduled ${scheduled} jobs for ${all.length} chunks`);
147
+ return { total: all.length, scheduled };
148
+ },
149
+ });
43
150
  /**
44
151
  * Search knowledge chunks by embedding similarity.
45
- *
46
- * - language: the requested language for returned title/content ("en" | "de")
47
- * - Uses the embedding index for the requested language.
48
- * - Falls back to the other language's index if the primary has no vectors.
49
- * - Returns up to `limit` results (default 5).
152
+ * - language: "en" | "de" — which index to search and which fields to return
153
+ * - Falls back to the other language index if primary has no vectors yet
154
+ * - Returns up to `limit` results (default 5)
50
155
  */
51
156
  export const searchKnowledge = action({
52
157
  args: {
@@ -62,11 +167,7 @@ export const searchKnowledge = action({
62
167
  },
63
168
  });
64
169
  /**
65
- * Search knowledge chunks by pre-computed embedding vector (no outbound fetch needed).
66
- *
67
- * - language: the requested language for returned title/content ("en" | "de")
68
- * - Falls back to the other language's index if primary has no vectors.
69
- * - Returns up to `limit` results (default 5).
170
+ * Search with a pre-computed embedding vector (no outbound fetch).
70
171
  */
71
172
  export const searchByVector = action({
72
173
  args: {
@@ -83,14 +184,12 @@ async function _searchByVector(ctx, { topic, embedding, language, limit, }) {
83
184
  const primaryIndex = language === "en" ? "by_embedding_en" : "by_embedding_de";
84
185
  const fallbackIndex = language === "en" ? "by_embedding_de" : "by_embedding_en";
85
186
  const fallbackLanguage = language === "en" ? "de" : "en";
86
- // Try primary language index first
87
187
  let results = await ctx.vectorSearch("knowledgeChunks", primaryIndex, {
88
188
  vector: embedding,
89
189
  limit,
90
190
  filter: (q) => q.eq("topic", topic),
91
191
  });
92
192
  let embeddingLanguage = language;
93
- // Fall back to the other language's index if primary returned nothing
94
193
  if (results.length === 0) {
95
194
  results = await ctx.vectorSearch("knowledgeChunks", fallbackIndex, {
96
195
  vector: embedding,
@@ -102,9 +201,7 @@ async function _searchByVector(ctx, { topic, embedding, language, limit, }) {
102
201
  if (results.length === 0)
103
202
  return [];
104
203
  const docs = await Promise.all(results.map(async (r) => {
105
- const doc = await ctx.runQuery(internal.knowledge.getChunk, {
106
- chunkId: r._id,
107
- });
204
+ const doc = await ctx.runQuery(internal.knowledge.getChunk, { chunkId: r._id });
108
205
  if (!doc)
109
206
  return null;
110
207
  const title = language === "en" ? doc.title_English : doc.title_Deutsch;
@@ -123,57 +220,4 @@ async function _searchByVector(ctx, { topic, embedding, language, limit, }) {
123
220
  }));
124
221
  return docs.filter((d) => d !== null);
125
222
  }
126
- /**
127
- * Re-embed stale chunks for both languages.
128
- * Embeds English and Deutsch separately, storing embedding_en and embedding_de.
129
- */
130
- export const refreshEmbeddings = action({
131
- args: {
132
- apiToken: v.string(),
133
- },
134
- handler: async (ctx, { apiToken }) => {
135
- const allChunks = await ctx.runQuery(internal.knowledge.listAllChunks, {});
136
- const staleEn = allChunks.filter((c) => !c.embedding_en || !c.embeddedAt_en || c.embeddedAt_en < c.updatedAt);
137
- const staleDe = allChunks.filter((c) => !c.embedding_de || !c.embeddedAt_de || c.embeddedAt_de < c.updatedAt);
138
- let embeddedEn = 0;
139
- let embeddedDe = 0;
140
- let errors = 0;
141
- for (const chunk of staleEn) {
142
- try {
143
- const embedding = await getEmbedding(`${chunk.title_English}\n\n${chunk.content_English}`, apiToken);
144
- await ctx.runMutation(internal.knowledge.updateEmbeddingEn, {
145
- chunkId: chunk._id,
146
- embedding,
147
- });
148
- embeddedEn++;
149
- }
150
- catch (e) {
151
- console.error(`Failed to embed EN chunk ${chunk.chunkKey}: ${e.message}`);
152
- errors++;
153
- }
154
- }
155
- for (const chunk of staleDe) {
156
- try {
157
- const embedding = await getEmbedding(`${chunk.title_Deutsch}\n\n${chunk.content_Deutsch}`, apiToken);
158
- await ctx.runMutation(internal.knowledge.updateEmbeddingDe, {
159
- chunkId: chunk._id,
160
- embedding,
161
- });
162
- embeddedDe++;
163
- }
164
- catch (e) {
165
- console.error(`Failed to embed DE chunk ${chunk.chunkKey}: ${e.message}`);
166
- errors++;
167
- }
168
- }
169
- return {
170
- total: allChunks.length,
171
- staleEn: staleEn.length,
172
- staleDe: staleDe.length,
173
- embeddedEn,
174
- embeddedDe,
175
- errors,
176
- };
177
- },
178
- });
179
223
  //# sourceMappingURL=knowledgeSearch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"knowledgeSearch.js","sourceRoot":"","sources":["../../src/component/knowledgeSearch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"knowledgeSearch.js","sourceRoot":"","sources":["../../src/component/knowledgeSearch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAoB,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAElC,MAAM,kBAAkB,GACtB,yDAAyD,CAAC;AAC5D,MAAM,eAAe,GAAG,aAAa,CAAC;AACtC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,QAAgB;IACxD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,oBAAoB,CAAC,CAAC;IACzE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,kBAAkB,EAAE;YAC/C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,QAAQ,EAAE;gBACnC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,eAAe;gBACtB,UAAU,EAAE,oBAAoB;aACjC,CAAC;YACF,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAqB,CAAC;IAC5C,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,iCAAiC,oBAAoB,IAAI,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC;IACvC,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC;QAChC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACpD;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC5C,MAAM,QAAQ,GAAI,UAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,eAAqC,CAAC;QACzF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAQ,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,sBAAsB,OAAO,sBAAsB,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GACb,CAAC,KAAK,CAAC,YAAY;YACnB,CAAC,KAAK,CAAC,aAAa;YACpB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC;QACxC,MAAM,SAAS,GACb,CAAC,KAAK,CAAC,YAAY;YACnB,CAAC,KAAK,CAAC,aAAa;YACpB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC;QAExC,MAAM,OAAO,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,6DAA6D;YAC7D,MAAM,aAAa,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACtD,MAAM,UAAU,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7D,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE;oBACnE,OAAO;oBACP,QAAQ,EAAE,aAAa;iBACxB,CAAC,CAAC;YACL,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;QAC5E,MAAM,OAAO,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;QAElF,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,QAAQ,YAAY,QAAQ,oBAAoB,CAAC,CAAC;YAC3F,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,GAAG,KAAK,OAAO,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;YAEzE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,MAAM,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YACtF,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YACtF,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,CAAC,QAAQ,KAAK,QAAQ,GAAG,CAAC,CAAC;YAErE,kDAAkD;YAClD,MAAM,aAAa,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACtD,MAAM,UAAU,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7D,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE;oBACnE,OAAO;oBACP,QAAQ,EAAE,aAAa;iBACxB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,2BAA2B,KAAK,CAAC,QAAQ,KAAK,QAAQ,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAc,CAAC;IACpD,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACrB,MAAM,GAAG,GAAU,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAE5E,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YACxB,MAAM,OAAO,GACX,CAAC,KAAK,CAAC,YAAY;gBACnB,CAAC,KAAK,CAAC,aAAa;gBACpB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC;YACxC,MAAM,OAAO,GACX,CAAC,KAAK,CAAC,YAAY;gBACnB,CAAC,KAAK,CAAC,aAAa;gBACpB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC;YAExC,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE;oBACnE,OAAO,EAAE,KAAK,CAAC,GAAG;oBAClB,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC;gBACH,SAAS,EAAE,CAAC;YACd,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBACnB,8DAA8D;gBAC9D,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE;oBACnE,OAAO,EAAE,KAAK,CAAC,GAAG;oBAClB,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAC;gBACH,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,uCAAuC,SAAS,aAAa,GAAG,CAAC,MAAM,SAAS,CAAC,CAAC;QAC9F,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;IAC1C,CAAC;CACF,CAAC,CAAC;AAcH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;IACpC,IAAI,EAAE;QACJ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;KACrB;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,oBAAoB,EAAE,QAAQ,EAAE,EAAE,EAAE;QACzF,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtD,OAAO,eAAe,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,CAAC;CACF,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;IACnC,IAAI,EAAE;QACJ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC/B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC9B;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,GAAG,oBAAoB,EAAE,EAAE,EAAE;QACnF,OAAO,eAAe,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,CAAC;CACF,CAAC,CAAC;AAEH,KAAK,UAAU,eAAe,CAC5B,GAAQ,EACR,EACE,KAAK,EACL,SAAS,EACT,QAAQ,EACR,KAAK,GAMN;IAED,MAAM,YAAY,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAC/E,MAAM,aAAa,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAChF,MAAM,gBAAgB,GAAgB,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtE,IAAI,OAAO,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,iBAAiB,EAAE,YAAY,EAAE;QACpE,MAAM,EAAE,SAAS;QACjB,KAAK;QACL,MAAM,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;KACzC,CAAC,CAAC;IAEH,IAAI,iBAAiB,GAAgB,QAAQ,CAAC;IAE9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,iBAAiB,EAAE,aAAa,EAAE;YACjE,MAAM,EAAE,SAAS;YACjB,KAAK;YACL,MAAM,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;SACzC,CAAC,CAAC;QACH,iBAAiB,GAAG,gBAAgB,CAAC;IACvC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,IAAI,GAA+B,MAAM,OAAO,CAAC,GAAG,CACxD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAM,EAAmC,EAAE;QAC5D,MAAM,GAAG,GAAQ,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,MAAM,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC;QACxE,MAAM,OAAO,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;QAC9E,OAAO;YACL,KAAK;YACL,OAAO;YACP,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,KAAK,EAAE,CAAC,CAAC,MAAM;YACf,QAAQ;YACR,iBAAiB;SAClB,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AAC9D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theromans/convex-dobty",
3
- "version": "0.1.13",
3
+ "version": "0.1.14",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -519,14 +519,6 @@ export class DobtAddon {
519
519
  return await ctx.runAction(this.component.knowledgeSearch.searchByVector, args);
520
520
  }
521
521
 
522
- /** Re-embed stale knowledge chunks for both English and Deutsch separately. */
523
- async refreshEmbeddings(
524
- ctx: ActionCtx,
525
- args: { apiToken: string },
526
- ) {
527
- return await ctx.runAction(this.component.knowledgeSearch.refreshEmbeddings, args);
528
- }
529
-
530
522
  /** List knowledge chunks by topic. */
531
523
  async listKnowledgeChunks(
532
524
  ctx: QueryCtx,
@@ -540,29 +532,13 @@ export class DobtAddon {
540
532
  return await ctx.runQuery(this.component.knowledge.listTopics, {});
541
533
  }
542
534
 
543
- /** List chunks with stale English embeddings (no embedding vectors in payload). */
544
- async listStaleKnowledgeChunksEn(ctx: QueryCtx) {
545
- return await ctx.runQuery(this.component.knowledge.listStaleChunksEn, {});
546
- }
547
-
548
- /** List chunks with stale Deutsch embeddings (no embedding vectors in payload). */
549
- async listStaleKnowledgeChunksDe(ctx: QueryCtx) {
550
- return await ctx.runQuery(this.component.knowledge.listStaleChunksDe, {});
551
- }
552
-
553
- /** Update a single chunk's English embedding by ID. */
554
- async updateKnowledgeEmbeddingEn(
555
- ctx: MutationCtx,
556
- args: { chunkId: string; embedding: number[] },
557
- ) {
558
- return await ctx.runMutation(this.component.knowledge.updateChunkEmbeddingEn, args);
559
- }
560
-
561
- /** Update a single chunk's Deutsch embedding by ID. */
562
- async updateKnowledgeEmbeddingDe(
563
- ctx: MutationCtx,
564
- args: { chunkId: string; embedding: number[] },
565
- ) {
566
- return await ctx.runMutation(this.component.knowledge.updateChunkEmbeddingDe, args);
535
+ /**
536
+ * Schedule embedding jobs for all chunks where updatedAt > embeddedAt_en/de.
537
+ * Embeddings are processed individually in the background via the scheduler.
538
+ * Called automatically by seedKnowledgeChunks — only needed manually to
539
+ * recover from a stuck state.
540
+ */
541
+ async scheduleStaleEmbeddings(ctx: ActionCtx) {
542
+ return await ctx.runAction(this.component.knowledgeSearch.scheduleStaleEmbeddings, {});
567
543
  }
568
544
  }
@@ -4,6 +4,7 @@ import {
4
4
  internalMutation,
5
5
  internalQuery,
6
6
  } from "./_generated/server.js";
7
+ import { internal } from "./_generated/api.js";
7
8
  import { v } from "convex/values";
8
9
 
9
10
  /** Upsert knowledge chunks by topic + chunkKey. Only updates if content changed. */
@@ -49,17 +50,32 @@ export const seedKnowledgeChunks = mutation({
49
50
  title_Deutsch: chunk.title_Deutsch,
50
51
  content_English: chunk.content_English,
51
52
  content_Deutsch: chunk.content_Deutsch,
52
- // Invalidate both embeddings so they get re-embedded
53
- embeddedAt_en: undefined,
54
- embeddedAt_de: undefined,
53
+ // Bump updatedAt scheduler will detect embeddedAt < updatedAt and re-embed
55
54
  updatedAt: Date.now(),
56
55
  });
56
+ // Schedule EN embedding; it will chain to DE automatically
57
+ await ctx.scheduler.runAfter(0, internal.knowledgeSearch.embedChunk, {
58
+ chunkId: existing._id,
59
+ language: "en",
60
+ });
57
61
  updated++;
58
62
  } else {
63
+ // Content unchanged — but schedule embedding if vectors are missing
64
+ const needsEmbed =
65
+ !existing.embedding_en ||
66
+ !existing.embedding_de ||
67
+ !existing.embeddedAt_en ||
68
+ !existing.embeddedAt_de;
69
+ if (needsEmbed) {
70
+ await ctx.scheduler.runAfter(0, internal.knowledgeSearch.embedChunk, {
71
+ chunkId: existing._id,
72
+ language: "en",
73
+ });
74
+ }
59
75
  skipped++;
60
76
  }
61
77
  } else {
62
- await ctx.db.insert("knowledgeChunks", {
78
+ const id = await ctx.db.insert("knowledgeChunks", {
63
79
  topic: chunk.topic,
64
80
  chunkKey: chunk.chunkKey,
65
81
  title_English: chunk.title_English,
@@ -68,6 +84,11 @@ export const seedKnowledgeChunks = mutation({
68
84
  content_Deutsch: chunk.content_Deutsch,
69
85
  updatedAt: Date.now(),
70
86
  });
87
+ // Schedule EN embedding; it will chain to DE automatically
88
+ await ctx.scheduler.runAfter(0, internal.knowledgeSearch.embedChunk, {
89
+ chunkId: id,
90
+ language: "en",
91
+ });
71
92
  inserted++;
72
93
  }
73
94
  }
@@ -126,77 +147,7 @@ export const listTopics = query({
126
147
  },
127
148
  });
128
149
 
129
- /** List chunks that need (re-)embedding for English. */
130
- export const listStaleChunksEn = query({
131
- args: {},
132
- handler: async (ctx) => {
133
- const all = await ctx.db.query("knowledgeChunks").collect();
134
- return all
135
- .filter(
136
- (c) =>
137
- !c.embedding_en ||
138
- !c.embeddedAt_en ||
139
- c.embeddedAt_en < c.updatedAt,
140
- )
141
- .map((c) => ({
142
- _id: c._id,
143
- topic: c.topic,
144
- chunkKey: c.chunkKey,
145
- title: c.title_English,
146
- content: c.content_English,
147
- }));
148
- },
149
- });
150
-
151
- /** List chunks that need (re-)embedding for Deutsch. */
152
- export const listStaleChunksDe = query({
153
- args: {},
154
- handler: async (ctx) => {
155
- const all = await ctx.db.query("knowledgeChunks").collect();
156
- return all
157
- .filter(
158
- (c) =>
159
- !c.embedding_de ||
160
- !c.embeddedAt_de ||
161
- c.embeddedAt_de < c.updatedAt,
162
- )
163
- .map((c) => ({
164
- _id: c._id,
165
- topic: c.topic,
166
- chunkKey: c.chunkKey,
167
- title: c.title_Deutsch,
168
- content: c.content_Deutsch,
169
- }));
170
- },
171
- });
172
-
173
- /** Update a chunk's English embedding by ID. */
174
- export const updateChunkEmbeddingEn = mutation({
175
- args: {
176
- chunkId: v.id("knowledgeChunks"),
177
- embedding: v.array(v.float64()),
178
- },
179
- handler: async (ctx, { chunkId, embedding }) => {
180
- await ctx.db.patch(chunkId, {
181
- embedding_en: embedding,
182
- embeddedAt_en: Date.now(),
183
- });
184
- },
185
- });
186
150
 
187
- /** Update a chunk's Deutsch embedding by ID. */
188
- export const updateChunkEmbeddingDe = mutation({
189
- args: {
190
- chunkId: v.id("knowledgeChunks"),
191
- embedding: v.array(v.float64()),
192
- },
193
- handler: async (ctx, { chunkId, embedding }) => {
194
- await ctx.db.patch(chunkId, {
195
- embedding_de: embedding,
196
- embeddedAt_de: Date.now(),
197
- });
198
- },
199
- });
200
151
 
201
152
  // ── Internal functions (called by knowledgeSearch.ts) ──
202
153
 
@@ -1,4 +1,4 @@
1
- import { action } from "./_generated/server.js";
1
+ import { internalAction, internalMutation, action } from "./_generated/server.js";
2
2
  import { internal } from "./_generated/api.js";
3
3
  import { v } from "convex/values";
4
4
 
@@ -6,17 +6,12 @@ const EMBEDDING_ENDPOINT =
6
6
  "https://openai.inference.de-txl.ionos.com/v1/embeddings";
7
7
  const EMBEDDING_MODEL = "BAAI/bge-m3";
8
8
  const EMBEDDING_DIMENSIONS = 1024;
9
-
10
- const EMBEDDING_TIMEOUT_MS = 10_000;
9
+ const EMBEDDING_TIMEOUT_MS = 15_000;
11
10
  const DEFAULT_SEARCH_LIMIT = 5;
12
11
 
13
- async function getEmbedding(
14
- text: string,
15
- apiToken: string,
16
- ): Promise<number[]> {
12
+ async function getEmbedding(text: string, apiToken: string): Promise<number[]> {
17
13
  const controller = new AbortController();
18
14
  const timer = setTimeout(() => controller.abort(), EMBEDDING_TIMEOUT_MS);
19
-
20
15
  try {
21
16
  const response = await fetch(EMBEDDING_ENDPOINT, {
22
17
  method: "POST",
@@ -31,14 +26,12 @@ async function getEmbedding(
31
26
  }),
32
27
  signal: controller.signal,
33
28
  });
34
-
35
29
  if (!response.ok) {
36
30
  const body = await response.text();
37
- throw new Error(`Embedding API error ${response.status}: ${body}`);
31
+ throw new Error(`Embedding API ${response.status}: ${body}`);
38
32
  }
39
-
40
33
  const json = await response.json();
41
- return json.data[0].embedding;
34
+ return json.data[0].embedding as number[];
42
35
  } catch (e: any) {
43
36
  if (e.name === "AbortError") {
44
37
  throw new Error(`Embedding API timed out after ${EMBEDDING_TIMEOUT_MS}ms`);
@@ -49,6 +42,128 @@ async function getEmbedding(
49
42
  }
50
43
  }
51
44
 
45
+ /**
46
+ * Embed a single chunk for a single language.
47
+ * Called by the scheduler after a chunk is seeded or updated.
48
+ * Automatically schedules the other language if it is also stale.
49
+ */
50
+ export const embedChunk = internalAction({
51
+ args: {
52
+ chunkId: v.id("knowledgeChunks"),
53
+ language: v.union(v.literal("en"), v.literal("de")),
54
+ },
55
+ handler: async (ctx, { chunkId, language }) => {
56
+ const apiToken = (globalThis as any).process?.env?.IONOS_API_TOKEN as string | undefined;
57
+ if (!apiToken) {
58
+ console.error("[embedChunk] IONOS_API_TOKEN not set — cannot embed");
59
+ return;
60
+ }
61
+
62
+ const chunk: any = await ctx.runQuery(internal.knowledge.getChunk, { chunkId });
63
+ if (!chunk) {
64
+ console.warn(`[embedChunk] chunk ${chunkId} not found, skipping`);
65
+ return;
66
+ }
67
+
68
+ const isStaleEn =
69
+ !chunk.embedding_en ||
70
+ !chunk.embeddedAt_en ||
71
+ chunk.embeddedAt_en < chunk.updatedAt;
72
+ const isStaleDe =
73
+ !chunk.embedding_de ||
74
+ !chunk.embeddedAt_de ||
75
+ chunk.embeddedAt_de < chunk.updatedAt;
76
+
77
+ const isStale = language === "en" ? isStaleEn : isStaleDe;
78
+ if (!isStale) {
79
+ // Already up to date — schedule the other language if needed
80
+ const otherLanguage = language === "en" ? "de" : "en";
81
+ const otherStale = language === "en" ? isStaleDe : isStaleEn;
82
+ if (otherStale) {
83
+ await ctx.scheduler.runAfter(0, internal.knowledgeSearch.embedChunk, {
84
+ chunkId,
85
+ language: otherLanguage,
86
+ });
87
+ }
88
+ return;
89
+ }
90
+
91
+ const title = language === "en" ? chunk.title_English : chunk.title_Deutsch;
92
+ const content = language === "en" ? chunk.content_English : chunk.content_Deutsch;
93
+
94
+ if (!title || !content) {
95
+ console.warn(`[embedChunk] chunk ${chunk.chunkKey} missing ${language} content, skipping`);
96
+ return;
97
+ }
98
+
99
+ try {
100
+ const embedding = await getEmbedding(`${title}\n\n${content}`, apiToken);
101
+
102
+ if (language === "en") {
103
+ await ctx.runMutation(internal.knowledge.updateEmbeddingEn, { chunkId, embedding });
104
+ } else {
105
+ await ctx.runMutation(internal.knowledge.updateEmbeddingDe, { chunkId, embedding });
106
+ }
107
+
108
+ console.log(`[embedChunk] embedded ${chunk.chunkKey} (${language})`);
109
+
110
+ // Schedule the other language if it is also stale
111
+ const otherLanguage = language === "en" ? "de" : "en";
112
+ const otherStale = language === "en" ? isStaleDe : isStaleEn;
113
+ if (otherStale) {
114
+ await ctx.scheduler.runAfter(0, internal.knowledgeSearch.embedChunk, {
115
+ chunkId,
116
+ language: otherLanguage,
117
+ });
118
+ }
119
+ } catch (e: any) {
120
+ console.error(`[embedChunk] failed for ${chunk.chunkKey} (${language}): ${e.message}`);
121
+ }
122
+ },
123
+ });
124
+
125
+ /**
126
+ * Schedule embedding jobs for all chunks that are stale
127
+ * (updatedAt > embeddedAt_en or embeddedAt_de).
128
+ * Called automatically after seedKnowledgeChunks, or can be triggered manually.
129
+ */
130
+ export const scheduleStaleEmbeddings = internalAction({
131
+ args: {},
132
+ handler: async (ctx) => {
133
+ const all: any[] = await ctx.runQuery(internal.knowledge.listAllChunks, {});
134
+
135
+ let scheduled = 0;
136
+ for (const chunk of all) {
137
+ const staleEn =
138
+ !chunk.embedding_en ||
139
+ !chunk.embeddedAt_en ||
140
+ chunk.embeddedAt_en < chunk.updatedAt;
141
+ const staleDe =
142
+ !chunk.embedding_de ||
143
+ !chunk.embeddedAt_de ||
144
+ chunk.embeddedAt_de < chunk.updatedAt;
145
+
146
+ if (staleEn) {
147
+ await ctx.scheduler.runAfter(0, internal.knowledgeSearch.embedChunk, {
148
+ chunkId: chunk._id,
149
+ language: "en",
150
+ });
151
+ scheduled++;
152
+ } else if (staleDe) {
153
+ // embedChunk for EN will chain to DE when EN is already fresh
154
+ await ctx.scheduler.runAfter(0, internal.knowledgeSearch.embedChunk, {
155
+ chunkId: chunk._id,
156
+ language: "de",
157
+ });
158
+ scheduled++;
159
+ }
160
+ }
161
+
162
+ console.log(`[scheduleStaleEmbeddings] scheduled ${scheduled} jobs for ${all.length} chunks`);
163
+ return { total: all.length, scheduled };
164
+ },
165
+ });
166
+
52
167
  export interface KnowledgeResult {
53
168
  title: string;
54
169
  content: string;
@@ -63,11 +178,9 @@ export interface KnowledgeResult {
63
178
 
64
179
  /**
65
180
  * Search knowledge chunks by embedding similarity.
66
- *
67
- * - language: the requested language for returned title/content ("en" | "de")
68
- * - Uses the embedding index for the requested language.
69
- * - Falls back to the other language's index if the primary has no vectors.
70
- * - Returns up to `limit` results (default 5).
181
+ * - language: "en" | "de" — which index to search and which fields to return
182
+ * - Falls back to the other language index if primary has no vectors yet
183
+ * - Returns up to `limit` results (default 5)
71
184
  */
72
185
  export const searchKnowledge = action({
73
186
  args: {
@@ -77,22 +190,14 @@ export const searchKnowledge = action({
77
190
  limit: v.optional(v.number()),
78
191
  apiToken: v.string(),
79
192
  },
80
- handler: async (
81
- ctx,
82
- { topic, query, language, limit = DEFAULT_SEARCH_LIMIT, apiToken },
83
- ): Promise<KnowledgeResult[]> => {
193
+ handler: async (ctx, { topic, query, language, limit = DEFAULT_SEARCH_LIMIT, apiToken }) => {
84
194
  const embedding = await getEmbedding(query, apiToken);
85
-
86
195
  return _searchByVector(ctx, { topic, embedding, language, limit });
87
196
  },
88
197
  });
89
198
 
90
199
  /**
91
- * Search knowledge chunks by pre-computed embedding vector (no outbound fetch needed).
92
- *
93
- * - language: the requested language for returned title/content ("en" | "de")
94
- * - Falls back to the other language's index if primary has no vectors.
95
- * - Returns up to `limit` results (default 5).
200
+ * Search with a pre-computed embedding vector (no outbound fetch).
96
201
  */
97
202
  export const searchByVector = action({
98
203
  args: {
@@ -101,10 +206,7 @@ export const searchByVector = action({
101
206
  language: v.union(v.literal("en"), v.literal("de")),
102
207
  limit: v.optional(v.number()),
103
208
  },
104
- handler: async (
105
- ctx,
106
- { topic, embedding, language, limit = DEFAULT_SEARCH_LIMIT },
107
- ): Promise<KnowledgeResult[]> => {
209
+ handler: async (ctx, { topic, embedding, language, limit = DEFAULT_SEARCH_LIMIT }) => {
108
210
  return _searchByVector(ctx, { topic, embedding, language, limit });
109
211
  },
110
212
  });
@@ -127,7 +229,6 @@ async function _searchByVector(
127
229
  const fallbackIndex = language === "en" ? "by_embedding_de" : "by_embedding_en";
128
230
  const fallbackLanguage: "en" | "de" = language === "en" ? "de" : "en";
129
231
 
130
- // Try primary language index first
131
232
  let results = await ctx.vectorSearch("knowledgeChunks", primaryIndex, {
132
233
  vector: embedding,
133
234
  limit,
@@ -136,7 +237,6 @@ async function _searchByVector(
136
237
 
137
238
  let embeddingLanguage: "en" | "de" = language;
138
239
 
139
- // Fall back to the other language's index if primary returned nothing
140
240
  if (results.length === 0) {
141
241
  results = await ctx.vectorSearch("knowledgeChunks", fallbackIndex, {
142
242
  vector: embedding,
@@ -150,15 +250,10 @@ async function _searchByVector(
150
250
 
151
251
  const docs: (KnowledgeResult | null)[] = await Promise.all(
152
252
  results.map(async (r: any): Promise<KnowledgeResult | null> => {
153
- const doc: any = await ctx.runQuery(internal.knowledge.getChunk, {
154
- chunkId: r._id,
155
- });
253
+ const doc: any = await ctx.runQuery(internal.knowledge.getChunk, { chunkId: r._id });
156
254
  if (!doc) return null;
157
-
158
255
  const title = language === "en" ? doc.title_English : doc.title_Deutsch;
159
- const content =
160
- language === "en" ? doc.content_English : doc.content_Deutsch;
161
-
256
+ const content = language === "en" ? doc.content_English : doc.content_Deutsch;
162
257
  return {
163
258
  title,
164
259
  content,
@@ -175,89 +270,3 @@ async function _searchByVector(
175
270
 
176
271
  return docs.filter((d): d is KnowledgeResult => d !== null);
177
272
  }
178
-
179
- /**
180
- * Re-embed stale chunks for both languages.
181
- * Embeds English and Deutsch separately, storing embedding_en and embedding_de.
182
- */
183
- export const refreshEmbeddings = action({
184
- args: {
185
- apiToken: v.string(),
186
- },
187
- handler: async (
188
- ctx,
189
- { apiToken },
190
- ): Promise<{
191
- total: number;
192
- staleEn: number;
193
- staleDe: number;
194
- embeddedEn: number;
195
- embeddedDe: number;
196
- errors: number;
197
- }> => {
198
- const allChunks: any[] = await ctx.runQuery(
199
- internal.knowledge.listAllChunks,
200
- {},
201
- );
202
-
203
- const staleEn = allChunks.filter(
204
- (c) =>
205
- !c.embedding_en || !c.embeddedAt_en || c.embeddedAt_en < c.updatedAt,
206
- );
207
- const staleDe = allChunks.filter(
208
- (c) =>
209
- !c.embedding_de || !c.embeddedAt_de || c.embeddedAt_de < c.updatedAt,
210
- );
211
-
212
- let embeddedEn = 0;
213
- let embeddedDe = 0;
214
- let errors = 0;
215
-
216
- for (const chunk of staleEn) {
217
- try {
218
- const embedding = await getEmbedding(
219
- `${chunk.title_English}\n\n${chunk.content_English}`,
220
- apiToken,
221
- );
222
- await ctx.runMutation(internal.knowledge.updateEmbeddingEn, {
223
- chunkId: chunk._id,
224
- embedding,
225
- });
226
- embeddedEn++;
227
- } catch (e: any) {
228
- console.error(
229
- `Failed to embed EN chunk ${chunk.chunkKey}: ${e.message}`,
230
- );
231
- errors++;
232
- }
233
- }
234
-
235
- for (const chunk of staleDe) {
236
- try {
237
- const embedding = await getEmbedding(
238
- `${chunk.title_Deutsch}\n\n${chunk.content_Deutsch}`,
239
- apiToken,
240
- );
241
- await ctx.runMutation(internal.knowledge.updateEmbeddingDe, {
242
- chunkId: chunk._id,
243
- embedding,
244
- });
245
- embeddedDe++;
246
- } catch (e: any) {
247
- console.error(
248
- `Failed to embed DE chunk ${chunk.chunkKey}: ${e.message}`,
249
- );
250
- errors++;
251
- }
252
- }
253
-
254
- return {
255
- total: allChunks.length,
256
- staleEn: staleEn.length,
257
- staleDe: staleDe.length,
258
- embeddedEn,
259
- embeddedDe,
260
- errors,
261
- };
262
- },
263
- });