fix: prevent sqlite-vec duplicate id failures
This commit is contained in:
@@ -16,6 +16,7 @@ Docs: https://docs.clawd.bot
|
|||||||
- Auth profiles: keep auto-pinned preference while allowing rotation on failover; user pins stay locked. (#1138) — thanks @cheeeee.
|
- Auth profiles: keep auto-pinned preference while allowing rotation on failover; user pins stay locked. (#1138) — thanks @cheeeee.
|
||||||
- macOS: avoid touching launchd in Remote over SSH so quitting the app no longer disables the remote gateway. (#1105)
|
- macOS: avoid touching launchd in Remote over SSH so quitting the app no longer disables the remote gateway. (#1105)
|
||||||
- Memory: index atomically so failed reindex preserves the previous memory database. (#1151) — thanks @gumadeiras.
|
- Memory: index atomically so failed reindex preserves the previous memory database. (#1151) — thanks @gumadeiras.
|
||||||
|
- Memory: avoid sqlite-vec unique constraint failures when reindexing duplicate chunk ids. (#1151) — thanks @gumadeiras.
|
||||||
|
|
||||||
## 2026.1.18-3
|
## 2026.1.18-3
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import os from "node:os";
|
||||||
|
|
||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
|
|
||||||
import type { PluginRuntime } from "clawdbot/plugin-sdk";
|
import type { PluginRuntime } from "clawdbot/plugin-sdk";
|
||||||
@@ -8,7 +10,11 @@ import { setMatrixRuntime } from "./runtime.js";
|
|||||||
|
|
||||||
describe("matrix directory", () => {
|
describe("matrix directory", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
setMatrixRuntime({} as PluginRuntime);
|
setMatrixRuntime({
|
||||||
|
state: {
|
||||||
|
resolveStateDir: () => os.tmpdir(),
|
||||||
|
},
|
||||||
|
} as PluginRuntime);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("lists peers and groups from config", async () => {
|
it("lists peers and groups from config", async () => {
|
||||||
|
|||||||
@@ -1406,8 +1406,11 @@ export class MemoryIndexManager {
|
|||||||
now,
|
now,
|
||||||
);
|
);
|
||||||
if (vectorReady && embedding.length > 0) {
|
if (vectorReady && embedding.length > 0) {
|
||||||
|
try {
|
||||||
|
this.db.prepare(`DELETE FROM ${VECTOR_TABLE} WHERE id = ?`).run(id);
|
||||||
|
} catch {}
|
||||||
this.db
|
this.db
|
||||||
.prepare(`INSERT OR REPLACE INTO ${VECTOR_TABLE} (id, embedding) VALUES (?, ?)`)
|
.prepare(`INSERT INTO ${VECTOR_TABLE} (id, embedding) VALUES (?, ?)`)
|
||||||
.run(id, vectorToBlob(embedding));
|
.run(id, vectorToBlob(embedding));
|
||||||
}
|
}
|
||||||
if (this.fts.enabled && this.fts.available) {
|
if (this.fts.enabled && this.fts.available) {
|
||||||
|
|||||||
Reference in New Issue
Block a user