opencode-mem 2.7.3 → 2.7.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/services/api-handlers.d.ts +12 -3
- package/dist/services/api-handlers.d.ts.map +1 -1
- package/dist/services/api-handlers.js +79 -40
- package/dist/services/privacy.d.ts +0 -1
- package/dist/services/privacy.d.ts.map +1 -1
- package/dist/services/privacy.js +0 -3
- package/dist/services/sqlite/vector-search.d.ts +1 -0
- package/dist/services/sqlite/vector-search.d.ts.map +1 -1
- package/dist/services/sqlite/vector-search.js +10 -0
- package/dist/services/web-server-worker.js +9 -3
- package/dist/types/index.d.ts +0 -31
- package/dist/types/index.d.ts.map +1 -1
- package/dist/web/app.js +52 -83
- package/package.json +12 -4
|
@@ -146,10 +146,19 @@ export declare function handleDetectTagMigration(): Promise<ApiResponse<{
|
|
|
146
146
|
needsMigration: boolean;
|
|
147
147
|
count: number;
|
|
148
148
|
}>>;
|
|
149
|
-
|
|
150
|
-
success: boolean;
|
|
149
|
+
interface MigrationProgress {
|
|
151
150
|
processed: number;
|
|
152
|
-
|
|
151
|
+
total: number;
|
|
152
|
+
currentBatch: number;
|
|
153
|
+
totalBatches: number;
|
|
154
|
+
isComplete: boolean;
|
|
155
|
+
errors: string[];
|
|
156
|
+
}
|
|
157
|
+
export declare function handleGetTagMigrationProgress(): Promise<ApiResponse<MigrationProgress>>;
|
|
158
|
+
export declare function handleRunTagMigrationBatch(batchSize?: number): Promise<ApiResponse<{
|
|
159
|
+
processed: number;
|
|
160
|
+
total: number;
|
|
161
|
+
hasMore: boolean;
|
|
153
162
|
}>>;
|
|
154
163
|
export {};
|
|
155
164
|
//# sourceMappingURL=api-handlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-handlers.d.ts","sourceRoot":"","sources":["../../src/services/api-handlers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,UAAU,WAAW,CAAC,CAAC,GAAG,GAAG;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,MAAM;IACd,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,OAAO;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,iBAAiB,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAmDD,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAAE,OAAO,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CAAC,CAiCnF;AAED,wBAAsB,kBAAkB,CACtC,GAAG,CAAC,EAAE,MAAM,EACZ,IAAI,GAAE,MAAU,EAChB,QAAQ,GAAE,MAAW,EACrB,cAAc,GAAE,OAAc,GAC7B,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAsIvD;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,WAAW,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAiDvC;AAED,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,WAAW,CAAC;IAAE,aAAa,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CA0BlD;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EAAE,EACb,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,WAAW,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAa3C;AAED,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC7D,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAuD5B;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,KAAK,gBAAgB,GAAG,eAAe,GAAG,eAAe,CAAC;AAE1D,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,IAAI,GAAE,MAAU,EAChB,QAAQ,GAAE,MAAW,GACpB,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAwJ3D;AAED,wBAAsB,WAAW,IAAI,OAAO,CAC1C,WAAW,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAAC,CACH,CA4BA;AAED,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAiB5E;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAiB9E;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAC/C,WAAW,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAC/E,CASA;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CACrD,WAAW,CAAC;IAAE,sBAAsB,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC,CAC5E,CASA;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CACpD,WAAW,CAAC;IACV,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,GAAG,EAAE,CAAC;CACxB,CAAC,CACH,CASA;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,GAAG,UAAU,GAAG,OAAO,CACrF,WAAW,CAAC;IACV,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CACH,CASA;AAED,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,WAAW,CAAC;IAAE,aAAa,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAgBlD;AAED,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,EAAE,EACb,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,WAAW,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAa3C;AAED,wBAAsB,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAwCrF;AAED,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAkB7B;AAED,wBAAsB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAoB7F;AAED,wBAAsB,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAsBrF;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CACvD,WAAW,CAAC;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CACxD,CAeA;AAED,wBAAsB,
|
|
1
|
+
{"version":3,"file":"api-handlers.d.ts","sourceRoot":"","sources":["../../src/services/api-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -800,9 +800,19 @@ export async function handleDetectTagMigration() {
|
|
|
800
800
|
return { success: false, error: String(error) };
|
|
801
801
|
}
|
|
802
802
|
}
|
|
803
|
-
|
|
803
|
+
let migrationProgress = {
|
|
804
|
+
processed: 0,
|
|
805
|
+
total: 0,
|
|
806
|
+
currentBatch: 0,
|
|
807
|
+
totalBatches: 0,
|
|
808
|
+
isComplete: true,
|
|
809
|
+
errors: [],
|
|
810
|
+
};
|
|
811
|
+
export async function handleGetTagMigrationProgress() {
|
|
812
|
+
return { success: true, data: migrationProgress };
|
|
813
|
+
}
|
|
814
|
+
export async function handleRunTagMigrationBatch(batchSize = 5) {
|
|
804
815
|
try {
|
|
805
|
-
const startTime = Date.now();
|
|
806
816
|
const { AIProviderFactory } = await import("./ai/ai-provider-factory.js");
|
|
807
817
|
const providerConfig = {
|
|
808
818
|
model: CONFIG.memoryModel,
|
|
@@ -813,54 +823,83 @@ export async function handleRunTagMigration() {
|
|
|
813
823
|
};
|
|
814
824
|
const provider = AIProviderFactory.createProvider(CONFIG.memoryProvider, providerConfig);
|
|
815
825
|
const projectShards = shardManager.getAllShards("project", "");
|
|
816
|
-
let
|
|
826
|
+
let batchProcessed = 0;
|
|
827
|
+
const allMemories = [];
|
|
817
828
|
for (const shard of projectShards) {
|
|
818
829
|
const db = connectionManager.getConnection(shard.dbPath);
|
|
819
830
|
const memories = db.prepare("SELECT * FROM memories").all();
|
|
820
831
|
for (const m of memories) {
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
832
|
+
allMemories.push({ memory: m, shard });
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
if (migrationProgress.total === 0) {
|
|
836
|
+
migrationProgress.total = allMemories.length;
|
|
837
|
+
migrationProgress.totalBatches = Math.ceil(allMemories.length / batchSize);
|
|
838
|
+
migrationProgress.isComplete = false;
|
|
839
|
+
}
|
|
840
|
+
const startIdx = migrationProgress.processed;
|
|
841
|
+
const endIdx = Math.min(startIdx + batchSize, allMemories.length);
|
|
842
|
+
for (let i = startIdx; i < endIdx; i++) {
|
|
843
|
+
const item = allMemories[i];
|
|
844
|
+
if (!item)
|
|
845
|
+
continue;
|
|
846
|
+
const { memory: m, shard } = item;
|
|
847
|
+
const db = connectionManager.getConnection(shard.dbPath);
|
|
848
|
+
try {
|
|
849
|
+
let currentTags = m.tags
|
|
850
|
+
? m.tags
|
|
851
|
+
.split(",")
|
|
852
|
+
.map((t) => t.trim().toLowerCase())
|
|
853
|
+
.filter((t) => t)
|
|
854
|
+
: [];
|
|
855
|
+
if (currentTags.length === 0) {
|
|
856
|
+
const prompt = `Generate 2-4 short technical tags for this memory content:\n\n${m.content}\n\nReturn ONLY a comma-separated list of tags.`;
|
|
857
|
+
const result = await provider.executeToolCall("You are a technical tagger.", prompt, {
|
|
858
|
+
type: "function",
|
|
859
|
+
function: {
|
|
860
|
+
name: "save_tags",
|
|
861
|
+
description: "Save generated tags",
|
|
862
|
+
parameters: {
|
|
863
|
+
type: "object",
|
|
864
|
+
properties: { tags: { type: "array", items: { type: "string" } } },
|
|
865
|
+
required: ["tags"],
|
|
840
866
|
},
|
|
841
|
-
},
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
867
|
+
},
|
|
868
|
+
}, `migration_${m.id}`);
|
|
869
|
+
if (result.success && result.data?.tags) {
|
|
870
|
+
currentTags = result.data.tags;
|
|
871
|
+
db.prepare("UPDATE memories SET tags = ? WHERE id = ?").run(currentTags.join(","), m.id);
|
|
846
872
|
}
|
|
847
|
-
const vector = await embeddingService.embedWithTimeout(m.content);
|
|
848
|
-
const vectorBuffer = new Uint8Array(vector.buffer);
|
|
849
|
-
db.prepare("UPDATE memories SET vector = ?, updated_at = ? WHERE id = ?").run(vectorBuffer, Date.now(), m.id);
|
|
850
|
-
db.prepare("INSERT OR REPLACE INTO vec_memories (memory_id, embedding) VALUES (?, ?)").run(m.id, vectorBuffer);
|
|
851
|
-
if (currentTags.length > 0) {
|
|
852
|
-
const tagsVector = await embeddingService.embedWithTimeout(currentTags.join(", "));
|
|
853
|
-
const tagsVectorBuffer = new Uint8Array(tagsVector.buffer);
|
|
854
|
-
db.prepare("INSERT OR REPLACE INTO vec_tags (memory_id, embedding) VALUES (?, ?)").run(m.id, tagsVectorBuffer);
|
|
855
|
-
}
|
|
856
|
-
processed++;
|
|
857
873
|
}
|
|
858
|
-
|
|
859
|
-
|
|
874
|
+
const vector = await embeddingService.embedWithTimeout(m.content);
|
|
875
|
+
const vectorBuffer = new Uint8Array(vector.buffer);
|
|
876
|
+
db.prepare("UPDATE memories SET vector = ?, updated_at = ? WHERE id = ?").run(vectorBuffer, Date.now(), m.id);
|
|
877
|
+
db.prepare("DELETE FROM vec_memories WHERE memory_id = ?").run(m.id);
|
|
878
|
+
db.prepare("INSERT INTO vec_memories (memory_id, embedding) VALUES (?, ?)").run(m.id, vectorBuffer);
|
|
879
|
+
if (currentTags.length > 0) {
|
|
880
|
+
const tagsVector = await embeddingService.embedWithTimeout(currentTags.join(", "));
|
|
881
|
+
const tagsVectorBuffer = new Uint8Array(tagsVector.buffer);
|
|
882
|
+
db.prepare("DELETE FROM vec_tags WHERE memory_id = ?").run(m.id);
|
|
883
|
+
db.prepare("INSERT INTO vec_tags (memory_id, embedding) VALUES (?, ?)").run(m.id, tagsVectorBuffer);
|
|
860
884
|
}
|
|
885
|
+
migrationProgress.processed++;
|
|
886
|
+
batchProcessed++;
|
|
887
|
+
}
|
|
888
|
+
catch (e) {
|
|
889
|
+
const errorMsg = String(e);
|
|
890
|
+
migrationProgress.errors.push(errorMsg);
|
|
891
|
+
log("Migration error for memory", { id: m.id, error: errorMsg });
|
|
861
892
|
}
|
|
862
893
|
}
|
|
863
|
-
|
|
894
|
+
migrationProgress.currentBatch++;
|
|
895
|
+
const hasMore = migrationProgress.processed < migrationProgress.total;
|
|
896
|
+
if (!hasMore) {
|
|
897
|
+
migrationProgress.isComplete = true;
|
|
898
|
+
}
|
|
899
|
+
return {
|
|
900
|
+
success: true,
|
|
901
|
+
data: { processed: migrationProgress.processed, total: migrationProgress.total, hasMore },
|
|
902
|
+
};
|
|
864
903
|
}
|
|
865
904
|
catch (error) {
|
|
866
905
|
return { success: false, error: String(error) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../../src/services/privacy.ts"],"names":[],"mappings":"AAAA,wBAAgB,
|
|
1
|
+
{"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../../src/services/privacy.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGvD"}
|
package/dist/services/privacy.js
CHANGED
|
@@ -5,6 +5,7 @@ export declare class VectorSearch {
|
|
|
5
5
|
searchInShard(shard: ShardInfo, queryVector: Float32Array, containerTag: string, limit: number, queryText?: string): SearchResult[];
|
|
6
6
|
searchAcrossShards(shards: ShardInfo[], queryVector: Float32Array, containerTag: string, limit: number, similarityThreshold: number, queryText?: string): Promise<SearchResult[]>;
|
|
7
7
|
deleteVector(db: Database, memoryId: string): void;
|
|
8
|
+
updateVector(db: Database, memoryId: string, vector: Float32Array, tagsVector?: Float32Array): void;
|
|
8
9
|
listMemories(db: Database, containerTag: string, limit: number): any[];
|
|
9
10
|
getAllMemories(db: Database): any[];
|
|
10
11
|
getMemoryById(db: Database, memoryId: string): any | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-search.d.ts","sourceRoot":"","sources":["../../../src/services/sqlite/vector-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAExE,qBAAa,YAAY;IACvB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IA0CtD,aAAa,CACX,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,GACjB,YAAY,EAAE;IA0FX,kBAAkB,CACtB,MAAM,EAAE,SAAS,EAAE,EACnB,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,mBAAmB,EAAE,MAAM,EAC3B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,EAAE,CAAC;IAiB1B,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMlD,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE;IAWtE,cAAc,CAAC,EAAE,EAAE,QAAQ,GAAG,GAAG,EAAE;IAKnC,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAKzD,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAMxD,eAAe,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM;IAMrC,eAAe,CAAC,EAAE,EAAE,QAAQ,GAAG,GAAG,EAAE;IAepC,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK/C,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;CAIlD;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"vector-search.d.ts","sourceRoot":"","sources":["../../../src/services/sqlite/vector-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAExE,qBAAa,YAAY;IACvB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IA0CtD,aAAa,CACX,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,GACjB,YAAY,EAAE;IA0FX,kBAAkB,CACtB,MAAM,EAAE,SAAS,EAAE,EACnB,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,mBAAmB,EAAE,MAAM,EAC3B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,EAAE,CAAC;IAiB1B,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMlD,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,YAAY,GAAG,IAAI;IAYnG,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE;IAWtE,cAAc,CAAC,EAAE,EAAE,QAAQ,GAAG,GAAG,EAAE;IAKnC,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAKzD,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAMxD,eAAe,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM;IAMrC,eAAe,CAAC,EAAE,EAAE,QAAQ,GAAG,GAAG,EAAE;IAepC,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK/C,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;CAIlD;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
|
@@ -113,6 +113,16 @@ export class VectorSearch {
|
|
|
113
113
|
db.prepare(`DELETE FROM vec_tags WHERE memory_id = ?`).run(memoryId);
|
|
114
114
|
db.prepare(`DELETE FROM memories WHERE id = ?`).run(memoryId);
|
|
115
115
|
}
|
|
116
|
+
updateVector(db, memoryId, vector, tagsVector) {
|
|
117
|
+
const vectorBuffer = new Uint8Array(vector.buffer);
|
|
118
|
+
db.prepare(`DELETE FROM vec_memories WHERE memory_id = ?`).run(memoryId);
|
|
119
|
+
db.prepare(`INSERT INTO vec_memories (memory_id, embedding) VALUES (?, ?)`).run(memoryId, vectorBuffer);
|
|
120
|
+
if (tagsVector) {
|
|
121
|
+
const tagsVectorBuffer = new Uint8Array(tagsVector.buffer);
|
|
122
|
+
db.prepare(`DELETE FROM vec_tags WHERE memory_id = ?`).run(memoryId);
|
|
123
|
+
db.prepare(`INSERT INTO vec_tags (memory_id, embedding) VALUES (?, ?)`).run(memoryId, tagsVectorBuffer);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
116
126
|
listMemories(db, containerTag, limit) {
|
|
117
127
|
const stmt = db.prepare(`
|
|
118
128
|
SELECT * FROM memories
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
2
|
import { join, dirname } from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
-
import { handleListTags, handleListMemories, handleAddMemory, handleDeleteMemory, handleBulkDelete, handleUpdateMemory, handleSearch, handleStats, handlePinMemory, handleUnpinMemory, handleRunCleanup, handleRunDeduplication, handleDetectMigration, handleRunMigration, handleDetectTagMigration,
|
|
4
|
+
import { handleListTags, handleListMemories, handleAddMemory, handleDeleteMemory, handleBulkDelete, handleUpdateMemory, handleSearch, handleStats, handlePinMemory, handleUnpinMemory, handleRunCleanup, handleRunDeduplication, handleDetectMigration, handleRunMigration, handleDetectTagMigration, handleRunTagMigrationBatch, handleGetTagMigrationProgress, handleDeletePrompt, handleBulkDeletePrompts, handleGetUserProfile, handleGetProfileChangelog, handleGetProfileSnapshot, handleRefreshProfile, } from "./api-handlers.js";
|
|
5
5
|
const __filename = fileURLToPath(import.meta.url);
|
|
6
6
|
const __dirname = dirname(__filename);
|
|
7
7
|
let server = null;
|
|
@@ -111,8 +111,14 @@ async function handleRequest(req) {
|
|
|
111
111
|
const result = await handleDetectTagMigration();
|
|
112
112
|
return jsonResponse(result);
|
|
113
113
|
}
|
|
114
|
-
if (path === "/api/migration/tags/run" && method === "POST") {
|
|
115
|
-
const
|
|
114
|
+
if (path === "/api/migration/tags/run-batch" && method === "POST") {
|
|
115
|
+
const body = (await req.json());
|
|
116
|
+
const batchSize = body?.batchSize || 5;
|
|
117
|
+
const result = await handleRunTagMigrationBatch(batchSize);
|
|
118
|
+
return jsonResponse(result);
|
|
119
|
+
}
|
|
120
|
+
if (path === "/api/migration/tags/progress" && method === "GET") {
|
|
121
|
+
const result = await handleGetTagMigrationProgress();
|
|
116
122
|
return jsonResponse(result);
|
|
117
123
|
}
|
|
118
124
|
if (path === "/api/migration/run" && method === "POST") {
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,35 +1,4 @@
|
|
|
1
|
-
export type MemoryScope = "user" | "project";
|
|
2
1
|
export type MemoryType = string;
|
|
3
|
-
export type ConversationRole = "user" | "assistant" | "system" | "tool";
|
|
4
|
-
export type ConversationContentPart = {
|
|
5
|
-
type: "text";
|
|
6
|
-
text: string;
|
|
7
|
-
} | {
|
|
8
|
-
type: "image_url";
|
|
9
|
-
imageUrl: {
|
|
10
|
-
url: string;
|
|
11
|
-
};
|
|
12
|
-
};
|
|
13
|
-
export interface ConversationToolCall {
|
|
14
|
-
id: string;
|
|
15
|
-
type: "function";
|
|
16
|
-
function: {
|
|
17
|
-
name: string;
|
|
18
|
-
arguments: string;
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
export interface ConversationMessage {
|
|
22
|
-
role: ConversationRole;
|
|
23
|
-
content: string | ConversationContentPart[];
|
|
24
|
-
name?: string;
|
|
25
|
-
tool_calls?: ConversationToolCall[];
|
|
26
|
-
tool_call_id?: string;
|
|
27
|
-
}
|
|
28
|
-
export interface ConversationIngestResponse {
|
|
29
|
-
id: string;
|
|
30
|
-
conversationId: string;
|
|
31
|
-
status: string;
|
|
32
|
-
}
|
|
33
2
|
export interface MemoryMetadata {
|
|
34
3
|
type?: MemoryType;
|
|
35
4
|
source?: "manual" | "auto-capture" | "import" | "api";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,GAAG,cAAc,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,kBAAkB,GAAG,WAAW,CAAC"}
|
package/dist/web/app.js
CHANGED
|
@@ -30,7 +30,13 @@ function renderMarkdown(markdown) {
|
|
|
30
30
|
|
|
31
31
|
async function fetchAPI(endpoint, options = {}) {
|
|
32
32
|
try {
|
|
33
|
-
const
|
|
33
|
+
const controller = new AbortController();
|
|
34
|
+
const timeoutId = setTimeout(() => controller.abort(), 60000);
|
|
35
|
+
const response = await fetch(API_BASE + endpoint, {
|
|
36
|
+
...options,
|
|
37
|
+
signal: controller.signal,
|
|
38
|
+
});
|
|
39
|
+
clearTimeout(timeoutId);
|
|
34
40
|
const data = await response.json();
|
|
35
41
|
return data;
|
|
36
42
|
} catch (error) {
|
|
@@ -73,40 +79,6 @@ function populateTagDropdowns() {
|
|
|
73
79
|
});
|
|
74
80
|
}
|
|
75
81
|
|
|
76
|
-
async function loadMemories() {
|
|
77
|
-
showRefreshIndicator(true);
|
|
78
|
-
|
|
79
|
-
let endpoint = `/api/memories?page=${state.currentPage}&pageSize=${state.pageSize}&includePrompts=true`;
|
|
80
|
-
|
|
81
|
-
if (state.isSearching && state.searchQuery) {
|
|
82
|
-
endpoint = `/api/search?q=${encodeURIComponent(state.searchQuery)}&page=${state.currentPage}&pageSize=${state.pageSize}`;
|
|
83
|
-
if (state.selectedTag) {
|
|
84
|
-
endpoint += `&tag=${encodeURIComponent(state.selectedTag)}`;
|
|
85
|
-
}
|
|
86
|
-
} else {
|
|
87
|
-
if (state.selectedTag) {
|
|
88
|
-
endpoint += `&tag=${encodeURIComponent(state.selectedTag)}`;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
const result = await fetchAPI(endpoint);
|
|
93
|
-
|
|
94
|
-
showRefreshIndicator(false);
|
|
95
|
-
|
|
96
|
-
if (result.success) {
|
|
97
|
-
state.memories = result.data.items;
|
|
98
|
-
state.totalPages = result.data.totalPages;
|
|
99
|
-
state.totalItems = result.data.total;
|
|
100
|
-
state.currentPage = result.data.page;
|
|
101
|
-
|
|
102
|
-
renderMemories();
|
|
103
|
-
updatePagination();
|
|
104
|
-
updateSectionTitle();
|
|
105
|
-
} else {
|
|
106
|
-
showError(result.error || "Failed to load memories");
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
82
|
function renderMemories() {
|
|
111
83
|
const container = document.getElementById("memories-list");
|
|
112
84
|
|
|
@@ -437,23 +409,6 @@ async function addMemory(e) {
|
|
|
437
409
|
}
|
|
438
410
|
}
|
|
439
411
|
|
|
440
|
-
function performSearch() {
|
|
441
|
-
const input = document.getElementById("search-input").value.trim();
|
|
442
|
-
|
|
443
|
-
if (!input) {
|
|
444
|
-
clearSearch();
|
|
445
|
-
return;
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
state.searchQuery = input;
|
|
449
|
-
state.isSearching = true;
|
|
450
|
-
state.currentPage = 1;
|
|
451
|
-
|
|
452
|
-
document.getElementById("clear-search-btn").classList.remove("hidden");
|
|
453
|
-
|
|
454
|
-
loadMemories();
|
|
455
|
-
}
|
|
456
|
-
|
|
457
412
|
async function loadMemories() {
|
|
458
413
|
showRefreshIndicator(true);
|
|
459
414
|
|
|
@@ -655,23 +610,6 @@ function changePage(delta) {
|
|
|
655
610
|
loadMemories();
|
|
656
611
|
}
|
|
657
612
|
|
|
658
|
-
function handleAddScopeChange() {
|
|
659
|
-
const tagDropdown = document.getElementById("add-tag");
|
|
660
|
-
|
|
661
|
-
tagDropdown.innerHTML = '<option value="">Select tag</option>';
|
|
662
|
-
|
|
663
|
-
const tags = state.tags.project;
|
|
664
|
-
tags.forEach((tagInfo) => {
|
|
665
|
-
const displayText = tagInfo.displayName || tagInfo.tag;
|
|
666
|
-
const shortDisplay =
|
|
667
|
-
displayText.length > 50 ? displayText.substring(0, 50) + "..." : displayText;
|
|
668
|
-
const option = document.createElement("option");
|
|
669
|
-
option.value = tagInfo.tag;
|
|
670
|
-
option.textContent = shortDisplay;
|
|
671
|
-
tagDropdown.appendChild(option);
|
|
672
|
-
});
|
|
673
|
-
}
|
|
674
|
-
|
|
675
613
|
function showToast(message, type = "success") {
|
|
676
614
|
const toast = document.getElementById("toast");
|
|
677
615
|
toast.textContent = message;
|
|
@@ -809,24 +747,55 @@ async function runTagMigration() {
|
|
|
809
747
|
const progress = document.getElementById("tag-migration-progress");
|
|
810
748
|
|
|
811
749
|
actions.classList.add("hidden");
|
|
812
|
-
status.textContent = "
|
|
813
|
-
progress.style.width = "
|
|
750
|
+
status.textContent = "Starting migration...";
|
|
751
|
+
progress.style.width = "0%";
|
|
814
752
|
|
|
815
|
-
|
|
753
|
+
let totalProcessed = 0;
|
|
754
|
+
let hasMore = true;
|
|
755
|
+
let attempts = 0;
|
|
756
|
+
const maxAttempts = 1000;
|
|
816
757
|
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
758
|
+
while (hasMore && attempts < maxAttempts) {
|
|
759
|
+
attempts++;
|
|
760
|
+
const result = await fetchAPI("/api/migration/tags/run-batch", {
|
|
761
|
+
method: "POST",
|
|
762
|
+
headers: { "Content-Type": "application/json" },
|
|
763
|
+
body: JSON.stringify({ batchSize: 3 }),
|
|
764
|
+
});
|
|
765
|
+
|
|
766
|
+
if (!result.success) {
|
|
767
|
+
status.textContent = "Migration failed: " + result.error;
|
|
768
|
+
actions.classList.remove("hidden");
|
|
769
|
+
return;
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
totalProcessed = result.data.processed;
|
|
773
|
+
hasMore = result.data.hasMore;
|
|
774
|
+
const total = result.data.total;
|
|
775
|
+
const percent = total > 0 ? Math.round((totalProcessed / total) * 100) : 0;
|
|
776
|
+
|
|
777
|
+
progress.style.width = percent + "%";
|
|
778
|
+
status.textContent = `Processing memories... ${totalProcessed}/${total} (${percent}%)`;
|
|
779
|
+
|
|
780
|
+
if (hasMore) {
|
|
781
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
if (attempts >= maxAttempts) {
|
|
786
|
+
status.textContent = "Migration stopped: maximum attempts reached";
|
|
828
787
|
actions.classList.remove("hidden");
|
|
788
|
+
return;
|
|
829
789
|
}
|
|
790
|
+
|
|
791
|
+
progress.style.width = "100%";
|
|
792
|
+
status.textContent = `Successfully tagged ${totalProcessed} memories!`;
|
|
793
|
+
showToast("Migration complete", "success");
|
|
794
|
+
setTimeout(() => {
|
|
795
|
+
document.getElementById("tag-migration-overlay").classList.add("hidden");
|
|
796
|
+
loadMemories();
|
|
797
|
+
loadStats();
|
|
798
|
+
}, 2000);
|
|
830
799
|
}
|
|
831
800
|
|
|
832
801
|
function showMigrationWarning(data) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-mem",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.4",
|
|
4
4
|
"description": "OpenCode plugin that gives coding agents persistent memory using local vector database",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/plugin.js",
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
"dev": "tsc --watch",
|
|
11
11
|
"typecheck": "tsc --noEmit",
|
|
12
12
|
"format": "prettier --write \"src/**/*.{ts,js,css,html}\"",
|
|
13
|
-
"format:check": "prettier --check \"src/**/*.{ts,js,css,html}\""
|
|
13
|
+
"format:check": "prettier --check \"src/**/*.{ts,js,css,html}\"",
|
|
14
|
+
"prepare": "husky"
|
|
14
15
|
},
|
|
15
16
|
"keywords": [
|
|
16
17
|
"opencode",
|
|
@@ -39,7 +40,9 @@
|
|
|
39
40
|
"sqlite-vec": "^0.1.7-alpha.2"
|
|
40
41
|
},
|
|
41
42
|
"devDependencies": {
|
|
42
|
-
"@types/bun": "
|
|
43
|
+
"@types/bun": "^1.3.8",
|
|
44
|
+
"husky": "^9.1.7",
|
|
45
|
+
"lint-staged": "^16.2.7",
|
|
43
46
|
"prettier": "^3.4.2",
|
|
44
47
|
"typescript": "^5.7.3"
|
|
45
48
|
},
|
|
@@ -53,5 +56,10 @@
|
|
|
53
56
|
"files": [
|
|
54
57
|
"dist",
|
|
55
58
|
"package.json"
|
|
56
|
-
]
|
|
59
|
+
],
|
|
60
|
+
"lint-staged": {
|
|
61
|
+
"*.{ts,tsx,js,jsx,css,html,json,md}": [
|
|
62
|
+
"prettier --write"
|
|
63
|
+
]
|
|
64
|
+
}
|
|
57
65
|
}
|