@objectstack/knowledge-memory 17.3.0 → 17.4.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,161 @@
1
1
  # @objectstack/knowledge-memory
2
2
 
3
+ ## 17.4.0
4
+
5
+ ### Patch Changes
6
+
7
+ - be92d46: These fourteen packages now declare `repository.directory`, so their npm pages carry a working "source" deep link to their own directory in the monorepo.
8
+
9
+ npm renders that field by concatenating it onto `repository.url`. None of these fourteen manifests carried a `repository` block at all, so every one of their npm pages offered no route from the package back to its code — not a broken link, no link. That is what this publishes: the block those pages read, naming each package's own directory.
10
+
11
+ Nothing else about these packages changes. No export, no runtime behaviour, no dependency and no file in the tarball other than the manifest's own `repository` key. The version bump exists because the fix is only real once it is published: the field lives in the manifest npm serves, so a corrected manifest sitting in the repository leaves the package page exactly as wrong as it was.
12
+
13
+ The rule behind it is now mechanical rather than remembered — `check:manifest-repository-directory` makes a publishable (non-private) workspace manifest declare the field naming its own directory, so a package added or moved after this cannot quietly go back to having no source link.
14
+ - Updated dependencies [fe0d9a4]
15
+ - Updated dependencies [ecd2158]
16
+ - Updated dependencies [f2b5e46]
17
+ - Updated dependencies [2ed6be6]
18
+ - Updated dependencies [ed7243d]
19
+ - Updated dependencies [6ba0db4]
20
+ - Updated dependencies [625b0c3]
21
+ - Updated dependencies [233222e]
22
+ - Updated dependencies [07f40e5]
23
+ - Updated dependencies [ceb4877]
24
+ - Updated dependencies [e9fcd6b]
25
+ - Updated dependencies [90e7e6d]
26
+ - Updated dependencies [2bdabe6]
27
+ - Updated dependencies [ca326b5]
28
+ - Updated dependencies [8f404a5]
29
+ - Updated dependencies [68437d4]
30
+ - Updated dependencies [abb140c]
31
+ - Updated dependencies [8333a6c]
32
+ - Updated dependencies [3e3ecb0]
33
+ - Updated dependencies [3030369]
34
+ - Updated dependencies [d5d8d50]
35
+ - Updated dependencies [e08892d]
36
+ - Updated dependencies [ae05f2e]
37
+ - Updated dependencies [b548e43]
38
+ - Updated dependencies [c463d03]
39
+ - Updated dependencies [64bd6a3]
40
+ - Updated dependencies [13c48c2]
41
+ - Updated dependencies [b0529e1]
42
+ - Updated dependencies [66dc6ab]
43
+ - Updated dependencies [6f94458]
44
+ - Updated dependencies [6e67b86]
45
+ - Updated dependencies [132742f]
46
+ - Updated dependencies [85a2459]
47
+ - Updated dependencies [50dc214]
48
+ - Updated dependencies [e89fa92]
49
+ - Updated dependencies [e9fcd6b]
50
+ - Updated dependencies [8976ea1]
51
+ - Updated dependencies [56fe8c2]
52
+ - Updated dependencies [acabd24]
53
+ - Updated dependencies [ab50c8f]
54
+ - Updated dependencies [6491463]
55
+ - Updated dependencies [89cf4d6]
56
+ - Updated dependencies [21c5dcb]
57
+ - Updated dependencies [6d4d5d3]
58
+ - Updated dependencies [ed5d557]
59
+ - Updated dependencies [bca21f7]
60
+ - Updated dependencies [e9fcd6b]
61
+ - Updated dependencies [2025b1f]
62
+ - Updated dependencies [1a7a7c9]
63
+ - Updated dependencies [e9fcd6b]
64
+ - Updated dependencies [ef3a138]
65
+ - Updated dependencies [68d5dfd]
66
+ - Updated dependencies [3e21cf0]
67
+ - Updated dependencies [4cfc93b]
68
+ - Updated dependencies [efd6b43]
69
+ - Updated dependencies [859ded3]
70
+ - Updated dependencies [fa125f3]
71
+ - Updated dependencies [74628d9]
72
+ - Updated dependencies [a646120]
73
+ - Updated dependencies [6f1ce7d]
74
+ - Updated dependencies [7778115]
75
+ - Updated dependencies [2c753fe]
76
+ - Updated dependencies [52804cd]
77
+ - Updated dependencies [3f89967]
78
+ - Updated dependencies [53cf263]
79
+ - Updated dependencies [21aabbc]
80
+ - Updated dependencies [9c270bb]
81
+ - Updated dependencies [76c8c5a]
82
+ - Updated dependencies [a84e1ce]
83
+ - Updated dependencies [bf1054a]
84
+ - Updated dependencies [d8d2776]
85
+ - Updated dependencies [222dc0f]
86
+ - Updated dependencies [e9fcd6b]
87
+ - Updated dependencies [32c917d]
88
+ - Updated dependencies [f9a3c32]
89
+ - Updated dependencies [f502898]
90
+ - Updated dependencies [51ae731]
91
+ - Updated dependencies [af7edfe]
92
+ - Updated dependencies [b60f48b]
93
+ - Updated dependencies [c78c918]
94
+ - Updated dependencies [cf9bda4]
95
+ - Updated dependencies [784cb92]
96
+ - Updated dependencies [7629f4d]
97
+ - Updated dependencies [51df9fd]
98
+ - Updated dependencies [a7da4de]
99
+ - Updated dependencies [de0bcdd]
100
+ - Updated dependencies [70f7d6d]
101
+ - Updated dependencies [c677cda]
102
+ - Updated dependencies [554a160]
103
+ - Updated dependencies [f7da71e]
104
+ - Updated dependencies [7f745c3]
105
+ - Updated dependencies [5eb24f8]
106
+ - Updated dependencies [2a3decc]
107
+ - Updated dependencies [cc00df2]
108
+ - Updated dependencies [cc00df2]
109
+ - Updated dependencies [f4e6adf]
110
+ - Updated dependencies [ee4a59b]
111
+ - Updated dependencies [4db3c61]
112
+ - Updated dependencies [5ca314a]
113
+ - Updated dependencies [e0af1a8]
114
+ - Updated dependencies [4771bd9]
115
+ - Updated dependencies [414c1fc]
116
+ - Updated dependencies [22c0279]
117
+ - Updated dependencies [0db2947]
118
+ - Updated dependencies [92b5d7f]
119
+ - Updated dependencies [613bfbd]
120
+ - Updated dependencies [abae16a]
121
+ - Updated dependencies [094b8fd]
122
+ - Updated dependencies [c7aca0d]
123
+ - Updated dependencies [c1d8f98]
124
+ - Updated dependencies [8e0b297]
125
+ - Updated dependencies [d4f9b2a]
126
+ - Updated dependencies [5f7fa1d]
127
+ - Updated dependencies [87f0ccc]
128
+ - Updated dependencies [aedbaef]
129
+ - Updated dependencies [a727043]
130
+ - Updated dependencies [c5d6803]
131
+ - Updated dependencies [10d05bb]
132
+ - Updated dependencies [69602e5]
133
+ - Updated dependencies [c3ce76c]
134
+ - Updated dependencies [7936b29]
135
+ - Updated dependencies [46803fa]
136
+ - Updated dependencies [c2a336c]
137
+ - Updated dependencies [9f890d3]
138
+ - Updated dependencies [0bb2318]
139
+ - Updated dependencies [f7db8f4]
140
+ - Updated dependencies [1ecee3e]
141
+ - Updated dependencies [9408b7f]
142
+ - Updated dependencies [e9fcd6b]
143
+ - Updated dependencies [9bcd9be]
144
+ - Updated dependencies [b398ad2]
145
+ - Updated dependencies [99261a7]
146
+ - Updated dependencies [81b426f]
147
+ - Updated dependencies [001af1c]
148
+ - Updated dependencies [fb77aa5]
149
+ - Updated dependencies [581d8f8]
150
+ - Updated dependencies [f81afe3]
151
+ - Updated dependencies [40a44b9]
152
+ - Updated dependencies [f89812e]
153
+ - Updated dependencies [7a7fb03]
154
+ - Updated dependencies [8fd246d]
155
+ - @objectstack/spec@17.4.0
156
+ - @objectstack/core@17.4.0
157
+ - @objectstack/service-knowledge@17.4.0
158
+
3
159
  ## 17.3.0
4
160
 
5
161
  ### Patch Changes
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport type {\n IKnowledgeAdapter,\n IKnowledgeService,\n AdapterContext,\n AdapterSearchOptions,\n} from '@objectstack/spec/contracts';\nimport type {\n KnowledgeDocument,\n KnowledgeHit,\n} from '@objectstack/spec/ai';\nimport { KNOWLEDGE_SERVICE } from '@objectstack/spec/contracts';\n\n/**\n * In-memory knowledge adapter. Stores per-source document maps,\n * chunks documents naively on paragraph boundaries (with a soft 800-char\n * cap), embeds each chunk as a sparse token-frequency vector, and\n * answers `search()` via brute-force cosine similarity.\n *\n * Deterministic — same input always produces the same hits — so it's\n * great for tests and reference implementations. **Don't use in prod.**\n */\nexport class KnowledgeMemoryAdapter implements IKnowledgeAdapter {\n readonly id: string;\n private readonly store = new Map<string, ChunkRecord[]>();\n\n constructor(id = 'memory') {\n this.id = id;\n }\n\n async upsert(docs: KnowledgeDocument[], ctx: AdapterContext): Promise<void> {\n const sourceId = ctx.source.id;\n const existing = this.store.get(sourceId) ?? [];\n const byDoc = new Map<string, ChunkRecord[]>();\n for (const c of existing) {\n const arr = byDoc.get(c.documentId) ?? [];\n arr.push(c);\n byDoc.set(c.documentId, arr);\n }\n for (const doc of docs) {\n byDoc.set(doc.id, chunkAndEmbed(doc));\n }\n this.store.set(sourceId, Array.from(byDoc.values()).flat());\n }\n\n async delete(documentIds: string[], ctx: AdapterContext): Promise<void> {\n const sourceId = ctx.source.id;\n const chunks = this.store.get(sourceId);\n if (!chunks) return;\n const dropSet = new Set(documentIds);\n this.store.set(\n sourceId,\n chunks.filter((c) => !dropSet.has(c.documentId)),\n );\n }\n\n async search(query: string, opts: AdapterSearchOptions): Promise<KnowledgeHit[]> {\n const chunks = this.store.get(opts.source.id) ?? [];\n if (chunks.length === 0) return [];\n const qVec = embedTokens(tokenize(query));\n const qNorm = vectorNorm(qVec);\n if (qNorm === 0) return [];\n\n const filter = opts.filter ?? {};\n const filtered = Object.keys(filter).length\n ? chunks.filter((c) => matchesFilter(c.metadata, filter))\n : chunks;\n\n const scored = filtered.map((c) => ({\n chunk: c,\n score: cosineSimilarity(qVec, c.vector, qNorm, c.vectorNorm),\n }));\n scored.sort((a, b) => b.score - a.score);\n const top = scored.slice(0, opts.topK).filter((s) => s.score > 0);\n return top.map<KnowledgeHit>(({ chunk, score }) => ({\n chunkId: chunk.chunkId,\n documentId: chunk.documentId,\n sourceId: opts.source.id,\n sourceRecordId: chunk.sourceRecordId,\n score,\n snippet: chunk.content,\n title: chunk.title,\n metadata: chunk.metadata,\n }));\n }\n\n async healthCheck(): Promise<{ ok: boolean; message?: string }> {\n return { ok: true, message: `memory adapter (${this.store.size} sources)` };\n }\n}\n\ninterface ChunkRecord {\n chunkId: string;\n documentId: string;\n sourceRecordId?: string;\n content: string;\n title?: string;\n metadata: Record<string, unknown>;\n vector: Map<string, number>;\n vectorNorm: number;\n}\n\nconst CHUNK_TARGET = 800;\n\nfunction chunkAndEmbed(doc: KnowledgeDocument): ChunkRecord[] {\n const paragraphs = doc.content\n .split(/\\n{2,}/)\n .map((p) => p.trim())\n .filter(Boolean);\n const chunks: string[] = [];\n let buf = '';\n for (const p of paragraphs.length ? paragraphs : [doc.content]) {\n if (buf && buf.length + p.length + 2 > CHUNK_TARGET) {\n chunks.push(buf);\n buf = '';\n }\n if (p.length > CHUNK_TARGET) {\n if (buf) {\n chunks.push(buf);\n buf = '';\n }\n for (let i = 0; i < p.length; i += CHUNK_TARGET) {\n chunks.push(p.slice(i, i + CHUNK_TARGET));\n }\n } else {\n buf = buf ? `${buf}\\n\\n${p}` : p;\n }\n }\n if (buf) chunks.push(buf);\n return chunks.map((content, idx) => {\n const vec = embedTokens(tokenize(content));\n return {\n chunkId: `${doc.id}#${idx}`,\n documentId: doc.id,\n sourceRecordId: doc.sourceRecordId,\n content,\n title: doc.title,\n metadata: doc.metadata ?? {},\n vector: vec,\n vectorNorm: vectorNorm(vec),\n };\n });\n}\n\nfunction tokenize(text: string): string[] {\n return text\n .toLowerCase()\n .split(/[^a-z0-9\\u4e00-\\u9fff]+/i)\n .filter((t) => t.length > 1);\n}\n\nfunction embedTokens(tokens: string[]): Map<string, number> {\n const vec = new Map<string, number>();\n for (const t of tokens) vec.set(t, (vec.get(t) ?? 0) + 1);\n return vec;\n}\n\nfunction vectorNorm(v: Map<string, number>): number {\n let s = 0;\n for (const x of v.values()) s += x * x;\n return Math.sqrt(s);\n}\n\nfunction cosineSimilarity(\n a: Map<string, number>,\n b: Map<string, number>,\n aNorm = vectorNorm(a),\n bNorm = vectorNorm(b),\n): number {\n if (aNorm === 0 || bNorm === 0) return 0;\n // iterate smaller map\n const [small, big] = a.size < b.size ? [a, b] : [b, a];\n let dot = 0;\n for (const [k, v] of small) {\n const w = big.get(k);\n if (w) dot += v * w;\n }\n return dot / (aNorm * bNorm);\n}\n\nfunction matchesFilter(\n metadata: Record<string, unknown>,\n filter: Record<string, unknown>,\n): boolean {\n for (const [k, v] of Object.entries(filter)) {\n if (metadata[k] !== v) return false;\n }\n return true;\n}\n\n/* ---------------------------------------------------------------- */\n/* Kernel plugin glue */\n/* ---------------------------------------------------------------- */\n\nimport type { Plugin, PluginContext } from '@objectstack/core';\n\nexport interface KnowledgeMemoryPluginOptions {\n /** Adapter id. @default 'memory' */\n id?: string;\n}\n\n/**\n * `KnowledgeMemoryPlugin` — registers a `KnowledgeMemoryAdapter` with\n * the host's `IKnowledgeService` during `start()`.\n */\nexport class KnowledgeMemoryPlugin implements Plugin {\n name = 'com.objectstack.plugin.knowledge-memory';\n version = '0.1.0';\n type = 'standard' as const;\n\n private readonly adapter: KnowledgeMemoryAdapter;\n\n constructor(opts: KnowledgeMemoryPluginOptions = {}) {\n this.adapter = new KnowledgeMemoryAdapter(opts.id ?? 'memory');\n }\n\n async init(_ctx: PluginContext): Promise<void> {\n // No-op: registration happens in start() once IKnowledgeService is up.\n }\n\n async start(ctx: PluginContext): Promise<void> {\n let svc: IKnowledgeService | undefined;\n try {\n svc = ctx.getService<IKnowledgeService>(KNOWLEDGE_SERVICE);\n } catch {\n ctx.logger.warn?.(\n 'KnowledgeMemoryPlugin: IKnowledgeService not registered — install KnowledgeServicePlugin first.',\n );\n return;\n }\n svc.registerAdapter(this.adapter.id, this.adapter);\n ctx.logger.info?.(`KnowledgeMemoryPlugin: adapter '${this.adapter.id}' registered.`);\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.\n\nimport type {\n IKnowledgeAdapter,\n IKnowledgeService,\n AdapterContext,\n AdapterSearchOptions,\n} from '@objectstack/spec/contracts';\nimport type {\n KnowledgeDocument,\n KnowledgeHit,\n} from '@objectstack/spec/ai';\nimport { KNOWLEDGE_SERVICE } from '@objectstack/spec/contracts';\n\n/**\n * In-memory knowledge adapter. Stores per-source document maps,\n * chunks documents naively on paragraph boundaries (with a soft 800-char\n * cap), embeds each chunk as a sparse token-frequency vector, and\n * answers `search()` via brute-force cosine similarity.\n *\n * Deterministic — same input always produces the same hits — so it's\n * great for tests and reference implementations. **Don't use in prod.**\n */\nexport class KnowledgeMemoryAdapter implements IKnowledgeAdapter {\n readonly id: string;\n private readonly store = new Map<string, ChunkRecord[]>();\n\n constructor(id = 'memory') {\n this.id = id;\n }\n\n async upsert(docs: KnowledgeDocument[], ctx: AdapterContext): Promise<void> {\n const sourceId = ctx.source.id;\n const existing = this.store.get(sourceId) ?? [];\n const byDoc = new Map<string, ChunkRecord[]>();\n for (const c of existing) {\n const arr = byDoc.get(c.documentId) ?? [];\n arr.push(c);\n byDoc.set(c.documentId, arr);\n }\n for (const doc of docs) {\n byDoc.set(doc.id, chunkAndEmbed(doc));\n }\n this.store.set(sourceId, Array.from(byDoc.values()).flat());\n }\n\n async delete(documentIds: string[], ctx: AdapterContext): Promise<void> {\n const sourceId = ctx.source.id;\n const chunks = this.store.get(sourceId);\n if (!chunks) return;\n const dropSet = new Set(documentIds);\n this.store.set(\n sourceId,\n chunks.filter((c) => !dropSet.has(c.documentId)),\n );\n }\n\n async search(query: string, opts: AdapterSearchOptions): Promise<KnowledgeHit[]> {\n const chunks = this.store.get(opts.source.id) ?? [];\n if (chunks.length === 0) return [];\n const qVec = embedTokens(tokenize(query));\n const qNorm = vectorNorm(qVec);\n if (qNorm === 0) return [];\n\n const filter = opts.filter ?? {};\n const filtered = Object.keys(filter).length\n ? chunks.filter((c) => matchesFilter(c.metadata, filter))\n : chunks;\n\n const scored = filtered.map((c) => ({\n chunk: c,\n score: cosineSimilarity(qVec, c.vector, qNorm, c.vectorNorm),\n }));\n scored.sort((a, b) => b.score - a.score);\n const top = scored.slice(0, opts.topK).filter((s) => s.score > 0);\n return top.map<KnowledgeHit>(({ chunk, score }) => ({\n chunkId: chunk.chunkId,\n documentId: chunk.documentId,\n sourceId: opts.source.id,\n sourceRecordId: chunk.sourceRecordId,\n score,\n snippet: chunk.content,\n title: chunk.title,\n metadata: chunk.metadata,\n }));\n }\n\n async healthCheck(): Promise<{ ok: boolean; message?: string }> {\n return { ok: true, message: `memory adapter (${this.store.size} sources)` };\n }\n}\n\ninterface ChunkRecord {\n chunkId: string;\n documentId: string;\n sourceRecordId?: string;\n content: string;\n title?: string;\n metadata: Record<string, unknown>;\n vector: Map<string, number>;\n vectorNorm: number;\n}\n\nconst CHUNK_TARGET = 800;\n\nfunction chunkAndEmbed(doc: KnowledgeDocument): ChunkRecord[] {\n const paragraphs = doc.content\n .split(/\\n{2,}/)\n .map((p) => p.trim())\n .filter(Boolean);\n const chunks: string[] = [];\n let buf = '';\n for (const p of paragraphs.length ? paragraphs : [doc.content]) {\n if (buf && buf.length + p.length + 2 > CHUNK_TARGET) {\n chunks.push(buf);\n buf = '';\n }\n if (p.length > CHUNK_TARGET) {\n if (buf) {\n chunks.push(buf);\n buf = '';\n }\n for (let i = 0; i < p.length; i += CHUNK_TARGET) {\n chunks.push(p.slice(i, i + CHUNK_TARGET));\n }\n } else {\n buf = buf ? `${buf}\\n\\n${p}` : p;\n }\n }\n if (buf) chunks.push(buf);\n return chunks.map((content, idx) => {\n const vec = embedTokens(tokenize(content));\n return {\n chunkId: `${doc.id}#${idx}`,\n documentId: doc.id,\n sourceRecordId: doc.sourceRecordId,\n content,\n title: doc.title,\n metadata: doc.metadata ?? {},\n vector: vec,\n vectorNorm: vectorNorm(vec),\n };\n });\n}\n\nfunction tokenize(text: string): string[] {\n return text\n .toLowerCase()\n .split(/[^a-z0-9\\u4e00-\\u9fff]+/i)\n .filter((t) => t.length > 1);\n}\n\nfunction embedTokens(tokens: string[]): Map<string, number> {\n const vec = new Map<string, number>();\n for (const t of tokens) vec.set(t, (vec.get(t) ?? 0) + 1);\n return vec;\n}\n\nfunction vectorNorm(v: Map<string, number>): number {\n let s = 0;\n for (const x of v.values()) s += x * x;\n return Math.sqrt(s);\n}\n\nfunction cosineSimilarity(\n a: Map<string, number>,\n b: Map<string, number>,\n aNorm = vectorNorm(a),\n bNorm = vectorNorm(b),\n): number {\n if (aNorm === 0 || bNorm === 0) return 0;\n // iterate smaller map\n const [small, big] = a.size < b.size ? [a, b] : [b, a];\n let dot = 0;\n for (const [k, v] of small) {\n const w = big.get(k);\n if (w) dot += v * w;\n }\n return dot / (aNorm * bNorm);\n}\n\nfunction matchesFilter(\n metadata: Record<string, unknown>,\n filter: Record<string, unknown>,\n): boolean {\n for (const [k, v] of Object.entries(filter)) {\n if (metadata[k] !== v) return false;\n }\n return true;\n}\n\n/* ---------------------------------------------------------------- */\n/* Kernel plugin glue */\n/* ---------------------------------------------------------------- */\n\nimport type { Plugin, PluginContext } from '@objectstack/core';\n\nexport interface KnowledgeMemoryPluginOptions {\n /** Adapter id. @default 'memory' */\n id?: string;\n}\n\n/**\n * `KnowledgeMemoryPlugin` — registers a `KnowledgeMemoryAdapter` with\n * the host's `IKnowledgeService` during `start()`.\n */\nexport class KnowledgeMemoryPlugin implements Plugin {\n name = 'com.objectstack.plugin.knowledge-memory';\n version = '0.1.0';\n type = 'standard' as const;\n\n private readonly adapter: KnowledgeMemoryAdapter;\n\n constructor(opts: KnowledgeMemoryPluginOptions = {}) {\n this.adapter = new KnowledgeMemoryAdapter(opts.id ?? 'memory');\n }\n\n async init(_ctx: PluginContext): Promise<void> {\n // No-op: registration happens in start() once IKnowledgeService is up.\n }\n\n async start(ctx: PluginContext): Promise<void> {\n let svc: IKnowledgeService | undefined;\n try {\n svc = ctx.getService<IKnowledgeService>(KNOWLEDGE_SERVICE);\n } catch {\n ctx.logger.warn?.(\n 'KnowledgeMemoryPlugin: IKnowledgeService not registered — install KnowledgeServicePlugin first.',\n );\n return;\n }\n svc.registerAdapter(this.adapter.id, this.adapter);\n ctx.logger.info?.(`KnowledgeMemoryPlugin: adapter '${this.adapter.id}' registered.`);\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@objectstack/knowledge-memory",
3
- "version": "17.3.0",
3
+ "version": "17.4.0",
4
4
  "license": "Apache-2.0",
5
5
  "description": "In-memory knowledge adapter for ObjectStack (dev / test reference implementation).",
6
6
  "main": "dist/index.js",
@@ -13,9 +13,9 @@
13
13
  }
14
14
  },
15
15
  "dependencies": {
16
- "@objectstack/core": "17.3.0",
17
- "@objectstack/service-knowledge": "17.3.0",
18
- "@objectstack/spec": "17.3.0"
16
+ "@objectstack/core": "17.4.0",
17
+ "@objectstack/service-knowledge": "17.4.0",
18
+ "@objectstack/spec": "17.4.0"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@types/node": "^26.2.0",
@@ -30,6 +30,11 @@
30
30
  "memory",
31
31
  "in-memory"
32
32
  ],
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "https://github.com/objectstack-ai/objectstack.git",
36
+ "directory": "packages/plugins/knowledge-memory"
37
+ },
33
38
  "files": [
34
39
  "dist",
35
40
  "README.md",