@openweave/weave-graph 0.2.0 → 0.2.1

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 (50) hide show
  1. package/dist/cjs/compression.d.ts +94 -0
  2. package/dist/cjs/compression.d.ts.map +1 -0
  3. package/dist/cjs/compression.js +215 -0
  4. package/dist/cjs/compression.js.map +1 -0
  5. package/dist/cjs/edge.d.ts +43 -0
  6. package/dist/cjs/edge.d.ts.map +1 -0
  7. package/dist/cjs/edge.js +83 -0
  8. package/dist/cjs/edge.js.map +1 -0
  9. package/dist/cjs/hebbian-weights.d.ts +100 -0
  10. package/dist/cjs/hebbian-weights.d.ts.map +1 -0
  11. package/dist/cjs/hebbian-weights.js +152 -0
  12. package/dist/cjs/hebbian-weights.js.map +1 -0
  13. package/dist/cjs/index.d.ts +193 -0
  14. package/dist/cjs/index.d.ts.map +1 -0
  15. package/dist/cjs/index.js +417 -0
  16. package/dist/cjs/index.js.map +1 -0
  17. package/dist/cjs/node.d.ts +43 -0
  18. package/dist/cjs/node.d.ts.map +1 -0
  19. package/dist/cjs/node.js +83 -0
  20. package/dist/cjs/node.js.map +1 -0
  21. package/dist/cjs/package.json +1 -0
  22. package/dist/cjs/persistence.d.ts +86 -0
  23. package/dist/cjs/persistence.d.ts.map +1 -0
  24. package/dist/cjs/persistence.js +215 -0
  25. package/dist/cjs/persistence.js.map +1 -0
  26. package/dist/cjs/synaptic-engine.d.ts +126 -0
  27. package/dist/cjs/synaptic-engine.d.ts.map +1 -0
  28. package/dist/cjs/synaptic-engine.js +243 -0
  29. package/dist/cjs/synaptic-engine.js.map +1 -0
  30. package/dist/cjs/types.d.ts +74 -0
  31. package/dist/cjs/types.d.ts.map +1 -0
  32. package/dist/cjs/types.js +30 -0
  33. package/dist/cjs/types.js.map +1 -0
  34. package/dist/hebbian-weights.d.ts +100 -0
  35. package/dist/hebbian-weights.d.ts.map +1 -0
  36. package/dist/hebbian-weights.js +148 -0
  37. package/dist/hebbian-weights.js.map +1 -0
  38. package/dist/index.d.ts +36 -2
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +65 -3
  41. package/dist/index.js.map +1 -1
  42. package/dist/persistence.d.ts +43 -15
  43. package/dist/persistence.d.ts.map +1 -1
  44. package/dist/persistence.js +109 -119
  45. package/dist/persistence.js.map +1 -1
  46. package/dist/synaptic-engine.d.ts +126 -0
  47. package/dist/synaptic-engine.d.ts.map +1 -0
  48. package/dist/synaptic-engine.js +236 -0
  49. package/dist/synaptic-engine.js.map +1 -0
  50. package/package.json +6 -4
@@ -0,0 +1,236 @@
1
+ import { EdgeBuilder } from "./edge.js";
2
+ const DEFAULT_THRESHOLD = 0.72;
3
+ const DEFAULT_MAX_CONNECTIONS = 20;
4
+ // ---------------------------------------------------------------------------
5
+ // Stop-words (excluded from tokenization)
6
+ // ---------------------------------------------------------------------------
7
+ const STOP_WORDS = new Set([
8
+ "a", "an", "the", "is", "are", "was", "were", "be", "been", "being",
9
+ "have", "has", "had", "do", "does", "did", "will", "would", "could",
10
+ "should", "may", "might", "shall", "can", "need", "dare", "ought",
11
+ "for", "and", "nor", "but", "or", "yet", "so", "in", "on", "at",
12
+ "to", "of", "by", "up", "as", "if", "it", "its", "with", "this",
13
+ "that", "from", "not", "no", "vs", "via", "than", "then", "use",
14
+ "using", "used",
15
+ ]);
16
+ // ---------------------------------------------------------------------------
17
+ // Tokenizer
18
+ // ---------------------------------------------------------------------------
19
+ /**
20
+ * Tokenize a text string into a normalised set of meaningful tokens.
21
+ *
22
+ * - Splits camelCase / PascalCase boundaries before lowercasing
23
+ * - Splits on whitespace and common punctuation
24
+ * - Filters tokens shorter than 2 chars
25
+ * - Removes stop-words
26
+ *
27
+ * @example
28
+ * tokenize("TypeScript generics") → Set { "typescript", "generics" }
29
+ * tokenize("useContextManager") → Set { "context", "manager" }
30
+ */
31
+ export function tokenize(text) {
32
+ // Split camelCase: "useContext" → "use Context"
33
+ const expanded = text
34
+ .replace(/([a-z])([A-Z])/g, "$1 $2")
35
+ .replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2");
36
+ const tokens = expanded
37
+ .toLowerCase()
38
+ .split(/[\s\-_/\\.,;:()[\]{}'"!?@#$%^&*+=<>|~`]+/)
39
+ .filter((t) => t.length >= 2 && !STOP_WORDS.has(t));
40
+ return new Set(tokens);
41
+ }
42
+ // ---------------------------------------------------------------------------
43
+ // Similarity
44
+ // ---------------------------------------------------------------------------
45
+ /**
46
+ * Jaccard similarity coefficient between two token sets.
47
+ * Returns 0 when both sets are empty.
48
+ *
49
+ * J(A,B) = |A ∩ B| / |A ∪ B|
50
+ */
51
+ export function jaccardSimilarity(a, b) {
52
+ if (a.size === 0 && b.size === 0)
53
+ return 0;
54
+ let intersectionSize = 0;
55
+ for (const token of a) {
56
+ if (b.has(token))
57
+ intersectionSize++;
58
+ }
59
+ const unionSize = a.size + b.size - intersectionSize;
60
+ return intersectionSize / unionSize;
61
+ }
62
+ /**
63
+ * Cosine similarity between two dense embedding vectors.
64
+ * Returns a value in [−1, 1]. Returns 0 when either vector has zero magnitude.
65
+ *
66
+ * cos(θ) = (A · B) / (|A| × |B|)
67
+ */
68
+ export function cosineSimilarity(a, b) {
69
+ if (a.length === 0 || b.length === 0)
70
+ return 0;
71
+ let dot = 0;
72
+ let magA = 0;
73
+ let magB = 0;
74
+ for (let i = 0; i < a.length; i++) {
75
+ dot += a[i] * b[i];
76
+ magA += a[i] * a[i];
77
+ magB += b[i] * b[i];
78
+ }
79
+ const denom = Math.sqrt(magA) * Math.sqrt(magB);
80
+ return denom === 0 ? 0 : dot / denom;
81
+ }
82
+ // ---------------------------------------------------------------------------
83
+ // SynapticEngine
84
+ // ---------------------------------------------------------------------------
85
+ /**
86
+ * SynapticEngine — retroactive keyword-based linking between nodes.
87
+ *
88
+ * When a new node enters the graph, `linkRetroactively()` scans **all**
89
+ * existing nodes — regardless of when they were created — and creates
90
+ * RELATES edges wherever the Jaccard similarity between tokenised
91
+ * labels/descriptions meets the configured threshold.
92
+ *
93
+ * This gives WeaveGraph its neuronal behaviour: new concepts automatically
94
+ * form connections with historically relevant knowledge.
95
+ *
96
+ * Produced edges carry `metadata.synapse = true` so callers can distinguish
97
+ * auto-generated synaptic edges from manually created ones.
98
+ *
99
+ * @example
100
+ * ```ts
101
+ * const engine = new SynapticEngine({ threshold: 0.72, maxConnections: 20 });
102
+ *
103
+ * // Inject into ContextGraphManager
104
+ * graph.setSynapticEngine(engine);
105
+ *
106
+ * // From now on, every addNode() triggers retroactive linking automatically
107
+ * graph.addNode(NodeBuilder.concept("TypeScript generics"));
108
+ * ```
109
+ */
110
+ export class SynapticEngine {
111
+ threshold;
112
+ maxConnections;
113
+ embeddingService;
114
+ constructor(options = {}) {
115
+ this.threshold = options.threshold ?? DEFAULT_THRESHOLD;
116
+ this.maxConnections = options.maxConnections ?? DEFAULT_MAX_CONNECTIONS;
117
+ this.embeddingService = options.embeddingService;
118
+ }
119
+ /** Read-only view of the resolved configuration. */
120
+ get config() {
121
+ return {
122
+ threshold: this.threshold,
123
+ maxConnections: this.maxConnections,
124
+ hasEmbeddings: this.embeddingService !== undefined,
125
+ };
126
+ }
127
+ /** Whether an embedding service is configured. */
128
+ get hasEmbeddingService() {
129
+ return this.embeddingService !== undefined;
130
+ }
131
+ /**
132
+ * Scan all existing nodes in `graph` and create RELATES edges to `newNode`
133
+ * wherever the Jaccard similarity between their tokenised text meets the
134
+ * threshold. At most `maxConnections` edges are created, selecting the
135
+ * highest-similarity candidates first.
136
+ *
137
+ * The new node itself **must already exist** in the graph before calling
138
+ * this method (so that `addEdge` can reference a valid node id).
139
+ *
140
+ * @returns The list of synaptic edges created and added to the graph.
141
+ */
142
+ linkRetroactively(newNode, graph) {
143
+ const existing = graph.getAllNodes().filter((n) => n.id !== newNode.id);
144
+ if (existing.length === 0)
145
+ return [];
146
+ const newTokens = tokenize(this._nodeText(newNode));
147
+ if (newTokens.size === 0)
148
+ return [];
149
+ // Score every existing node
150
+ const candidates = [];
151
+ for (const node of existing) {
152
+ const tokens = tokenize(this._nodeText(node));
153
+ const score = jaccardSimilarity(newTokens, tokens);
154
+ if (score >= this.threshold) {
155
+ candidates.push({ node, score });
156
+ }
157
+ }
158
+ // Select top-maxConnections by descending similarity
159
+ candidates.sort((a, b) => b.score - a.score);
160
+ const selected = candidates.slice(0, this.maxConnections);
161
+ const created = [];
162
+ for (const { node, score } of selected) {
163
+ const base = EdgeBuilder.relates(newNode.id, node.id, score);
164
+ const synapticEdge = {
165
+ ...base,
166
+ weight: score,
167
+ metadata: { synapse: true, similarity: score, mode: "keyword" },
168
+ };
169
+ graph.addEdge(synapticEdge);
170
+ created.push(synapticEdge);
171
+ }
172
+ return created;
173
+ }
174
+ /**
175
+ * Embedding-based retroactive linking (async).
176
+ *
177
+ * Requires an `embeddingService` to have been provided at construction time.
178
+ * If none is configured, falls back to keyword-based Jaccard similarity
179
+ * (identical to `linkRetroactively()`).
180
+ *
181
+ * Produced edges carry:
182
+ * - `metadata.synapse: true`
183
+ * - `metadata.similarity: number` — cosine similarity score
184
+ * - `metadata.mode: "embedding"` (or `"keyword"` on fallback)
185
+ *
186
+ * @returns The list of synaptic edges created and added to the graph.
187
+ */
188
+ async linkRetroactivelyEmbedding(newNode, graph) {
189
+ // No embedding service — fall back to keyword path
190
+ if (!this.embeddingService) {
191
+ return this.linkRetroactively(newNode, graph);
192
+ }
193
+ const existing = graph.getAllNodes().filter((n) => n.id !== newNode.id);
194
+ if (existing.length === 0)
195
+ return [];
196
+ const newText = this._nodeText(newNode);
197
+ if (newText.trim().length === 0)
198
+ return [];
199
+ // Embed new node + all existing nodes concurrently
200
+ const [newEmbed, ...existingEmbeds] = await Promise.all([
201
+ this.embeddingService.embed(newText),
202
+ ...existing.map((n) => this.embeddingService.embed(this._nodeText(n))),
203
+ ]);
204
+ // Score every existing node via cosine similarity
205
+ const candidates = [];
206
+ for (let i = 0; i < existing.length; i++) {
207
+ const score = cosineSimilarity(newEmbed.embedding, existingEmbeds[i].embedding);
208
+ if (score >= this.threshold) {
209
+ candidates.push({ node: existing[i], score });
210
+ }
211
+ }
212
+ // Select top-maxConnections by descending similarity
213
+ candidates.sort((a, b) => b.score - a.score);
214
+ const selected = candidates.slice(0, this.maxConnections);
215
+ const created = [];
216
+ for (const { node, score } of selected) {
217
+ const base = EdgeBuilder.relates(newNode.id, node.id, score);
218
+ const synapticEdge = {
219
+ ...base,
220
+ weight: score,
221
+ metadata: { synapse: true, similarity: score, mode: "embedding" },
222
+ };
223
+ graph.addEdge(synapticEdge);
224
+ created.push(synapticEdge);
225
+ }
226
+ return created;
227
+ }
228
+ // ------------------------------------------------------------------
229
+ // Private helpers
230
+ // ------------------------------------------------------------------
231
+ /** Combine label + description into a single text fingerprint for a node. */
232
+ _nodeText(node) {
233
+ return [node.label, node.description ?? ""].join(" ").trim();
234
+ }
235
+ }
236
+ //# sourceMappingURL=synaptic-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synaptic-engine.js","sourceRoot":"","sources":["../src/synaptic-engine.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@openweave/weave-graph",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "WeaveGraph — Persistent node & edge data model for AI agent context",
5
5
  "private": false,
6
6
  "license": "MIT",
7
7
  "type": "module",
8
- "main": "./dist/index.js",
8
+ "main": "./dist/cjs/index.js",
9
+ "module": "./dist/index.js",
9
10
  "types": "./dist/index.d.ts",
10
11
  "files": [
11
12
  "dist",
@@ -13,6 +14,7 @@
13
14
  ],
14
15
  "exports": {
15
16
  ".": {
17
+ "require": "./dist/cjs/index.js",
16
18
  "import": "./dist/index.js",
17
19
  "types": "./dist/index.d.ts"
18
20
  }
@@ -30,10 +32,10 @@
30
32
  "vitest": "3.0.0"
31
33
  },
32
34
  "dependencies": {
33
- "@openweave/weave-provider": "0.8.0"
35
+ "@openweave/weave-provider": "0.8.1"
34
36
  },
35
37
  "scripts": {
36
- "build": "tsc",
38
+ "build": "tsc && tsc -p tsconfig.cjs.json && node -e \"require('fs').writeFileSync('dist/cjs/package.json', '{\\\"type\\\":\\\"commonjs\\\"}')\"",
37
39
  "dev": "tsc --watch",
38
40
  "test": "vitest",
39
41
  "lint": "eslint src --max-warnings 0",