@elizaos/plugin-localdb 2.0.0-alpha.2 → 2.0.0-alpha.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.
Files changed (75) hide show
  1. package/dist/browser/index.browser.js +1131 -40
  2. package/dist/browser/index.browser.js.map +14 -1
  3. package/dist/node/index.node.js +1167 -40
  4. package/dist/node/index.node.js.map +14 -1
  5. package/package.json +14 -3
  6. package/LICENSE +0 -21
  7. package/dist/browser/adapter.d.ts +0 -157
  8. package/dist/browser/adapter.d.ts.map +0 -1
  9. package/dist/browser/adapter.js +0 -636
  10. package/dist/browser/adapter.js.map +0 -1
  11. package/dist/browser/generated/specs/specs.d.ts +0 -55
  12. package/dist/browser/generated/specs/specs.d.ts.map +0 -1
  13. package/dist/browser/generated/specs/specs.js +0 -35
  14. package/dist/browser/generated/specs/specs.js.map +0 -1
  15. package/dist/browser/hnsw.d.ts +0 -45
  16. package/dist/browser/hnsw.d.ts.map +0 -1
  17. package/dist/browser/hnsw.js +0 -291
  18. package/dist/browser/hnsw.js.map +0 -1
  19. package/dist/browser/index.browser.d.ts +0 -11
  20. package/dist/browser/index.browser.d.ts.map +0 -1
  21. package/dist/browser/index.d.ts +0 -2
  22. package/dist/browser/index.d.ts.map +0 -1
  23. package/dist/browser/index.js +0 -3
  24. package/dist/browser/index.js.map +0 -1
  25. package/dist/browser/index.node.d.ts +0 -11
  26. package/dist/browser/index.node.d.ts.map +0 -1
  27. package/dist/browser/index.node.js +0 -43
  28. package/dist/browser/index.node.js.map +0 -1
  29. package/dist/browser/storage-browser.d.ts +0 -23
  30. package/dist/browser/storage-browser.d.ts.map +0 -1
  31. package/dist/browser/storage-browser.js +0 -118
  32. package/dist/browser/storage-browser.js.map +0 -1
  33. package/dist/browser/storage-node.d.ts +0 -22
  34. package/dist/browser/storage-node.d.ts.map +0 -1
  35. package/dist/browser/storage-node.js +0 -156
  36. package/dist/browser/storage-node.js.map +0 -1
  37. package/dist/browser/types.d.ts +0 -50
  38. package/dist/browser/types.d.ts.map +0 -1
  39. package/dist/browser/types.js +0 -15
  40. package/dist/browser/types.js.map +0 -1
  41. package/dist/index.d.ts +0 -2
  42. package/dist/node/adapter.d.ts +0 -157
  43. package/dist/node/adapter.d.ts.map +0 -1
  44. package/dist/node/adapter.js +0 -636
  45. package/dist/node/adapter.js.map +0 -1
  46. package/dist/node/generated/specs/specs.d.ts +0 -55
  47. package/dist/node/generated/specs/specs.d.ts.map +0 -1
  48. package/dist/node/generated/specs/specs.js +0 -35
  49. package/dist/node/generated/specs/specs.js.map +0 -1
  50. package/dist/node/hnsw.d.ts +0 -45
  51. package/dist/node/hnsw.d.ts.map +0 -1
  52. package/dist/node/hnsw.js +0 -291
  53. package/dist/node/hnsw.js.map +0 -1
  54. package/dist/node/index.browser.d.ts +0 -11
  55. package/dist/node/index.browser.d.ts.map +0 -1
  56. package/dist/node/index.browser.js +0 -42
  57. package/dist/node/index.browser.js.map +0 -1
  58. package/dist/node/index.d.ts +0 -2
  59. package/dist/node/index.d.ts.map +0 -1
  60. package/dist/node/index.js +0 -3
  61. package/dist/node/index.js.map +0 -1
  62. package/dist/node/index.node.d.ts +0 -11
  63. package/dist/node/index.node.d.ts.map +0 -1
  64. package/dist/node/storage-browser.d.ts +0 -23
  65. package/dist/node/storage-browser.d.ts.map +0 -1
  66. package/dist/node/storage-browser.js +0 -118
  67. package/dist/node/storage-browser.js.map +0 -1
  68. package/dist/node/storage-node.d.ts +0 -22
  69. package/dist/node/storage-node.d.ts.map +0 -1
  70. package/dist/node/storage-node.js +0 -156
  71. package/dist/node/storage-node.js.map +0 -1
  72. package/dist/node/types.d.ts +0 -50
  73. package/dist/node/types.d.ts.map +0 -1
  74. package/dist/node/types.js +0 -15
  75. package/dist/node/types.js.map +0 -1
@@ -1,55 +0,0 @@
1
- /**
2
- * Auto-generated canonical action/provider/evaluator docs for plugin-localdb.
3
- * DO NOT EDIT - Generated from prompts/specs/**.
4
- */
5
- export type ActionDoc = {
6
- name: string;
7
- description: string;
8
- similes?: readonly string[];
9
- parameters?: readonly unknown[];
10
- examples?: readonly (readonly unknown[])[];
11
- };
12
- export type ProviderDoc = {
13
- name: string;
14
- description: string;
15
- position?: number;
16
- dynamic?: boolean;
17
- };
18
- export type EvaluatorDoc = {
19
- name: string;
20
- description: string;
21
- similes?: readonly string[];
22
- alwaysRun?: boolean;
23
- examples?: readonly unknown[];
24
- };
25
- export declare const coreActionsSpec: {
26
- readonly version: "1.0.0";
27
- readonly actions: readonly [];
28
- };
29
- export declare const allActionsSpec: {
30
- readonly version: "1.0.0";
31
- readonly actions: readonly [];
32
- };
33
- export declare const coreProvidersSpec: {
34
- readonly version: "1.0.0";
35
- readonly providers: readonly [];
36
- };
37
- export declare const allProvidersSpec: {
38
- readonly version: "1.0.0";
39
- readonly providers: readonly [];
40
- };
41
- export declare const coreEvaluatorsSpec: {
42
- readonly version: "1.0.0";
43
- readonly evaluators: readonly [];
44
- };
45
- export declare const allEvaluatorsSpec: {
46
- readonly version: "1.0.0";
47
- readonly evaluators: readonly [];
48
- };
49
- export declare const coreActionDocs: readonly ActionDoc[];
50
- export declare const allActionDocs: readonly ActionDoc[];
51
- export declare const coreProviderDocs: readonly ProviderDoc[];
52
- export declare const allProviderDocs: readonly ProviderDoc[];
53
- export declare const coreEvaluatorDocs: readonly EvaluatorDoc[];
54
- export declare const allEvaluatorDocs: readonly EvaluatorDoc[];
55
- //# sourceMappingURL=specs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../../../../generated/specs/specs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,SAAS,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AACX,eAAO,MAAM,cAAc;;;CAGjB,CAAC;AACX,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AACX,eAAO,MAAM,gBAAgB;;;CAGnB,CAAC;AACX,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;AACX,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AAEX,eAAO,MAAM,cAAc,EAAE,SAAS,SAAS,EAA4B,CAAC;AAC5E,eAAO,MAAM,aAAa,EAAE,SAAS,SAAS,EAA2B,CAAC;AAC1E,eAAO,MAAM,gBAAgB,EAAE,SAAS,WAAW,EAAgC,CAAC;AACpF,eAAO,MAAM,eAAe,EAAE,SAAS,WAAW,EAA+B,CAAC;AAClF,eAAO,MAAM,iBAAiB,EAAE,SAAS,YAAY,EAAkC,CAAC;AACxF,eAAO,MAAM,gBAAgB,EAAE,SAAS,YAAY,EAAiC,CAAC"}
@@ -1,35 +0,0 @@
1
- /**
2
- * Auto-generated canonical action/provider/evaluator docs for plugin-localdb.
3
- * DO NOT EDIT - Generated from prompts/specs/**.
4
- */
5
- export const coreActionsSpec = {
6
- version: "1.0.0",
7
- actions: [],
8
- };
9
- export const allActionsSpec = {
10
- version: "1.0.0",
11
- actions: [],
12
- };
13
- export const coreProvidersSpec = {
14
- version: "1.0.0",
15
- providers: [],
16
- };
17
- export const allProvidersSpec = {
18
- version: "1.0.0",
19
- providers: [],
20
- };
21
- export const coreEvaluatorsSpec = {
22
- version: "1.0.0",
23
- evaluators: [],
24
- };
25
- export const allEvaluatorsSpec = {
26
- version: "1.0.0",
27
- evaluators: [],
28
- };
29
- export const coreActionDocs = coreActionsSpec.actions;
30
- export const allActionDocs = allActionsSpec.actions;
31
- export const coreProviderDocs = coreProvidersSpec.providers;
32
- export const allProviderDocs = allProvidersSpec.providers;
33
- export const coreEvaluatorDocs = coreEvaluatorsSpec.evaluators;
34
- export const allEvaluatorDocs = allEvaluatorsSpec.evaluators;
35
- //# sourceMappingURL=specs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"specs.js","sourceRoot":"","sources":["../../../../generated/specs/specs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,EAAE;CACH,CAAC;AACX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,EAAE;CACH,CAAC;AACX,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,EAAE;CACL,CAAC;AACX,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,EAAE;CACL,CAAC;AACX,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,EAAE;CACN,CAAC;AACX,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,EAAE;CACN,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAyB,eAAe,CAAC,OAAO,CAAC;AAC5E,MAAM,CAAC,MAAM,aAAa,GAAyB,cAAc,CAAC,OAAO,CAAC;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAA2B,iBAAiB,CAAC,SAAS,CAAC;AACpF,MAAM,CAAC,MAAM,eAAe,GAA2B,gBAAgB,CAAC,SAAS,CAAC;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAA4B,kBAAkB,CAAC,UAAU,CAAC;AACxF,MAAM,CAAC,MAAM,gBAAgB,GAA4B,iBAAiB,CAAC,UAAU,CAAC"}
@@ -1,45 +0,0 @@
1
- import type { IVectorStorage, VectorSearchResult } from "./types";
2
- interface HNSWConfig {
3
- M: number;
4
- efConstruction: number;
5
- efSearch: number;
6
- mL: number;
7
- }
8
- interface HNSWIndex {
9
- dimension: number;
10
- config: HNSWConfig;
11
- nodes: Record<string, SerializedNode>;
12
- entryPoint: string | null;
13
- maxLevel: number;
14
- }
15
- interface SerializedNode {
16
- id: string;
17
- vector: number[];
18
- level: number;
19
- neighbors: Record<number, string[]>;
20
- }
21
- export declare class SimpleHNSW implements IVectorStorage {
22
- private nodes;
23
- private entryPoint;
24
- private maxLevel;
25
- private dimension;
26
- private config;
27
- private saveCallback?;
28
- private loadCallback?;
29
- constructor(saveCallback?: () => Promise<void>, loadCallback?: () => Promise<HNSWIndex | null>);
30
- init(dimension: number): Promise<void>;
31
- private getRandomLevel;
32
- add(id: string, vector: number[]): Promise<void>;
33
- private searchLayer;
34
- private selectBestNeighbors;
35
- remove(id: string): Promise<void>;
36
- search(query: number[], k: number, threshold?: number): Promise<VectorSearchResult[]>;
37
- save(): Promise<void>;
38
- load(): Promise<void>;
39
- serialize(): HNSWIndex;
40
- private deserialize;
41
- getIndex(): HNSWIndex;
42
- size(): number;
43
- }
44
- export {};
45
- //# sourceMappingURL=hnsw.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hnsw.d.ts","sourceRoot":"","sources":["../../hnsw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AASlE,UAAU,UAAU;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACrC;AAsBD,qBAAa,UAAW,YAAW,cAAc;IAC/C,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,YAAY,CAAC,CAAsB;IAC3C,OAAO,CAAC,YAAY,CAAC,CAAkC;gBAE3C,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAWxF,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C,OAAO,CAAC,cAAc;IAQhB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6EtD,OAAO,CAAC,WAAW;IA2DnB,OAAO,CAAC,mBAAmB;IAsBrB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCjC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA8BlF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,SAAS,IAAI,SAAS;IAyBtB,OAAO,CAAC,WAAW;IAqBnB,QAAQ,IAAI,SAAS;IAIrB,IAAI,IAAI,MAAM;CAGf"}
package/dist/node/hnsw.js DELETED
@@ -1,291 +0,0 @@
1
- function cosineDistance(a, b) {
2
- if (a.length !== b.length) {
3
- throw new Error(`Vector dimension mismatch: ${a.length} vs ${b.length}`);
4
- }
5
- let dotProduct = 0;
6
- let normA = 0;
7
- let normB = 0;
8
- for (let i = 0; i < a.length; i++) {
9
- dotProduct += a[i] * b[i];
10
- normA += a[i] * a[i];
11
- normB += b[i] * b[i];
12
- }
13
- const magnitude = Math.sqrt(normA) * Math.sqrt(normB);
14
- if (magnitude === 0)
15
- return 1;
16
- return 1 - dotProduct / magnitude;
17
- }
18
- export class SimpleHNSW {
19
- nodes = new Map();
20
- entryPoint = null;
21
- maxLevel = 0;
22
- dimension = 0;
23
- config;
24
- saveCallback;
25
- loadCallback;
26
- constructor(saveCallback, loadCallback) {
27
- this.config = {
28
- M: 16,
29
- efConstruction: 200,
30
- efSearch: 50,
31
- mL: 1 / Math.log(16),
32
- };
33
- this.saveCallback = saveCallback;
34
- this.loadCallback = loadCallback;
35
- }
36
- async init(dimension) {
37
- this.dimension = dimension;
38
- if (this.loadCallback) {
39
- const index = await this.loadCallback();
40
- if (index && index.dimension === dimension) {
41
- this.deserialize(index);
42
- }
43
- }
44
- }
45
- getRandomLevel() {
46
- let level = 0;
47
- while (Math.random() < Math.exp(-level * this.config.mL) && level < 16) {
48
- level++;
49
- }
50
- return level;
51
- }
52
- async add(id, vector) {
53
- if (vector.length !== this.dimension) {
54
- throw new Error(`Vector dimension mismatch: expected ${this.dimension}, got ${vector.length}`);
55
- }
56
- if (this.nodes.has(id)) {
57
- const existing = this.nodes.get(id);
58
- if (existing) {
59
- existing.vector = vector;
60
- }
61
- return;
62
- }
63
- const level = this.getRandomLevel();
64
- const newNode = {
65
- id,
66
- vector,
67
- level,
68
- neighbors: new Map(),
69
- };
70
- for (let l = 0; l <= level; l++) {
71
- newNode.neighbors.set(l, new Set());
72
- }
73
- if (this.entryPoint === null) {
74
- this.entryPoint = id;
75
- this.maxLevel = level;
76
- this.nodes.set(id, newNode);
77
- return;
78
- }
79
- let currentNode = this.entryPoint;
80
- for (let l = this.maxLevel; l > level; l--) {
81
- currentNode = this.searchLayer(vector, currentNode, 1, l)[0]?.id ?? currentNode;
82
- }
83
- for (let l = Math.min(level, this.maxLevel); l >= 0; l--) {
84
- const neighbors = this.searchLayer(vector, currentNode, this.config.efConstruction, l);
85
- const M = this.config.M;
86
- const selectedNeighbors = neighbors.slice(0, M);
87
- for (const neighbor of selectedNeighbors) {
88
- newNode.neighbors.get(l)?.add(neighbor.id);
89
- const neighborNode = this.nodes.get(neighbor.id);
90
- if (neighborNode) {
91
- let neighborSet = neighborNode.neighbors.get(l);
92
- if (!neighborSet) {
93
- neighborSet = new Set();
94
- neighborNode.neighbors.set(l, neighborSet);
95
- }
96
- neighborSet.add(id);
97
- if (neighborSet.size > M) {
98
- const toKeep = this.selectBestNeighbors(neighborNode.vector, neighborSet, M, l);
99
- neighborNode.neighbors.set(l, new Set(toKeep.map((n) => n.id)));
100
- }
101
- }
102
- }
103
- if (neighbors.length > 0) {
104
- currentNode = neighbors[0].id;
105
- }
106
- }
107
- this.nodes.set(id, newNode);
108
- if (level > this.maxLevel) {
109
- this.maxLevel = level;
110
- this.entryPoint = id;
111
- }
112
- }
113
- searchLayer(query, entryId, ef, level) {
114
- const visited = new Set([entryId]);
115
- const entryNode = this.nodes.get(entryId);
116
- if (!entryNode)
117
- return [];
118
- const entryDist = cosineDistance(query, entryNode.vector);
119
- const candidates = [
120
- { id: entryId, distance: entryDist },
121
- ];
122
- const results = [{ id: entryId, distance: entryDist }];
123
- while (candidates.length > 0) {
124
- candidates.sort((a, b) => a.distance - b.distance);
125
- const current = candidates.shift();
126
- if (!current)
127
- break;
128
- results.sort((a, b) => b.distance - a.distance);
129
- const furthestResult = results[0];
130
- if (current.distance > furthestResult.distance) {
131
- break;
132
- }
133
- const currentNode = this.nodes.get(current.id);
134
- if (!currentNode)
135
- continue;
136
- const neighbors = currentNode.neighbors.get(level);
137
- if (!neighbors)
138
- continue;
139
- for (const neighborId of neighbors) {
140
- if (visited.has(neighborId))
141
- continue;
142
- visited.add(neighborId);
143
- const neighborNode = this.nodes.get(neighborId);
144
- if (!neighborNode)
145
- continue;
146
- const dist = cosineDistance(query, neighborNode.vector);
147
- if (results.length < ef || dist < furthestResult.distance) {
148
- candidates.push({ id: neighborId, distance: dist });
149
- results.push({ id: neighborId, distance: dist });
150
- if (results.length > ef) {
151
- results.sort((a, b) => b.distance - a.distance);
152
- results.pop();
153
- }
154
- }
155
- }
156
- }
157
- results.sort((a, b) => a.distance - b.distance);
158
- return results;
159
- }
160
- selectBestNeighbors(nodeVector, neighborIds, M, _level) {
161
- const neighbors = [];
162
- for (const id of neighborIds) {
163
- const node = this.nodes.get(id);
164
- if (node) {
165
- neighbors.push({
166
- id,
167
- distance: cosineDistance(nodeVector, node.vector),
168
- });
169
- }
170
- }
171
- neighbors.sort((a, b) => a.distance - b.distance);
172
- return neighbors.slice(0, M);
173
- }
174
- async remove(id) {
175
- const node = this.nodes.get(id);
176
- if (!node)
177
- return;
178
- for (const [level, neighbors] of node.neighbors) {
179
- for (const neighborId of neighbors) {
180
- const neighborNode = this.nodes.get(neighborId);
181
- if (neighborNode) {
182
- neighborNode.neighbors.get(level)?.delete(id);
183
- }
184
- }
185
- }
186
- this.nodes.delete(id);
187
- if (this.entryPoint === id) {
188
- if (this.nodes.size === 0) {
189
- this.entryPoint = null;
190
- this.maxLevel = 0;
191
- }
192
- else {
193
- let maxLevel = 0;
194
- let newEntry = null;
195
- for (const [nodeId, n] of this.nodes) {
196
- if (n.level >= maxLevel) {
197
- maxLevel = n.level;
198
- newEntry = nodeId;
199
- }
200
- }
201
- this.entryPoint = newEntry;
202
- this.maxLevel = maxLevel;
203
- }
204
- }
205
- }
206
- async search(query, k, threshold = 0.5) {
207
- if (this.entryPoint === null || this.nodes.size === 0) {
208
- return [];
209
- }
210
- if (query.length !== this.dimension) {
211
- throw new Error(`Query dimension mismatch: expected ${this.dimension}, got ${query.length}`);
212
- }
213
- let currentNode = this.entryPoint;
214
- for (let l = this.maxLevel; l > 0; l--) {
215
- const closest = this.searchLayer(query, currentNode, 1, l);
216
- if (closest.length > 0) {
217
- currentNode = closest[0].id;
218
- }
219
- }
220
- const results = this.searchLayer(query, currentNode, Math.max(k, this.config.efSearch), 0);
221
- return results
222
- .slice(0, k)
223
- .filter((r) => 1 - r.distance >= threshold)
224
- .map((r) => ({
225
- id: r.id,
226
- distance: r.distance,
227
- similarity: 1 - r.distance,
228
- }));
229
- }
230
- async save() {
231
- if (this.saveCallback) {
232
- await this.saveCallback();
233
- }
234
- }
235
- async load() {
236
- if (this.loadCallback) {
237
- const index = await this.loadCallback();
238
- if (index) {
239
- this.deserialize(index);
240
- }
241
- }
242
- }
243
- serialize() {
244
- const nodes = {};
245
- for (const [id, node] of this.nodes) {
246
- const neighbors = {};
247
- for (const [level, set] of node.neighbors) {
248
- neighbors[level] = Array.from(set);
249
- }
250
- nodes[id] = {
251
- id: node.id,
252
- vector: node.vector,
253
- level: node.level,
254
- neighbors,
255
- };
256
- }
257
- return {
258
- dimension: this.dimension,
259
- config: this.config,
260
- nodes,
261
- entryPoint: this.entryPoint,
262
- maxLevel: this.maxLevel,
263
- };
264
- }
265
- deserialize(index) {
266
- this.dimension = index.dimension;
267
- this.config = index.config;
268
- this.entryPoint = index.entryPoint;
269
- this.maxLevel = index.maxLevel;
270
- this.nodes.clear();
271
- for (const [id, serialized] of Object.entries(index.nodes)) {
272
- const neighbors = new Map();
273
- for (const [level, ids] of Object.entries(serialized.neighbors)) {
274
- neighbors.set(Number(level), new Set(ids));
275
- }
276
- this.nodes.set(id, {
277
- id: serialized.id,
278
- vector: serialized.vector,
279
- level: serialized.level,
280
- neighbors,
281
- });
282
- }
283
- }
284
- getIndex() {
285
- return this.serialize();
286
- }
287
- size() {
288
- return this.nodes.size;
289
- }
290
- }
291
- //# sourceMappingURL=hnsw.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hnsw.js","sourceRoot":"","sources":["../../hnsw.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { type IDatabaseAdapter, type Plugin, type UUID } from "@elizaos/core";
2
- export declare function createDatabaseAdapter(config: {
3
- prefix?: string;
4
- }, agentId: UUID): IDatabaseAdapter;
5
- export declare const plugin: Plugin;
6
- export { LocalDatabaseAdapter } from "./adapter";
7
- export { SimpleHNSW } from "./hnsw";
8
- export { BrowserStorage } from "./storage-browser";
9
- export * from "./types";
10
- export default plugin;
11
- //# sourceMappingURL=index.browser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../../index.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EAErB,KAAK,MAAM,EACX,KAAK,IAAI,EACV,MAAM,eAAe,CAAC;AAiBvB,wBAAgB,qBAAqB,CACnC,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3B,OAAO,EAAE,IAAI,GACZ,gBAAgB,CAQlB;AAED,eAAO,MAAM,MAAM,EAAE,MAoCpB,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,cAAc,SAAS,CAAC;AAExB,eAAe,MAAM,CAAC"}
@@ -1,42 +0,0 @@
1
- import { logger, } from "@elizaos/core";
2
- import { LocalDatabaseAdapter } from "./adapter";
3
- import { BrowserStorage } from "./storage-browser";
4
- const GLOBAL_SINGLETONS = Symbol.for("@elizaos/plugin-localdb/global-singletons");
5
- const globalSymbols = globalThis;
6
- if (!globalSymbols[GLOBAL_SINGLETONS]) {
7
- globalSymbols[GLOBAL_SINGLETONS] = {};
8
- }
9
- const globalSingletons = globalSymbols[GLOBAL_SINGLETONS];
10
- export function createDatabaseAdapter(config, agentId) {
11
- const prefix = config.prefix ?? "elizaos";
12
- if (!globalSingletons.storageManager) {
13
- globalSingletons.storageManager = new BrowserStorage(prefix);
14
- }
15
- return new LocalDatabaseAdapter(globalSingletons.storageManager, agentId);
16
- }
17
- export const plugin = {
18
- name: "@elizaos/plugin-localdb",
19
- description: "Simple JSON-based local database storage for elizaOS (browser)",
20
- async init(_config, runtime) {
21
- logger.info({ src: "plugin:localdb" }, "Initializing local database plugin (browser)");
22
- const runtimeWithAdapter = runtime;
23
- const hasAdapter = runtimeWithAdapter.adapter !== undefined ||
24
- runtimeWithAdapter.databaseAdapter !== undefined ||
25
- (runtimeWithAdapter.hasDatabaseAdapter?.() ?? false);
26
- if (hasAdapter) {
27
- logger.debug({ src: "plugin:localdb" }, "Database adapter already exists, skipping initialization");
28
- return;
29
- }
30
- const prefix = runtime.getSetting("LOCALDB_PREFIX");
31
- const adapter = createDatabaseAdapter({ prefix }, runtime.agentId);
32
- await adapter.init();
33
- runtime.registerDatabaseAdapter(adapter);
34
- logger.success({ src: "plugin:localdb" }, "Local database adapter registered successfully");
35
- },
36
- };
37
- export { LocalDatabaseAdapter } from "./adapter";
38
- export { SimpleHNSW } from "./hnsw";
39
- export { BrowserStorage } from "./storage-browser";
40
- export * from "./types";
41
- export default plugin;
42
- //# sourceMappingURL=index.browser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../../index.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,GAGP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;AAMlF,MAAM,aAAa,GAAkB,UAA2B,CAAC;AAEjE,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACtC,aAAa,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;AACxC,CAAC;AACD,MAAM,gBAAgB,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAE1D,MAAM,UAAU,qBAAqB,CACnC,MAA2B,EAC3B,OAAa;IAEb,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC;IAE1C,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC;QACrC,gBAAgB,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,IAAI,oBAAoB,CAAC,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EAAE,gEAAgE;IAE7E,KAAK,CAAC,IAAI,CAAC,OAA+B,EAAE,OAAsB;QAChE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,8CAA8C,CAAC,CAAC;QAQvF,MAAM,kBAAkB,GAAG,OAA6B,CAAC;QAEzD,MAAM,UAAU,GACd,kBAAkB,CAAC,OAAO,KAAK,SAAS;YACxC,kBAAkB,CAAC,eAAe,KAAK,SAAS;YAChD,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,EAAE,IAAI,KAAK,CAAC,CAAC;QAEvD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CACV,EAAE,GAAG,EAAE,gBAAgB,EAAE,EACzB,0DAA0D,CAC3D,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAuB,CAAC;QAC1E,MAAM,OAAO,GAAG,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAEnE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAEzC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,gDAAgD,CAAC,CAAC;IAC9F,CAAC;CACF,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,cAAc,SAAS,CAAC;AAExB,eAAe,MAAM,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from "./index.node";
2
- export { default } from "./index.node";
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from "./index.node";
2
- export { default } from "./index.node";
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
@@ -1,11 +0,0 @@
1
- import { type IDatabaseAdapter, type Plugin, type UUID } from "@elizaos/core";
2
- export declare function createDatabaseAdapter(config: {
3
- dataDir?: string;
4
- }, agentId: UUID): IDatabaseAdapter;
5
- export declare const plugin: Plugin;
6
- export { LocalDatabaseAdapter } from "./adapter";
7
- export { SimpleHNSW } from "./hnsw";
8
- export { NodeStorage } from "./storage-node";
9
- export * from "./types";
10
- export default plugin;
11
- //# sourceMappingURL=index.node.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.node.d.ts","sourceRoot":"","sources":["../../index.node.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,gBAAgB,EAErB,KAAK,MAAM,EACX,KAAK,IAAI,EACV,MAAM,eAAe,CAAC;AAiBvB,wBAAgB,qBAAqB,CACnC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5B,OAAO,EAAE,IAAI,GACZ,gBAAgB,CAQlB;AAED,eAAO,MAAM,MAAM,EAAE,MAoCpB,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,cAAc,SAAS,CAAC;AAExB,eAAe,MAAM,CAAC"}
@@ -1,23 +0,0 @@
1
- import type { IStorage } from "./types";
2
- export declare class BrowserStorage implements IStorage {
3
- private prefix;
4
- private ready;
5
- constructor(prefix?: string);
6
- init(): Promise<void>;
7
- close(): Promise<void>;
8
- isReady(): Promise<boolean>;
9
- private getKey;
10
- private getCollectionPrefix;
11
- private getAllKeysForCollection;
12
- get<T>(collection: string, id: string): Promise<T | null>;
13
- getAll<T>(collection: string): Promise<T[]>;
14
- getWhere<T>(collection: string, predicate: (item: T) => boolean): Promise<T[]>;
15
- set<T>(collection: string, id: string, data: T): Promise<void>;
16
- delete(collection: string, id: string): Promise<boolean>;
17
- deleteMany(collection: string, ids: string[]): Promise<void>;
18
- deleteWhere<T = Record<string, unknown>>(collection: string, predicate: (item: T) => boolean): Promise<void>;
19
- count<T = Record<string, unknown>>(collection: string, predicate?: (item: T) => boolean): Promise<number>;
20
- saveRaw(filename: string, data: string): Promise<void>;
21
- loadRaw(filename: string): Promise<string | null>;
22
- }
23
- //# sourceMappingURL=storage-browser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage-browser.d.ts","sourceRoot":"","sources":["../../storage-browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,qBAAa,cAAe,YAAW,QAAQ;IAC7C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,SAAY;IAIxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAIjC,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,uBAAuB;IAYzB,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAWzD,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAkB3C,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAK9E,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASxD,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5D,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3C,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAC9B,OAAO,CAAC,IAAI,CAAC;IAkBV,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAC/B,OAAO,CAAC,MAAM,CAAC;IASZ,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAIxD"}