dsh-mnemon 0.1.5 → 0.2.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.
Files changed (230) hide show
  1. package/README.md +125 -104
  2. package/README.zh-CN.md +130 -109
  3. package/THIRD_PARTY_NOTICES.md +7 -0
  4. package/lib/client.js +4193 -1128
  5. package/lib/index.js +4326 -307
  6. package/lib/types/activity.d.ts +2 -18
  7. package/lib/types/channels.d.ts +1 -4
  8. package/lib/types/client/GlobalLocationSetting.d.ts +19 -0
  9. package/lib/types/client/MnemonLogo.d.ts +0 -1
  10. package/lib/types/client/MnemonPackSection.d.ts +5 -3
  11. package/lib/types/client/MnemonSaveAction.d.ts +1 -2
  12. package/lib/types/client/MnemonSettingsCard.d.ts +5 -4
  13. package/lib/types/client/MnemonTurnTail.d.ts +1 -2
  14. package/lib/types/client/MnemonView.d.ts +1 -3
  15. package/lib/types/client/MnemonViewAppearance.d.ts +0 -1
  16. package/lib/types/client/ProviderIcon.d.ts +8 -0
  17. package/lib/types/client/ProviderSettingsSection.d.ts +16 -0
  18. package/lib/types/client/anchor.d.ts +0 -1
  19. package/lib/types/client/api.d.ts +12 -19
  20. package/lib/types/client/dsh-compat.d.ts +0 -1
  21. package/lib/types/client/index.d.ts +0 -1
  22. package/lib/types/client/locales.d.ts +552 -1
  23. package/lib/types/client/settings.d.ts +4 -3
  24. package/lib/types/client/sidebar-entry.d.ts +0 -1
  25. package/lib/types/client/workspace-controller.d.ts +0 -1
  26. package/lib/types/client/workspace-mount.d.ts +1 -3
  27. package/lib/types/commands.d.ts +0 -1
  28. package/lib/types/config-values.d.ts +0 -1
  29. package/lib/types/config.d.ts +6 -80
  30. package/lib/types/contracts.d.ts +38 -62
  31. package/lib/types/documents.d.ts +2 -79
  32. package/lib/types/guidance.d.ts +0 -1
  33. package/lib/types/index.d.ts +0 -1
  34. package/lib/types/lifecycle.d.ts +32 -47
  35. package/lib/types/live-runtime.d.ts +0 -1
  36. package/lib/types/memory-bodies.d.ts +27 -23
  37. package/lib/types/pack.d.ts +2 -48
  38. package/lib/types/process.d.ts +4 -2
  39. package/lib/types/provider-placement.d.ts +26 -0
  40. package/lib/types/providers/byterover.d.ts +31 -0
  41. package/lib/types/providers/catalog.d.ts +23 -0
  42. package/lib/types/providers/hindsight.d.ts +19 -0
  43. package/lib/types/providers/holographic.d.ts +22 -0
  44. package/lib/types/providers/honcho.d.ts +18 -0
  45. package/lib/types/providers/http.d.ts +32 -0
  46. package/lib/types/providers/mem0.d.ts +17 -0
  47. package/lib/types/providers/openviking.d.ts +31 -0
  48. package/lib/types/providers/provider.d.ts +38 -0
  49. package/lib/types/providers/retaindb.d.ts +16 -0
  50. package/lib/types/providers/supermemory.d.ts +16 -0
  51. package/lib/types/review-activity.d.ts +2 -16
  52. package/lib/types/rpc.d.ts +1 -2
  53. package/lib/types/runner.d.ts +15 -11
  54. package/lib/types/runtime-memory.d.ts +2 -59
  55. package/lib/types/service.d.ts +54 -152
  56. package/lib/types/settings.d.ts +1 -4
  57. package/lib/types/shared/contracts.d.ts +869 -0
  58. package/lib/types/storage-scope.d.ts +2 -29
  59. package/lib/types/subagent.d.ts +11 -16
  60. package/lib/types/tools.d.ts +0 -1
  61. package/lib/types/version-updates.d.ts +2 -29
  62. package/package.json +22 -9
  63. package/docs/README.md +0 -8
  64. package/docs/assets/diagrams/en/memory-system-flow.png +0 -0
  65. package/docs/assets/diagrams/en/project-architecture.svg +0 -182
  66. package/docs/assets/diagrams/zh-CN/memory-system-flow.png +0 -0
  67. package/docs/assets/diagrams/zh-CN/project-architecture.svg +0 -182
  68. package/docs/assets/media/dsh-mnemon-memory-system-demo-poster.jpg +0 -0
  69. package/docs/assets/media/dsh-mnemon-memory-system-demo.gif +0 -0
  70. package/docs/assets/media/dsh-mnemon-memory-system-demo.mp4 +0 -0
  71. package/docs/assets/screenshots/conversation-memory-jump.png +0 -0
  72. package/docs/assets/screenshots/conversation-save-dialog.png +0 -0
  73. package/docs/assets/screenshots/conversation-turn-memory.png +0 -0
  74. package/docs/assets/screenshots/document-create-dialog.png +0 -0
  75. package/docs/assets/screenshots/documents-markdown.png +0 -0
  76. package/docs/assets/screenshots/entities-context.png +0 -0
  77. package/docs/assets/screenshots/memory-content.png +0 -0
  78. package/docs/assets/screenshots/overview-memory-graph.png +0 -0
  79. package/docs/assets/screenshots/recall-agent-answer.png +0 -0
  80. package/docs/assets/screenshots/remember-dialog.png +0 -0
  81. package/docs/assets/screenshots/runtime-memory-add.png +0 -0
  82. package/docs/assets/screenshots/runtime-memory.png +0 -0
  83. package/docs/assets/screenshots/settings-memory-system.png +0 -0
  84. package/docs/assets/screenshots/status-overview.png +0 -0
  85. package/docs/assets/screenshots/version-check.png +0 -0
  86. package/docs/en/README.md +0 -48
  87. package/docs/en/architecture.md +0 -133
  88. package/docs/en/configuration.md +0 -234
  89. package/docs/en/development.md +0 -198
  90. package/docs/en/getting-started.md +0 -199
  91. package/docs/en/interfaces.md +0 -181
  92. package/docs/en/operations.md +0 -173
  93. package/docs/en/project-overview.md +0 -145
  94. package/docs/en/roadmap.md +0 -41
  95. package/docs/en/storage-model.md +0 -185
  96. package/docs/en/ui-guide.md +0 -156
  97. package/docs/en/workflows.md +0 -290
  98. package/docs/zh-CN/README.md +0 -48
  99. package/docs/zh-CN/architecture.md +0 -133
  100. package/docs/zh-CN/configuration.md +0 -234
  101. package/docs/zh-CN/development.md +0 -198
  102. package/docs/zh-CN/getting-started.md +0 -199
  103. package/docs/zh-CN/interfaces.md +0 -181
  104. package/docs/zh-CN/operations.md +0 -173
  105. package/docs/zh-CN/project-overview.md +0 -145
  106. package/docs/zh-CN/roadmap.md +0 -41
  107. package/docs/zh-CN/storage-model.md +0 -185
  108. package/docs/zh-CN/ui-guide.md +0 -160
  109. package/docs/zh-CN/workflows.md +0 -290
  110. package/lib/client.js.map +0 -1
  111. package/lib/types/activity.d.ts.map +0 -1
  112. package/lib/types/activity.js +0 -93
  113. package/lib/types/activity.js.map +0 -1
  114. package/lib/types/channels.d.ts.map +0 -1
  115. package/lib/types/channels.js +0 -4
  116. package/lib/types/channels.js.map +0 -1
  117. package/lib/types/client/MnemonLogo.d.ts.map +0 -1
  118. package/lib/types/client/MnemonLogo.js +0 -6
  119. package/lib/types/client/MnemonLogo.js.map +0 -1
  120. package/lib/types/client/MnemonPackSection.d.ts.map +0 -1
  121. package/lib/types/client/MnemonPackSection.js +0 -136
  122. package/lib/types/client/MnemonPackSection.js.map +0 -1
  123. package/lib/types/client/MnemonSaveAction.d.ts.map +0 -1
  124. package/lib/types/client/MnemonSaveAction.js +0 -90
  125. package/lib/types/client/MnemonSaveAction.js.map +0 -1
  126. package/lib/types/client/MnemonSettingsCard.d.ts.map +0 -1
  127. package/lib/types/client/MnemonSettingsCard.js +0 -155
  128. package/lib/types/client/MnemonSettingsCard.js.map +0 -1
  129. package/lib/types/client/MnemonTurnTail.d.ts.map +0 -1
  130. package/lib/types/client/MnemonTurnTail.js +0 -56
  131. package/lib/types/client/MnemonTurnTail.js.map +0 -1
  132. package/lib/types/client/MnemonView.d.ts.map +0 -1
  133. package/lib/types/client/MnemonView.js +0 -1594
  134. package/lib/types/client/MnemonView.js.map +0 -1
  135. package/lib/types/client/MnemonViewAppearance.d.ts.map +0 -1
  136. package/lib/types/client/MnemonViewAppearance.js +0 -67
  137. package/lib/types/client/MnemonViewAppearance.js.map +0 -1
  138. package/lib/types/client/anchor.d.ts.map +0 -1
  139. package/lib/types/client/anchor.js +0 -46
  140. package/lib/types/client/anchor.js.map +0 -1
  141. package/lib/types/client/api.d.ts.map +0 -1
  142. package/lib/types/client/api.js +0 -150
  143. package/lib/types/client/api.js.map +0 -1
  144. package/lib/types/client/dsh-compat.d.ts.map +0 -1
  145. package/lib/types/client/dsh-compat.js +0 -2
  146. package/lib/types/client/dsh-compat.js.map +0 -1
  147. package/lib/types/client/index.d.ts.map +0 -1
  148. package/lib/types/client/index.js +0 -161
  149. package/lib/types/client/index.js.map +0 -1
  150. package/lib/types/client/locales.d.ts.map +0 -1
  151. package/lib/types/client/locales.js +0 -1172
  152. package/lib/types/client/locales.js.map +0 -1
  153. package/lib/types/client/settings.d.ts.map +0 -1
  154. package/lib/types/client/settings.js +0 -70
  155. package/lib/types/client/settings.js.map +0 -1
  156. package/lib/types/client/sidebar-entry.d.ts.map +0 -1
  157. package/lib/types/client/sidebar-entry.js +0 -134
  158. package/lib/types/client/sidebar-entry.js.map +0 -1
  159. package/lib/types/client/workspace-controller.d.ts.map +0 -1
  160. package/lib/types/client/workspace-controller.js +0 -21
  161. package/lib/types/client/workspace-controller.js.map +0 -1
  162. package/lib/types/client/workspace-mount.d.ts.map +0 -1
  163. package/lib/types/client/workspace-mount.js +0 -138
  164. package/lib/types/client/workspace-mount.js.map +0 -1
  165. package/lib/types/commands.d.ts.map +0 -1
  166. package/lib/types/commands.js +0 -104
  167. package/lib/types/commands.js.map +0 -1
  168. package/lib/types/config-values.d.ts.map +0 -1
  169. package/lib/types/config-values.js +0 -4
  170. package/lib/types/config-values.js.map +0 -1
  171. package/lib/types/config.d.ts.map +0 -1
  172. package/lib/types/config.js +0 -127
  173. package/lib/types/config.js.map +0 -1
  174. package/lib/types/contracts.d.ts.map +0 -1
  175. package/lib/types/contracts.js +0 -2
  176. package/lib/types/contracts.js.map +0 -1
  177. package/lib/types/documents.d.ts.map +0 -1
  178. package/lib/types/documents.js +0 -495
  179. package/lib/types/documents.js.map +0 -1
  180. package/lib/types/guidance.d.ts.map +0 -1
  181. package/lib/types/guidance.js +0 -34
  182. package/lib/types/guidance.js.map +0 -1
  183. package/lib/types/index.d.ts.map +0 -1
  184. package/lib/types/index.js +0 -55
  185. package/lib/types/index.js.map +0 -1
  186. package/lib/types/lifecycle.d.ts.map +0 -1
  187. package/lib/types/lifecycle.js +0 -456
  188. package/lib/types/lifecycle.js.map +0 -1
  189. package/lib/types/live-runtime.d.ts.map +0 -1
  190. package/lib/types/live-runtime.js +0 -146
  191. package/lib/types/live-runtime.js.map +0 -1
  192. package/lib/types/memory-bodies.d.ts.map +0 -1
  193. package/lib/types/memory-bodies.js +0 -186
  194. package/lib/types/memory-bodies.js.map +0 -1
  195. package/lib/types/pack.d.ts.map +0 -1
  196. package/lib/types/pack.js +0 -709
  197. package/lib/types/pack.js.map +0 -1
  198. package/lib/types/process.d.ts.map +0 -1
  199. package/lib/types/process.js +0 -65
  200. package/lib/types/process.js.map +0 -1
  201. package/lib/types/review-activity.d.ts.map +0 -1
  202. package/lib/types/review-activity.js +0 -37
  203. package/lib/types/review-activity.js.map +0 -1
  204. package/lib/types/rpc.d.ts.map +0 -1
  205. package/lib/types/rpc.js +0 -384
  206. package/lib/types/rpc.js.map +0 -1
  207. package/lib/types/runner.d.ts.map +0 -1
  208. package/lib/types/runner.js +0 -198
  209. package/lib/types/runner.js.map +0 -1
  210. package/lib/types/runtime-memory.d.ts.map +0 -1
  211. package/lib/types/runtime-memory.js +0 -415
  212. package/lib/types/runtime-memory.js.map +0 -1
  213. package/lib/types/service.d.ts.map +0 -1
  214. package/lib/types/service.js +0 -512
  215. package/lib/types/service.js.map +0 -1
  216. package/lib/types/settings.d.ts.map +0 -1
  217. package/lib/types/settings.js +0 -103
  218. package/lib/types/settings.js.map +0 -1
  219. package/lib/types/storage-scope.d.ts.map +0 -1
  220. package/lib/types/storage-scope.js +0 -179
  221. package/lib/types/storage-scope.js.map +0 -1
  222. package/lib/types/subagent.d.ts.map +0 -1
  223. package/lib/types/subagent.js +0 -624
  224. package/lib/types/subagent.js.map +0 -1
  225. package/lib/types/tools.d.ts.map +0 -1
  226. package/lib/types/tools.js +0 -341
  227. package/lib/types/tools.js.map +0 -1
  228. package/lib/types/version-updates.d.ts.map +0 -1
  229. package/lib/types/version-updates.js +0 -383
  230. package/lib/types/version-updates.js.map +0 -1
@@ -1,495 +0,0 @@
1
- import { createHash } from 'node:crypto';
2
- import { closeSync, existsSync, mkdirSync, openSync, readFileSync, renameSync, rmSync, statSync, writeFileSync, } from 'node:fs';
3
- import { basename, isAbsolute, join, relative, resolve, sep } from 'node:path';
4
- export const DOCUMENTS_VERSION = 1;
5
- export const DOCUMENTS_ACTIVE_LIMIT_BYTES = 10 * 1024 * 1024;
6
- const MAX_DOCUMENT_BYTES = 2 * 1024 * 1024;
7
- const LOCK_TIMEOUT_MS = 5_000;
8
- const LOCK_STALE_MS = 30_000;
9
- const LOCK_RETRY_MS = 20;
10
- export class DocumentCapacityError extends Error {
11
- projected;
12
- limit;
13
- candidates;
14
- constructor(projected, limit, candidates) {
15
- super(`Would exceed active document capacity: ${projected} bytes (limit ${limit}). Archive the least-recently-used active document before retrying.`);
16
- this.projected = projected;
17
- this.limit = limit;
18
- this.candidates = candidates;
19
- this.name = 'DocumentCapacityError';
20
- }
21
- }
22
- export class DocumentConflictError extends Error {
23
- constructor() {
24
- super('document changed while archival was running; the active copy was preserved');
25
- this.name = 'DocumentConflictError';
26
- }
27
- }
28
- function isRecord(value) {
29
- return typeof value === 'object' && value !== null && !Array.isArray(value);
30
- }
31
- function normalizeLine(value, field, maximum, required) {
32
- const normalized = value?.trim().replace(/\s+/gu, ' ') ?? '';
33
- if (required && normalized === '')
34
- throw new Error(`${field} is required`);
35
- if (normalized.length > maximum)
36
- throw new Error(`${field} is too long (max ${maximum} characters)`);
37
- return normalized;
38
- }
39
- function normalizeContent(value, required) {
40
- if (value === undefined && !required)
41
- return undefined;
42
- const normalized = value?.replace(/\0/gu, '').trim() ?? '';
43
- if (normalized === '')
44
- throw new Error('document content is required');
45
- const size = Buffer.byteLength(normalized, 'utf8');
46
- if (size > MAX_DOCUMENT_BYTES)
47
- throw new Error(`document content is too large (${size} bytes; max ${MAX_DOCUMENT_BYTES})`);
48
- return normalized;
49
- }
50
- function unique(values, maximum) {
51
- return [...new Set(values.map(value => value.trim()).filter(Boolean))].slice(0, maximum);
52
- }
53
- function hash(value) {
54
- return createHash('sha256').update(value).digest('hex');
55
- }
56
- function indexRevision(index) {
57
- return hash(JSON.stringify(index));
58
- }
59
- function slug(title) {
60
- const result = title.normalize('NFKD').toLowerCase().replace(/[^a-z0-9]+/gu, '-').replace(/^-|-$/gu, '').slice(0, 48);
61
- return result || 'document';
62
- }
63
- function yamlString(value) {
64
- return JSON.stringify(value);
65
- }
66
- function renderDocument(record, content) {
67
- const sources = record.sourcePaths.length === 0 ? ' []' : record.sourcePaths.map(path => ` - ${yamlString(path)}`).join('\n');
68
- const sessions = record.sessionIds.length === 0 ? ' []' : record.sessionIds.map(id => ` - ${yamlString(id)}`).join('\n');
69
- const bodies = record.memoryBodyIds.length === 0 ? ' []' : record.memoryBodyIds.map(id => ` - ${yamlString(id)}`).join('\n');
70
- return `---
71
- id: ${yamlString(record.id)}
72
- title: ${yamlString(record.title)}
73
- description: ${yamlString(record.description)}
74
- status: ${yamlString(record.status)}
75
- created_at: ${yamlString(record.createdAt)}
76
- updated_at: ${yamlString(record.updatedAt)}
77
- content_hash: ${yamlString(record.contentHash)}
78
- source_paths:
79
- ${sources}
80
- session_ids:
81
- ${sessions}
82
- memory_body_ids:
83
- ${bodies}
84
- ---
85
-
86
- ${content.trim()}\n`;
87
- }
88
- function documentBody(markdown) {
89
- if (!markdown.startsWith('---\n'))
90
- return markdown.trim();
91
- const end = markdown.indexOf('\n---\n', 4);
92
- return end < 0 ? markdown.trim() : markdown.slice(end + 5).trim();
93
- }
94
- function excerpt(content, maximum = 220) {
95
- const normalized = content.replace(/[#>*_`\[\]]/gu, '').replace(/\s+/gu, ' ').trim();
96
- return normalized.length <= maximum ? normalized : `${normalized.slice(0, maximum - 1)}…`;
97
- }
98
- function sleepSync(milliseconds) {
99
- Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, milliseconds);
100
- }
101
- function parseRecord(value) {
102
- if (!isRecord(value) || typeof value.id !== 'string' || typeof value.title !== 'string' || typeof value.description !== 'string')
103
- return undefined;
104
- if ((value.status !== 'active' && value.status !== 'archived') || typeof value.filename !== 'string' || typeof value.relativePath !== 'string')
105
- return undefined;
106
- if (typeof value.createdAt !== 'string' || typeof value.updatedAt !== 'string' || typeof value.lastAccessedAt !== 'string')
107
- return undefined;
108
- if (typeof value.revision !== 'number' || typeof value.contentHash !== 'string' || typeof value.sizeBytes !== 'number')
109
- return undefined;
110
- if (!Array.isArray(value.sourcePaths) || !Array.isArray(value.sessionIds) || !Array.isArray(value.memoryBodyIds))
111
- return undefined;
112
- return {
113
- id: value.id,
114
- title: value.title,
115
- description: value.description,
116
- status: value.status,
117
- filename: value.filename,
118
- relativePath: value.relativePath,
119
- sourcePaths: value.sourcePaths.filter((entry) => typeof entry === 'string'),
120
- sessionIds: value.sessionIds.filter((entry) => typeof entry === 'string'),
121
- createdAt: value.createdAt,
122
- updatedAt: value.updatedAt,
123
- lastAccessedAt: value.lastAccessedAt,
124
- revision: value.revision,
125
- contentHash: value.contentHash,
126
- sizeBytes: value.sizeBytes,
127
- ...(typeof value.archivedAt === 'string' ? { archivedAt: value.archivedAt } : {}),
128
- ...(typeof value.archiveSummary === 'string' ? { archiveSummary: value.archiveSummary } : {}),
129
- memoryBodyIds: value.memoryBodyIds.filter((entry) => typeof entry === 'string'),
130
- };
131
- }
132
- /** Project-scoped control plane for managed active and cold document copies. */
133
- export class DocumentController {
134
- limitBytes;
135
- now;
136
- workspaceRoot;
137
- storageRoot;
138
- directory;
139
- activeDirectory;
140
- archivedDirectory;
141
- indexPath;
142
- lockPath;
143
- managedRelativePrefix;
144
- queue = Promise.resolve();
145
- constructor(workspaceRoot, limitBytes = DOCUMENTS_ACTIVE_LIMIT_BYTES, now = () => new Date(), storageRoot) {
146
- this.limitBytes = limitBytes;
147
- this.now = now;
148
- this.workspaceRoot = resolve(workspaceRoot);
149
- if (!existsSync(this.workspaceRoot) || !statSync(this.workspaceRoot).isDirectory())
150
- throw new Error(`document workspace is unavailable: ${this.workspaceRoot}`);
151
- if (!Number.isSafeInteger(limitBytes) || limitBytes < 1)
152
- throw new Error('active document limit must be a positive integer');
153
- this.storageRoot = storageRoot === undefined ? join(this.workspaceRoot, '.mnemon') : resolve(storageRoot);
154
- this.managedRelativePrefix = storageRoot === undefined ? ['.mnemon', 'documents'].join('/') : 'documents';
155
- this.directory = join(this.storageRoot, 'documents');
156
- this.activeDirectory = join(this.directory, 'active');
157
- this.archivedDirectory = join(this.directory, 'archived');
158
- this.indexPath = join(this.directory, 'index.json');
159
- this.lockPath = join(this.directory, '.index.lock');
160
- this.initialize();
161
- }
162
- snapshot() {
163
- return this.withLock(() => this.snapshotUnlocked(this.readIndex()));
164
- }
165
- get(id) {
166
- return this.withLock(() => this.view(this.requireDocument(this.readIndex(), id)));
167
- }
168
- capacityPlan(request) {
169
- return this.withLock(() => {
170
- const index = this.readIndex();
171
- const active = index.documents.filter(record => record.status === 'active');
172
- const used = active.reduce((sum, record) => sum + record.sizeBytes, 0);
173
- let projected;
174
- let excludeId;
175
- if (request.action === 'create') {
176
- const now = this.now().toISOString();
177
- const title = normalizeLine(request.title, 'document title', 160, true);
178
- const content = normalizeContent(request.content, true);
179
- const id = crypto.randomUUID();
180
- const record = {
181
- id, title,
182
- description: normalizeLine(request.description, 'document description', 600, false),
183
- status: 'active', filename: `${slug(title)}-${id.slice(0, 8)}.md`, relativePath: '',
184
- sourcePaths: this.normalizeSourcePaths(request.sourcePaths ?? []), sessionIds: unique(request.sessionIds ?? [], 20),
185
- createdAt: now, updatedAt: now, lastAccessedAt: now, revision: 1,
186
- contentHash: hash(content), sizeBytes: 0, memoryBodyIds: [],
187
- };
188
- projected = used + Buffer.byteLength(renderDocument(record, content), 'utf8');
189
- }
190
- else {
191
- const current = this.requireDocument(index, request.id);
192
- if (current.status !== 'active')
193
- throw new Error('archived documents are immutable; create a new active revision instead');
194
- const content = normalizeContent(request.content, false) ?? this.readBody(current);
195
- const updated = {
196
- ...current,
197
- title: request.title === undefined ? current.title : normalizeLine(request.title, 'document title', 160, true),
198
- description: request.description === undefined ? current.description : normalizeLine(request.description, 'document description', 600, false),
199
- sourcePaths: request.sourcePaths === undefined ? current.sourcePaths : this.normalizeSourcePaths(request.sourcePaths),
200
- sessionIds: request.sessionIds === undefined ? current.sessionIds : unique([...current.sessionIds, ...request.sessionIds], 20),
201
- contentHash: hash(content), revision: current.revision + 1,
202
- };
203
- projected = used - current.sizeBytes + Buffer.byteLength(renderDocument(updated, content), 'utf8');
204
- excludeId = current.id;
205
- }
206
- const candidates = active
207
- .filter(record => record.id !== excludeId)
208
- .sort((left, right) => Date.parse(left.lastAccessedAt) - Date.parse(right.lastAccessedAt) || Date.parse(left.updatedAt) - Date.parse(right.updatedAt));
209
- return { projected, limit: this.limitBytes, fits: projected <= this.limitBytes, candidates };
210
- });
211
- }
212
- search(query, options = {}) {
213
- const operation = this.queue.then(() => this.withLock(() => {
214
- const index = this.readIndex();
215
- const normalized = query.trim().normalize('NFKC').toLocaleLowerCase();
216
- const tokens = normalized.match(/[\p{L}\p{N}_-]+/gu) ?? [];
217
- const includeArchived = options.includeArchived === true;
218
- const limit = Math.max(1, Math.min(50, Math.trunc(options.limit ?? 20)));
219
- const ranked = index.documents
220
- .filter(record => includeArchived || record.status === 'active')
221
- .map(record => {
222
- const view = this.view(record);
223
- const title = view.title.normalize('NFKC').toLocaleLowerCase();
224
- const description = view.description.normalize('NFKC').toLocaleLowerCase();
225
- const content = view.content.normalize('NFKC').toLocaleLowerCase();
226
- let score = normalized === '' ? 1 : title.includes(normalized) ? 12 : description.includes(normalized) ? 7 : content.includes(normalized) ? 4 : 0;
227
- for (const token of tokens)
228
- score += title.includes(token) ? 4 : description.includes(token) ? 2 : content.includes(token) ? 1 : 0;
229
- return { ...view, score, excerpt: excerpt(view.content) };
230
- })
231
- .filter(result => normalized === '' || result.score > 0)
232
- .sort((left, right) => right.score - left.score || Date.parse(right.updatedAt) - Date.parse(left.updatedAt))
233
- .slice(0, limit);
234
- if (ranked.length > 0) {
235
- const accessedAt = this.now().toISOString();
236
- const ids = new Set(ranked.map(result => result.id));
237
- index.documents = index.documents.map(record => ids.has(record.id) ? { ...record, lastAccessedAt: accessedAt } : record);
238
- this.persistIndex(index);
239
- }
240
- return { query: query.trim(), includeArchived, total: ranked.length, generatedAt: this.now().toISOString(), results: ranked };
241
- }));
242
- this.queue = operation.catch(() => undefined);
243
- return operation;
244
- }
245
- mutate(request) {
246
- const operation = this.queue.then(() => this.withLock(() => this.mutateLocked(request)));
247
- this.queue = operation.catch(() => undefined);
248
- return operation;
249
- }
250
- archive(id, expectedRevision, details) {
251
- const operation = this.queue.then(() => this.withLock(() => {
252
- const index = this.readIndex();
253
- const current = this.requireDocument(index, id);
254
- if (current.status !== 'active')
255
- throw new Error('only active documents can be archived');
256
- if (current.revision !== expectedRevision)
257
- throw new DocumentConflictError();
258
- const source = this.pathFor(current);
259
- const now = this.now().toISOString();
260
- const updated = {
261
- ...current,
262
- status: 'archived',
263
- relativePath: this.relativeManagedPath('archived', current.filename),
264
- updatedAt: now,
265
- lastAccessedAt: now,
266
- revision: current.revision + 1,
267
- archivedAt: now,
268
- archiveSummary: normalizeLine(details.summary, 'archive summary', 1000, true),
269
- memoryBodyIds: unique(details.memoryBodyIds, 20),
270
- };
271
- const content = this.readBody(current);
272
- const rendered = renderDocument(updated, content);
273
- updated.sizeBytes = Buffer.byteLength(rendered, 'utf8');
274
- const destination = this.pathFor(updated);
275
- renameSync(source, destination);
276
- try {
277
- writeFileSync(destination, rendered, 'utf8');
278
- index.documents = index.documents.map(record => record.id === id ? updated : record);
279
- this.persistIndex(index);
280
- }
281
- catch (error) {
282
- if (existsSync(destination))
283
- renameSync(destination, source);
284
- throw error;
285
- }
286
- return { success: true, action: 'archived', document: { ...updated, content }, snapshot: this.snapshotUnlocked(index) };
287
- }));
288
- this.queue = operation.catch(() => undefined);
289
- return operation;
290
- }
291
- mutateLocked(request) {
292
- const index = this.readIndex();
293
- const now = this.now().toISOString();
294
- if (request.action === 'create') {
295
- const title = normalizeLine(request.title, 'document title', 160, true);
296
- const description = normalizeLine(request.description, 'document description', 600, false);
297
- const content = normalizeContent(request.content, true);
298
- const id = crypto.randomUUID();
299
- const filename = `${slug(title)}-${id.slice(0, 8)}.md`;
300
- const record = {
301
- id, title, description, status: 'active', filename,
302
- relativePath: this.relativeManagedPath('active', filename),
303
- sourcePaths: this.normalizeSourcePaths(request.sourcePaths ?? []),
304
- sessionIds: unique(request.sessionIds ?? [], 20),
305
- createdAt: now, updatedAt: now, lastAccessedAt: now, revision: 1,
306
- contentHash: hash(content), sizeBytes: 0, memoryBodyIds: [],
307
- };
308
- const rendered = renderDocument(record, content);
309
- record.sizeBytes = Buffer.byteLength(rendered, 'utf8');
310
- this.assertCapacity(index, record.sizeBytes);
311
- this.persistDocument(record, content);
312
- index.documents.push(record);
313
- this.persistIndex(index);
314
- return { success: true, action: 'created', document: { ...record, content }, snapshot: this.snapshotUnlocked(index) };
315
- }
316
- const current = this.requireDocument(index, request.id);
317
- if (current.status !== 'active')
318
- throw new Error('archived documents are immutable; create a new active revision instead');
319
- const content = normalizeContent(request.content, false) ?? this.readBody(current);
320
- const updated = {
321
- ...current,
322
- title: request.title === undefined ? current.title : normalizeLine(request.title, 'document title', 160, true),
323
- description: request.description === undefined ? current.description : normalizeLine(request.description, 'document description', 600, false),
324
- sourcePaths: request.sourcePaths === undefined ? current.sourcePaths : this.normalizeSourcePaths(request.sourcePaths),
325
- sessionIds: request.sessionIds === undefined ? current.sessionIds : unique([...current.sessionIds, ...request.sessionIds], 20),
326
- updatedAt: now,
327
- lastAccessedAt: now,
328
- revision: current.revision + 1,
329
- contentHash: hash(content),
330
- };
331
- const rendered = renderDocument(updated, content);
332
- updated.sizeBytes = Buffer.byteLength(rendered, 'utf8');
333
- this.assertCapacity(index, updated.sizeBytes - current.sizeBytes, current.id);
334
- this.persistDocument(updated, content);
335
- index.documents = index.documents.map(record => record.id === current.id ? updated : record);
336
- this.persistIndex(index);
337
- return { success: true, action: 'updated', document: { ...updated, content }, snapshot: this.snapshotUnlocked(index) };
338
- }
339
- initialize() {
340
- mkdirSync(this.activeDirectory, { recursive: true });
341
- mkdirSync(this.archivedDirectory, { recursive: true });
342
- if (!existsSync(this.indexPath))
343
- this.atomicWrite(this.indexPath, `${JSON.stringify({ version: DOCUMENTS_VERSION, documents: [] }, null, 2)}\n`);
344
- this.readIndex();
345
- }
346
- readIndex() {
347
- const raw = JSON.parse(readFileSync(this.indexPath, 'utf8'));
348
- if (!isRecord(raw) || raw.version !== DOCUMENTS_VERSION || !Array.isArray(raw.documents))
349
- throw new Error(`invalid document index: ${this.indexPath}`);
350
- const documents = raw.documents.map(parseRecord);
351
- if (documents.some(record => record === undefined))
352
- throw new Error(`invalid document record in ${this.indexPath}`);
353
- return { version: DOCUMENTS_VERSION, documents: documents };
354
- }
355
- snapshotUnlocked(index) {
356
- const documents = index.documents.map(record => {
357
- const path = this.pathFor(record);
358
- const healthy = existsSync(path);
359
- return { ...record, healthy, excerpt: healthy ? excerpt(this.readBody(record)) : '' };
360
- });
361
- const active = documents.filter(record => record.status === 'active');
362
- return {
363
- workspaceRoot: this.workspaceRoot,
364
- directory: this.directory,
365
- indexPath: this.indexPath,
366
- generatedAt: this.now().toISOString(),
367
- revision: indexRevision(index),
368
- limitBytes: this.limitBytes,
369
- activeBytes: active.reduce((sum, record) => sum + record.sizeBytes, 0),
370
- activeCount: active.length,
371
- archivedCount: documents.length - active.length,
372
- total: documents.length,
373
- documents,
374
- };
375
- }
376
- requireDocument(index, rawId) {
377
- const id = rawId.trim();
378
- const record = index.documents.find(document => document.id === id);
379
- if (record === undefined)
380
- throw new Error(`document not found: ${id}`);
381
- return record;
382
- }
383
- assertCapacity(index, delta, excludeId) {
384
- const active = index.documents.filter(record => record.status === 'active');
385
- const used = active.reduce((sum, record) => sum + record.sizeBytes, 0);
386
- const projected = used + delta;
387
- if (projected <= this.limitBytes)
388
- return;
389
- const candidates = active
390
- .filter(record => record.id !== excludeId)
391
- .sort((left, right) => Date.parse(left.lastAccessedAt) - Date.parse(right.lastAccessedAt) || Date.parse(left.updatedAt) - Date.parse(right.updatedAt));
392
- throw new DocumentCapacityError(projected, this.limitBytes, candidates);
393
- }
394
- normalizeSourcePaths(paths) {
395
- return unique(paths, 50).map(value => {
396
- const absolute = resolve(this.workspaceRoot, value);
397
- const workspaceRelative = relative(this.workspaceRoot, absolute);
398
- if (workspaceRelative === '..' || workspaceRelative.startsWith(`..${sep}`) || isAbsolute(workspaceRelative))
399
- throw new Error(`source path must stay inside the workspace: ${value}`);
400
- if (absolute === this.directory || absolute.startsWith(`${this.directory}${sep}`))
401
- throw new Error('managed document paths cannot be used as source paths');
402
- return workspaceRelative.split(sep).join('/') || '.';
403
- });
404
- }
405
- relativeManagedPath(status, filename) {
406
- return [this.managedRelativePrefix, status, basename(filename)].join('/');
407
- }
408
- pathFor(record) {
409
- const legacyPrefix = ['.mnemon', 'documents'].join('/');
410
- const relativePath = record.relativePath === legacyPrefix || record.relativePath.startsWith(`${legacyPrefix}/`)
411
- ? record.relativePath.slice('.mnemon/'.length)
412
- : record.relativePath;
413
- const path = resolve(this.storageRoot, relativePath);
414
- const managedRoot = `${resolve(this.directory)}${sep}`;
415
- if (!path.startsWith(managedRoot))
416
- throw new Error('document index contains an unsafe managed path');
417
- return path;
418
- }
419
- readBody(record) {
420
- return documentBody(readFileSync(this.pathFor(record), 'utf8'));
421
- }
422
- view(record) {
423
- return { ...record, content: this.readBody(record) };
424
- }
425
- persistDocument(record, content) {
426
- this.atomicWrite(this.pathFor(record), renderDocument(record, content));
427
- }
428
- persistIndex(index) {
429
- this.atomicWrite(this.indexPath, `${JSON.stringify(index, null, 2)}\n`);
430
- }
431
- atomicWrite(path, content) {
432
- const temporary = `${path}.${process.pid}.${crypto.randomUUID()}.tmp`;
433
- writeFileSync(temporary, content, { encoding: 'utf8', mode: 0o600 });
434
- renameSync(temporary, path);
435
- }
436
- withLock(callback) {
437
- const deadline = Date.now() + LOCK_TIMEOUT_MS;
438
- let descriptor;
439
- while (descriptor === undefined) {
440
- try {
441
- descriptor = openSync(this.lockPath, 'wx', 0o600);
442
- }
443
- catch (error) {
444
- const code = error.code;
445
- if (code !== 'EEXIST')
446
- throw error;
447
- try {
448
- if (Date.now() - statSync(this.lockPath).mtimeMs > LOCK_STALE_MS)
449
- rmSync(this.lockPath, { force: true });
450
- }
451
- catch { }
452
- if (Date.now() >= deadline)
453
- throw new Error(`timed out waiting for document lock: ${this.lockPath}`);
454
- sleepSync(LOCK_RETRY_MS);
455
- }
456
- }
457
- try {
458
- return callback();
459
- }
460
- finally {
461
- closeSync(descriptor);
462
- rmSync(this.lockPath, { force: true });
463
- }
464
- }
465
- }
466
- /** Resolves one cached controller per canonical DSH workspace. */
467
- export class DocumentManager {
468
- limitBytes;
469
- now;
470
- storageRoot;
471
- controllers = new Map();
472
- constructor(limitBytes = DOCUMENTS_ACTIVE_LIMIT_BYTES, now = () => new Date(), storageRoot) {
473
- this.limitBytes = limitBytes;
474
- this.now = now;
475
- this.storageRoot = storageRoot;
476
- }
477
- forWorkspace(workspaceRoot) {
478
- const root = resolve(workspaceRoot);
479
- const storageRoot = this.storageRoot?.();
480
- const key = storageRoot === undefined ? root : `${resolve(storageRoot)}\0${root}`;
481
- let controller = this.controllers.get(key);
482
- if (controller === undefined) {
483
- controller = new DocumentController(root, this.limitBytes, this.now, storageRoot);
484
- this.controllers.set(key, controller);
485
- }
486
- return controller;
487
- }
488
- forAgent(agent) {
489
- const cwd = agent.session.header?.cwd;
490
- if (cwd === undefined || cwd.trim() === '')
491
- throw new Error('the current DSH session has no workspace for Mnemon Documents');
492
- return this.forWorkspace(cwd);
493
- }
494
- }
495
- //# sourceMappingURL=documents.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/documents.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"guidance.d.ts","sourceRoot":"","sources":["../../src/guidance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAElE,eAAO,MAAM,qBAAqB,mBAAmB,CAAA;AACrD,eAAO,MAAM,2BAA2B,0BAA0B,CAAA;AAClE,eAAO,MAAM,gBAAgB,8VAA8V,CAAA;AAkB3X,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAI,CAM9G;AAED,0FAA0F;AAC1F,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,gBAAgB,EAAE,aAAa,EAAE,uBAAuB,GAAG,IAAI,CAMhH;AAED,gFAAgF;AAChF,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAO5H"}
@@ -1,34 +0,0 @@
1
- export const GUIDANCE_SECTION_NAME = 'mnemon:routing';
2
- export const RUNTIME_MEMORY_SECTION_NAME = 'mnemon:runtime-memory';
3
- export const ROUTING_GUIDANCE = 'Use memory only by need. For substantial project records, search active Mnemon Documents before deep recall. Call mnemon_recall when durable history may matter or an exact prior detail is missing; never infer a missing historical rule. New explicit reusable facts normally go to mnemon_runtime_memory. A write completes only with a tool receipt.';
4
- function systemPrompt(ctx) {
5
- return ctx.get('systemPrompt');
6
- }
7
- function scopedSystemPrompt(agent) {
8
- return agent.ctx.get?.('systemPrompt');
9
- }
10
- export function registerGuidance(ctx, config) {
11
- systemPrompt(ctx)?.section?.({
12
- name: GUIDANCE_SECTION_NAME,
13
- order: 150,
14
- text: () => config?.routingGuidance === false ? '' : ROUTING_GUIDANCE,
15
- });
16
- }
17
- /** Inject the latest committed USER.md/MEMORY.md projections on every prompt assembly. */
18
- export function registerRuntimeMemoryContext(ctx, runtimeMemory) {
19
- systemPrompt(ctx)?.section?.({
20
- name: RUNTIME_MEMORY_SECTION_NAME,
21
- order: 145,
22
- text: () => runtimeMemory.contextText(),
23
- });
24
- }
25
- /** Shadow the global fallback with the current Agent workspace's hot memory. */
26
- export function registerAgentRuntimeMemoryContext(agent, runtimeMemory) {
27
- const dispose = scopedSystemPrompt(agent)?.section?.({
28
- name: RUNTIME_MEMORY_SECTION_NAME,
29
- order: 145,
30
- text: () => runtimeMemory().contextText(),
31
- });
32
- return typeof dispose === 'function' ? dispose : () => { };
33
- }
34
- //# sourceMappingURL=guidance.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"guidance.js","sourceRoot":"","sources":["../../src/guidance.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAA;AACrD,MAAM,CAAC,MAAM,2BAA2B,GAAG,uBAAuB,CAAA;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG,2VAA2V,CAAA;AAE3X,SAAS,YAAY,CAAC,GAAqB;IAGzC,OAAO,GAAG,CAAC,GAAG,CAAC,cAAc,CAEhB,CAAA;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAgB;IAG1C,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,cAAc,CAExB,CAAA;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAqB,EAAE,MAAgD;IACtG,YAAY,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC;QAC3B,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB;KACtE,CAAC,CAAA;AACJ,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,4BAA4B,CAAC,GAAqB,EAAE,aAAsC;IACxG,YAAY,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC;QAC3B,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE;KACxC,CAAC,CAAA;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,iCAAiC,CAAC,KAAgB,EAAE,aAA4C;IAC9G,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;QACnD,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE;KAC1C,CAAC,CAAA;IACF,OAAO,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAqB,CAAC,CAAC,CAAC,GAAG,EAAE,GAAE,CAAC,CAAA;AACzE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,wBAAwB,EAAE,KAAK,MAAM,IAAI,YAAY,EAAE,MAAM,aAAa,CAAA;AAG7H,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAA2B,MAAM,mBAAmB,CAAA;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAE3D,eAAO,MAAM,IAAI,eAAe,CAAA;AAChC,eAAO,MAAM,MAAM,UAAgF,CAAA;AACnG,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,wBAAwB,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAA;AACvS,YAAY,EAAE,YAAY,EAAE,CAAA;AAE5B,gGAAgG;AAChG,wBAAgB,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,GAAE,YAAiB,GAAG,IAAI,CAgC1E"}
@@ -1,55 +0,0 @@
1
- import { Config, InteractionConfig, resolveConfig, resolveInteractionConfig } from "./config.js";
2
- import { registerCommands } from "./commands.js";
3
- import { DocumentManager } from "./documents.js";
4
- import { registerGuidance, registerRuntimeMemoryContext } from "./guidance.js";
5
- import { createRuntimeGraph, LiveMnemonRuntime } from "./live-runtime.js";
6
- import { MnemonLifecycle } from "./lifecycle.js";
7
- import { registerRpc } from "./rpc.js";
8
- import { createRunner } from "./runner.js";
9
- import { RuntimeMemoryController } from "./runtime-memory.js";
10
- import { MnemonService } from "./service.js";
11
- import { registerSettingsRpc } from "./settings.js";
12
- import { MnemonSubagentCoordinator } from "./subagent.js";
13
- import { registerTools } from "./tools.js";
14
- import { StorageScopeInspector } from "./storage-scope.js";
15
- import { MnemonPackManager } from "./pack.js";
16
- import { VersionUpdateManager } from "./version-updates.js";
17
- export const name = 'dsh-mnemon';
18
- export const inject = ['tools', 'settings', 'commands', 'agents', 'subagents', 'workspaceRegistry'];
19
- export { Config, InteractionConfig, resolveConfig, resolveInteractionConfig, DocumentManager, LiveMnemonRuntime, MnemonLifecycle, MnemonService, MnemonSubagentCoordinator, RuntimeMemoryController, StorageScopeInspector, MnemonPackManager, VersionUpdateManager, createRunner, createRuntimeGraph };
20
- /** Mount native model tools on every DSH surface and UI RPC only when Web connection exists. */
21
- export function apply(rawContext, config = {}) {
22
- const ctx = rawContext;
23
- const prepared = new WeakMap();
24
- const settings = ctx.settings.register('mnemon', Config, {
25
- base: config,
26
- applies: 'live',
27
- validate: value => {
28
- prepared.set(value, createRuntimeGraph(resolveConfig(value)));
29
- },
30
- });
31
- const initialSettings = settings.get();
32
- const runtime = new LiveMnemonRuntime(prepared.get(initialSettings) ?? createRuntimeGraph(resolveConfig(initialSettings)), ctx.workspaceRegistry, ctx.agents);
33
- const resolved = runtime.config;
34
- ctx.on('settings/updated', ((namespace, next) => {
35
- if (namespace !== 'mnemon')
36
- return;
37
- runtime.swap(prepared.get(next) ?? createRuntimeGraph(resolveConfig(next)));
38
- }));
39
- ctx.settings.register('mnemon-ui', InteractionConfig, {
40
- base: resolveInteractionConfig(resolved.conversationInteraction),
41
- applies: 'live',
42
- });
43
- const coordinator = new MnemonSubagentCoordinator(ctx.subagents, runtime);
44
- const lifecycle = new MnemonLifecycle(ctx, coordinator, runtime.config, runtime);
45
- ctx.effect(() => lifecycle.start(), 'dsh-mnemon.lifecycle-root()');
46
- registerTools(ctx, runtime, coordinator);
47
- registerCommands(ctx.commands, runtime, coordinator);
48
- registerGuidance(ctx, resolved);
49
- registerRuntimeMemoryContext(ctx, runtime.runtimeMemory);
50
- ctx.inject(['connection'], (webContext) => {
51
- registerRpc(webContext.connection, runtime, lifecycle);
52
- registerSettingsRpc(webContext.connection, ctx.settings);
53
- });
54
- }
55
- //# sourceMappingURL=index.js.map