dsh-mnemon 0.1.0 → 0.1.2

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 (148) hide show
  1. package/README.en.md +33 -3
  2. package/README.md +33 -3
  3. package/SECURITY.md +89 -0
  4. package/cordis.patch.yml +1 -0
  5. package/docs/en/README.md +1 -0
  6. package/docs/en/configuration.md +17 -7
  7. package/docs/en/getting-started.md +23 -5
  8. package/docs/en/interfaces.md +17 -3
  9. package/docs/en/operations.md +9 -4
  10. package/docs/en/project-overview.md +3 -1
  11. package/docs/en/roadmap.md +1 -1
  12. package/docs/en/storage-model.md +1 -1
  13. package/docs/zh-CN/README.md +1 -0
  14. package/docs/zh-CN/configuration.md +17 -7
  15. package/docs/zh-CN/getting-started.md +23 -5
  16. package/docs/zh-CN/interfaces.md +17 -3
  17. package/docs/zh-CN/operations.md +9 -4
  18. package/docs/zh-CN/project-overview.md +3 -1
  19. package/docs/zh-CN/roadmap.md +1 -1
  20. package/docs/zh-CN/storage-model.md +1 -1
  21. package/lib/client.js +2545 -620
  22. package/lib/client.js.map +1 -1
  23. package/lib/index.js +3816 -2481
  24. package/lib/types/activity.d.ts +32 -0
  25. package/lib/types/activity.d.ts.map +1 -0
  26. package/lib/types/activity.js +93 -0
  27. package/lib/types/activity.js.map +1 -0
  28. package/lib/types/client/MnemonPackSection.d.ts +11 -0
  29. package/lib/types/client/MnemonPackSection.d.ts.map +1 -0
  30. package/lib/types/client/MnemonPackSection.js +136 -0
  31. package/lib/types/client/MnemonPackSection.js.map +1 -0
  32. package/lib/types/client/MnemonSaveAction.d.ts +13 -0
  33. package/lib/types/client/MnemonSaveAction.d.ts.map +1 -0
  34. package/lib/types/client/MnemonSaveAction.js +141 -0
  35. package/lib/types/client/MnemonSaveAction.js.map +1 -0
  36. package/lib/types/client/MnemonSettingsCard.d.ts +9 -3
  37. package/lib/types/client/MnemonSettingsCard.d.ts.map +1 -1
  38. package/lib/types/client/MnemonSettingsCard.js +98 -51
  39. package/lib/types/client/MnemonSettingsCard.js.map +1 -1
  40. package/lib/types/client/MnemonToolviews.d.ts +19 -0
  41. package/lib/types/client/MnemonToolviews.d.ts.map +1 -0
  42. package/lib/types/client/MnemonToolviews.js +172 -0
  43. package/lib/types/client/MnemonToolviews.js.map +1 -0
  44. package/lib/types/client/MnemonTurnTail.d.ts +18 -0
  45. package/lib/types/client/MnemonTurnTail.d.ts.map +1 -0
  46. package/lib/types/client/MnemonTurnTail.js +44 -0
  47. package/lib/types/client/MnemonTurnTail.js.map +1 -0
  48. package/lib/types/client/MnemonView.d.ts +13 -0
  49. package/lib/types/client/MnemonView.d.ts.map +1 -1
  50. package/lib/types/client/MnemonView.js +33 -14
  51. package/lib/types/client/MnemonView.js.map +1 -1
  52. package/lib/types/client/anchor.d.ts +28 -0
  53. package/lib/types/client/anchor.d.ts.map +1 -0
  54. package/lib/types/client/anchor.js +46 -0
  55. package/lib/types/client/anchor.js.map +1 -0
  56. package/lib/types/client/api.d.ts +17 -2
  57. package/lib/types/client/api.d.ts.map +1 -1
  58. package/lib/types/client/api.js +86 -25
  59. package/lib/types/client/api.js.map +1 -1
  60. package/lib/types/client/dsh-compat.d.ts +21 -0
  61. package/lib/types/client/dsh-compat.d.ts.map +1 -0
  62. package/lib/types/client/dsh-compat.js +2 -0
  63. package/lib/types/client/dsh-compat.js.map +1 -0
  64. package/lib/types/client/index.d.ts +1 -1
  65. package/lib/types/client/index.d.ts.map +1 -1
  66. package/lib/types/client/index.js +140 -12
  67. package/lib/types/client/index.js.map +1 -1
  68. package/lib/types/client/locales.d.ts +272 -4
  69. package/lib/types/client/locales.d.ts.map +1 -1
  70. package/lib/types/client/locales.js +292 -24
  71. package/lib/types/client/locales.js.map +1 -1
  72. package/lib/types/client/settings.d.ts +10 -5
  73. package/lib/types/client/settings.d.ts.map +1 -1
  74. package/lib/types/client/settings.js +32 -11
  75. package/lib/types/client/settings.js.map +1 -1
  76. package/lib/types/client/sidebar-entry.d.ts +6 -0
  77. package/lib/types/client/sidebar-entry.d.ts.map +1 -0
  78. package/lib/types/client/sidebar-entry.js +132 -0
  79. package/lib/types/client/sidebar-entry.js.map +1 -0
  80. package/lib/types/client/workspace-controller.d.ts +15 -0
  81. package/lib/types/client/workspace-controller.d.ts.map +1 -0
  82. package/lib/types/client/workspace-controller.js +21 -0
  83. package/lib/types/client/workspace-controller.js.map +1 -0
  84. package/lib/types/client/workspace-mount.d.ts +8 -0
  85. package/lib/types/client/workspace-mount.d.ts.map +1 -0
  86. package/lib/types/client/workspace-mount.js +135 -0
  87. package/lib/types/client/workspace-mount.js.map +1 -0
  88. package/lib/types/commands.d.ts +10 -2
  89. package/lib/types/commands.d.ts.map +1 -1
  90. package/lib/types/commands.js +5 -1
  91. package/lib/types/commands.js.map +1 -1
  92. package/lib/types/config.d.ts +42 -3
  93. package/lib/types/config.d.ts.map +1 -1
  94. package/lib/types/config.js +80 -6
  95. package/lib/types/config.js.map +1 -1
  96. package/lib/types/contracts.d.ts +27 -37
  97. package/lib/types/contracts.d.ts.map +1 -1
  98. package/lib/types/documents.d.ts.map +1 -1
  99. package/lib/types/documents.js +6 -14
  100. package/lib/types/documents.js.map +1 -1
  101. package/lib/types/guidance.d.ts +5 -2
  102. package/lib/types/guidance.d.ts.map +1 -1
  103. package/lib/types/guidance.js +18 -2
  104. package/lib/types/guidance.js.map +1 -1
  105. package/lib/types/index.d.ts +4 -2
  106. package/lib/types/index.d.ts.map +1 -1
  107. package/lib/types/index.js +29 -20
  108. package/lib/types/index.js.map +1 -1
  109. package/lib/types/lifecycle.d.ts +23 -3
  110. package/lib/types/lifecycle.d.ts.map +1 -1
  111. package/lib/types/lifecycle.js +89 -13
  112. package/lib/types/lifecycle.js.map +1 -1
  113. package/lib/types/live-runtime.d.ts +66 -0
  114. package/lib/types/live-runtime.d.ts.map +1 -0
  115. package/lib/types/live-runtime.js +146 -0
  116. package/lib/types/live-runtime.js.map +1 -0
  117. package/lib/types/memory-bodies.d.ts +2 -0
  118. package/lib/types/memory-bodies.d.ts.map +1 -1
  119. package/lib/types/memory-bodies.js +29 -10
  120. package/lib/types/memory-bodies.js.map +1 -1
  121. package/lib/types/pack.d.ts +74 -0
  122. package/lib/types/pack.d.ts.map +1 -0
  123. package/lib/types/pack.js +709 -0
  124. package/lib/types/pack.js.map +1 -0
  125. package/lib/types/rpc.d.ts +10 -3
  126. package/lib/types/rpc.d.ts.map +1 -1
  127. package/lib/types/rpc.js +158 -19
  128. package/lib/types/rpc.js.map +1 -1
  129. package/lib/types/runner.d.ts +3 -1
  130. package/lib/types/runner.d.ts.map +1 -1
  131. package/lib/types/runner.js +7 -2
  132. package/lib/types/runner.js.map +1 -1
  133. package/lib/types/service.d.ts +16 -0
  134. package/lib/types/service.d.ts.map +1 -1
  135. package/lib/types/service.js.map +1 -1
  136. package/lib/types/settings.d.ts +1 -0
  137. package/lib/types/settings.d.ts.map +1 -1
  138. package/lib/types/settings.js +45 -16
  139. package/lib/types/settings.js.map +1 -1
  140. package/lib/types/subagent.d.ts +11 -2
  141. package/lib/types/subagent.d.ts.map +1 -1
  142. package/lib/types/subagent.js +34 -29
  143. package/lib/types/subagent.js.map +1 -1
  144. package/lib/types/tools.d.ts +11 -1
  145. package/lib/types/tools.d.ts.map +1 -1
  146. package/lib/types/tools.js +29 -16
  147. package/lib/types/tools.js.map +1 -1
  148. package/package.json +23 -12
package/lib/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":["useMemo","useSyncExternalStore","useState","css","r","createContext","useContext","css","useCallback","Markdown","useState","useMemo","useRef","Fragment"],"sources":["../src/client/locales.ts","../src/client/MnemonSettingsCard.tsx","../node_modules/.pnpm/markdown-to-jsx@7.7.17_react@18.3.1/node_modules/markdown-to-jsx/dist/index.module.js","../src/review-activity.ts","../src/service.ts","../src/rpc.ts","../src/client/api.ts","../src/client/MnemonLogo.tsx","../src/client/MnemonView.tsx","../src/settings.ts","../src/client/settings.ts","../src/client/index.ts"],"sourcesContent":["/** Mnemon workspace copy, synchronized with DSH's global locale service. */\nexport const zh = {\n 'tab.label': '记忆系统',\n 'term.space': '记忆体',\n 'term.spaces': '记忆体',\n 'category.decision': '决策',\n 'category.preference': '偏好',\n 'category.fact': '事实',\n 'category.insight': '洞察',\n 'category.context': '上下文',\n 'category.general': '通用',\n 'nav.aria': 'Mnemon 页面',\n 'nav.group.system': '系统',\n 'nav.group.storage': '三层记忆',\n 'nav.group.tools': '读写工具',\n 'nav.bodies': '记忆体',\n 'nav.bodies.detail': '记忆体目录与实时图谱',\n 'nav.runtime': '运行时',\n 'nav.runtime.detail': '热记忆与上下文',\n 'nav.documents': '档案',\n 'nav.documents.detail': '项目知识与归档',\n 'nav.search': '检索',\n 'nav.search.detail': '意图增强召回',\n 'nav.entities': '实体',\n 'nav.entities.detail': '关系与上下文',\n 'nav.remember': '沉淀',\n 'nav.remember.detail': 'LLM 监督写回',\n 'nav.content': '内容',\n 'nav.content.detail': '浏览与维护',\n 'nav.status': '状态',\n 'nav.status.detail': '运行与诊断',\n 'common.refresh': '刷新状态',\n 'common.loading': '载入中…',\n 'common.cancel': '取消',\n 'common.copyId': '复制 ID',\n 'common.readOnly': '只读模式',\n 'common.agentSupervised': '子 Agent 监督',\n 'common.active': '已激活',\n 'common.inactive': '未激活',\n 'common.category': '分类',\n 'common.importanceLabel': '重要性',\n 'common.importance': '重要性 {value}',\n 'common.hops': '{count} 跳',\n 'common.allCategories': '全部分类',\n 'common.memories': '{count} 条记忆',\n 'common.edges': '{count} 条连接',\n 'common.count': '{count} 个',\n 'header.checking': '检查中',\n 'header.connected': '已连接 · {count} 个已激活',\n 'header.directoryPending': '已连接 · 目录待同步',\n 'header.unavailable': '不可用',\n 'header.notReady': 'Mnemon 尚未就绪',\n 'telemetry.aria': '记忆统计',\n 'telemetry.title': '记忆统计',\n 'telemetry.memories': '激活记忆',\n 'telemetry.graph': '激活图谱',\n 'telemetry.entities': '激活实体',\n 'telemetry.spaces': '记忆体',\n 'sidebar.activeSpaces': '已激活记忆体',\n 'overview.title': '记忆体',\n 'overview.description': '管理全局记忆体的读取边界,并在一张实时四图快照中观察所有已激活记忆体。',\n 'overview.interval': '每 15 秒',\n 'overview.syncing': '同步中…',\n 'overview.syncNow': '立即同步',\n 'overview.directory': '记忆体目录',\n 'overview.directory.description': '开关只控制读取;写入可选择任意记忆体,写入未激活记忆体后会自动激活。',\n 'overview.directory.waiting': '等待目录',\n 'overview.directory.unsynced': '目录尚未同步',\n 'overview.directory.unsyncedBadge': '目录待同步',\n 'overview.storageHealthy': '存储正常',\n 'overview.storageUnhealthy': '存储异常',\n 'overview.toggleAria': '{name}读取开关',\n 'overview.toggling': '切换中',\n 'overview.noDescription': '尚未提供路由说明。',\n 'overview.unsyncedTitle': '记忆体目录尚未同步',\n 'overview.unsyncedShort': '当前 Web 客户端与 DSH Host 状态不一致;重启 Host 后会重新登记既有 Store。',\n 'overview.unsyncedLong': '当前 Host 仍在使用旧插件契约;重启 DSH 后会重新发现既有 Store,期间不会删除任何 .db。',\n 'overview.emptyTitle': '还没有记忆体',\n 'overview.emptyShort': '创建第一个记忆体并写入稳定上下文后,它会出现在这里。',\n 'overview.emptyLong': '先在上方创建一个记忆体;首次写入后,它会自动激活并出现在实时快照中。',\n 'overview.noActiveTitle': '没有激活的记忆体',\n 'overview.noActiveText': '开启至少一个记忆体的读取开关,即可在这里聚合它的实时图谱。',\n 'overview.noContentTitle': '已激活记忆体尚无内容',\n 'overview.noContentText': '向任意记忆体沉淀稳定上下文后,这里会聚合呈现节点与关系。',\n 'overview.create': '+ 创建空白记忆体',\n 'overview.createName': '新记忆体名称',\n 'overview.createNamePlaceholder': '名称',\n 'overview.createDescription': '新记忆体描述',\n 'overview.createDescriptionPlaceholder': '说明哪些内容属于它,以及何时应被召回',\n 'overview.creating': '创建中…',\n 'overview.createAction': '创建',\n 'overview.editBody': '编辑',\n 'overview.editBodyAria': '编辑{name}',\n 'overview.editName': '名称',\n 'overview.editDescription': '路由说明',\n 'overview.saveBody': '保存',\n 'overview.savingBody': '保存中…',\n 'overview.snapshot': '多记忆体实时快照',\n 'overview.waitingSnapshot': '等待首个快照',\n 'overview.updatedAt': '更新于 {time}',\n 'overview.edgeScope': '空间归属',\n 'overview.edgeTemporal': '时间',\n 'overview.edgeSemantic': '语义',\n 'overview.edgeCausal': '因果',\n 'overview.edgeEntity': '实体关联',\n 'overview.graphComposition': '{spaces} 个空间 · {memories} 条记忆 · {entities} 个实体',\n 'overview.graphCount': '展示 {visible} / {total} 个元素',\n 'overview.graphEdges': '{count} 条图谱连接',\n 'overview.inspector': '记忆详情',\n 'overview.inspectorSpace': '记忆体详情',\n 'overview.inspectorEntity': '实体详情',\n 'overview.selectNode': '选择一个图谱元素',\n 'overview.selectNodeText': '查看记忆体、实体或记忆的精确上下文。',\n 'overview.closeInspector': '关闭节点详情',\n 'overview.memoryId': '记忆 ID',\n 'overview.spaceId': '记忆体 ID',\n 'overview.containedMemories': '包含记忆',\n 'overview.entityMentions': '索引次数',\n 'overview.exploreNode': '围绕它检索',\n 'overview.previewAria': '查看全文',\n 'overview.previewTitle': '内容全文',\n 'overview.loading': '正在同步记忆体目录与多库图谱…',\n 'runtime.title': '运行时记忆',\n 'runtime.description': '管理每轮随上下文加载的紧凑热记忆。结构化数据由统一控制层维护,并自动投影为 USER.md 与 MEMORY.md。',\n 'runtime.total': '{count} 条热记忆',\n 'runtime.refresh': '刷新',\n 'runtime.hotContext': '每轮上下文',\n 'runtime.addTitle': '添加热记忆',\n 'runtime.addDescription': '稳定但仍需频繁使用的信息优先留在这里,长期归档由 Mnemon 记忆体承接。',\n 'runtime.content': '运行时记忆内容',\n 'runtime.placeholder': '输入一条简洁、独立、未来仍然有用的信息…',\n 'runtime.target': '分类',\n 'runtime.importance': '重要性',\n 'runtime.saving': '处理中…',\n 'runtime.addAction': '添加',\n 'runtime.target.user': '用户画像',\n 'runtime.target.user.description': '身份、角色、习惯、表达偏好与明确的协作要求;容量整理始终留在本地,不进入记忆体。',\n 'runtime.target.memory': '工作记忆',\n 'runtime.target.memory.description': '项目、环境、决策、约定、工具特性与可复用经验;容量达到上限时按主题归档到一个或多个记忆体。',\n 'runtime.importance.critical': '关键',\n 'runtime.importance.normal': '普通',\n 'runtime.importance.low': '低',\n 'runtime.empty': '这个分类还没有热记忆。',\n 'runtime.editContent': '编辑运行时记忆',\n 'runtime.editAction': '编辑',\n 'runtime.saveEdit': '保存修改',\n 'runtime.removeAction': '移除',\n 'runtime.removeConfirm': '确认移除这条热记忆?',\n 'runtime.result.add': '已添加到{target} · 当前 {count} 条',\n 'runtime.result.replace': '已更新{target} · 当前 {count} 条',\n 'runtime.result.remove': '已从{target}移除 · 当前 {count} 条',\n 'runtime.result.maintenance': '容量整理完成:已先归档到记忆体 {spaces},再更新{target} · 当前 {count} 条',\n 'runtime.result.localCompaction': '本地画像整理完成:未写入记忆体,已更新{target} · 当前 {count} 条',\n 'runtime.readOnly': '当前部署为只读模式;热记忆仍会进入上下文,但不能在此修改。',\n 'runtime.footnote': 'memories.json 是唯一事实源;两个 Markdown 文件由控制层生成,不应直接编辑。',\n 'documents.title': '项目档案',\n 'documents.description': '在当前工作区维护结构化的项目文档。活跃档案参与近场检索;达到 10 MB 上限前,最久未使用的档案会先在 Mnemon 中建立索引,再迁入归档。',\n 'documents.capacity': '{used} / {limit}',\n 'documents.refresh': '刷新',\n 'documents.summary': '档案存储摘要',\n 'documents.active': '活跃档案',\n 'documents.activeHint': '近场检索范围',\n 'documents.archivedCount': '归档',\n 'documents.archivedHint': '不占活跃容量',\n 'documents.activeCapacity': '活跃容量',\n 'documents.capacityHint': '按实际 UTF-8 文件大小计算',\n 'documents.searchAria': '检索项目档案',\n 'documents.searchPlaceholder': '搜索设计、调查、流程或交接记录…',\n 'documents.search': '检索',\n 'documents.scope': '档案范围',\n 'documents.new': '新建档案',\n 'documents.newTitle': '创建托管档案',\n 'documents.editTitle': '编辑活跃档案',\n 'documents.editorHint': '控制层会生成 frontmatter、哈希与修订号;原项目文件始终只读。',\n 'documents.managedCopy': '托管副本',\n 'documents.name': '标题',\n 'documents.routing': '检索说明',\n 'documents.sources': '来源路径',\n 'documents.sourcesPlaceholder': 'src/index.ts, docs/architecture.md',\n 'documents.markdown': 'Markdown 内容',\n 'documents.saving': '保存中…',\n 'documents.create': '创建档案',\n 'documents.save': '保存修订',\n 'documents.created': '已创建活跃档案。',\n 'documents.createdAfterArchive': '已先迁移 {count} 份旧档案,再创建活跃档案。',\n 'documents.updated': '已保存新的档案修订。',\n 'documents.updatedAfterArchive': '已先迁移 {count} 份旧档案,再保存修订。',\n 'documents.archived': '已建立 Mnemon 冷索引并归档;关联记忆体:{spaces}',\n 'documents.list': '项目档案列表',\n 'documents.activeList': '活跃目录',\n 'documents.archiveList': '归档目录',\n 'documents.noDescription': '暂无检索说明。',\n 'documents.missing': '文件缺失',\n 'documents.emptyActive': '还没有活跃档案',\n 'documents.emptyActiveText': '复杂对话达到活动评分门槛后会自动审阅并整理档案,也可以在上方手动创建。',\n 'documents.emptyArchived': '还没有归档',\n 'documents.emptyArchivedText': '只有完成 Mnemon 索引的档案才会迁移到这里。',\n 'documents.reader': '档案阅读器',\n 'documents.selectTitle': '选择一份档案',\n 'documents.selectText': '在左侧查看活跃项目知识或沿 Mnemon 引用打开归档原文。',\n 'documents.coldArchive': '归档原文',\n 'documents.edit': '编辑',\n 'documents.path': '托管路径',\n 'documents.revision': '修订',\n 'documents.hash': '内容哈希',\n 'documents.size': '文件大小',\n 'documents.archiveReceipt': 'Mnemon 冷索引回执',\n 'documents.archiveTitle': '迁入归档',\n 'documents.archiveDescription': '先由受限子 Agent 写入可检索的 Mnemon 摘要和精确路径,成功后才移动原文。',\n 'documents.archive': '归档',\n 'documents.archiveConfirm': '确认建立 Mnemon 索引并迁移这份档案?',\n 'documents.archiving': '索引并迁移中…',\n 'documents.archiveNow': '确认归档',\n 'documents.footnote': '`.mnemon/documents/index.json` 是控制面事实源;active 总量固定不超过 10 MB,archived 不计入上限,项目源文件不会被修改。',\n 'graph.layoutAria': '图谱布局',\n 'graph.layoutNatural': '自然布局',\n 'graph.layoutUniform': '均匀布局',\n 'graph.layoutCustom': '自定义布局',\n 'graph.layoutStatus': '布局状态:{layout}',\n 'graph.draggable': '{layout} · 可拖拽',\n 'graph.naturalAction': '自然铺开',\n 'graph.uniformAction': '均匀重置',\n 'graph.aria': 'Mnemon 实时记忆图谱,{nodes} 个元素,{edges} 条连接',\n 'graph.kindSpace': '记忆体',\n 'graph.kindEntity': '实体',\n 'card.confirmAria': '确认忘记记忆',\n 'card.confirmText': '软删除这条记忆?',\n 'card.processing': '处理中…',\n 'card.confirmForget': '确认忘记',\n 'card.related': '查看关联',\n 'card.clone': '基于此新建',\n 'card.forget': '忘记',\n 'search.title': '检索记忆',\n 'search.description': '直连 Mnemon 检索原始证据;需要时可让 Agent 只基于命中内容生成答案。',\n 'search.maxResults': '最多 {count} 条',\n 'search.placeholder': '为什么选用 SQLite?这个项目有哪些发布约定?',\n 'search.queryAria': '记忆查询',\n 'search.categoryAria': '记忆分类',\n 'search.strategy': '策略',\n 'search.modeAria': '检索模式',\n 'search.modeSmart': '图增强召回',\n 'search.modeKeyword': '关键词检索',\n 'search.modeBasic': '基础匹配',\n 'search.searching': '检索中…',\n 'search.action': '直接检索',\n 'search.agentAction': 'Agent 查询',\n 'search.agentSearching': 'Agent 分析中…',\n 'search.agentAnswer': 'Agent 查询结果',\n 'search.agentAnswerHint': '基于下方召回证据',\n 'search.startTitle': '从一个明确问题开始',\n 'search.startText': '聚焦实体、决策或时间线,比批量加载整库更可靠。',\n 'search.emptyTitle': '没有命中',\n 'search.emptyText': '换一个更具体的实体、决策或时间线关键词试试。',\n 'search.results': '原始召回内容',\n 'search.related': '关联记忆',\n 'search.closeRelated': '关闭关联记忆',\n 'search.traversing': '正在遍历图谱…',\n 'search.noRelated': '没有找到两跳内的关联节点。',\n 'entities.title': '实体查阅',\n 'entities.description': '直连 Mnemon 查阅实体跨越事实、决策与上下文的关系。',\n 'entities.count': '{count} 个活跃实体',\n 'entities.nameAria': '实体名称',\n 'entities.placeholder': '输入任意实体…',\n 'entities.action': '查阅',\n 'entities.top': '高频实体',\n 'entities.frequency': '按出现频率',\n 'entities.emptyRail': '写入带实体的记忆后,这里会形成入口。',\n 'entities.loading': '正在沿实体关系召回…',\n 'entities.selectTitle': '选择或输入一个实体',\n 'entities.selectText': '实体视图会聚合与它相关的记忆,而不是只做字面匹配。',\n 'entities.emptyTitle': '没有关联记忆',\n 'entities.emptyText': '尝试更完整的名称或另一个实体别名。',\n 'remember.title': '沉淀记忆',\n 'remember.description': '候选内容会进入隔离的记忆子 Agent,由它选择记忆体、查重、提炼并执行写入,不占用主对话上下文。',\n 'remember.worker': '记忆子 Agent',\n 'remember.readOnlyTitle': '当前为只读模式',\n 'remember.readOnlyText': '当前部署禁止记忆写入;如需调整,请修改 DSH 的 Mnemon 配置并重启。',\n 'remember.flowTitle': '记忆子 Agent 会完成什么',\n 'remember.routeTitle': '判断归属',\n 'remember.routeText': '选择既有记忆体,必要时判断是否形成新范围',\n 'remember.dedupeTitle': '检索查重',\n 'remember.dedupeText': '识别重复、补充或冲突的旧记忆',\n 'remember.writeTitle': '结构化写入',\n 'remember.writeText': '提炼内容、元数据与必要关系并返回回执',\n 'remember.flowText': '子 Agent 只拥有 Mnemon 工具,原始目录和检索过程不会挤占主对话上下文。',\n 'remember.delegateTitle': '交给记忆子 Agent',\n 'remember.noSession': '无可用会话',\n 'remember.ready': '子 Agent 就绪',\n 'remember.candidate': '候选内容',\n 'remember.candidateAria': '待沉淀内容',\n 'remember.placeholder': '输入希望跨任务保留的背景、偏好、决策或洞察。模型会先判断它是否真的值得沉淀。',\n 'remember.sessionHint': '当前视图没有绑定活动会话,无法创建记忆子 Agent。',\n 'remember.processing': '记忆子 Agent 处理中…',\n 'remember.action': '调度子 Agent 判断并沉淀',\n 'remember.advanced': '人工高级选项',\n 'remember.advancedHint': '为记忆子 Agent 指定目标记忆体与元数据约束',\n 'remember.expand': '展开',\n 'remember.target': '目标记忆体',\n 'remember.entities': '实体(逗号分隔)',\n 'remember.tags': '标签(逗号分隔)',\n 'remember.advancedText': '高级选项是约束而不是绕过监督;记忆子 Agent 仍会查重并返回结构化回执。',\n 'remember.saving': '子 Agent 写入中…',\n 'remember.advancedAction': '按高级约束沉淀',\n 'remember.skipped': '记忆子 Agent 判断无需写入',\n 'remember.completed': '记忆子 Agent 已完成处理',\n 'remember.processed': '记忆子 Agent 已处理:{action}',\n 'remember.dispatchFailed': '调度失败:{error}',\n 'remember.saveFailed': '保存失败:{error}',\n 'content.title': '记忆内容',\n 'content.description': '无副作用浏览所有已激活记忆体;每条内容都会标明所属记忆体,可继续查阅或维护。',\n 'content.count': '{count} 条记忆',\n 'content.filterAria': '筛选记忆内容',\n 'content.filterPlaceholder': '按内容或精确 ID 筛选…',\n 'content.categoryAria': '记忆分类',\n 'content.apply': '应用筛选',\n 'content.notice': '内容列表读取已激活记忆体的图谱快照,不会增加 recall 访问计数。',\n 'content.showing': '当前显示 {visible} / {total}',\n 'content.showMore': '再显示 {count} 条',\n 'content.emptyTitle': '没有符合条件的记忆',\n 'content.emptyText': '清空筛选,或前往“沉淀”写入第一条稳定上下文。',\n 'status.title': '系统状态',\n 'status.description': '聚焦 Mnemon 引擎、记忆体目录和子 Agent 编排;连接配置由 DSH 部署统一管理。',\n 'status.nominal': '系统正常',\n 'status.checkRequired': '需要检查',\n 'status.rechecking': '检查中…',\n 'status.recheck': '重新检查',\n 'status.aria': 'Mnemon 运行状态',\n 'status.engine': '记忆引擎',\n 'status.engineConnected': 'Mnemon 已连接',\n 'status.engineUnavailable': 'Mnemon 不可用',\n 'status.engineChecking': '正在检查本地引擎',\n 'status.versionWaiting': '等待版本信息',\n 'status.spaces': '记忆体',\n 'status.activeRatio': '{active} / {total} 已激活',\n 'status.runtime': '运行时',\n 'status.runtimeRatio': '{user} 用户 · {memory} 项目',\n 'status.runtimeBytes': '{bytes} 已使用',\n 'status.runtimeWaiting': '等待同步',\n 'status.runtimeWaitingDetail': '宿主存储清单待返回',\n 'status.directoryUnsynced': '目录尚未同步',\n 'status.activeMemories': '{count} 条激活记忆',\n 'status.documents': '项目档案',\n 'status.documentsWaiting': '等待工作区',\n 'status.documentsSession': '绑定活动会话后可用',\n 'status.documentRatio': '{active} 份活跃 · {archived} 份归档',\n 'status.documentUsage': '{used} / {limit} 活跃容量',\n 'status.router': '子 Agent 路由',\n 'status.routerReady': '记忆子 Agent 可用',\n 'status.sessionMissing': '当前会话未绑定',\n 'status.routerChecking': '正在同步会话能力',\n 'status.orchestrationWaiting': '等待编排状态',\n 'status.workerCounts': '召回 {recalls} · 问答 {answers} · 审查 {reviews} · 档案迁移 {documentArchives} · 热记忆归档 {migrations} · 常规写入 {writes}',\n 'status.workerSummary': '召回 {recalls} · 审查 {reviews} · 写入 {writes} · 失败 {failures}',\n 'status.lifecycle': '子 Agent 生命周期',\n 'status.lifecycleText': 'pre-step 只提供短提示;后台按用户输入、turn、工具调用量与工具多样性累计评分,达标并持续空闲后,由一个 fork 子 Agent 同时审阅热记忆与复杂项目档案。',\n 'status.phaseIdle': '待命',\n 'status.phaseSupervised': '受监督请求',\n 'status.phaseError': '异常',\n 'status.phaseReview': '后台审查',\n 'status.prime': '轻量预备',\n 'status.primeText': '初始化路由状态,不读取目录或记忆',\n 'status.recallWorker': '召回处理',\n 'status.recallText': 'pre-step 只提醒判断,主模型按需发起召回',\n 'status.recallOff': '自动召回已关闭',\n 'status.writeWorker': '评分审查',\n 'status.writeText': '活动评分达到 {threshold} 后再等待空闲 {seconds} 秒,fork 完整 checkpoint 按需维护热记忆与项目档案',\n 'status.writeOff': '后台审查已关闭',\n 'status.latestPhase': '最近阶段',\n 'status.latestActivity': '最近活动',\n 'status.reviewState': '审查状态',\n 'status.reviewPending': '评分已达标,等待空闲',\n 'status.reviewRunning': '正在审查',\n 'status.reviewQualified': '评分已达标,等待本轮完成',\n 'status.reviewAccumulating': '累计信号中',\n 'status.reviewIdle': '累计信号中',\n 'status.activityScore': '活动评分',\n 'status.activitySignals': '累计信号',\n 'status.activitySignalValues': '{chars} 字符 · {turns} turn · {tools} 次工具 · {unique} 种工具',\n 'status.lastReview': '最近审查',\n 'status.noReview': '尚未执行',\n 'status.reviewAt': '{time} · {action} · 触发分 {score}',\n 'status.supervisedRequests': '受监督请求',\n 'status.workerFailures': '子 Agent 失败',\n 'status.reviewDocuments': '最近更新档案',\n 'status.noActivity': '尚无运行记录',\n 'status.quickDiagnostics': '快速诊断',\n 'status.cliExecutable': 'Mnemon CLI 可执行',\n 'status.cliMissing': 'Mnemon CLI 未找到',\n 'status.readingSpaces': '{count} 个记忆体参与读取',\n 'status.directoryWaiting': '记忆体目录等待 Host 同步',\n 'status.webAgentReady': 'WebUI 可创建隔离记忆子 Agent',\n 'status.liveSessionMissing': '缺少活动会话',\n 'status.lifecycleFailures': '生命周期失败 {count} 次',\n 'status.documentsUnavailable': '当前会话的档案目录不可用',\n 'status.documentsHealthy': '{count} 份活跃档案可参与近场检索',\n 'status.nativeAccess': '原生命令',\n 'status.nativeAccessText': '模型侧使用原生 mnemon_* 工具;人工命令不会绕入模型。',\n 'status.engineStorage': '引擎与存储',\n 'status.online': '在线',\n 'status.offline': '离线',\n 'status.mnemonVersion': 'Mnemon 版本',\n 'status.directory': '记忆体目录',\n 'status.activeDbSize': '激活数据库大小',\n 'status.activeCount': '已激活',\n 'status.activeGraphEdges': '激活图谱连接',\n 'status.documentDirectory': '项目档案目录',\n 'status.activeDocuments': '活跃档案',\n 'status.coldDocuments': '归档',\n 'status.documentCapacity': '活跃档案容量',\n 'status.storageDomains': '存储域',\n 'status.storageDomainsText': '当前选择决定热记忆、记忆体、项目档案和后台状态共同使用的目录边界。',\n 'status.storageBrowseOnly': '查看不会切换写入',\n 'status.storageScopeAria': '选择要查看的存储域',\n 'status.storageGlobal': '全局',\n 'status.storageWorkspace': '工作区',\n 'status.storageCustom': '自定义',\n 'status.storageCurrent': '当前读写',\n 'status.storageWaiting': '正在读取存储域目录…',\n 'status.storageCustomUnset': '尚未配置自定义目录。当前只展示已经由 DSH 配置并启用的自定义根。',\n 'status.storageWorkspaceUnavailable': '当前会话没有可用的工作区目录。',\n 'status.storageActiveRoot': '当前读写根',\n 'status.storageViewedRoot': '查看根',\n 'status.storageAvailable': '目录可用',\n 'status.storageNotCreated': '目录尚未创建',\n 'status.storageRuntime': '运行时记忆',\n 'status.storageBodies': '记忆体',\n 'status.storageDocuments': '项目档案',\n 'status.storageState': '后台状态',\n 'status.storageReady': '正常',\n 'status.storageEmpty': '空',\n 'status.storageMissing': '未创建',\n 'status.storageInvalid': '需修复',\n 'status.storageItems': '项',\n 'status.storageRuntimeDetail': 'USER {user} · MEMORY {memory}',\n 'status.storageBodiesDetail': '{active} 个激活 · {databases} 个数据库',\n 'status.storageDocumentsDetail': '{active} 份活跃 · {archived} 份归档',\n 'status.storageStateReady': '审阅水位已经持久化',\n 'status.storageStateVolatile': '当前审阅状态仍由 Host 进程维护',\n 'status.storageFootnote': '当前实际读写根:{root}。存储范围只在 DSH「设置 → 插件配置 → Mnemon」中修改,重启后生效;插件不会自动迁移、合并或删除旧内容。',\n 'status.flowTitle': '记忆系统流转',\n 'status.flowDescription': '按真实执行边界展开每轮注入、确定性文件控制、语义 worker、CLI 数据面、归档与 fork 审查。',\n 'status.flowLive': '实时状态',\n 'status.flowDegraded': '部分不可用',\n 'status.flowConversation': '用户 / 当前任务',\n 'status.flowTurns': '当前轮输入与工具轨迹',\n 'status.flowSupervisor': 'Root Agent',\n 'status.flowEntries': '{count} 条热记忆',\n 'status.flowDocuments': '{active} 份活跃 · {archived} 份归档',\n 'status.flowContext': '证据 / 回执',\n 'status.flowContextDetail': '结构化结果返回当前任务',\n 'status.flowReadWrite': '确定性 Host 路径',\n 'status.flowArchive': 'LLM 监督路径',\n 'status.flowCurrentScope': '当前范围:{scope}',\n 'status.flowLaneContext': '每轮上下文',\n 'status.flowLaneContextDetail': 'Runtime 每轮注入;Documents 仅按需检索',\n 'status.flowLaneSemantic': '按需语义操作',\n 'status.flowLaneSemanticDetail': '隔离 worker 决策,Host 服务执行',\n 'status.flowLaneMaintenance': '空闲维护与归档',\n 'status.flowLaneMaintenanceDetail': 'fork 审查与先索引后迁移',\n 'status.flowRuntimeMeta': 'USER.md + MEMORY.md · {count} 条',\n 'status.flowPromptAssembly': '每轮 prompt assembly',\n 'status.flowDocumentSearch': 'Document 确定性检索',\n 'status.flowOnDemand': '按需,不注入全文',\n 'status.flowRootMeta': '路由工具调用,不直接访问 SQLite',\n 'status.flowStructuredReturn': '结构化证据 / 回执',\n 'status.flowEvidenceMeta': '带来源返回 Root Agent',\n 'status.flowSemanticRequest': 'recall · write · related',\n 'status.flowSpawnWorker': 'spawn 隔离 worker',\n 'status.flowSpawnMeta': '语义判断 · 最小工具白名单',\n 'status.flowService': 'MnemonService',\n 'status.flowServiceMeta': '校验 · 归一化 · 聚合',\n 'status.flowRunnerCli': 'Runner → 本地 CLI',\n 'status.flowRunnerCliMeta': '超时 / 取消 / JSON 进程边界',\n 'status.flowHostBridge': 'Mnemon Host Bridge',\n 'status.flowHostBridgeMeta': 'Service → Runner → 本地 CLI',\n 'status.flowSpacesMeta': '{active}/{total} 已激活 · {insights} 条记忆',\n 'status.flowDeterministicWrites': '普通 Runtime 与 Document 变更',\n 'status.flowDeterministicWritesMeta': 'add / replace / remove · create / update',\n 'status.flowControlPlane': 'Host 确定性控制层',\n 'status.flowControlPlaneMeta': '锁 · 原子写 · revision · 容量',\n 'status.flowReviewGate': '活动评分与空闲门控',\n 'status.flowReviewGateMeta': '{score}/{threshold} · idle {seconds}s',\n 'status.flowForkReview': 'fork 完成检查点',\n 'status.flowForkReviewMeta': '{state} · 只维护 Runtime / Document',\n 'status.flowReviewTargets': 'Runtime / active Document',\n 'status.flowReviewTargetsMeta': '保守维护 · 新轮次会取消审查',\n 'status.flowColdArchive': 'spawn 归档 worker',\n 'status.flowColdArchiveMeta': '容量维护 / 人工归档',\n 'status.flowIndexFirst': '1 · 先写 / 验证 Mnemon 冷索引',\n 'status.flowRevisionMove': '2 · revision fence 后迁移原文',\n 'status.flowRevisionMoveMeta': '{archived} 份已归档 · 失败或冲突保留 active',\n 'status.flowArchivedDocuments': '已归档 Documents',\n 'status.flowRecent': '最近活动',\n 'status.flowRunning': '正在运行',\n 'status.flowPending': '等待空闲',\n 'status.flowStatic': '执行边界',\n 'status.flowLegendReady': '可用 / 已就绪',\n 'status.flowLegendRecent': '当前或最近链路',\n 'status.flowLegendBoundary': '虚线表示 LLM 判断边界',\n 'config.aria': 'Mnemon 插件配置',\n 'config.description': '为运行时记忆、项目档案、记忆体和后台状态选择同一个存储边界。',\n 'config.unsaved': '有未保存修改',\n 'config.restart': '重启后生效',\n 'config.noticeBefore': '配置写入',\n 'config.noticeAfter': ',重启 DSH 后应用;切换范围不会自动迁移旧内容。',\n 'config.scope': '存储范围',\n 'config.scopeHint': '全局供所有工作区共享;工作区使用 DSH 启动目录;自定义使用指定目录。',\n 'config.scopeAria': 'Mnemon 存储范围',\n 'config.global': '全局',\n 'config.workspace': '工作区',\n 'config.custom': '自定义目录',\n 'config.customDirectory': '自定义目录',\n 'config.customHint': '必须为绝对路径或以 ~/ 开头;整个 Mnemon 数据域都位于此处。',\n 'config.customAria': 'Mnemon 自定义数据目录',\n 'config.invalidScope': '存储范围无效。',\n 'config.customRequired': '选择自定义存储时必须填写数据目录。',\n 'config.customAbsolute': '自定义目录必须是绝对路径或以 ~/ 开头。',\n 'config.saveFailed': '保存失败:{error}',\n 'config.readOnly': '当前部署的插件设置为只读。',\n 'config.discard': '放弃修改',\n 'config.saving': '保存中…',\n 'config.save': '保存到 settings.yaml',\n 'config.overridden': '已覆盖',\n 'config.reset': '恢复默认',\n} satisfies Record<string, string>\n\nexport type MnemonKey = keyof typeof zh\n\nexport const en = {\n 'tab.label': 'Memory System',\n 'term.space': 'Memory Space',\n 'term.spaces': 'Memory Spaces',\n 'category.decision': 'Decision',\n 'category.preference': 'Preference',\n 'category.fact': 'Fact',\n 'category.insight': 'Insight',\n 'category.context': 'Context',\n 'category.general': 'General',\n 'nav.aria': 'Mnemon pages',\n 'nav.group.system': 'System',\n 'nav.group.storage': 'Memory tiers',\n 'nav.group.tools': 'Read and write',\n 'nav.bodies': 'Memory Spaces',\n 'nav.bodies.detail': 'Directory and live graph',\n 'nav.runtime': 'Runtime',\n 'nav.runtime.detail': 'Hot memory and context',\n 'nav.documents': 'Documents',\n 'nav.documents.detail': 'Project knowledge and archive',\n 'nav.search': 'Recall',\n 'nav.search.detail': 'Intent-aware retrieval',\n 'nav.entities': 'Entities',\n 'nav.entities.detail': 'Relations and context',\n 'nav.remember': 'Distill',\n 'nav.remember.detail': 'LLM-supervised writeback',\n 'nav.content': 'Content',\n 'nav.content.detail': 'Browse and maintain',\n 'nav.status': 'Status',\n 'nav.status.detail': 'Runtime and diagnostics',\n 'common.refresh': 'Refresh status',\n 'common.loading': 'Loading…',\n 'common.cancel': 'Cancel',\n 'common.copyId': 'Copy ID',\n 'common.readOnly': 'Read only',\n 'common.agentSupervised': 'Subagent supervised',\n 'common.active': 'Active',\n 'common.inactive': 'Inactive',\n 'common.category': 'Category',\n 'common.importanceLabel': 'Importance',\n 'common.importance': 'Importance {value}',\n 'common.hops': '{count} hops',\n 'common.allCategories': 'All categories',\n 'common.memories': '{count} memories',\n 'common.edges': '{count} edges',\n 'common.count': '{count}',\n 'header.checking': 'Checking',\n 'header.connected': 'Connected · {count} active',\n 'header.directoryPending': 'Connected · directory pending',\n 'header.unavailable': 'Unavailable',\n 'header.notReady': 'Mnemon is not ready',\n 'telemetry.aria': 'Memory statistics',\n 'telemetry.title': 'Memory statistics',\n 'telemetry.memories': 'Active memories',\n 'telemetry.graph': 'Active graph',\n 'telemetry.entities': 'Active entities',\n 'telemetry.spaces': 'Spaces',\n 'sidebar.activeSpaces': 'Active Memory Spaces',\n 'overview.title': 'Memory Spaces',\n 'overview.description': 'Control the global read boundary and inspect all active Memory Spaces in one live four-graph snapshot.',\n 'overview.interval': 'Every 15 seconds',\n 'overview.syncing': 'Syncing…',\n 'overview.syncNow': 'Sync now',\n 'overview.directory': 'Memory Space Directory',\n 'overview.directory.description': 'Activation controls reads only. Writes may target any space and automatically activate an inactive target.',\n 'overview.directory.waiting': 'Waiting for directory',\n 'overview.directory.unsynced': 'Directory not synchronized',\n 'overview.directory.unsyncedBadge': 'Directory pending',\n 'overview.storageHealthy': 'Storage healthy',\n 'overview.storageUnhealthy': 'Storage unavailable',\n 'overview.toggleAria': '{name} read toggle',\n 'overview.toggling': 'Switching',\n 'overview.noDescription': 'No routing description yet.',\n 'overview.unsyncedTitle': 'Memory Space directory is not synchronized',\n 'overview.unsyncedShort': 'The Web client and DSH Host are using different contracts. Restart the Host to register existing Stores.',\n 'overview.unsyncedLong': 'The Host is still using the previous plugin contract. Restart DSH to rediscover existing Stores; no .db file will be deleted.',\n 'overview.emptyTitle': 'No Memory Spaces yet',\n 'overview.emptyShort': 'Create the first space and distill durable context into it.',\n 'overview.emptyLong': 'Create a Memory Space above. Its first write will activate it and add it to the live snapshot.',\n 'overview.noActiveTitle': 'No active Memory Spaces',\n 'overview.noActiveText': 'Enable read access for at least one space to aggregate its live graph here.',\n 'overview.noContentTitle': 'Active spaces have no content yet',\n 'overview.noContentText': 'Distill durable context into a space to populate nodes and relations.',\n 'overview.create': '+ Create empty Memory Space',\n 'overview.createName': 'New Memory Space name',\n 'overview.createNamePlaceholder': 'Name',\n 'overview.createDescription': 'New Memory Space description',\n 'overview.createDescriptionPlaceholder': 'Describe what belongs here and when it should be recalled',\n 'overview.creating': 'Creating…',\n 'overview.createAction': 'Create',\n 'overview.editBody': 'Edit',\n 'overview.editBodyAria': 'Edit {name}',\n 'overview.editName': 'Name',\n 'overview.editDescription': 'Routing description',\n 'overview.saveBody': 'Save',\n 'overview.savingBody': 'Saving…',\n 'overview.snapshot': 'Live multi-space snapshot',\n 'overview.waitingSnapshot': 'Waiting for the first snapshot',\n 'overview.updatedAt': 'Updated at {time}',\n 'overview.edgeScope': 'Space scope',\n 'overview.edgeTemporal': 'Temporal',\n 'overview.edgeSemantic': 'Semantic',\n 'overview.edgeCausal': 'Causal',\n 'overview.edgeEntity': 'Entity relation',\n 'overview.graphComposition': '{spaces} spaces · {memories} memories · {entities} entities',\n 'overview.graphCount': 'Showing {visible} / {total} elements',\n 'overview.graphEdges': '{count} graph edges',\n 'overview.inspector': 'Memory details',\n 'overview.inspectorSpace': 'Memory Space details',\n 'overview.inspectorEntity': 'Entity details',\n 'overview.selectNode': 'Select a graph element',\n 'overview.selectNodeText': 'Inspect the exact context for a Memory Space, entity, or memory.',\n 'overview.closeInspector': 'Close node details',\n 'overview.memoryId': 'Memory ID',\n 'overview.spaceId': 'Memory Space ID',\n 'overview.containedMemories': 'Contained memories',\n 'overview.entityMentions': 'Indexed mentions',\n 'overview.exploreNode': 'Recall around this',\n 'overview.previewAria': 'View full content',\n 'overview.previewTitle': 'Full content',\n 'overview.loading': 'Synchronizing the directory and multi-space graph…',\n 'runtime.title': 'Runtime Memory',\n 'runtime.description': 'Manage compact hot memory loaded into every turn. A single control plane owns structured data and projects USER.md and MEMORY.md.',\n 'runtime.total': '{count} hot memories',\n 'runtime.refresh': 'Refresh',\n 'runtime.hotContext': 'Every-turn context',\n 'runtime.addTitle': 'Add hot memory',\n 'runtime.addDescription': 'Keep stable, frequently useful information here; Mnemon Memory Spaces remain the durable archive.',\n 'runtime.content': 'Runtime memory content',\n 'runtime.placeholder': 'Enter one compact, self-contained fact that will remain useful…',\n 'runtime.target': 'Target',\n 'runtime.importance': 'Importance',\n 'runtime.saving': 'Working…',\n 'runtime.addAction': 'Add',\n 'runtime.target.user': 'User Profile',\n 'runtime.target.user.description': 'Identity, role, habits, communication preferences, and explicit collaboration requirements. Capacity maintenance stays local and never enters a Memory Space.',\n 'runtime.target.memory': 'Working Memory',\n 'runtime.target.memory.description': 'Projects, environment, decisions, conventions, tool behavior, and reusable lessons. At capacity, entries are routed into one or more topic-specific Memory Spaces.',\n 'runtime.importance.critical': 'Critical',\n 'runtime.importance.normal': 'Normal',\n 'runtime.importance.low': 'Low',\n 'runtime.empty': 'No hot memory in this target yet.',\n 'runtime.editContent': 'Edit runtime memory',\n 'runtime.editAction': 'Edit',\n 'runtime.saveEdit': 'Save change',\n 'runtime.removeAction': 'Remove',\n 'runtime.removeConfirm': 'Remove this hot-memory entry?',\n 'runtime.result.add': 'Added to {target} · {count} entries',\n 'runtime.result.replace': 'Updated {target} · {count} entries',\n 'runtime.result.remove': 'Removed from {target} · {count} entries',\n 'runtime.result.maintenance': 'Capacity maintenance complete: archived to {spaces}, then updated {target} · {count} entries',\n 'runtime.result.localCompaction': 'Local profile compaction complete: no Memory Space write; updated {target} · {count} entries',\n 'runtime.readOnly': 'This deployment is read only. Hot memory still enters context but cannot be changed here.',\n 'runtime.footnote': 'memories.json is the only source of truth. The control plane generates both Markdown files; do not edit them directly.',\n 'documents.title': 'Project Documents',\n 'documents.description': 'Maintain structured project documents in the current workspace. Active documents support near-field search; before the 10 MB limit is exceeded, the least-recently-used document is indexed in Mnemon and moved to the archive.',\n 'documents.capacity': '{used} / {limit}',\n 'documents.refresh': 'Refresh',\n 'documents.summary': 'Document storage summary',\n 'documents.active': 'Active',\n 'documents.activeHint': 'Near-field search scope',\n 'documents.archivedCount': 'Archive',\n 'documents.archivedHint': 'Excluded from active capacity',\n 'documents.activeCapacity': 'Active capacity',\n 'documents.capacityHint': 'Measured from actual UTF-8 files',\n 'documents.searchAria': 'Search project documents',\n 'documents.searchPlaceholder': 'Search designs, investigations, procedures, or handoffs…',\n 'documents.search': 'Search',\n 'documents.scope': 'Document scope',\n 'documents.new': 'New document',\n 'documents.newTitle': 'Create managed document',\n 'documents.editTitle': 'Edit active document',\n 'documents.editorHint': 'The control plane generates frontmatter, hashes, and revisions. Project source files stay read only.',\n 'documents.managedCopy': 'Managed copy',\n 'documents.name': 'Title',\n 'documents.routing': 'Retrieval description',\n 'documents.sources': 'Source paths',\n 'documents.sourcesPlaceholder': 'src/index.ts, docs/architecture.md',\n 'documents.markdown': 'Markdown content',\n 'documents.saving': 'Saving…',\n 'documents.create': 'Create document',\n 'documents.save': 'Save revision',\n 'documents.created': 'Active document created.',\n 'documents.createdAfterArchive': 'Archived {count} older document(s), then created the active document.',\n 'documents.updated': 'New document revision saved.',\n 'documents.updatedAfterArchive': 'Archived {count} older document(s), then saved the revision.',\n 'documents.archived': 'Mnemon cold index created and document archived; Memory Spaces: {spaces}',\n 'documents.list': 'Project document list',\n 'documents.activeList': 'Active directory',\n 'documents.archiveList': 'Archive directory',\n 'documents.noDescription': 'No retrieval description.',\n 'documents.missing': 'File missing',\n 'documents.emptyActive': 'No active documents yet',\n 'documents.emptyActiveText': 'Complex work is reviewed after it reaches the activity-score gate, or you can create a Document above.',\n 'documents.emptyArchived': 'No archives yet',\n 'documents.emptyArchivedText': 'Only documents with a completed Mnemon index are moved here.',\n 'documents.reader': 'Document reader',\n 'documents.selectTitle': 'Select a document',\n 'documents.selectText': 'Read active project knowledge or follow a Mnemon reference to an archived original.',\n 'documents.coldArchive': 'Archived original',\n 'documents.edit': 'Edit',\n 'documents.path': 'Managed path',\n 'documents.revision': 'Revision',\n 'documents.hash': 'Content hash',\n 'documents.size': 'File size',\n 'documents.archiveReceipt': 'Mnemon cold-index receipt',\n 'documents.archiveTitle': 'Move to archive',\n 'documents.archiveDescription': 'A restricted subagent first stores a searchable Mnemon summary and exact path. The original moves only after that succeeds.',\n 'documents.archive': 'Archive',\n 'documents.archiveConfirm': 'Create the Mnemon index and archive this document?',\n 'documents.archiving': 'Indexing and moving…',\n 'documents.archiveNow': 'Confirm archive',\n 'documents.footnote': '`.mnemon/documents/index.json` is the control-plane source of truth. active stays at or below 10 MB, archived is excluded, and project source files are never modified.',\n 'graph.layoutAria': 'Graph layout',\n 'graph.layoutNatural': 'Natural layout',\n 'graph.layoutUniform': 'Uniform layout',\n 'graph.layoutCustom': 'Custom layout',\n 'graph.layoutStatus': 'Layout: {layout}',\n 'graph.draggable': '{layout} · draggable',\n 'graph.naturalAction': 'Natural spread',\n 'graph.uniformAction': 'Uniform reset',\n 'graph.aria': 'Mnemon live memory graph with {nodes} elements and {edges} edges',\n 'graph.kindSpace': 'Memory Space',\n 'graph.kindEntity': 'Entity',\n 'card.confirmAria': 'Confirm forgetting memory',\n 'card.confirmText': 'Soft-delete this memory?',\n 'card.processing': 'Processing…',\n 'card.confirmForget': 'Confirm forget',\n 'card.related': 'View related',\n 'card.clone': 'Create from this',\n 'card.forget': 'Forget',\n 'search.title': 'Recall Memory',\n 'search.description': 'Query raw Mnemon evidence directly, then optionally ask an Agent to answer from those matches only.',\n 'search.maxResults': 'Up to {count} results',\n 'search.placeholder': 'Why did we choose SQLite? What release conventions apply?',\n 'search.queryAria': 'Memory query',\n 'search.categoryAria': 'Memory category',\n 'search.strategy': 'Strategy',\n 'search.modeAria': 'Recall mode',\n 'search.modeSmart': 'Graph-enhanced recall',\n 'search.modeKeyword': 'Keyword search',\n 'search.modeBasic': 'Basic match',\n 'search.searching': 'Recalling…',\n 'search.action': 'Direct search',\n 'search.agentAction': 'Ask Agent',\n 'search.agentSearching': 'Agent analyzing…',\n 'search.agentAnswer': 'Agent answer',\n 'search.agentAnswerHint': 'Grounded in the recalled evidence below',\n 'search.startTitle': 'Start with a focused question',\n 'search.startText': 'A focused entity, decision, or timeline is more reliable than loading the whole database.',\n 'search.emptyTitle': 'No matches',\n 'search.emptyText': 'Try a more specific entity, decision, or timeline keyword.',\n 'search.results': 'Raw recalled evidence',\n 'search.related': 'Related memories',\n 'search.closeRelated': 'Close related memories',\n 'search.traversing': 'Traversing the graph…',\n 'search.noRelated': 'No related nodes found within two hops.',\n 'entities.title': 'Entity Explorer',\n 'entities.description': 'Query Mnemon directly for an entity\\'s facts, decisions, and context.',\n 'entities.count': '{count} active entities',\n 'entities.nameAria': 'Entity name',\n 'entities.placeholder': 'Enter any entity…',\n 'entities.action': 'Explore',\n 'entities.top': 'Top entities',\n 'entities.frequency': 'By frequency',\n 'entities.emptyRail': 'Entities appear here after memories with entity metadata are stored.',\n 'entities.loading': 'Recalling entity relations…',\n 'entities.selectTitle': 'Select or enter an entity',\n 'entities.selectText': 'The entity view aggregates related memories instead of relying on literal matching.',\n 'entities.emptyTitle': 'No related memories',\n 'entities.emptyText': 'Try the full name or another entity alias.',\n 'remember.title': 'Distill Memory',\n 'remember.description': 'An isolated memory subagent selects a Memory Space, checks duplicates, distills the candidate, and completes the write without filling the main conversation context.',\n 'remember.worker': 'Memory subagent',\n 'remember.readOnlyTitle': 'Read-only mode',\n 'remember.readOnlyText': 'This deployment disables memory writes. Change the DSH Mnemon configuration and restart to enable them.',\n 'remember.flowTitle': 'What the memory subagent does',\n 'remember.routeTitle': 'Choose ownership',\n 'remember.routeText': 'Select an existing Memory Space or recognize a durable new scope',\n 'remember.dedupeTitle': 'Search and deduplicate',\n 'remember.dedupeText': 'Identify duplicates, additions, or conflicts with existing memories',\n 'remember.writeTitle': 'Write structured memory',\n 'remember.writeText': 'Distill content and metadata, create useful relations, and return a receipt',\n 'remember.flowText': 'The subagent only receives Mnemon tools, keeping the raw directory and retrieval process out of the main context.',\n 'remember.delegateTitle': 'Send to memory subagent',\n 'remember.noSession': 'No live session',\n 'remember.ready': 'Subagent ready',\n 'remember.candidate': 'Candidate',\n 'remember.candidateAria': 'Memory candidate',\n 'remember.placeholder': 'Enter background, preferences, decisions, or insights worth retaining across tasks. The model decides whether they qualify.',\n 'remember.sessionHint': 'This view is not bound to a live session, so it cannot start a memory subagent.',\n 'remember.processing': 'Memory subagent is working…',\n 'remember.action': 'Evaluate and distill',\n 'remember.advanced': 'Advanced human constraints',\n 'remember.advancedHint': 'Constrain the target Memory Space and metadata',\n 'remember.expand': 'Expand',\n 'remember.target': 'Target Memory Space',\n 'remember.entities': 'Entities (comma-separated)',\n 'remember.tags': 'Tags (comma-separated)',\n 'remember.advancedText': 'Advanced options constrain the subagent; they do not bypass supervision or duplicate checks.',\n 'remember.saving': 'Subagent is writing…',\n 'remember.advancedAction': 'Distill with constraints',\n 'remember.skipped': 'The memory subagent decided not to write',\n 'remember.completed': 'The memory subagent completed processing',\n 'remember.processed': 'Memory subagent processed: {action}',\n 'remember.dispatchFailed': 'Dispatch failed: {error}',\n 'remember.saveFailed': 'Save failed: {error}',\n 'content.title': 'Memory Content',\n 'content.description': 'Browse active Memory Spaces without recall side effects. Every item identifies its owning space and remains maintainable.',\n 'content.count': '{count} memories',\n 'content.filterAria': 'Filter memory content',\n 'content.filterPlaceholder': 'Filter by content or exact ID…',\n 'content.categoryAria': 'Memory category',\n 'content.apply': 'Apply filters',\n 'content.notice': 'The list reads active graph snapshots without increasing recall access counts.',\n 'content.showing': 'Showing {visible} / {total}',\n 'content.showMore': 'Show {count} more',\n 'content.emptyTitle': 'No matching memories',\n 'content.emptyText': 'Clear the filters or distill the first durable memory.',\n 'status.title': 'System Status',\n 'status.description': 'Mnemon engine, Memory Space directory, and subagent orchestration. DSH deployment owns connection configuration.',\n 'status.nominal': 'System nominal',\n 'status.checkRequired': 'Check required',\n 'status.rechecking': 'Checking…',\n 'status.recheck': 'Check again',\n 'status.aria': 'Mnemon runtime status',\n 'status.engine': 'Memory engine',\n 'status.engineConnected': 'Mnemon connected',\n 'status.engineUnavailable': 'Mnemon unavailable',\n 'status.engineChecking': 'Checking the local engine',\n 'status.versionWaiting': 'Waiting for version',\n 'status.spaces': 'Memory Spaces',\n 'status.activeRatio': '{active} / {total} active',\n 'status.runtime': 'Runtime',\n 'status.runtimeRatio': '{user} user · {memory} project',\n 'status.runtimeBytes': '{bytes} used',\n 'status.runtimeWaiting': 'Waiting',\n 'status.runtimeWaitingDetail': 'Awaiting the Host storage inventory',\n 'status.directoryUnsynced': 'Directory not synchronized',\n 'status.activeMemories': '{count} active memories',\n 'status.documents': 'Project Documents',\n 'status.documentsWaiting': 'Waiting for workspace',\n 'status.documentsSession': 'Available after binding a live session',\n 'status.documentRatio': '{active} active · {archived} archived',\n 'status.documentUsage': '{used} / {limit} active capacity',\n 'status.router': 'Subagent router',\n 'status.routerReady': 'Memory subagent available',\n 'status.sessionMissing': 'No live session bound',\n 'status.routerChecking': 'Synchronizing session capabilities',\n 'status.orchestrationWaiting': 'Waiting for orchestration status',\n 'status.workerCounts': '{recalls} recalls · {answers} answers · {reviews} reviews · {documentArchives} document moves · {migrations} hot-memory archives · {writes} regular writes',\n 'status.workerSummary': '{recalls} recalls · {reviews} reviews · {writes} writes · {failures} failed',\n 'status.lifecycle': 'Subagent Lifecycle',\n 'status.lifecycleText': 'Pre-step adds only a short cue. Background activity is scored from user text, turns, completed tool calls, and tool diversity; after the gate and idle delay, one fork child reviews hot memory and substantial project documentation together.',\n 'status.phaseIdle': 'Idle',\n 'status.phaseSupervised': 'Supervised request',\n 'status.phaseError': 'Error',\n 'status.phaseReview': 'Background review',\n 'status.prime': 'Prime',\n 'status.primeText': 'Initialize routing state without reading the directory or memory',\n 'status.recallWorker': 'Recall worker',\n 'status.recallText': 'Pre-step only prompts a decision; the main model recalls on demand',\n 'status.recallOff': 'Automatic recall is disabled',\n 'status.writeWorker': 'Scored review',\n 'status.writeText': 'After activity reaches {threshold}, wait {seconds}s idle, fork the full checkpoint, and maintain hot memory or Documents only when justified',\n 'status.writeOff': 'Background review is disabled',\n 'status.latestPhase': 'Latest phase',\n 'status.latestActivity': 'Latest activity',\n 'status.reviewState': 'Review state',\n 'status.reviewPending': 'Score reached; waiting for idle',\n 'status.reviewRunning': 'Reviewing',\n 'status.reviewQualified': 'Score reached; waiting for turn completion',\n 'status.reviewAccumulating': 'Accumulating signals',\n 'status.reviewIdle': 'Accumulating signals',\n 'status.activityScore': 'Activity score',\n 'status.activitySignals': 'Accumulated signals',\n 'status.activitySignalValues': '{chars} chars · {turns} turns · {tools} tool calls · {unique} tools',\n 'status.lastReview': 'Last review',\n 'status.noReview': 'Not run yet',\n 'status.reviewAt': '{time} · {action} · trigger score {score}',\n 'status.supervisedRequests': 'Supervised requests',\n 'status.workerFailures': 'Subagent failures',\n 'status.reviewDocuments': 'Documents in last review',\n 'status.noActivity': 'No activity yet',\n 'status.quickDiagnostics': 'Quick Diagnostics',\n 'status.cliExecutable': 'Mnemon CLI executable',\n 'status.cliMissing': 'Mnemon CLI not found',\n 'status.readingSpaces': '{count} Memory Spaces participate in reads',\n 'status.directoryWaiting': 'Memory Space directory is waiting for Host synchronization',\n 'status.webAgentReady': 'WebUI can start isolated memory subagents',\n 'status.liveSessionMissing': 'Live session missing',\n 'status.lifecycleFailures': '{count} lifecycle failures',\n 'status.documentsUnavailable': 'Document directory unavailable for this session',\n 'status.documentsHealthy': '{count} active document(s) available for near-field search',\n 'status.nativeAccess': 'Native commands',\n 'status.nativeAccessText': 'Models use native mnemon_* tools. Human commands still use supervised routing.',\n 'status.engineStorage': 'Engine and Storage',\n 'status.online': 'Online',\n 'status.offline': 'Offline',\n 'status.mnemonVersion': 'Mnemon version',\n 'status.directory': 'Memory Space directory',\n 'status.activeDbSize': 'Active database size',\n 'status.activeCount': 'Active',\n 'status.activeGraphEdges': 'Active graph edges',\n 'status.documentDirectory': 'Project Documents directory',\n 'status.activeDocuments': 'Active Documents',\n 'status.coldDocuments': 'Archives',\n 'status.documentCapacity': 'Active document capacity',\n 'status.storageDomains': 'Storage Domains',\n 'status.storageDomainsText': 'The current selection is the shared directory boundary for runtime memory, Memory Spaces, project Documents, and background state.',\n 'status.storageBrowseOnly': 'Browsing does not switch writes',\n 'status.storageScopeAria': 'Select a storage domain to inspect',\n 'status.storageGlobal': 'Global',\n 'status.storageWorkspace': 'Workspace',\n 'status.storageCustom': 'Custom',\n 'status.storageCurrent': 'Current read/write',\n 'status.storageWaiting': 'Reading storage-domain directories…',\n 'status.storageCustomUnset': 'No custom directory is configured. This view exposes only a custom root already configured and active in DSH.',\n 'status.storageWorkspaceUnavailable': 'The current session has no available workspace directory.',\n 'status.storageActiveRoot': 'Current read/write root',\n 'status.storageViewedRoot': 'Viewed root',\n 'status.storageAvailable': 'Directory available',\n 'status.storageNotCreated': 'Directory not created',\n 'status.storageRuntime': 'Runtime Memory',\n 'status.storageBodies': 'Memory Spaces',\n 'status.storageDocuments': 'Project Documents',\n 'status.storageState': 'Background State',\n 'status.storageReady': 'Ready',\n 'status.storageEmpty': 'Empty',\n 'status.storageMissing': 'Not created',\n 'status.storageInvalid': 'Repair needed',\n 'status.storageItems': 'items',\n 'status.storageRuntimeDetail': 'USER {user} · MEMORY {memory}',\n 'status.storageBodiesDetail': '{active} active · {databases} databases',\n 'status.storageDocumentsDetail': '{active} active · {archived} archived',\n 'status.storageStateReady': 'Review watermarks are persisted',\n 'status.storageStateVolatile': 'Review state is currently owned by the Host process',\n 'status.storageFootnote': 'Current read/write root: {root}. Change the scope only in DSH Settings → Plugin Configuration → Mnemon; it applies after restart and never auto-migrates, merges, or deletes old content.',\n 'status.flowTitle': 'Memory System Flow',\n 'status.flowDescription': 'Maps the real execution boundaries across per-turn injection, deterministic file control, semantic workers, the CLI data plane, archive, and fork review.',\n 'status.flowLive': 'Live state',\n 'status.flowDegraded': 'Partially unavailable',\n 'status.flowConversation': 'User / Current Task',\n 'status.flowTurns': 'Current-turn input and tool trace',\n 'status.flowSupervisor': 'Root Agent',\n 'status.flowEntries': '{count} hot-memory entries',\n 'status.flowDocuments': '{active} active · {archived} archived',\n 'status.flowContext': 'Evidence / Receipts',\n 'status.flowContextDetail': 'Structured results return to the task',\n 'status.flowReadWrite': 'Deterministic Host path',\n 'status.flowArchive': 'LLM-supervised path',\n 'status.flowCurrentScope': 'Current scope: {scope}',\n 'status.flowLaneContext': 'Per-turn Context',\n 'status.flowLaneContextDetail': 'Runtime is injected every turn; Documents are searched on demand',\n 'status.flowLaneSemantic': 'On-demand Semantic Operations',\n 'status.flowLaneSemanticDetail': 'An isolated worker decides; Host services execute',\n 'status.flowLaneMaintenance': 'Idle Maintenance and Archive',\n 'status.flowLaneMaintenanceDetail': 'Fork review plus index-before-move archival',\n 'status.flowRuntimeMeta': 'USER.md + MEMORY.md · {count} entries',\n 'status.flowPromptAssembly': 'every-turn prompt assembly',\n 'status.flowDocumentSearch': 'Deterministic Document Search',\n 'status.flowOnDemand': 'on demand; no full-content injection',\n 'status.flowRootMeta': 'routes tools; never opens SQLite directly',\n 'status.flowStructuredReturn': 'structured evidence / receipt',\n 'status.flowEvidenceMeta': 'returns to the Root Agent with sources',\n 'status.flowSemanticRequest': 'recall · write · related',\n 'status.flowSpawnWorker': 'spawn Isolated Worker',\n 'status.flowSpawnMeta': 'semantic judgment · minimal tool allowlist',\n 'status.flowService': 'MnemonService',\n 'status.flowServiceMeta': 'validate · normalize · aggregate',\n 'status.flowRunnerCli': 'Runner → Local CLI',\n 'status.flowRunnerCliMeta': 'timeout / cancel / JSON process boundary',\n 'status.flowHostBridge': 'Mnemon Host Bridge',\n 'status.flowHostBridgeMeta': 'Service → Runner → local CLI',\n 'status.flowSpacesMeta': '{active}/{total} active · {insights} memories',\n 'status.flowDeterministicWrites': 'Ordinary Runtime and Document Changes',\n 'status.flowDeterministicWritesMeta': 'add / replace / remove · create / update',\n 'status.flowControlPlane': 'Deterministic Host Control',\n 'status.flowControlPlaneMeta': 'locks · atomic writes · revision · capacity',\n 'status.flowReviewGate': 'Activity Score and Idle Gate',\n 'status.flowReviewGateMeta': '{score}/{threshold} · idle {seconds}s',\n 'status.flowForkReview': 'fork Completed Checkpoint',\n 'status.flowForkReviewMeta': '{state} · Runtime / Document maintenance only',\n 'status.flowReviewTargets': 'Runtime / active Document',\n 'status.flowReviewTargetsMeta': 'conservative upkeep · a new turn cancels review',\n 'status.flowColdArchive': 'spawn Archive Worker',\n 'status.flowColdArchiveMeta': 'capacity maintenance / manual archive',\n 'status.flowIndexFirst': '1 · write / verify the Mnemon cold index',\n 'status.flowRevisionMove': '2 · move the original after revision fence',\n 'status.flowRevisionMoveMeta': '{archived} archived · failure or conflict keeps active content',\n 'status.flowArchivedDocuments': 'Archived Documents',\n 'status.flowRecent': 'Recent activity',\n 'status.flowRunning': 'Running',\n 'status.flowPending': 'Waiting for idle',\n 'status.flowStatic': 'Execution boundary',\n 'status.flowLegendReady': 'Available / ready',\n 'status.flowLegendRecent': 'Current or recent path',\n 'status.flowLegendBoundary': 'Dashed lines mark LLM judgment boundaries',\n 'config.aria': 'Mnemon plugin configuration',\n 'config.description': 'Choose one storage boundary for runtime memory, project Documents, Memory Spaces, and background state.',\n 'config.unsaved': 'Unsaved changes',\n 'config.restart': 'Applies after restart',\n 'config.noticeBefore': 'Configuration is written to',\n 'config.noticeAfter': ' and applies after restarting DSH. Switching scopes never migrates existing content automatically.',\n 'config.scope': 'Storage scope',\n 'config.scopeHint': 'Global is shared across workspaces; Workspace uses the DSH launch directory; Custom uses the directory below.',\n 'config.scopeAria': 'Mnemon storage scope',\n 'config.global': 'Global',\n 'config.workspace': 'Workspace',\n 'config.custom': 'Custom directory',\n 'config.customDirectory': 'Custom directory',\n 'config.customHint': 'Use an absolute path or ~/ prefix. The complete Mnemon data domain lives here.',\n 'config.customAria': 'Mnemon custom data directory',\n 'config.invalidScope': 'The storage scope is invalid.',\n 'config.customRequired': 'A data directory is required for custom storage.',\n 'config.customAbsolute': 'The custom directory must be absolute or start with ~/.',\n 'config.saveFailed': 'Save failed: {error}',\n 'config.readOnly': 'Plugin settings are read-only in this deployment.',\n 'config.discard': 'Discard changes',\n 'config.saving': 'Saving…',\n 'config.save': 'Save to settings.yaml',\n 'config.overridden': 'Overridden',\n 'config.reset': 'Restore default',\n} satisfies Record<MnemonKey, string>\n\nexport type MnemonTranslate = (key: MnemonKey, params?: Record<string, unknown>) => string\n\nfunction interpolate(dictionary: Record<MnemonKey, string>, key: MnemonKey, params?: Record<string, unknown>): string {\n const template = dictionary[key]\n if (params === undefined) return template\n return template.replace(/\\{(\\w+)\\}/g, (match, name: string) => name in params ? String(params[name]) : match)\n}\n\nexport function translateZh(key: MnemonKey, params?: Record<string, unknown>): string {\n return interpolate(zh, key, params)\n}\n\nexport function translateEn(key: MnemonKey, params?: Record<string, unknown>): string {\n return interpolate(en, key, params)\n}\n","import { useEffect, useMemo, useState, useSyncExternalStore } from 'react'\nimport type { Config } from '../config.ts'\nimport type { ClientSettingsScope } from '../contracts.ts'\nimport css from './MnemonSettingsCard.module.css'\nimport { translateZh, type MnemonTranslate } from './locales.ts'\n\nexport interface MnemonSettingsCardProps {\n scope: ClientSettingsScope<Config>\n t?: MnemonTranslate\n}\n\ntype Field = 'storageScope' | 'dataDir'\ntype Draft = Record<Field, string>\n\nconst FIELD_ORDER: Field[] = ['storageScope', 'dataDir']\n\nfunction record(value: unknown): Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n ? value as Record<string, unknown>\n : {}\n}\n\nfunction draftOf(value: Config | undefined): Draft {\n const resolved = value ?? {}\n return {\n storageScope: resolved.storageScope ?? (resolved.dataDir?.trim() ? 'custom' : 'global'),\n dataDir: resolved.dataDir?.trim() ?? '',\n }\n}\n\nfunction inheritedDraft(base: unknown): Draft {\n return draftOf(record(base) as Config)\n}\n\nfunction validation(t: MnemonTranslate, draft: Draft): string | null {\n if (!['global', 'workspace', 'custom'].includes(draft.storageScope)) return t('config.invalidScope')\n if (draft.storageScope !== 'custom') return null\n const directory = draft.dataDir.trim()\n if (directory === '') return t('config.customRequired')\n if (!(directory === '~' || directory.startsWith('~/') || directory.startsWith('/'))) return t('config.customAbsolute')\n return null\n}\n\nexport function MnemonSettingsCard({ scope, t = translateZh }: MnemonSettingsCardProps): JSX.Element | null {\n const subscribe = useMemo(() => scope.subscribe.bind(scope), [scope])\n const getSnapshot = useMemo(() => scope.getSnapshot.bind(scope), [scope])\n const snapshot = useSyncExternalStore(subscribe, getSnapshot, getSnapshot)\n const [draft, setDraft] = useState<Draft>(() => draftOf(snapshot.value))\n const [dirty, setDirty] = useState<Set<Field>>(() => new Set())\n const [reset, setReset] = useState<Set<Field>>(() => new Set())\n const [saving, setSaving] = useState(false)\n const [failed, setFailed] = useState<string | null>(null)\n\n useEffect(() => {\n if (dirty.size === 0) setDraft(draftOf(snapshot.value))\n }, [dirty.size, snapshot.value])\n\n const overridden = useMemo(() => record(snapshot.user), [snapshot.user])\n const inherited = useMemo(() => inheritedDraft(snapshot.base), [snapshot.base])\n const error = validation(t, draft)\n const controlsDisabled = !snapshot.writable || saving\n\n if (snapshot.status === 'unavailable') return null\n\n const edit = (field: Field, value: string) => {\n setDraft(current => ({ ...current, [field]: value }))\n setDirty(current => new Set(current).add(field))\n setReset(current => {\n const next = new Set(current)\n next.delete(field)\n return next\n })\n setFailed(null)\n }\n\n const resetField = (field: Field) => {\n setDraft(current => ({ ...current, [field]: inherited[field] }))\n setDirty(current => new Set(current).add(field))\n setReset(current => new Set(current).add(field))\n setFailed(null)\n }\n\n const discard = () => {\n setDraft(draftOf(snapshot.value))\n setDirty(new Set())\n setReset(new Set())\n setFailed(null)\n }\n\n const save = async () => {\n if (error !== null || dirty.size === 0 || saving) return\n setSaving(true)\n setFailed(null)\n try {\n const order = draft.storageScope === 'custom' ? [...FIELD_ORDER].reverse() : FIELD_ORDER\n for (const field of order) {\n if (!dirty.has(field)) continue\n if (reset.has(field) || (field === 'dataDir' && draft.dataDir.trim() === '')) {\n await scope.unset(field)\n } else {\n await scope.set(field, draft[field].trim())\n }\n }\n setDirty(new Set())\n setReset(new Set())\n } catch (reason) {\n setFailed(reason instanceof Error ? reason.message : String(reason))\n } finally {\n setSaving(false)\n }\n }\n\n const fieldMeta = (field: Field) => Object.hasOwn(overridden, field) && !reset.has(field)\n const errorId = error === null ? undefined : 'mnemon-settings-validation'\n const loading = snapshot.status === 'loading'\n\n return (\n <section className={css.card} aria-label={t('config.aria')} aria-busy={saving || loading}>\n <div className={css.panelHeader}>\n <div className={css.headerCopy}><h3>Mnemon</h3><p>{t('config.description')}</p></div>\n <span className={`${css.status} ${dirty.size > 0 ? css.statusDirty : ''}`} aria-live=\"polite\">\n {loading ? t('common.loading') : dirty.size > 0 ? t('config.unsaved') : t('config.restart')}\n </span>\n </div>\n <div className={css.body}>\n {loading ? <p className={css.loading} role=\"status\">{t('common.loading')}</p> : <>\n <p className={css.notice}>{t('config.noticeBefore')} <code>.dsh/settings.yaml</code>{t('config.noticeAfter')}</p>\n\n <div className={css.primarySettings}>\n <SettingField controlId=\"mnemon-storage-scope\" t={t} label={t('config.scope')} hint={t('config.scopeHint')} overridden={fieldMeta('storageScope')} resetDisabled={controlsDisabled} onReset={() => resetField('storageScope')}>\n <select id=\"mnemon-storage-scope\" aria-label={t('config.scopeAria')} aria-describedby=\"mnemon-storage-scope-hint\" value={draft.storageScope} onChange={event => edit('storageScope', event.target.value)} disabled={controlsDisabled}><option value=\"global\">{t('config.global')} · ~/.mnemon</option><option value=\"workspace\">{t('config.workspace')} · &lt;workspace&gt;/.mnemon</option><option value=\"custom\">{t('config.custom')}</option></select>\n </SettingField>\n {draft.storageScope === 'custom' && <SettingField controlId=\"mnemon-custom-directory\" t={t} label={t('config.customDirectory')} hint={t('config.customHint')} overridden={fieldMeta('dataDir')} resetDisabled={controlsDisabled} onReset={() => resetField('dataDir')}>\n <input id=\"mnemon-custom-directory\" aria-label={t('config.customAria')} aria-describedby={`mnemon-custom-directory-hint${errorId === undefined ? '' : ` ${errorId}`}`} aria-invalid={error !== null} value={draft.dataDir} onChange={event => edit('dataDir', event.target.value)} placeholder=\"~/mnemon-data\" spellCheck={false} autoComplete=\"off\" disabled={controlsDisabled} />\n </SettingField>}\n </div>\n\n <div className={css.feedback} aria-live=\"polite\">\n {error !== null && <p id=\"mnemon-settings-validation\" className={css.error} role=\"alert\">{error}</p>}\n {failed !== null && <p className={css.error} role=\"alert\">{t('config.saveFailed', { error: failed })}</p>}\n {!snapshot.writable && <p className={css.readOnly}>{t('config.readOnly')}</p>}\n </div>\n\n <div className={css.actions}>\n <button type=\"button\" className={css.discard} disabled={dirty.size === 0 || saving} onClick={discard}>{t('config.discard')}</button>\n <button type=\"button\" className={css.save} disabled={dirty.size === 0 || saving || error !== null || !snapshot.writable} onClick={() => void save()}>{saving ? t('config.saving') : t('config.save')}</button>\n </div>\n </>}\n </div>\n </section>\n )\n}\n\nfunction SettingField(props: { controlId: string; t: MnemonTranslate; label: string; hint: string; overridden: boolean; resetDisabled: boolean; onReset: () => void; children: JSX.Element }): JSX.Element {\n return (\n <div className={css.field}>\n <div className={css.fieldHeading}>\n <label className={css.fieldTitle} htmlFor={props.controlId}>{props.label}</label>\n {props.overridden && <em className={css.overridden}>{props.t('config.overridden')}</em>}\n {props.overridden && <button className={css.reset} type=\"button\" disabled={props.resetDisabled} onClick={props.onReset}>{props.t('config.reset')}</button>}\n </div>\n {props.children}\n <p id={`${props.controlId}-hint`} className={css.fieldHint}>{props.hint}</p>\n </div>\n )\n}\n","import*as r from\"react\";function n(){return n=Object.assign?Object.assign.bind():function(r){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t])}return r},n.apply(this,arguments)}var e=[\"children\",\"options\"],t={blockQuote:\"0\",breakLine:\"1\",breakThematic:\"2\",codeBlock:\"3\",codeFenced:\"4\",codeInline:\"5\",footnote:\"6\",footnoteReference:\"7\",gfmTask:\"8\",heading:\"9\",headingSetext:\"10\",htmlBlock:\"11\",htmlComment:\"12\",htmlSelfClosing:\"13\",image:\"14\",link:\"15\",linkAngleBraceStyleDetector:\"16\",linkBareUrlDetector:\"17\",linkMailtoDetector:\"18\",newlineCoalescer:\"19\",orderedList:\"20\",paragraph:\"21\",ref:\"22\",refImage:\"23\",refLink:\"24\",table:\"25\",tableSeparator:\"26\",text:\"27\",textBolded:\"28\",textEmphasized:\"29\",textEscaped:\"30\",textMarked:\"31\",textStrikethroughed:\"32\",unorderedList:\"33\"},u=[\"allowFullScreen\",\"allowTransparency\",\"autoComplete\",\"autoFocus\",\"autoPlay\",\"cellPadding\",\"cellSpacing\",\"charSet\",\"classId\",\"colSpan\",\"contentEditable\",\"contextMenu\",\"crossOrigin\",\"encType\",\"formAction\",\"formEncType\",\"formMethod\",\"formNoValidate\",\"formTarget\",\"frameBorder\",\"hrefLang\",\"inputMode\",\"keyParams\",\"keyType\",\"marginHeight\",\"marginWidth\",\"maxLength\",\"mediaGroup\",\"minLength\",\"noValidate\",\"radioGroup\",\"readOnly\",\"rowSpan\",\"spellCheck\",\"srcDoc\",\"srcLang\",\"srcSet\",\"tabIndex\",\"useMap\"].reduce(function(r,n){return r[n.toLowerCase()]=n,r},{class:\"className\",for:\"htmlFor\"}),a={amp:\"&\",apos:\"'\",gt:\">\",lt:\"<\",nbsp:\" \",quot:\"“\"},i=[\"style\",\"script\",\"pre\"],o=[\"src\",\"href\",\"data\",\"formAction\",\"srcDoc\",\"action\"],c=/([-A-Z0-9_:]+)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|(?:\\{((?:\\\\.|{[^}]*?}|[^}])*)\\})))?/gi,f=/\\n{2,}$/,l=/^(\\s*>[\\s\\S]*?)(?=\\n\\n|$)/,_=/^ *> ?/gm,d=/^(?:\\[!([^\\]]*)\\]\\n)?([\\s\\S]*)/,s=/^ {2,}\\n/,v=/^(?:([-*_])( *\\1){2,}) *(?:\\n *)+\\n/,p=/^(?: {1,3})?(`{3,}|~{3,}) *(\\S+)? *([^\\n]*?)?\\n([\\s\\S]*?)(?:\\1\\n?|$)/,y=/^(?: {4}[^\\n]+\\n*)+(?:\\n *)+\\n?/,h=/^(`+)((?:\\\\`|(?!\\1)`|[^`])+)\\1/,g=/^(?:\\n *)*\\n/,m=/\\r\\n?/g,k=/^\\[\\^([^\\]]+)](:(.*)((\\n+ {4,}.*)|(\\n(?!\\[\\^).+))*)/,x=/^\\[\\^([^\\]]+)]/,q=/\\f/g,b=/^---[ \\t]*\\n(.|\\n)*\\n---[ \\t]*\\n/,S=/^\\s*?\\[(x|\\s)\\]/,z=/^ *(#{1,6}) *([^\\n]+?)(?: +#*)?(?:\\n *)*(?:\\n|$)/,$=/^ *(#{1,6}) +([^\\n]+?)(?: +#*)?(?:\\n *)*(?:\\n|$)/,E=/^([^\\n]+)\\n *(=|-)\\2{2,} *\\n/,A=/^ *(?!<[a-z][^ >/]* ?\\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\\n?(\\s*(?:<\\1[^>]*?>[\\s\\S]*?<\\/\\1>|(?!<\\1\\b)[\\s\\S])*?)<\\/\\1>(?!<\\/\\1>)\\n*/i,R=/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi,B=/^<!--[\\s\\S]*?(?:-->)/,L=/^(data|aria|x)-[a-z_][a-z\\d_.-]*$/,O=/^ *<([a-z][a-z0-9:]*)(?:\\s+((?:<.*?>|[^>])*))?\\/?>(?!<\\/\\1>)(\\s*\\n)?/i,j=/^\\{.*\\}$/,C=/^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,I=/^<([^ >]+[:@\\/][^ >]+)>/,T=/-([a-z])?/gi,M=/^(\\|.*)\\n(?: *(\\|? *[-:]+ *\\|[-| :]*)\\n((?:.*\\|.*\\n)*))?\\n?/,w=/^[^\\n]+(?: \\n|\\n{2,})/,D=/^\\[([^\\]]*)\\]:\\s+<?([^\\s>]+)>?\\s*(\"([^\"]*)\")?/,F=/^!\\[([^\\]]*)\\] ?\\[([^\\]]*)\\]/,P=/^\\[([^\\]]*)\\] ?\\[([^\\]]*)\\]/,Z=/(\\n|^[-*]\\s|^#|^ {2,}|^-{2,}|^>\\s)/,N=/\\t/g,G=/(^ *\\||\\| *$)/g,U=/^ *:-+: *$/,V=/^ *:-+ *$/,H=/^ *-+: *$/,Q=function(r){return\"(?=[\\\\s\\\\S]+?\\\\1\"+(r?\"\\\\1\":\"\")+\")\"},W=\"((?:\\\\[.*?\\\\][([].*?[)\\\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|\\\\\\\\\\\\1|[\\\\s\\\\S])+?)\",J=RegExp(\"^([*_])\\\\1\"+Q(1)+W+\"\\\\1\\\\1(?!\\\\1)\"),K=RegExp(\"^([*_])\"+Q(0)+W+\"\\\\1(?!\\\\1)\"),X=RegExp(\"^(==)\"+Q(0)+W+\"\\\\1\"),Y=RegExp(\"^(~~)\"+Q(0)+W+\"\\\\1\"),rr=/^(:[a-zA-Z0-9-_]+:)/,nr=/^\\\\([^0-9A-Za-z\\s])/,er=/\\\\([^0-9A-Za-z\\s])/g,tr=/^[\\s\\S](?:(?! \\n|[0-9]\\.|http)[^=*_~\\-\\n:<`\\\\\\[!])*/,ur=/^\\n+/,ar=/^([ \\t]*)/,ir=/(?:^|\\n)( *)$/,or=\"(?:\\\\d+\\\\.)\",cr=\"(?:[*+-])\";function fr(r){return\"( *)(\"+(1===r?or:cr)+\") +\"}var lr=fr(1),_r=fr(2);function dr(r){return RegExp(\"^\"+(1===r?lr:_r))}var sr=dr(1),vr=dr(2);function pr(r){return RegExp(\"^\"+(1===r?lr:_r)+\"[^\\\\n]*(?:\\\\n(?!\\\\1\"+(1===r?or:cr)+\" )[^\\\\n]*)*(\\\\n|$)\",\"gm\")}var yr=pr(1),hr=pr(2);function gr(r){var n=1===r?or:cr;return RegExp(\"^( *)(\"+n+\") [\\\\s\\\\S]+?(?:\\\\n{2,}(?! )(?!\\\\1\"+n+\" (?!\"+n+\" ))\\\\n*|\\\\s*\\\\n*$)\")}var mr=gr(1),kr=gr(2);function xr(r,n){var e=1===n,t=e?mr:kr,u=e?yr:hr,a=e?sr:vr;return{t:function(r){return a.test(r)},u:jr(function(r,n){var e=ir.exec(n.prevCapture);return e&&(n.list||!n.inline&&!n.simple)?t.exec(r=e[1]+r):null}),i:1,o:function(r,n,t){var i=e?+r[2]:void 0,o=r[0].replace(f,\"\\n\").match(u),c=!1;return{items:o.map(function(r,e){var u=a.exec(r)[0].length,i=RegExp(\"^ {1,\"+u+\"}\",\"gm\"),f=r.replace(i,\"\").replace(a,\"\"),l=e===o.length-1,_=-1!==f.indexOf(\"\\n\\n\")||l&&c;c=_;var d,s=t.inline,v=t.list;t.list=!0,_?(t.inline=!1,d=zr(f)+\"\\n\\n\"):(t.inline=!0,d=zr(f));var p=n(d,t);return t.inline=s,t.list=v,p}),ordered:e,start:i}},l:function(n,e,t){return r(n.ordered?\"ol\":\"ul\",{key:t.key,start:\"20\"===n.type?n.start:void 0},n.items.map(function(n,u){return r(\"li\",{key:u},e(n,t))}))}}}var qr=RegExp(\"^\\\\[((?:\\\\[[^\\\\[\\\\]]*(?:\\\\[[^\\\\[\\\\]]*\\\\][^\\\\[\\\\]]*)*\\\\]|[^\\\\[\\\\]])*)\\\\]\\\\(\\\\s*<?((?:\\\\([^)]*\\\\)|[^\\\\s\\\\\\\\]|\\\\\\\\.)*?)>?(?:\\\\s+['\\\"]([\\\\s\\\\S]*?)['\\\"])?\\\\s*\\\\)\"),br=/^!\\[(.*?)\\]\\( *((?:\\([^)]*\\)|[^() ])*) *\"?([^)\"]*)?\"?\\)/;function Sr(r){return\"string\"==typeof r}function zr(r){for(var n=r.length;n>0&&r[n-1]<=\" \";)n--;return r.slice(0,n)}function $r(r,n){return r.startsWith(n)}function Er(r,n,e){if(Array.isArray(e)){for(var t=0;t<e.length;t++)if($r(r,e[t]))return!0;return!1}return e(r,n)}function Ar(r){return r.replace(/[ÀÁÂÃÄÅàáâãä忯]/g,\"a\").replace(/[çÇ]/g,\"c\").replace(/[ðÐ]/g,\"d\").replace(/[ÈÉÊËéèêë]/g,\"e\").replace(/[ÏïÎîÍíÌì]/g,\"i\").replace(/[Ññ]/g,\"n\").replace(/[øØœŒÕõÔôÓóÒò]/g,\"o\").replace(/[ÜüÛûÚúÙù]/g,\"u\").replace(/[ŸÿÝý]/g,\"y\").replace(/[^a-z0-9- ]/gi,\"\").replace(/ /gi,\"-\").toLowerCase()}function Rr(r){return H.test(r)?\"right\":U.test(r)?\"center\":V.test(r)?\"left\":null}function Br(r,n,e,t){var u=e.inTable;e.inTable=!0;var a=[[]],i=\"\";function o(){if(i){var r=a[a.length-1];r.push.apply(r,n(i,e)),i=\"\"}}return r.trim().split(/(`[^`]*`|\\\\\\||\\|)/).filter(Boolean).forEach(function(r,n,e){\"|\"===r.trim()&&(o(),t)?0!==n&&n!==e.length-1&&a.push([]):i+=r}),o(),e.inTable=u,a}function Lr(r,n,e){e.inline=!0;var t=r[2]?r[2].replace(G,\"\").split(\"|\").map(Rr):[],u=r[3]?function(r,n,e){return r.trim().split(\"\\n\").map(function(r){return Br(r,n,e,!0)})}(r[3],n,e):[],a=Br(r[1],n,e,!!u.length);return e.inline=!1,u.length?{align:t,cells:u,header:a,type:\"25\"}:{children:a,type:\"21\"}}function Or(r,n){return null==r.align[n]?{}:{textAlign:r.align[n]}}function jr(r){return r.inline=1,r}function Cr(r){return jr(function(n,e){return e.inline?r.exec(n):null})}function Ir(r){return jr(function(n,e){return e.inline||e.simple?r.exec(n):null})}function Tr(r){return function(n,e){return e.inline||e.simple?null:r.exec(n)}}function Mr(r){return jr(function(n){return r.exec(n)})}var wr=/(javascript|vbscript|data(?!:image)):/i;function Dr(r){try{var n=decodeURIComponent(r).replace(/[^A-Za-z0-9/:]/g,\"\");if(wr.test(n))return null}catch(r){return null}return r}function Fr(r){return r?r.replace(er,\"$1\"):r}function Pr(r,n,e){var t=e.inline||!1,u=e.simple||!1;e.inline=!0,e.simple=!0;var a=r(n,e);return e.inline=t,e.simple=u,a}function Zr(r,n,e){var t=e.inline||!1,u=e.simple||!1;e.inline=!1,e.simple=!0;var a=r(n,e);return e.inline=t,e.simple=u,a}function Nr(r,n,e){var t=e.inline||!1;e.inline=!1;var u=r(n,e);return e.inline=t,u}var Gr=function(r,n,e){return{children:Pr(n,r[2],e)}};function Ur(){return{}}function Vr(){return null}function Hr(){return[].slice.call(arguments).filter(Boolean).join(\" \")}function Qr(r,n,e){for(var t=r,u=n.split(\".\");u.length&&void 0!==(t=t[u[0]]);)u.shift();return t||e}function Wr(r,n){var e=Qr(n,r);return e?\"function\"==typeof e||\"object\"==typeof e&&\"render\"in e?e:Qr(n,r+\".component\",r):r}function Jr(e,t){var f;void 0===e&&(e=\"\"),void 0===t&&(t={}),t.overrides=t.overrides||{},t.namedCodesToUnicode=t.namedCodesToUnicode?n({},a,t.namedCodesToUnicode):a;var G=t.slugify||Ar,U=t.sanitizer||Dr,V=t.createElement||r.createElement,H=[l,p,y,t.enforceAtxHeadings?$:z,E,M,mr,kr],Q=[].concat(H,[w,A,B,O]);function W(r,n){for(var e=0;e<r.length;e++)if(r[e].test(n))return!0;return!1}function er(r,e){var u=Qr(t.overrides,r+\".props\",{});return V.apply(void 0,[Wr(r,t.overrides),n({},e,u,{className:Hr(null==e?void 0:e.className,u.className)||void 0})].concat([].slice.call(arguments,2)))}function ir(r){r=r.replace(b,\"\");var n=!1;t.forceInline?n=!0:t.forceBlock||(n=!1===Z.test(r));for(var e=dr(_r(n?r:zr(r).replace(ur,\"\")+\"\\n\\n\",{inline:n}));Sr(e[e.length-1])&&!e[e.length-1].trim();)e.pop();if(null===t.wrapper)return e;var u,a=t.wrapper||(n?\"span\":\"div\");if(e.length>1||t.forceWrapper)u=e;else{if(1===e.length)return\"string\"==typeof(u=e[0])?er(\"span\",{key:\"outer\"},u):u;u=null}return V(a,{key:\"outer\"},u)}function or(r,n){if(!n||!n.trim())return null;var e=n.match(c);return e?e.reduce(function(n,e){var t=e.indexOf(\"=\");if(-1!==t){var a=function(r){return-1!==r.indexOf(\"-\")&&null===r.match(L)&&(r=r.replace(T,function(r,n){return n.toUpperCase()})),r}(e.slice(0,t)).trim(),i=function(r){var n=r[0];return('\"'===n||\"'\"===n)&&r.length>=2&&r[r.length-1]===n?r.slice(1,-1):r}(e.slice(t+1).trim()),c=u[a]||a;if(\"ref\"===c)return n;var f=n[c]=function(r,n,e,t){return\"style\"===n?function(r){var n=[],e=\"\",t=!1,u=!1,a=\"\";if(!r)return n;for(var i=0;i<r.length;i++){var o=r[i];if('\"'!==o&&\"'\"!==o||t||(u?o===a&&(u=!1,a=\"\"):(u=!0,a=o)),\"(\"===o&&e.endsWith(\"url\")?t=!0:\")\"===o&&t&&(t=!1),\";\"!==o||u||t)e+=o;else{var c=e.trim();if(c){var f=c.indexOf(\":\");if(f>0){var l=c.slice(0,f).trim(),_=c.slice(f+1).trim();n.push([l,_])}}e=\"\"}}var d=e.trim();if(d){var s=d.indexOf(\":\");if(s>0){var v=d.slice(0,s).trim(),p=d.slice(s+1).trim();n.push([v,p])}}return n}(e).reduce(function(n,e){var u=e[0],a=e[1];return n[u.replace(/(-[a-z])/g,function(r){return r[1].toUpperCase()})]=t(a,r,u),n},{}):-1!==o.indexOf(n)?t(Fr(e),r,n):(e.match(j)&&(e=Fr(e.slice(1,e.length-1))),\"true\"===e||\"false\"!==e&&e)}(r,a,i,U);\"string\"==typeof f&&(A.test(f)||O.test(f))&&(n[c]=ir(f.trim()))}else\"style\"!==e&&(n[u[e]||e]=!0);return n},{}):null}var cr=[],fr={},lr=((f={})[0]={t:[\">\"],u:Tr(l),i:1,o:function(r,n,e){var t=r[0].replace(_,\"\").match(d);return{alert:t[1],children:n(t[2],e)}},l:function(r,n,e){var t={key:e.key};return r.alert&&(t.className=\"markdown-alert-\"+G(r.alert.toLowerCase(),Ar),r.children.unshift({attrs:{},children:[{type:\"27\",text:r.alert}],noInnerParse:!0,type:\"11\",tag:\"header\"})),er(\"blockquote\",t,n(r.children,e))}},f[1]={t:[\" \"],u:Mr(s),i:1,o:Ur,l:function(r,n,e){return er(\"br\",{key:e.key})}},f[2]={t:[\"--\",\"__\",\"**\",\"- \",\"* \",\"_ \"],u:Tr(v),i:1,o:Ur,l:function(r,n,e){return er(\"hr\",{key:e.key})}},f[3]={t:[\" \"],u:Tr(y),i:0,o:function(r){return{lang:void 0,text:Fr(zr(r[0].replace(/^ {4}/gm,\"\")))}},l:function(r,e,t){return er(\"pre\",{key:t.key},er(\"code\",n({},r.attrs,{className:r.lang?\"lang-\"+r.lang:\"\"}),r.text))}},f[4]={t:[\"```\",\"~~~\"],u:Tr(p),i:0,o:function(r){return{attrs:or(\"code\",r[3]||\"\"),lang:r[2]||void 0,text:r[4],type:\"3\"}}},f[5]={t:[\"`\"],u:Ir(h),i:3,o:function(r){return{text:Fr(r[2])}},l:function(r,n,e){return er(\"code\",{key:e.key},r.text)}},f[6]={t:[\"[^\"],u:Tr(k),i:0,o:function(r){return cr.push({footnote:r[2],identifier:r[1]}),{}},l:Vr},f[7]={t:[\"[^\"],u:Cr(x),i:1,o:function(r){return{target:\"#\"+G(r[1],Ar),text:r[1]}},l:function(r,n,e){return er(\"a\",{key:e.key,href:U(r.target,\"a\",\"href\")},er(\"sup\",{key:e.key},r.text))}},f[8]={t:[\"[ ]\",\"[x]\"],u:Cr(S),i:1,o:function(r){return{completed:\"x\"===r[1].toLowerCase()}},l:function(r,n,e){return er(\"input\",{checked:r.completed,key:e.key,readOnly:!0,type:\"checkbox\"})}},f[9]={t:[\"#\"],u:Tr(t.enforceAtxHeadings?$:z),i:1,o:function(r,n,e){return{children:Pr(n,r[2],e),id:G(r[2],Ar),level:r[1].length}},l:function(r,n,e){return er(\"h\"+r.level,{id:r.id,key:e.key},n(r.children,e))}},f[10]={t:function(r){var n=r.indexOf(\"\\n\");return n>0&&n<r.length-1&&(\"=\"===r[n+1]||\"-\"===r[n+1])},u:Tr(E),i:1,o:function(r,n,e){return{children:Pr(n,r[1],e),level:\"=\"===r[2]?1:2,type:\"9\"}}},f[11]={t:[\"<\"],u:Mr(A),i:1,o:function(r,n,e){var t=r[3].match(ar),u=RegExp(\"^\"+t[1],\"gm\"),a=r[3].replace(u,\"\"),o=W(Q,a)?Nr:Pr,c=r[1].toLowerCase(),f=-1!==i.indexOf(c),l=(f?c:r[1]).trim(),_={attrs:or(l,r[2]),noInnerParse:f,tag:l};if(e.inAnchor=e.inAnchor||\"a\"===c,f)_.text=r[3];else{var d=e.inHTML;e.inHTML=!0,_.children=o(n,a,e),e.inHTML=d}return e.inAnchor=!1,_},l:function(r,e,t){return er(r.tag,n({key:t.key},r.attrs),r.text||(r.children?e(r.children,t):\"\"))}},f[13]={t:[\"<\"],u:Mr(O),i:1,o:function(r){var n=r[1].trim();return{attrs:or(n,r[2]||\"\"),tag:n}},l:function(r,e,t){return er(r.tag,n({},r.attrs,{key:t.key}))}},f[12]={t:[\"\\x3c!--\"],u:Mr(B),i:1,o:function(){return{}},l:Vr},f[14]={t:[\"![\"],u:Ir(br),i:1,o:function(r){return{alt:Fr(r[1]),target:Fr(r[2]),title:Fr(r[3])}},l:function(r,n,e){return er(\"img\",{key:e.key,alt:r.alt||void 0,title:r.title||void 0,src:U(r.target,\"img\",\"src\")})}},f[15]={t:[\"[\"],u:Cr(qr),i:3,o:function(r,n,e){return{children:Zr(n,r[1],e),target:Fr(r[2]),title:Fr(r[3])}},l:function(r,n,e){return er(\"a\",{key:e.key,href:U(r.target,\"a\",\"href\"),title:r.title},n(r.children,e))}},f[16]={t:[\"<\"],u:Cr(I),i:0,o:function(r){var n=r[1],e=!1;return-1!==n.indexOf(\"@\")&&-1===n.indexOf(\"//\")&&(e=!0,n=n.replace(\"mailto:\",\"\")),{children:[{text:n,type:\"27\"}],target:e?\"mailto:\"+n:n,type:\"15\"}}},f[17]={t:function(r,n){return!n.inAnchor&&!t.disableAutoLink&&($r(r,\"http://\")||$r(r,\"https://\"))},u:Cr(C),i:0,o:function(r){return{children:[{text:r[1],type:\"27\"}],target:r[1],title:void 0,type:\"15\"}}},f[20]=xr(er,1),f[33]=xr(er,2),f[19]={t:[\"\\n\"],u:Tr(g),i:3,o:Ur,l:function(){return\"\\n\"}},f[21]={u:jr(function(r,n){if(n.inline||n.simple||n.inHTML&&-1===r.indexOf(\"\\n\\n\")&&-1===n.prevCapture.indexOf(\"\\n\\n\"))return null;for(var e=\"\",t=0;;){var u=r.indexOf(\"\\n\",t),a=r.slice(t,-1===u?void 0:u+1);if(W(H,a))break;if(e+=a,-1===u||!a.trim())break;t=u+1}var i=zr(e);return\"\"===i?null:[e,,i]}),i:3,o:Gr,l:function(r,n,e){return er(\"p\",{key:e.key},n(r.children,e))}},f[22]={t:[\"[\"],u:Cr(D),i:0,o:function(r){return fr[r[1]]={target:r[2],title:r[4]},{}},l:Vr},f[23]={t:[\"![\"],u:Ir(F),i:0,o:function(r){return{alt:r[1]?Fr(r[1]):void 0,ref:r[2]}},l:function(r,n,e){return fr[r.ref]?er(\"img\",{key:e.key,alt:r.alt,src:U(fr[r.ref].target,\"img\",\"src\"),title:fr[r.ref].title}):null}},f[24]={t:function(r){return\"[\"===r[0]&&-1===r.indexOf(\"](\")},u:Cr(P),i:0,o:function(r,n,e){return{children:n(r[1],e),fallbackChildren:r[0],ref:r[2]}},l:function(r,n,e){return fr[r.ref]?er(\"a\",{key:e.key,href:U(fr[r.ref].target,\"a\",\"href\"),title:fr[r.ref].title},n(r.children,e)):er(\"span\",{key:e.key},r.fallbackChildren)}},f[25]={t:[\"|\"],u:Tr(M),i:1,o:Lr,l:function(r,n,e){var t=r;return er(\"table\",{key:e.key},er(\"thead\",null,er(\"tr\",null,t.header.map(function(r,u){return er(\"th\",{key:u,style:Or(t,u)},n(r,e))}))),er(\"tbody\",null,t.cells.map(function(r,u){return er(\"tr\",{key:u},r.map(function(r,u){return er(\"td\",{key:u,style:Or(t,u)},n(r,e))}))})))}},f[27]={u:jr(function(r,n){var e;return $r(r,\":\")&&(e=rr.exec(r)),e||tr.exec(r)}),i:4,o:function(r){var n=r[0];return{text:-1===n.indexOf(\"&\")?n:n.replace(R,function(r,n){return t.namedCodesToUnicode[n]||r})}},l:function(r){return r.text}},f[28]={t:[\"**\",\"__\"],u:Ir(J),i:2,o:function(r,n,e){return{children:n(r[2],e)}},l:function(r,n,e){return er(\"strong\",{key:e.key},n(r.children,e))}},f[29]={t:function(r){var n=r[0];return(\"*\"===n||\"_\"===n)&&r[1]!==n},u:Ir(K),i:3,o:function(r,n,e){return{children:n(r[2],e)}},l:function(r,n,e){return er(\"em\",{key:e.key},n(r.children,e))}},f[30]={t:[\"\\\\\"],u:Ir(nr),i:1,o:function(r){return{text:r[1],type:\"27\"}}},f[31]={t:[\"==\"],u:Ir(X),i:3,o:Gr,l:function(r,n,e){return er(\"mark\",{key:e.key},n(r.children,e))}},f[32]={t:[\"~~\"],u:Ir(Y),i:3,o:Gr,l:function(r,n,e){return er(\"del\",{key:e.key},n(r.children,e))}},f);!0===t.disableParsingRawHTML&&(delete lr[11],delete lr[13]);var _r=function(r){var n=Object.keys(r);function e(t,u){var a=[];if(u.prevCapture=u.prevCapture||\"\",t.trim())for(;t;)for(var i=0;i<n.length;){var o=n[i],c=r[o];if(!c.t||Er(t,u,c.t)){var f=c.u(t,u);if(f&&f[0]){t=t.substring(f[0].length);var l=c.o(f,e,u);u.prevCapture+=f[0],l.type||(l.type=o),a.push(l);break}i++}else i++}return u.prevCapture=\"\",a}return n.sort(function(n,e){return r[n].i-r[e].i||(n<e?-1:1)}),function(r,n){return e(function(r){return r.replace(m,\"\\n\").replace(q,\"\").replace(N,\" \")}(r),n)}}(lr),dr=function(r,n){return function e(t,u){if(void 0===u&&(u={}),Array.isArray(t)){for(var a=u.key,i=[],o=!1,c=0;c<t.length;c++){u.key=c;var f=e(t[c],u),l=Sr(f);l&&o?i[i.length-1]+=f:null!==f&&i.push(f),o=l}return u.key=a,i}return function(e,t,u){var a=r[e.type].l;return n?n(function(){return a(e,t,u)},e,t,u):a(e,t,u)}(t,e,u)}}(lr,t.renderRule),sr=ir(e);return cr.length?er(\"div\",null,sr,er(\"footer\",{key:\"footer\"},cr.map(function(r){return er(\"div\",{id:G(r.identifier,Ar),key:r.identifier},r.identifier,dr(_r(r.footnote,{inline:!0})))}))):sr}export default function(n){var t=n.children,u=n.options,a=function(r,n){if(null==r)return{};var e,t,u={},a=Object.keys(r);for(t=0;t<a.length;t++)n.indexOf(e=a[t])>=0||(u[e]=r[e]);return u}(n,e);return r.cloneElement(Jr(null==t?\"\":t,u),a)}export{t as RuleType,Jr as compiler,Dr as sanitizer,Ar as slugify};\n//# sourceMappingURL=index.module.js.map\n","/**\n * QoderWork 0.9.12's deterministic post-turn review gate.\n *\n * The upstream implementation scores user text length rather than provider\n * token usage, which keeps the gate stable when an adapter omits usage data.\n */\nexport const QODERWORK_REVIEW_POLICY = Object.freeze({\n reviewThreshold: 5,\n textLengthScoreUnit: 50,\n textLengthScoreCap: 3,\n toolCountScoreUnit: 5,\n toolCountScoreCap: 2,\n toolDiversityThreshold: 3,\n toolDiversityScoreCap: 2,\n turnScore: 1,\n})\n\nexport interface ReviewActivity {\n totalUserTextLength: number\n turnCount: number\n toolCallCount: number\n uniqueToolCount: number\n}\n\nexport interface ReviewActivityScore extends ReviewActivity {\n textLengthScore: number\n turnScore: number\n toolCallScore: number\n toolDiversityScore: number\n score: number\n threshold: number\n eligible: boolean\n}\n\nexport function scoreReviewActivity(activity: ReviewActivity): ReviewActivityScore {\n const policy = QODERWORK_REVIEW_POLICY\n const textLengthScore = Math.min(\n Math.floor(activity.totalUserTextLength / policy.textLengthScoreUnit),\n policy.textLengthScoreCap,\n )\n const turnScore = activity.turnCount * policy.turnScore\n const toolCallScore = Math.min(\n Math.floor(activity.toolCallCount / policy.toolCountScoreUnit),\n policy.toolCountScoreCap,\n )\n const toolDiversityScore = activity.uniqueToolCount < policy.toolDiversityThreshold\n ? 0\n : Math.min(\n activity.uniqueToolCount - policy.toolDiversityThreshold + 1,\n policy.toolDiversityScoreCap,\n )\n const score = textLengthScore + turnScore + toolCallScore + toolDiversityScore\n return {\n ...activity,\n textLengthScore,\n turnScore,\n toolCallScore,\n toolDiversityScore,\n score,\n threshold: policy.reviewThreshold,\n eligible: score >= policy.reviewThreshold,\n }\n}\n","import { mkdtempSync, rmSync, writeFileSync } from 'node:fs'\nimport { tmpdir } from 'node:os'\nimport { join } from 'node:path'\nimport type { JsonValue } from './contracts.ts'\nimport type { ResolvedConfig } from './config.ts'\nimport {\n MemoryBodyRegistry,\n type CreateMemoryBodyRequest,\n type MemoryBody,\n type UpdateMemoryBodyRequest,\n} from './memory-bodies.ts'\nimport type { MnemonRunner } from './runner.ts'\nimport type { LifecycleSnapshot } from './lifecycle.ts'\nimport type { DocumentSnapshot } from './documents.ts'\nimport type { StorageScopeCatalog } from './storage-scope.ts'\n\nexport const CATEGORIES = ['preference', 'decision', 'fact', 'insight', 'context', 'general'] as const\nexport type Category = typeof CATEGORIES[number]\nexport const SOURCES = ['user', 'agent', 'external'] as const\nexport type Source = typeof SOURCES[number]\nexport const EDGE_TYPES = ['temporal', 'semantic', 'causal', 'entity'] as const\nexport type EdgeType = typeof EDGE_TYPES[number]\nexport const INTENTS = ['WHY', 'WHEN', 'ENTITY', 'GENERAL'] as const\nexport type Intent = typeof INTENTS[number]\n\nexport interface Insight {\n id: string\n content: string\n category?: string\n importance?: number\n tags?: string[]\n entities?: string[]\n source?: string\n score?: number\n confidence?: string\n intent?: string\n matchedVia?: string\n createdAt?: string\n depth?: number\n edgeType?: string\n memoryBodyId?: string\n memoryBodyName?: string\n}\n\nexport interface SearchRequest {\n query: string\n mode?: 'smart' | 'keyword' | 'basic'\n limit?: number\n category?: Category\n source?: Source\n intent?: Intent\n memoryBodyIds?: string[]\n}\n\nexport interface RememberRequest {\n content: string\n category?: Category\n importance?: number\n tags?: string[]\n entities?: string[]\n source?: Source\n memoryBodyId?: string\n}\n\nexport interface MemoryBodyStats {\n totalInsights: number\n deletedInsights: number\n edgeCount: number\n oplogCount: number\n dbSizeBytes: number\n byCategory: Record<string, number>\n topEntities: Array<{ entity: string; count: number }>\n}\n\nexport interface MemoryBodyView extends MemoryBody {\n healthy: boolean\n error?: string\n stats?: MemoryBodyStats\n}\n\nexport interface MemoryBodyCatalog {\n items: MemoryBodyView[]\n total: number\n activeCount: number\n directory: string\n generatedAt: string\n}\n\nexport interface StatusView {\n healthy: boolean\n error?: string\n version?: string\n cliPath: string\n commandFound: boolean\n dataDir: string\n store: string\n writeEnabled: boolean\n timeoutMs: number\n defaultRecallLimit: number\n memoryBodyDirectory: string\n memoryBodies: MemoryBodyView[]\n lifecycle?: LifecycleSnapshot\n documents?: DocumentSnapshot\n storage?: StorageScopeCatalog\n stats?: MemoryBodyStats & { dbPath?: string }\n}\n\nexport interface MemoryGraphNode extends Insight {\n color: string\n graphId?: string\n kind?: 'memory' | 'entity' | 'space'\n memoryBodyIds?: string[]\n memoryBodyNames?: string[]\n occurrenceCount?: number\n}\n\nexport interface MemoryGraphEdge {\n sourceId: string\n targetId: string\n label: string\n color: string\n type?: EdgeType | 'scope'\n}\n\nexport interface MemoryGraphSnapshot {\n nodes: MemoryGraphNode[]\n edges: MemoryGraphEdge[]\n generatedAt: string\n memoryBodies?: Array<Pick<MemoryBody, 'id' | 'name' | 'active'>>\n}\n\nexport interface MemoryListRequest {\n query?: string\n category?: Category\n limit?: number\n memoryBodyIds?: string[]\n}\n\nexport interface MemoryListView {\n items: MemoryGraphNode[]\n total: number\n generatedAt: string\n}\n\nexport interface EntityView {\n items: Array<{ entity: string; count: number }>\n insights: Insight[]\n selected?: string\n}\n\nfunction record(value: JsonValue | undefined): Record<string, JsonValue> | undefined {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n ? value as Record<string, JsonValue>\n : undefined\n}\n\nfunction text(value: JsonValue | undefined): string | undefined {\n return typeof value === 'string' ? value : undefined\n}\n\nfunction number(value: JsonValue | undefined): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction stringArray(value: JsonValue | undefined): string[] | undefined {\n if (!Array.isArray(value)) return undefined\n return value.filter((entry): entry is string => typeof entry === 'string')\n}\n\nfunction normalizeInsight(value: JsonValue): Insight | undefined {\n const item = record(value)\n if (item === undefined) return undefined\n // Mnemon <=0.1.2 returns full recall rows as\n // `{ insight: { id, content, ... }, score, intent, via, signals }`; newer\n // builds default to a compact flat row. Accept both without version gates.\n const nested = record(item.insight)\n const core = nested ?? item\n const id = text(core.id)\n const content = text(core.content)\n if (id === undefined || content === undefined) return undefined\n const insight: Insight = { id, content }\n const optionalText = {\n category: text(core.category),\n source: text(core.source),\n confidence: text(item.confidence),\n intent: text(item.intent),\n matchedVia: text(item.matched_via ?? item.via ?? item.via_edge_type),\n createdAt: text(core.created_at),\n edgeType: text(item.via_edge_type),\n }\n for (const [key, value] of Object.entries(optionalText)) if (value !== undefined) Object.assign(insight, { [key]: value })\n const optionalNumbers = {\n importance: number(core.importance),\n score: number(item.score),\n depth: number(item.depth),\n }\n for (const [key, value] of Object.entries(optionalNumbers)) if (value !== undefined) Object.assign(insight, { [key]: value })\n const tags = stringArray(core.tags)\n const entities = stringArray(core.entities)\n if (tags !== undefined) insight.tags = tags\n if (entities !== undefined) insight.entities = entities\n return insight\n}\n\nconst JS_STRING = '\"(?:\\\\\\\\.|[^\"\\\\\\\\])*\"'\nconst VIZ_NODE_PATTERN = new RegExp(`\\\\{id:(${JS_STRING}),label:(${JS_STRING}),title:(${JS_STRING}),color:(${JS_STRING}),font:\\\\{color:\"white\"\\\\}\\\\}`, 'g')\nconst VIZ_EDGE_PATTERN = new RegExp(`\\\\{from:(${JS_STRING}),to:(${JS_STRING}),label:(${JS_STRING}),color:\\\\{color:(${JS_STRING})\\\\},arrows:\"to\"`, 'g')\nconst EDGE_COLORS: Record<string, EdgeType> = {\n '#aaaaaa': 'temporal',\n '#3498db': 'semantic',\n '#e74c3c': 'causal',\n '#2ecc71': 'entity',\n}\n\nfunction decodeJsString(value: string): string {\n const decoded = JSON.parse(value) as unknown\n if (typeof decoded !== 'string') throw new Error('Mnemon viz contained an invalid string')\n return decoded\n}\n\n/** Parse the official Mnemon vis.js export without executing its HTML or loading its CDN script. */\nexport function parseMemoryGraph(html: string, now = new Date()): MemoryGraphSnapshot {\n const nodes: MemoryGraphNode[] = []\n const edges: MemoryGraphEdge[] = []\n for (const match of html.matchAll(VIZ_NODE_PATTERN)) {\n const id = decodeJsString(match[1]!)\n const label = decodeJsString(match[2]!)\n const content = decodeJsString(match[3]!).replaceAll('\\\\n', '\\n')\n const color = decodeJsString(match[4]!)\n const category = /\\[([a-z_]+)\\]/i.exec(label)?.[1] ?? 'general'\n nodes.push({ id, content, category, color })\n }\n for (const match of html.matchAll(VIZ_EDGE_PATTERN)) {\n const color = decodeJsString(match[4]!)\n const type = EDGE_COLORS[color.toLowerCase()]\n edges.push({\n sourceId: decodeJsString(match[1]!),\n targetId: decodeJsString(match[2]!),\n label: decodeJsString(match[3]!),\n color,\n ...(type === undefined ? {} : { type }),\n })\n }\n if (!html.includes('var nodes = new vis.DataSet([')) throw new Error('Mnemon viz returned an unexpected HTML payload')\n return { nodes, edges, generatedAt: now.toISOString() }\n}\n\nfunction boundedInteger(value: number | undefined, fallback: number, min: number, max: number): number {\n if (value === undefined) return fallback\n if (!Number.isInteger(value) || value < min || value > max) throw new Error(`value must be an integer within ${min}..${max}`)\n return value\n}\n\nfunction required(value: string, label: string, max: number): string {\n const normalized = value.trim()\n if (normalized === '') throw new Error(`${label} is required`)\n if (normalized.length > max) throw new Error(`${label} is too long (max ${max} characters)`)\n return normalized\n}\n\nfunction allowed<T extends string>(value: T | undefined, values: readonly T[], label: string): T | undefined {\n if (value !== undefined && !values.includes(value)) {\n throw new Error(`${label} must be one of: ${values.join(', ')}`)\n }\n return value\n}\n\nfunction commaList(values: string[] | undefined, label: string, limit: number): string | undefined {\n if (values === undefined) return undefined\n const normalized = values.map(value => value.trim()).filter(value => value !== '')\n if (normalized.length > limit) throw new Error(`${label} accepts at most ${limit} values`)\n if (normalized.some(value => value.includes(','))) throw new Error(`${label} values cannot contain commas`)\n return normalized.length === 0 ? undefined : normalized.join(',')\n}\n\nexport class MnemonService {\n readonly memoryBodies: MemoryBodyRegistry\n\n constructor(readonly runner: MnemonRunner, readonly config: ResolvedConfig, memoryBodies?: MemoryBodyRegistry) {\n this.memoryBodies = memoryBodies ?? new MemoryBodyRegistry(runner)\n }\n\n async bodies(signal?: AbortSignal): Promise<MemoryBodyCatalog> {\n const items: MemoryBodyView[] = []\n for (const body of this.memoryBodies.list()) items.push(await this.bodyStatus(body, signal))\n return {\n items,\n total: items.length,\n activeCount: items.filter(body => body.active).length,\n directory: this.memoryBodies.directory,\n generatedAt: new Date().toISOString(),\n }\n }\n\n async status(signal?: AbortSignal): Promise<StatusView> {\n const catalog = await this.bodies(signal)\n const active = catalog.items.filter(body => body.active)\n const base = {\n cliPath: this.runner.command,\n commandFound: this.runner.commandFound,\n dataDir: this.runner.effectiveDataDir(),\n store: active.map(body => body.id).join(', ') || 'none',\n writeEnabled: this.config.writeEnabled,\n timeoutMs: this.config.timeoutMs,\n defaultRecallLimit: this.config.defaultRecallLimit,\n memoryBodyDirectory: catalog.directory,\n memoryBodies: catalog.items,\n }\n try {\n const rawVersion = await this.runner.runText(['--version'], signal === undefined ? { globalFlags: false } : { signal, globalFlags: false })\n const healthyBodies = active.filter(body => body.healthy && body.stats !== undefined)\n const topEntities = new Map<string, number>()\n const byCategory: Record<string, number> = {}\n for (const body of healthyBodies) {\n for (const [category, count] of Object.entries(body.stats!.byCategory)) byCategory[category] = (byCategory[category] ?? 0) + count\n for (const entity of body.stats!.topEntities) topEntities.set(entity.entity, (topEntities.get(entity.entity) ?? 0) + entity.count)\n }\n const stats: StatusView['stats'] = {\n totalInsights: healthyBodies.reduce((total, body) => total + body.stats!.totalInsights, 0),\n deletedInsights: healthyBodies.reduce((total, body) => total + body.stats!.deletedInsights, 0),\n edgeCount: healthyBodies.reduce((total, body) => total + body.stats!.edgeCount, 0),\n oplogCount: healthyBodies.reduce((total, body) => total + body.stats!.oplogCount, 0),\n dbSizeBytes: healthyBodies.reduce((total, body) => total + body.stats!.dbSizeBytes, 0),\n byCategory,\n topEntities: [...topEntities].map(([entity, count]) => ({ entity, count })).sort((left, right) => right.count - left.count),\n ...(active.length === 1 ? { dbPath: active[0]!.dbPath } : {}),\n }\n const failed = active.filter(body => !body.healthy)\n return {\n healthy: failed.length === 0,\n ...base,\n version: rawVersion.trim().replace(/^mnemon version\\s+/i, ''),\n stats,\n ...(failed.length === 0 ? {} : { error: failed.map(body => `${body.name}: ${body.error ?? 'unavailable'}`).join('; ') }),\n }\n } catch (error) {\n return { healthy: false, ...base, error: error instanceof Error ? error.message : String(error) }\n }\n }\n\n async search(request: SearchRequest, signal?: AbortSignal): Promise<{ query: string; mode: string; results: Insight[]; hint?: string }> {\n const query = required(request.query, 'query', 2000)\n const limit = boundedInteger(request.limit, this.config.defaultRecallLimit, 1, 50)\n const mode = allowed(request.mode, ['smart', 'keyword', 'basic'] as const, 'mode') ?? 'smart'\n const category = allowed(request.category, CATEGORIES, 'category')\n const source = allowed(request.source, SOURCES, 'source')\n const intent = allowed(request.intent, INTENTS, 'intent')\n const bodies = this.readBodies(request.memoryBodyIds)\n const results: Insight[] = []\n const hints: string[] = []\n for (const body of bodies) {\n const args = mode === 'keyword'\n ? ['search', query, '--limit', String(limit)]\n : ['recall', query, '--limit', String(limit)]\n if (mode === 'basic') args.push('--basic')\n if (mode !== 'keyword') {\n if (category !== undefined) args.push('--cat', category)\n if (source !== undefined) args.push('--source', source)\n if (intent !== undefined) args.push('--intent', intent)\n }\n const payload = await this.runner.runJson(args, { ...(signal === undefined ? {} : { signal }), store: body.id })\n const wrapper = record(payload)\n const values = Array.isArray(payload) ? payload : Array.isArray(wrapper?.results) ? wrapper.results : []\n results.push(...values.map(normalizeInsight).filter((entry): entry is Insight => entry !== undefined).map(entry => this.annotate(entry, body)))\n const hint = text(wrapper?.hint)\n if (hint !== undefined) hints.push(`${body.name}: ${hint}`)\n }\n results.sort((left, right) => (right.score ?? 0) - (left.score ?? 0))\n return { query, mode, results: results.slice(0, limit), ...(hints.length === 0 ? {} : { hint: hints.join('\\n') }) }\n }\n\n async graph(signal?: AbortSignal, memoryBodyIds?: string[]): Promise<MemoryGraphSnapshot> {\n const bodies = this.readBodies(memoryBodyIds)\n const nodes: MemoryGraphNode[] = []\n const edges: MemoryGraphEdge[] = []\n for (const body of bodies) {\n const snapshot = await this.graphForBody(body, signal)\n const graphId = (id: string): string => `${body.id}:${id}`\n nodes.push(...snapshot.nodes.map(node => ({ ...this.annotate(node, body), color: node.color, graphId: graphId(node.id) })))\n edges.push(...snapshot.edges.map(edge => ({ ...edge, sourceId: graphId(edge.sourceId), targetId: graphId(edge.targetId) })))\n }\n return {\n nodes,\n edges,\n generatedAt: new Date().toISOString(),\n memoryBodies: bodies.map(({ id, name, active }) => ({ id, name, active })),\n }\n }\n\n async list(request: MemoryListRequest = {}, signal?: AbortSignal): Promise<MemoryListView> {\n const query = request.query?.trim().toLocaleLowerCase() ?? ''\n if (query.length > 500) throw new Error('query is too long (max 500 characters)')\n const category = allowed(request.category, CATEGORIES, 'category')\n const limit = boundedInteger(request.limit, 200, 1, 1000)\n const graph = await this.graph(signal, request.memoryBodyIds)\n const matches = graph.nodes.filter(node =>\n (category === undefined || node.category === category)\n && (query === '' || node.content.toLocaleLowerCase().includes(query) || node.id.toLocaleLowerCase().includes(query)),\n )\n return { items: matches.slice(0, limit), total: matches.length, generatedAt: graph.generatedAt }\n }\n\n async entities(entity?: string, limit?: number, signal?: AbortSignal): Promise<EntityView> {\n const status = await this.status(signal)\n const items = status.stats?.topEntities ?? []\n const selected = entity?.trim() ?? ''\n if (selected === '') return { items, insights: [] }\n if (selected.length > 200) throw new Error('entity is too long (max 200 characters)')\n const response = await this.search({ query: selected, intent: 'ENTITY', limit: boundedInteger(limit, 20, 1, 50) }, signal)\n return { items, selected, insights: response.results }\n }\n\n async remember(request: RememberRequest, signal?: AbortSignal): Promise<JsonValue> {\n this.assertWritable()\n const body = this.writeBody(request.memoryBodyId)\n const content = required(request.content, 'content', 8000)\n const importance = boundedInteger(request.importance, 3, 1, 5)\n const category = allowed(request.category, CATEGORIES, 'category') ?? 'general'\n const source = allowed(request.source, SOURCES, 'source') ?? 'user'\n const args = ['remember', content, '--cat', category, '--imp', String(importance), '--source', source]\n const tags = commaList(request.tags, 'tags', 20)\n const entities = commaList(request.entities, 'entities', 50)\n if (tags !== undefined) args.push('--tags', tags)\n if (entities !== undefined) args.push('--entities', entities)\n const result = await this.runner.runJson(args, { ...(signal === undefined ? {} : { signal }), store: body.id })\n this.activateAfterWrite(body)\n return this.annotateResult(result, body)\n }\n\n async related(id: string, depth = 2, edge?: EdgeType, signal?: AbortSignal, memoryBodyId?: string): Promise<Insight[]> {\n const body = this.readBody(memoryBodyId)\n const args = ['related', required(id, 'id', 200), '--depth', String(boundedInteger(depth, 2, 1, 5))]\n const selectedEdge = allowed(edge, EDGE_TYPES, 'edge')\n if (selectedEdge !== undefined) args.push('--edge', selectedEdge)\n const payload = await this.runner.runJson(args, { ...(signal === undefined ? {} : { signal }), store: body.id })\n if (!Array.isArray(payload)) return []\n return payload.map(normalizeInsight).filter((entry): entry is Insight => entry !== undefined).map(entry => this.annotate(entry, body))\n }\n\n async link(sourceId: string, targetId: string, type: EdgeType = 'semantic', weight = 0.5, reason?: string, signal?: AbortSignal, memoryBodyId?: string): Promise<JsonValue> {\n this.assertWritable()\n const body = this.writeBody(memoryBodyId)\n if (!Number.isFinite(weight) || weight < 0 || weight > 1) throw new Error('weight must be within 0..1')\n const selectedType = allowed(type, EDGE_TYPES, 'type') ?? 'semantic'\n const args = ['link', required(sourceId, 'sourceId', 200), required(targetId, 'targetId', 200), '--type', selectedType, '--weight', String(weight)]\n if (reason !== undefined && reason.trim() !== '') args.push('--meta', JSON.stringify({ reason: required(reason, 'reason', 1000) }))\n const result = await this.runner.runJson(args, { ...(signal === undefined ? {} : { signal }), store: body.id })\n this.activateAfterWrite(body)\n return this.annotateResult(result, body)\n }\n\n async forget(id: string, signal?: AbortSignal, memoryBodyId?: string): Promise<JsonValue> {\n this.assertWritable()\n const body = this.writeBody(memoryBodyId)\n const result = await this.runner.runJson(['forget', required(id, 'id', 200)], { ...(signal === undefined ? {} : { signal }), store: body.id })\n this.activateAfterWrite(body)\n return this.annotateResult(result, body)\n }\n\n async createBody(request: CreateMemoryBodyRequest, signal?: AbortSignal): Promise<MemoryBody> {\n this.assertWritable()\n return this.memoryBodies.create(request, signal)\n }\n\n updateBody(id: string, request: UpdateMemoryBodyRequest): MemoryBody {\n this.assertWritable()\n return this.memoryBodies.update(id, request)\n }\n\n async mergeBodies(targetBodyId: string, sourceBodyIds: string[], deactivateSources = true, signal?: AbortSignal): Promise<JsonValue> {\n this.assertWritable()\n const target = this.memoryBodies.get(targetBodyId)\n const sourceIds = [...new Set(sourceBodyIds.map(id => id.trim()).filter(id => id !== ''))]\n if (sourceIds.length === 0) throw new Error('sourceMemoryBodyIds requires at least one memory body')\n if (sourceIds.includes(target.id)) throw new Error('target memory body cannot also be a merge source')\n const sources = sourceIds.map(id => this.memoryBodies.get(id))\n const insights: Array<Record<string, JsonValue>> = []\n const edges: Array<Record<string, JsonValue>> = []\n for (const source of sources) {\n const offset = insights.length\n const sourceInsights = await this.allInsights(source, signal)\n const indexById = new Map(sourceInsights.map((insight, index) => [insight.id, offset + index]))\n for (const insight of sourceInsights) {\n insights.push({\n content: insight.content,\n ...(insight.category === undefined ? {} : { category: insight.category }),\n ...(insight.importance === undefined ? {} : { importance: insight.importance }),\n ...(insight.tags === undefined ? {} : { tags: insight.tags }),\n ...(insight.entities === undefined ? {} : { entities: insight.entities }),\n ...(insight.source === undefined ? {} : { source: insight.source }),\n ...(insight.createdAt === undefined ? {} : { created_at: insight.createdAt }),\n })\n }\n const graph = await this.graphForBody(source, signal)\n for (const edge of graph.edges) {\n const sourceIndex = indexById.get(edge.sourceId)\n const targetIndex = indexById.get(edge.targetId)\n if (sourceIndex === undefined || targetIndex === undefined || edge.type === undefined) continue\n edges.push({ source_index: sourceIndex, target_index: targetIndex, edge_type: edge.type, weight: 0.5, reason: edge.label })\n }\n }\n if (insights.length === 0) {\n this.activateAfterWrite(target)\n if (deactivateSources) for (const source of sources) this.memoryBodies.setActive(source.id, false)\n return { imported: 0, updated: 0, skipped: 0, edges_inserted: 0, targetMemoryBodyId: target.id }\n }\n const temporary = mkdtempSync(join(tmpdir(), 'dsh-mnemon-merge-'))\n const draftPath = join(temporary, 'memory-draft.json')\n try {\n writeFileSync(draftPath, JSON.stringify({ schema_version: '1', source: 'dsh-mnemon-merge', insights, edges }), { encoding: 'utf8', mode: 0o600 })\n const result = await this.runner.runJson(['import', draftPath], { ...(signal === undefined ? {} : { signal }), store: target.id })\n this.activateAfterWrite(target)\n if (deactivateSources) for (const source of sources) this.memoryBodies.setActive(source.id, false)\n return this.annotateResult(result, target)\n } finally {\n rmSync(temporary, { recursive: true, force: true })\n }\n }\n\n private async bodyStatus(body: MemoryBody, signal?: AbortSignal): Promise<MemoryBodyView> {\n try {\n const raw = await this.runner.runJson(['status'], { ...(signal === undefined ? {} : { signal }), store: body.id })\n const status = record(raw)\n if (status === undefined) throw new Error('mnemon status returned an unexpected payload')\n return { ...body, healthy: true, stats: this.parseStats(status) }\n } catch (error) {\n return { ...body, healthy: false, error: error instanceof Error ? error.message : String(error) }\n }\n }\n\n private parseStats(status: Record<string, JsonValue>): MemoryBodyStats {\n const byCategoryRecord = record(status.by_category) ?? {}\n const byCategory: Record<string, number> = {}\n for (const [category, count] of Object.entries(byCategoryRecord)) if (typeof count === 'number') byCategory[category] = count\n const topEntities = Array.isArray(status.top_entities)\n ? status.top_entities.flatMap((entry) => {\n const entity = record(entry)\n const name = text(entity?.entity)\n const count = number(entity?.count)\n return name === undefined || count === undefined ? [] : [{ entity: name, count }]\n })\n : []\n return {\n totalInsights: number(status.total_insights) ?? 0,\n deletedInsights: number(status.deleted_insights) ?? 0,\n edgeCount: number(status.edge_count) ?? 0,\n oplogCount: number(status.oplog_count) ?? 0,\n dbSizeBytes: number(status.db_size_bytes) ?? 0,\n byCategory,\n topEntities,\n }\n }\n\n private async graphForBody(body: MemoryBody, signal?: AbortSignal): Promise<MemoryGraphSnapshot> {\n const [html, insights] = await Promise.all([\n this.runner.runText(['viz', '--format', 'html', '--output', '-'], { ...(signal === undefined ? {} : { signal }), store: body.id }),\n // Mnemon's HTML visualization omits tags and entities. A readonly recall\n // supplies that metadata without incrementing access counters.\n this.allInsights(body, signal, true),\n ])\n const snapshot = parseMemoryGraph(html)\n const metadata = new Map(insights.map(insight => [insight.id, insight]))\n return {\n ...snapshot,\n nodes: snapshot.nodes.map(node => {\n const insight = metadata.get(node.id)\n return insight === undefined\n ? node\n : { ...node, ...insight, id: node.id, content: node.content, color: node.color }\n }),\n }\n }\n\n private async allInsights(body: MemoryBody, signal?: AbortSignal, readonly = false): Promise<Insight[]> {\n const payload = await this.runner.runJson([\n ...(readonly ? ['--readonly'] : []),\n 'recall', '', '--basic', '--limit', '100000',\n ], { ...(signal === undefined ? {} : { signal }), store: body.id })\n const values = Array.isArray(payload) ? payload : Array.isArray(record(payload)?.results) ? record(payload)!.results as JsonValue[] : []\n return values.map(normalizeInsight).filter((entry): entry is Insight => entry !== undefined)\n }\n\n private readBodies(ids?: string[]): MemoryBody[] {\n const active = this.memoryBodies.active()\n if (ids === undefined || ids.length === 0) return active\n const requested = [...new Set(ids.map(id => id.trim()).filter(id => id !== ''))]\n return requested.map(id => {\n const body = this.memoryBodies.get(id)\n if (!body.active) throw new Error(`memory body is not active for reading: ${id}`)\n return body\n })\n }\n\n private readBody(id?: string): MemoryBody {\n if (id !== undefined && id.trim() !== '') {\n const body = this.memoryBodies.get(id)\n if (!body.active) throw new Error(`memory body is not active for reading: ${body.id}`)\n return body\n }\n const active = this.memoryBodies.active()\n if (active.length !== 1) throw new Error('memoryBodyId is required when the number of active memory bodies is not exactly one')\n return active[0]!\n }\n\n private writeBody(id?: string): MemoryBody {\n if (id !== undefined && id.trim() !== '') return this.memoryBodies.get(id)\n const active = this.memoryBodies.active()\n if (active.length !== 1) throw new Error('memoryBodyId is required when the number of active memory bodies is not exactly one')\n return active[0]!\n }\n\n private annotate<T extends Insight>(insight: T, body: MemoryBody): T {\n return { ...insight, memoryBodyId: body.id, memoryBodyName: body.name }\n }\n\n private annotateResult(result: JsonValue, body: MemoryBody): JsonValue {\n const value = record(result)\n return value === undefined ? result : { ...value, memoryBodyId: body.id, memoryBodyName: body.name }\n }\n\n private activateAfterWrite(body: MemoryBody): void {\n if (!body.active) this.memoryBodies.setActive(body.id, true)\n }\n\n private assertWritable(): void {\n if (!this.config.writeEnabled) throw new Error('dsh-mnemon is configured read-only (writeEnabled: false)')\n }\n}\n","import type { HostConnectionHandle, HostRpcHandler, RpcResult } from './contracts.ts'\nimport type { MnemonLifecycle } from './lifecycle.ts'\nimport type { RuntimeMemoryController, RuntimeMemoryImportance, RuntimeMemoryTarget } from './runtime-memory.ts'\nimport type { Category, EdgeType, Intent, MnemonService, SearchRequest, Source } from './service.ts'\nimport type { StorageScopeInspector } from './storage-scope.ts'\n\nexport const MNEMON_READ_CHANNEL = '/dsh-mnemon-read'\nexport const MNEMON_WRITE_CHANNEL = '/dsh-mnemon-write'\n\nfunction object(value: unknown): Record<string, unknown> {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) throw new Error('payload must be an object')\n return value as Record<string, unknown>\n}\n\nfunction success(value: unknown): RpcResult<unknown> {\n return { ok: true, value }\n}\n\nfunction failure(error: unknown): RpcResult<unknown> {\n return {\n ok: false,\n error: {\n code: 'internal',\n message: error instanceof Error ? error.message : String(error),\n details: {},\n },\n }\n}\n\nfunction badRequest(message: string): RpcResult<unknown> {\n return { ok: false, error: { code: 'bad-request', message, details: { issues: [] } } }\n}\n\nexport function createReadHandler(service: MnemonService, lifecycle?: MnemonLifecycle, runtimeMemory?: RuntimeMemoryController, storage?: StorageScopeInspector): HostRpcHandler {\n return async (endpoint, rawPayload) => {\n try {\n const payload = object(rawPayload)\n switch (endpoint) {\n case 'runtime-memory':\n if (runtimeMemory === undefined) throw new Error('runtime memory is unavailable')\n return success(runtimeMemory.snapshot())\n case 'status':\n {\n const sessionId = payload.sessionId === undefined ? '' : String(payload.sessionId).trim()\n let documents\n if (lifecycle !== undefined && sessionId !== '') {\n try { documents = lifecycle.documents(sessionId) } catch {}\n }\n return success({\n ...await service.status(),\n ...(lifecycle === undefined ? {} : {\n lifecycle: lifecycle.snapshot(payload.sessionId === undefined ? undefined : String(payload.sessionId)),\n }),\n ...(documents === undefined ? {} : { documents }),\n ...(storage === undefined ? {} : { storage: storage.catalog(lifecycle?.workspaceRoot(sessionId)) }),\n })\n }\n case 'documents':\n if (lifecycle === undefined) throw new Error('Mnemon Documents require lifecycle integration')\n return success(lifecycle.documents(String(payload.sessionId ?? '')))\n case 'document':\n if (lifecycle === undefined) throw new Error('Mnemon Documents require lifecycle integration')\n return success(lifecycle.document(String(payload.sessionId ?? ''), String(payload.id ?? '')))\n case 'document-search':\n if (lifecycle === undefined) throw new Error('Mnemon Documents require lifecycle integration')\n return success(await lifecycle.searchDocuments(\n String(payload.sessionId ?? ''),\n String(payload.query ?? ''),\n payload.includeArchived === true,\n payload.limit === undefined ? undefined : Number(payload.limit),\n ))\n case 'graph':\n return success(await service.graph(undefined, Array.isArray(payload.memoryBodyIds) ? payload.memoryBodyIds.map(String) : undefined))\n case 'bodies':\n return success(await service.bodies())\n case 'list':\n return success(await service.list({\n ...(payload.query === undefined ? {} : { query: String(payload.query) }),\n ...(payload.category === undefined ? {} : { category: payload.category as Category }),\n ...(payload.limit === undefined ? {} : { limit: Number(payload.limit) }),\n ...(Array.isArray(payload.memoryBodyIds) ? { memoryBodyIds: payload.memoryBodyIds.map(String) } : {}),\n }))\n case 'entities':\n {\n const entity = payload.entity === undefined ? '' : String(payload.entity).trim()\n const limit = payload.limit === undefined ? undefined : Number(payload.limit)\n return success(await service.entities(entity || undefined, limit))\n }\n case 'search':\n {\n const request = {\n query: String(payload.query ?? ''),\n ...(payload.mode === undefined ? {} : { mode: payload.mode as NonNullable<SearchRequest['mode']> }),\n ...(payload.limit === undefined ? {} : { limit: Number(payload.limit) }),\n ...(payload.category === undefined ? {} : { category: payload.category as Category }),\n ...(payload.source === undefined ? {} : { source: payload.source as Source }),\n ...(payload.intent === undefined ? {} : { intent: payload.intent as Intent }),\n ...(Array.isArray(payload.memoryBodyIds) ? { memoryBodyIds: payload.memoryBodyIds.map(String) } : {}),\n }\n return success(await service.search(request))\n }\n case 'agent-search':\n {\n if (lifecycle === undefined) throw new Error('Mnemon Agent query is unavailable without lifecycle integration')\n const request = {\n query: String(payload.query ?? ''),\n ...(payload.mode === undefined ? {} : { mode: payload.mode as NonNullable<SearchRequest['mode']> }),\n ...(payload.limit === undefined ? {} : { limit: Number(payload.limit) }),\n ...(payload.category === undefined ? {} : { category: payload.category as Category }),\n ...(payload.source === undefined ? {} : { source: payload.source as Source }),\n ...(payload.intent === undefined ? {} : { intent: payload.intent as Intent }),\n ...(Array.isArray(payload.memoryBodyIds) ? { memoryBodyIds: payload.memoryBodyIds.map(String) } : {}),\n }\n const recalled = await service.search(request)\n const answer = await lifecycle.answer(String(payload.sessionId ?? ''), request.query, recalled.results)\n return success({ ...recalled, ...answer })\n }\n case 'related':\n return success(await service.related(String(payload.id ?? ''), payload.depth === undefined ? 2 : Number(payload.depth), payload.edge as EdgeType | undefined, undefined, payload.memoryBodyId === undefined ? undefined : String(payload.memoryBodyId)))\n default:\n return badRequest(`unknown read endpoint: ${endpoint}`)\n }\n } catch (error) {\n return failure(error)\n }\n }\n}\n\nexport function createWriteHandler(service: MnemonService, lifecycle?: MnemonLifecycle, runtimeMemory?: RuntimeMemoryController): HostRpcHandler {\n return async (endpoint, rawPayload) => {\n try {\n const payload = object(rawPayload)\n switch (endpoint) {\n case 'runtime-memory':\n if (runtimeMemory === undefined) throw new Error('runtime memory is unavailable')\n {\n const request = {\n action: String(payload.action ?? '') as 'add' | 'replace' | 'remove',\n target: String(payload.target ?? '') as RuntimeMemoryTarget,\n ...(payload.content === undefined ? {} : { content: String(payload.content) }),\n ...(payload.old_text === undefined ? {} : { oldText: String(payload.old_text) }),\n ...(payload.importance === undefined ? {} : { importance: String(payload.importance) as RuntimeMemoryImportance }),\n }\n const sessionId = String(payload.sessionId ?? '').trim()\n return success(lifecycle === undefined || sessionId === '' ? await runtimeMemory.mutate(request) : await lifecycle.runtime(sessionId, request))\n }\n case 'supervise':\n if (lifecycle === undefined) throw new Error('Mnemon lifecycle integration is unavailable')\n return success(await lifecycle.supervise(String(payload.sessionId ?? ''), String(payload.content ?? '')))\n case 'document':\n if (lifecycle === undefined) throw new Error('Mnemon Documents require lifecycle integration')\n {\n const action = String(payload.action ?? '')\n const sessionId = String(payload.sessionId ?? '')\n if (action === 'archive') return success(await lifecycle.archiveDocument(sessionId, String(payload.id ?? '')))\n if (action === 'create') return success(await lifecycle.mutateDocument(sessionId, {\n action: 'create',\n title: String(payload.title ?? ''),\n content: String(payload.content ?? ''),\n ...(payload.description === undefined ? {} : { description: String(payload.description) }),\n ...(Array.isArray(payload.sourcePaths) ? { sourcePaths: payload.sourcePaths.map(String) } : {}),\n sessionIds: [sessionId],\n }))\n if (action === 'update') return success(await lifecycle.mutateDocument(sessionId, {\n action: 'update',\n id: String(payload.id ?? ''),\n ...(payload.title === undefined ? {} : { title: String(payload.title) }),\n ...(payload.description === undefined ? {} : { description: String(payload.description) }),\n ...(payload.content === undefined ? {} : { content: String(payload.content) }),\n ...(Array.isArray(payload.sourcePaths) ? { sourcePaths: payload.sourcePaths.map(String) } : {}),\n sessionIds: [sessionId],\n }))\n return badRequest(`unknown document action: ${action}`)\n }\n case 'remember':\n {\n const request = {\n content: String(payload.content ?? ''),\n ...(payload.category === undefined ? {} : { category: payload.category as Category }),\n ...(payload.importance === undefined ? {} : { importance: Number(payload.importance) }),\n ...(Array.isArray(payload.tags) ? { tags: payload.tags.map(String) } : {}),\n ...(Array.isArray(payload.entities) ? { entities: payload.entities.map(String) } : {}),\n ...(payload.memoryBodyId === undefined ? {} : { memoryBodyId: String(payload.memoryBodyId) }),\n source: 'user',\n } as const\n return success(lifecycle === undefined\n ? await service.remember(request)\n : await lifecycle.remember(String(payload.sessionId ?? ''), request))\n }\n case 'link':\n return success(lifecycle === undefined\n ? await service.link(String(payload.sourceId ?? ''), String(payload.targetId ?? ''), payload.type as EdgeType | undefined, payload.weight === undefined ? 0.5 : Number(payload.weight), payload.reason === undefined ? undefined : String(payload.reason), undefined, payload.memoryBodyId === undefined ? undefined : String(payload.memoryBodyId))\n : await lifecycle.mutate(String(payload.sessionId ?? ''), 'link', payload))\n case 'forget':\n return success(lifecycle === undefined\n ? await service.forget(String(payload.id ?? ''), undefined, payload.memoryBodyId === undefined ? undefined : String(payload.memoryBodyId))\n : await lifecycle.mutate(String(payload.sessionId ?? ''), 'forget', { id: String(payload.id ?? ''), ...(payload.memoryBodyId === undefined ? {} : { memoryBodyId: String(payload.memoryBodyId) }) }))\n case 'body-create':\n return success(await service.createBody({\n name: String(payload.name ?? ''),\n description: String(payload.description ?? ''),\n ...(payload.active === undefined ? {} : { active: Boolean(payload.active) }),\n }))\n case 'body-update':\n return success(service.updateBody(String(payload.memoryBodyId ?? ''), {\n ...(payload.name === undefined ? {} : { name: String(payload.name) }),\n ...(payload.description === undefined ? {} : { description: String(payload.description) }),\n ...(payload.active === undefined ? {} : { active: Boolean(payload.active) }),\n }))\n default:\n return badRequest(`unknown write endpoint: ${endpoint}`)\n }\n } catch (error) {\n return failure(error)\n }\n }\n}\n\n/** Read operations are available to trusted Web hosts; local mutations stay loopback-only. */\nexport function registerRpc(connection: HostConnectionHandle, service: MnemonService, lifecycle?: MnemonLifecycle, runtimeMemory?: RuntimeMemoryController, storage?: StorageScopeInspector): void {\n connection.rpc.handle(MNEMON_READ_CHANNEL, createReadHandler(service, lifecycle, runtimeMemory, storage), { authority: 'trusted-host' })\n if (service.config.writeEnabled) {\n connection.rpc.handle(MNEMON_WRITE_CHANNEL, createWriteHandler(service, lifecycle, runtimeMemory), { authority: 'loopback' })\n }\n}\n","import type { ClientConnectionHandle } from '../contracts.ts'\nimport { MNEMON_READ_CHANNEL, MNEMON_WRITE_CHANNEL } from '../rpc.ts'\nimport type { MemoryBody } from '../memory-bodies.ts'\nimport type { DocumentMutation, DocumentMutationResult, DocumentSearchResult, DocumentSnapshot, DocumentView } from '../documents.ts'\nimport type { RuntimeMemoryImportance, RuntimeMemoryMutationResult, RuntimeMemorySnapshot, RuntimeMemoryTarget } from '../runtime-memory.ts'\nimport type { EntityView, Insight, MemoryBodyCatalog, MemoryGraphSnapshot, MemoryListRequest, MemoryListView, RememberRequest, SearchRequest, StatusView } from '../service.ts'\n\nexport interface SearchResponse {\n query: string\n mode: string\n results: Insight[]\n hint?: string\n}\n\nexport interface AgentSearchResponse extends SearchResponse {\n answer: string\n citations: string[]\n delegation: { runId: string; provider: string }\n}\n\nexport class MnemonClient {\n constructor(private readonly connection: ClientConnectionHandle, private readonly sessionId?: string) {}\n\n private async call<T>(channel: string, endpoint: string, payload: unknown): Promise<T> {\n const response = await this.connection.rpc.call(channel, endpoint, payload)\n if (!response.ok) throw new Error(response.error.message)\n return response.value as T\n }\n\n status(): Promise<StatusView> {\n return this.call(MNEMON_READ_CHANNEL, 'status', this.sessionId === undefined ? {} : { sessionId: this.sessionId })\n }\n\n runtimeMemory(): Promise<RuntimeMemorySnapshot> {\n return this.call(MNEMON_READ_CHANNEL, 'runtime-memory', {})\n }\n\n mutateRuntimeMemory(request: {\n action: 'add' | 'replace' | 'remove'\n target: RuntimeMemoryTarget\n content?: string\n old_text?: string\n importance?: RuntimeMemoryImportance\n }): Promise<RuntimeMemoryMutationResult> {\n return this.call(MNEMON_WRITE_CHANNEL, 'runtime-memory', { ...request, sessionId: this.sessionId })\n }\n\n documents(): Promise<DocumentSnapshot> {\n return this.call(MNEMON_READ_CHANNEL, 'documents', { sessionId: this.sessionId })\n }\n\n document(id: string): Promise<DocumentView> {\n return this.call(MNEMON_READ_CHANNEL, 'document', { sessionId: this.sessionId, id })\n }\n\n searchDocuments(query: string, includeArchived = false, limit = 50): Promise<DocumentSearchResult> {\n return this.call(MNEMON_READ_CHANNEL, 'document-search', { sessionId: this.sessionId, query, includeArchived, limit })\n }\n\n mutateDocument(request: DocumentMutation): Promise<DocumentMutationResult> {\n return this.call(MNEMON_WRITE_CHANNEL, 'document', { ...request, sessionId: this.sessionId })\n }\n\n archiveDocument(id: string): Promise<DocumentMutationResult> {\n return this.call(MNEMON_WRITE_CHANNEL, 'document', { action: 'archive', id, sessionId: this.sessionId })\n }\n\n bodies(): Promise<MemoryBodyCatalog> {\n return this.call(MNEMON_READ_CHANNEL, 'bodies', {})\n }\n\n graph(memoryBodyIds?: string[]): Promise<MemoryGraphSnapshot> {\n return this.call(MNEMON_READ_CHANNEL, 'graph', memoryBodyIds === undefined ? {} : { memoryBodyIds })\n }\n\n list(request: MemoryListRequest = {}): Promise<MemoryListView> {\n return this.call(MNEMON_READ_CHANNEL, 'list', request)\n }\n\n entities(entity?: string, limit?: number): Promise<EntityView> {\n return this.call(MNEMON_READ_CHANNEL, 'entities', {\n sessionId: this.sessionId,\n ...(entity === undefined ? {} : { entity }),\n ...(limit === undefined ? {} : { limit }),\n })\n }\n\n search(request: SearchRequest): Promise<SearchResponse> {\n return this.call(MNEMON_READ_CHANNEL, 'search', { ...request, sessionId: this.sessionId })\n }\n\n agentSearch(request: SearchRequest): Promise<AgentSearchResponse> {\n return this.call(MNEMON_READ_CHANNEL, 'agent-search', { ...request, sessionId: this.sessionId })\n }\n\n related(id: string, memoryBodyId?: string): Promise<Insight[]> {\n return this.call(MNEMON_READ_CHANNEL, 'related', { id, depth: 2, sessionId: this.sessionId, ...(memoryBodyId === undefined ? {} : { memoryBodyId }) })\n }\n\n remember(request: RememberRequest): Promise<Record<string, unknown>> {\n return this.call(MNEMON_WRITE_CHANNEL, 'remember', { ...request, sessionId: this.sessionId })\n }\n\n supervise(content: string): Promise<{ delegated: true; sessionId: string; runId: string; provider: string; summary: string; action: string; memoryBodyIds: string[] }> {\n return this.call(MNEMON_WRITE_CHANNEL, 'supervise', { sessionId: this.sessionId, content })\n }\n\n forget(id: string, memoryBodyId?: string): Promise<Record<string, unknown>> {\n return this.call(MNEMON_WRITE_CHANNEL, 'forget', { id, sessionId: this.sessionId, ...(memoryBodyId === undefined ? {} : { memoryBodyId }) })\n }\n\n createBody(request: { name: string; description: string; active?: boolean }): Promise<MemoryBody> {\n return this.call(MNEMON_WRITE_CHANNEL, 'body-create', request)\n }\n\n updateBody(memoryBodyId: string, request: { name?: string; description?: string; active?: boolean }): Promise<MemoryBody> {\n return this.call(MNEMON_WRITE_CHANNEL, 'body-update', { memoryBodyId, ...request })\n }\n}\n","export interface MnemonLogoProps {\n className?: string | undefined\n title?: string\n}\n\n/** Official Mnemon mark from mnemon-dev/mnemon (Apache-2.0). */\nexport function MnemonLogo({ className, title = 'Mnemon' }: MnemonLogoProps): JSX.Element {\n return (\n <svg className={className} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 400 400\" role=\"img\" aria-label={title}>\n <rect width=\"400\" height=\"400\" fill=\"#1A1A1A\" />\n <path d=\"M 91.5,153.5 L 98.5,146.5 L 98.5,98.5 L 146.5,98.5 L 153.5,91.5 L 91.5,91.5 Z\" fill=\"#D4D4D8\" />\n <path d=\"M 246.5,91.5 L 253.5,98.5 L 301.5,98.5 L 301.5,146.5 L 308.5,153.5 L 308.5,91.5 Z\" fill=\"#D4D4D8\" />\n <path d=\"M 91.5,246.5 L 98.5,253.5 L 98.5,301.5 L 146.5,301.5 L 153.5,308.5 L 91.5,308.5 Z\" fill=\"#D4D4D8\" />\n <path d=\"M 308.5,246.5 L 301.5,253.5 L 301.5,301.5 L 253.5,301.5 L 246.5,308.5 L 308.5,308.5 Z\" fill=\"#D4D4D8\" />\n <polyline points=\"265,187 278,200 265,213\" fill=\"none\" stroke=\"#D4D4D8\" strokeWidth=\"2\" strokeLinecap=\"square\" />\n <polyline points=\"135,187 122,200 135,213\" fill=\"none\" stroke=\"#D4D4D8\" strokeWidth=\"2\" strokeLinecap=\"square\" />\n <polygon points=\"200,155 245,200 200,245 155,200\" fill=\"none\" stroke=\"#D4D4D8\" strokeWidth=\"7\" />\n </svg>\n )\n}\n","import { createContext, Fragment, useCallback, useContext, useEffect, useMemo, useRef, useState, type FormEvent, type PointerEvent as ReactPointerEvent } from 'react'\nimport Markdown from 'markdown-to-jsx'\nimport type { ClientConnectionHandle, ClientSettingsScope } from '../contracts.ts'\nimport type { Config } from '../config.ts'\nimport type { DocumentRecord, DocumentSnapshot, DocumentView } from '../documents.ts'\nimport { QODERWORK_REVIEW_POLICY } from '../review-activity.ts'\nimport type { RuntimeMemoryEntry, RuntimeMemoryImportance, RuntimeMemorySnapshot, RuntimeMemoryTarget } from '../runtime-memory.ts'\nimport type { StorageAreaInventory, StorageScopeInventory, StorageScopeKind } from '../storage-scope.ts'\nimport {\n CATEGORIES,\n type Category,\n type EntityView,\n type Insight,\n type MemoryGraphNode,\n type MemoryGraphSnapshot,\n type MemoryListView,\n type MemoryBodyCatalog,\n type MemoryBodyView,\n type StatusView,\n} from '../service.ts'\nimport { MnemonClient } from './api.ts'\nimport { translateZh, type MnemonKey, type MnemonTranslate } from './locales.ts'\nimport { MnemonLogo } from './MnemonLogo.tsx'\nimport css from './MnemonView.module.css'\n\nexport interface MnemonViewProps {\n connection: ClientConnectionHandle\n settingsScope: ClientSettingsScope<Config>\n sessionId?: string\n t?: MnemonTranslate\n}\n\ntype Page = 'overview' | 'runtime' | 'documents' | 'explore' | 'entities' | 'remember' | 'list' | 'status'\n\ntype NavEntry = { id: Page; label: MnemonKey; detail: MnemonKey; glyph: string }\ntype NavGroup = { aria: MnemonKey; entries: NavEntry[] }\n\n/** 系统 → 三层存储 → 读写工具;组间以分隔线呈现。 */\nconst PAGE_NAV: NavGroup[] = [\n {\n aria: 'nav.group.system',\n entries: [\n { id: 'status', label: 'nav.status', detail: 'nav.status.detail', glyph: '⌘' },\n ],\n },\n {\n aria: 'nav.group.storage',\n entries: [\n { id: 'runtime', label: 'nav.runtime', detail: 'nav.runtime.detail', glyph: '◫' },\n { id: 'overview', label: 'nav.bodies', detail: 'nav.bodies.detail', glyph: '◇' },\n { id: 'documents', label: 'nav.documents', detail: 'nav.documents.detail', glyph: '▤' },\n ],\n },\n {\n aria: 'nav.group.tools',\n entries: [\n { id: 'remember', label: 'nav.remember', detail: 'nav.remember.detail', glyph: '+' },\n { id: 'explore', label: 'nav.search', detail: 'nav.search.detail', glyph: '⌕' },\n { id: 'entities', label: 'nav.entities', detail: 'nav.entities.detail', glyph: '◎' },\n { id: 'list', label: 'nav.content', detail: 'nav.content.detail', glyph: '≡' },\n ],\n },\n]\n\nconst CATEGORY_KEYS: Record<string, MnemonKey> = {\n decision: 'category.decision',\n preference: 'category.preference',\n fact: 'category.fact',\n insight: 'category.insight',\n context: 'category.context',\n general: 'category.general',\n}\n\nconst I18nContext = createContext<MnemonTranslate>(translateZh)\nfunction useT(): MnemonTranslate { return useContext(I18nContext) }\nfunction categoryLabel(t: MnemonTranslate, category: string): string { return CATEGORY_KEYS[category] === undefined ? category : t(CATEGORY_KEYS[category]!) }\n\nfunction humanBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`\n return `${(bytes / 1024 / 1024).toFixed(1)} MB`\n}\n\nfunction message(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n\nfunction short(value: string, max: number): string {\n return value.length <= max ? value : `${value.slice(0, max - 1)}…`\n}\n\nfunction insightKey(insight: Insight): string {\n return `${insight.memoryBodyId ?? 'memory'}:${insight.id}`\n}\n\nfunction PageHeader(props: { title: string; description: string; meta?: string; action?: JSX.Element }): JSX.Element {\n return (\n <div className={css.pageHeader}>\n <div><h2>{props.title}</h2><p>{props.description}</p></div>\n <div className={css.pageHeaderMeta}>{props.meta !== undefined && <code>{props.meta}</code>}{props.action}</div>\n </div>\n )\n}\n\nfunction EmptyState(props: { glyph: string; title: string; children: string }): JSX.Element {\n return (\n <div className={css.emptyState}>\n <div className={css.emptyGlyph} aria-hidden=\"true\"><span>{props.glyph}</span></div>\n <div><h3>{props.title}</h3><p>{props.children}</p></div>\n </div>\n )\n}\n\n/** Full-text popup for a selected graph node whose inspector preview is clamped. */\nfunction ContentPreview(props: { node: MemoryGraphNode; kind: string; onClose: () => void }): JSX.Element {\n const t = useT()\n const close = useCallback(() => props.onClose(), [props])\n useEffect(() => {\n const onKey = (event: KeyboardEvent) => { if (event.key === 'Escape') props.onClose() }\n window.addEventListener('keydown', onKey)\n return () => window.removeEventListener('keydown', onKey)\n }, [props])\n const meta = [props.kind, props.node.id, props.node.memoryBodyName].filter((entry): entry is string => entry !== undefined).join(' · ')\n return (\n <div className={css.previewOverlay} onPointerDown={event => { if (event.target === event.currentTarget) props.onClose() }}>\n <div className={css.previewDialog} role=\"dialog\" aria-modal=\"true\" aria-label={t('overview.previewTitle')}>\n <header className={css.previewHeading}><span>{t('overview.previewTitle')}</span><button type=\"button\" onClick={close} aria-label={t('common.cancel')}>×</button></header>\n <div className={css.previewMeta}>{meta}</div>\n <div className={css.previewBody}><p>{props.node.content}</p></div>\n </div>\n </div>\n )\n}\n\nconst SAFE_LINK_PATTERN = /^(?:https?:|mailto:|#|\\/)/iu\n\nfunction safeLink(href: string | null | undefined): string | undefined {\n if (href == null) return undefined\n const value = href.trim()\n return SAFE_LINK_PATTERN.test(value) ? value : undefined\n}\n\n/** Render managed Markdown without raw HTML and with a deliberately small link surface. */\nfunction DocumentMarkdown(props: { content: string }): JSX.Element {\n return (\n <div className={css.markdownBody}>\n <Markdown options={{\n disableParsingRawHTML: true,\n forceBlock: true,\n overrides: {\n a: {\n component: ({ href, children, ...rest }: { href?: string; children?: JSX.Element | string }) => {\n const target = safeLink(href)\n return target === undefined\n ? <span>{children}</span>\n : <a {...rest} href={target} target={target.startsWith('http') ? '_blank' : undefined} rel={target.startsWith('http') ? 'noreferrer noopener' : undefined}>{children}</a>\n },\n },\n },\n }}>{props.content}</Markdown>\n </div>\n )\n}\n\nfunction InsightCard(props: {\n insight: Insight\n writeEnabled: boolean\n onForget: (insight: Insight) => Promise<void>\n onRelated?: (insight: Insight) => void\n onClone?: (insight: Insight) => void\n}): JSX.Element {\n const t = useT()\n const [confirming, setConfirming] = useState(false)\n const [forgetting, setForgetting] = useState(false)\n const { insight } = props\n const meta = [\n insight.memoryBodyName,\n insight.category !== undefined ? categoryLabel(t, insight.category) : undefined,\n insight.importance !== undefined ? t('common.importance', { value: insight.importance }) : undefined,\n insight.score !== undefined ? `score ${insight.score.toFixed(3)}` : undefined,\n insight.depth !== undefined ? t('common.hops', { count: insight.depth }) : undefined,\n ].filter((entry): entry is string => entry !== undefined)\n\n const forget = async () => {\n setForgetting(true)\n try {\n await props.onForget(insight)\n } finally {\n setForgetting(false)\n setConfirming(false)\n }\n }\n\n return (\n <article className={css.insightCard}>\n <div className={css.cardTop}>\n <div className={css.badges}>{meta.map(entry => <span key={entry} className={css.badge}>{entry}</span>)}</div>\n <code className={css.id} title={insight.id}>{insight.id.slice(0, 8)}</code>\n </div>\n <p className={css.content}>{insight.content}</p>\n {(insight.tags?.length ?? 0) > 0 && <div className={css.tags}>{insight.tags!.map(tag => <span key={tag}>#{tag}</span>)}</div>}\n {(insight.entities?.length ?? 0) > 0 && <div className={css.entities}>{insight.entities!.map(entity => <span key={entity}>{entity}</span>)}</div>}\n <div className={css.cardActions}>\n {confirming ? (\n <div className={css.confirmBar} role=\"group\" aria-label={t('card.confirmAria')}>\n <span>{t('card.confirmText')}</span>\n <button type=\"button\" className={css.dangerSolidButton} disabled={forgetting} onClick={() => void forget()}>{forgetting ? t('card.processing') : t('card.confirmForget')}</button>\n <button type=\"button\" className={css.ghostButton} disabled={forgetting} onClick={() => setConfirming(false)}>{t('common.cancel')}</button>\n </div>\n ) : (\n <>\n {props.onRelated !== undefined && <button type=\"button\" className={css.ghostButton} onClick={() => props.onRelated?.(insight)}>{t('card.related')}</button>}\n {props.onClone !== undefined && <button type=\"button\" className={css.ghostButton} onClick={() => props.onClone?.(insight)}>{t('card.clone')}</button>}\n <button type=\"button\" className={css.ghostButton} onClick={() => void navigator.clipboard?.writeText(insight.id)}>{t('common.copyId')}</button>\n {props.writeEnabled && <button type=\"button\" className={css.dangerButton} onClick={() => setConfirming(true)}>{t('card.forget')}</button>}\n </>\n )}\n </div>\n </article>\n )\n}\n\nconst GRAPH_WIDTH = 930\nconst GRAPH_HEIGHT = 520\nconst GRAPH_MARGIN_X = 58\nconst GRAPH_MARGIN_Y = 58\nconst CATEGORY_ORDER = ['space', 'entity', 'preference', 'decision', 'fact', 'insight', 'context', 'general']\n\ninterface GraphPosition { x: number; y: number }\ntype GraphPositions = Map<string, GraphPosition>\ntype GraphLayoutMode = 'natural' | 'uniform' | 'custom'\n\nfunction hash(value: string): number {\n let result = 2166136261\n for (const char of value) result = Math.imul(result ^ char.charCodeAt(0), 16777619)\n return result >>> 0\n}\n\nfunction graphNodeKey(node: MemoryGraphNode): string {\n return node.graphId ?? node.id\n}\n\nfunction graphNodeKind(node: MemoryGraphNode): NonNullable<MemoryGraphNode['kind']> {\n return node.kind ?? 'memory'\n}\n\nfunction spaceGraphId(id: string): string {\n return `space:${id}`\n}\n\nfunction entityGraphId(entity: string): string {\n return `entity:${encodeURIComponent(normalizeEntity(entity))}`\n}\n\nfunction normalizeEntity(entity: string): string {\n return entity.normalize('NFKC').trim().toLocaleLowerCase()\n}\n\n/** Add routing scopes and entity indexes without issuing another recall. */\nfunction enrichMultiSpaceGraph(graph: MemoryGraphSnapshot, bodies: MemoryBodyView[]): MemoryGraphSnapshot {\n if (graph.nodes.length === 0) return graph\n const memories = graph.nodes.map(node => ({ ...node, kind: 'memory' as const }))\n const memoriesByBody = new Map<string, MemoryGraphNode[]>()\n for (const node of memories) {\n if (node.memoryBodyId === undefined) continue\n memoriesByBody.set(node.memoryBodyId, [...(memoriesByBody.get(node.memoryBodyId) ?? []), node])\n }\n\n const activeBodies = bodies.filter(body => body.active && ((memoriesByBody.get(body.id)?.length ?? 0) > 0 || (body.stats?.topEntities.length ?? 0) > 0))\n const spaceNodes: MemoryGraphNode[] = activeBodies.map(body => ({\n id: body.id,\n graphId: spaceGraphId(body.id),\n kind: 'space',\n category: 'space',\n content: body.name,\n color: '#22a879',\n memoryBodyId: body.id,\n memoryBodyName: body.name,\n occurrenceCount: body.stats?.totalInsights ?? memoriesByBody.get(body.id)?.length ?? 0,\n }))\n\n // Native Mnemon entity edges connect two memories. This overview renders\n // entities as first-class nodes, so retaining those edges would falsely make\n // a memory-to-memory edge look like an entity-to-memory association.\n const edges: MemoryGraphSnapshot['edges'] = graph.edges.filter(edge => edge.type !== 'entity')\n for (const body of activeBodies) {\n for (const memory of memoriesByBody.get(body.id) ?? []) {\n edges.push({ sourceId: spaceGraphId(body.id), targetId: graphNodeKey(memory), label: 'scope', color: '#708199', type: 'scope' })\n }\n }\n\n const bodiesById = new Map(activeBodies.map(body => [body.id, body]))\n const indexedEntities = new Map<string, { entity: string; memories: MemoryGraphNode[]; bodies: MemoryBodyView[] }>()\n for (const memory of memories) {\n const body = memory.memoryBodyId === undefined ? undefined : bodiesById.get(memory.memoryBodyId)\n if (body === undefined) continue\n const seen = new Set<string>()\n for (const rawEntity of memory.entities ?? []) {\n const entity = rawEntity.trim()\n const key = normalizeEntity(entity)\n if (key === '' || seen.has(key)) continue\n seen.add(key)\n const current = indexedEntities.get(key)\n if (current === undefined) indexedEntities.set(key, { entity, memories: [memory], bodies: [body] })\n else {\n current.memories.push(memory)\n if (!current.bodies.some(candidate => candidate.id === body.id)) current.bodies.push(body)\n }\n }\n }\n const entities = [...indexedEntities.values()].sort((left, right) => right.memories.length - left.memories.length || left.entity.localeCompare(right.entity)).slice(0, 24)\n const entityNodes: MemoryGraphNode[] = entities.map(item => ({\n id: item.entity,\n graphId: entityGraphId(item.entity),\n kind: 'entity',\n category: 'entity',\n content: item.entity,\n color: '#2b9db9',\n occurrenceCount: item.memories.length,\n memoryBodyIds: item.bodies.map(body => body.id),\n memoryBodyNames: item.bodies.map(body => body.name),\n }))\n for (const item of entities) {\n const key = entityGraphId(item.entity)\n for (const memory of item.memories) edges.push({ sourceId: key, targetId: graphNodeKey(memory), label: item.entity, color: '#22a879', type: 'entity' })\n }\n\n return { ...graph, nodes: [...spaceNodes, ...entityNodes, ...memories], edges }\n}\n\nfunction graphKindLabel(t: MnemonTranslate, node: MemoryGraphNode): string {\n const kind = graphNodeKind(node)\n return kind === 'space' ? t('graph.kindSpace') : kind === 'entity' ? t('graph.kindEntity') : categoryLabel(t, node.category ?? 'general')\n}\n\nfunction activeCategoryAnchors(grouped: Map<string, MemoryGraphNode[]>): Map<string, GraphPosition> {\n const categories = [...grouped.keys()].sort((left, right) => {\n const leftIndex = CATEGORY_ORDER.indexOf(left)\n const rightIndex = CATEGORY_ORDER.indexOf(right)\n return (leftIndex < 0 ? CATEGORY_ORDER.length : leftIndex) - (rightIndex < 0 ? CATEGORY_ORDER.length : rightIndex)\n })\n const anchors = new Map<string, GraphPosition>()\n if (categories.length === 1) {\n anchors.set(categories[0]!, { x: GRAPH_WIDTH / 2, y: GRAPH_HEIGHT / 2 })\n return anchors\n }\n categories.forEach((category, index) => {\n const angle = -Math.PI / 2 + (index / categories.length) * Math.PI * 2\n anchors.set(category, {\n x: GRAPH_WIDTH / 2 + Math.cos(angle) * Math.min(250, 115 + categories.length * 23),\n y: GRAPH_HEIGHT / 2 + Math.sin(angle) * Math.min(165, 78 + categories.length * 15),\n })\n })\n return anchors\n}\n\nfunction clampGraphPosition(position: GraphPosition): GraphPosition {\n return {\n x: Math.min(GRAPH_WIDTH - GRAPH_MARGIN_X, Math.max(GRAPH_MARGIN_X, position.x)),\n y: Math.min(GRAPH_HEIGHT - GRAPH_MARGIN_Y, Math.max(GRAPH_MARGIN_Y, position.y)),\n }\n}\n\nfunction naturalGraphPositions(nodes: MemoryGraphNode[], edges: MemoryGraphSnapshot['edges']): GraphPositions {\n const positions: GraphPositions = new Map()\n const grouped = new Map<string, MemoryGraphNode[]>()\n for (const node of nodes) {\n const category = node.category ?? 'general'\n grouped.set(category, [...(grouped.get(category) ?? []), node])\n }\n const anchors = activeCategoryAnchors(grouped)\n for (const [category, items] of grouped) {\n const anchor = anchors.get(category) ?? { x: GRAPH_WIDTH / 2, y: GRAPH_HEIGHT / 2 }\n items.forEach((node, index) => {\n const seed = hash(graphNodeKey(node))\n const angle = index * 2.399963 + ((seed % 37) / 37) * .4\n const radius = items.length === 1 ? 0 : 24 + Math.sqrt(index + 1) * 35\n positions.set(graphNodeKey(node), clampGraphPosition({ x: anchor.x + Math.cos(angle) * radius, y: anchor.y + Math.sin(angle) * radius }))\n })\n }\n\n const velocities = new Map(nodes.map(node => [graphNodeKey(node), { x: 0, y: 0 }]))\n const visibleIds = new Set(nodes.map(graphNodeKey))\n const visibleEdges = edges.filter(edge => visibleIds.has(edge.sourceId) && visibleIds.has(edge.targetId))\n for (let iteration = 0; iteration < 150; iteration += 1) {\n const cooling = 1 - iteration / 180\n for (let leftIndex = 0; leftIndex < nodes.length; leftIndex += 1) {\n const left = nodes[leftIndex]!\n const leftPosition = positions.get(graphNodeKey(left))!\n const leftVelocity = velocities.get(graphNodeKey(left))!\n for (let rightIndex = leftIndex + 1; rightIndex < nodes.length; rightIndex += 1) {\n const right = nodes[rightIndex]!\n const rightPosition = positions.get(graphNodeKey(right))!\n const rightVelocity = velocities.get(graphNodeKey(right))!\n let dx = leftPosition.x - rightPosition.x\n let dy = leftPosition.y - rightPosition.y\n if (dx === 0 && dy === 0) { dx = ((hash(graphNodeKey(left)) % 13) - 6) || 1; dy = ((hash(graphNodeKey(right)) % 11) - 5) || -1 }\n const distanceSquared = Math.max(100, dx * dx + dy * dy)\n const distance = Math.sqrt(distanceSquared)\n const repulsion = Math.min(9, 18_000 / distanceSquared) * cooling\n const collision = distance < 66 ? (66 - distance) * .08 : 0\n const force = repulsion + collision\n const forceX = (dx / distance) * force\n const forceY = (dy / distance) * force\n leftVelocity.x += forceX; leftVelocity.y += forceY\n rightVelocity.x -= forceX; rightVelocity.y -= forceY\n }\n }\n for (const edge of visibleEdges) {\n const source = positions.get(edge.sourceId)!\n const target = positions.get(edge.targetId)!\n const sourceVelocity = velocities.get(edge.sourceId)!\n const targetVelocity = velocities.get(edge.targetId)!\n const dx = target.x - source.x\n const dy = target.y - source.y\n const distance = Math.max(1, Math.hypot(dx, dy))\n const sparseScale = nodes.length <= 3 ? 2 : nodes.length <= 8 ? 1.45 : 1\n const desired = (edge.type === 'scope' ? 138 : edge.type === 'entity' ? 94 : edge.type === 'semantic' ? 118 : 106) * sparseScale\n const spring = (distance - desired) * .018 * cooling\n const forceX = (dx / distance) * spring\n const forceY = (dy / distance) * spring\n sourceVelocity.x += forceX; sourceVelocity.y += forceY\n targetVelocity.x -= forceX; targetVelocity.y -= forceY\n }\n for (const node of nodes) {\n const key = graphNodeKey(node)\n const position = positions.get(key)!\n const velocity = velocities.get(key)!\n const anchor = anchors.get(node.category ?? 'general') ?? { x: GRAPH_WIDTH / 2, y: GRAPH_HEIGHT / 2 }\n velocity.x += (anchor.x - position.x) * .0035 * cooling + (GRAPH_WIDTH / 2 - position.x) * .0008\n velocity.y += (anchor.y - position.y) * .0035 * cooling + (GRAPH_HEIGHT / 2 - position.y) * .0008\n velocity.x = Math.max(-12, Math.min(12, velocity.x * .76))\n velocity.y = Math.max(-12, Math.min(12, velocity.y * .76))\n positions.set(key, clampGraphPosition({ x: position.x + velocity.x, y: position.y + velocity.y }))\n }\n }\n return positions\n}\n\nfunction uniformGraphPositions(nodes: MemoryGraphNode[]): GraphPositions {\n const positions: GraphPositions = new Map()\n const ordered = [...nodes].sort((left, right) => {\n const categoryDifference = CATEGORY_ORDER.indexOf(left.category ?? 'general') - CATEGORY_ORDER.indexOf(right.category ?? 'general')\n return categoryDifference === 0 ? left.id.localeCompare(right.id) : categoryDifference\n })\n const columns = Math.max(1, Math.ceil(Math.sqrt(ordered.length * 1.65)))\n const rows = Math.max(1, Math.ceil(ordered.length / columns))\n const cellWidth = (GRAPH_WIDTH - GRAPH_MARGIN_X * 2) / columns\n const cellHeight = (GRAPH_HEIGHT - GRAPH_MARGIN_Y * 2) / rows\n ordered.forEach((node, index) => {\n const row = Math.floor(index / columns)\n const column = index % columns\n const rowLength = Math.min(columns, ordered.length - row * columns)\n const rowOffset = (columns - rowLength) * cellWidth / 2\n positions.set(graphNodeKey(node), {\n x: GRAPH_MARGIN_X + rowOffset + cellWidth * (column + .5),\n y: GRAPH_MARGIN_Y + cellHeight * (row + .5),\n })\n })\n return positions\n}\n\nfunction graphPoint(svg: SVGSVGElement, clientX: number, clientY: number): GraphPosition {\n const matrix = svg.getScreenCTM?.()\n if (matrix !== null && matrix !== undefined && typeof svg.createSVGPoint === 'function') {\n const point = svg.createSVGPoint()\n point.x = clientX; point.y = clientY\n return clampGraphPosition(point.matrixTransform(matrix.inverse()))\n }\n const bounds = svg.getBoundingClientRect()\n const width = bounds.width || GRAPH_WIDTH\n const height = bounds.height || GRAPH_HEIGHT\n return clampGraphPosition({ x: (clientX - bounds.left) * GRAPH_WIDTH / width, y: (clientY - bounds.top) * GRAPH_HEIGHT / height })\n}\n\nfunction MemoryGraph(props: { graph: MemoryGraphSnapshot; selectedId?: string | undefined; onSelect: (node: MemoryGraphNode) => void }): JSX.Element {\n const t = useT()\n const visibleNodes = useMemo(() => {\n const spaces = props.graph.nodes.filter(node => graphNodeKind(node) === 'space')\n const entities = props.graph.nodes.filter(node => graphNodeKind(node) === 'entity').slice(0, 20)\n const memories = props.graph.nodes.filter(node => graphNodeKind(node) === 'memory').slice(0, Math.max(0, 60 - spaces.length - entities.length))\n return [...spaces, ...entities, ...memories].slice(0, 60)\n }, [props.graph.nodes])\n const visibleIds = useMemo(() => new Set(visibleNodes.map(graphNodeKey)), [visibleNodes])\n const visibleKinds = useMemo(() => new Map(visibleNodes.map(node => [graphNodeKey(node), graphNodeKind(node)])), [visibleNodes])\n const edges = useMemo(() => {\n const priority = new Map<string, number>([['entity', 0], ['scope', 1], ['causal', 2], ['semantic', 3], ['temporal', 4]])\n return props.graph.edges\n .filter(edge => visibleIds.has(edge.sourceId) && visibleIds.has(edge.targetId))\n .map((edge, index) => ({ edge, index }))\n .sort((left, right) => (priority.get(left.edge.type ?? 'temporal') ?? 5) - (priority.get(right.edge.type ?? 'temporal') ?? 5) || left.index - right.index)\n .slice(0, 180)\n .map(({ edge }) => edge)\n }, [props.graph.edges, visibleIds])\n const curvedEdges = useMemo(() => {\n const groups = new Map<string, number[]>()\n edges.forEach((edge, index) => {\n const key = [edge.sourceId, edge.targetId].sort().join('::')\n groups.set(key, [...(groups.get(key) ?? []), index])\n })\n return edges.map((edge, index) => {\n const key = [edge.sourceId, edge.targetId].sort().join('::')\n const group = groups.get(key) ?? [index]\n const groupIndex = group.indexOf(index)\n return { edge, offset: (groupIndex - (group.length - 1) / 2) * 12 }\n })\n }, [edges])\n const layoutKey = `${visibleNodes.map(node => `${graphNodeKey(node)}:${graphNodeKind(node)}:${node.category ?? 'general'}`).join('|')}::${edges.map(edge => `${edge.sourceId}>${edge.targetId}:${edge.type ?? 'temporal'}`).join('|')}`\n const naturalLayout = useMemo(() => naturalGraphPositions(visibleNodes, edges), [layoutKey])\n const [positions, setPositions] = useState<GraphPositions>(() => naturalLayout)\n const [layoutMode, setLayoutMode] = useState<GraphLayoutMode>('natural')\n const positionsRef = useRef(positions)\n const animationRef = useRef<number | null>(null)\n const dragRef = useRef<{ nodeId: string; pointerId: number; startX: number; startY: number; moved: boolean } | null>(null)\n\n const commitPositions = useCallback((next: GraphPositions) => {\n positionsRef.current = next\n setPositions(next)\n }, [])\n\n const cancelAnimation = useCallback(() => {\n if (animationRef.current !== null && typeof window.cancelAnimationFrame === 'function') window.cancelAnimationFrame(animationRef.current)\n animationRef.current = null\n }, [])\n\n const animateTo = useCallback((target: GraphPositions, mode: Exclude<GraphLayoutMode, 'custom'>) => {\n cancelAnimation()\n setLayoutMode(mode)\n if (typeof window.requestAnimationFrame !== 'function') { commitPositions(target); return }\n const start = new Map(positionsRef.current)\n const startedAt = performance.now()\n const tick = (time: number) => {\n const progress = Math.min(1, (time - startedAt) / 620)\n const eased = 1 - Math.pow(1 - progress, 3)\n const next: GraphPositions = new Map()\n for (const [id, destination] of target) {\n const origin = start.get(id) ?? { x: GRAPH_WIDTH / 2, y: GRAPH_HEIGHT / 2 }\n next.set(id, { x: origin.x + (destination.x - origin.x) * eased, y: origin.y + (destination.y - origin.y) * eased })\n }\n commitPositions(next)\n if (progress < 1) animationRef.current = window.requestAnimationFrame(tick)\n else animationRef.current = null\n }\n animationRef.current = window.requestAnimationFrame(tick)\n }, [cancelAnimation, commitPositions])\n\n useEffect(() => { animateTo(naturalLayout, 'natural') }, [layoutKey])\n useEffect(() => () => cancelAnimation(), [cancelAnimation])\n\n const beginDrag = (event: ReactPointerEvent<SVGGElement>, nodeId: string) => {\n cancelAnimation()\n dragRef.current = { nodeId, pointerId: event.pointerId, startX: event.clientX, startY: event.clientY, moved: false }\n event.currentTarget.setPointerCapture?.(event.pointerId)\n }\n const moveDrag = (event: ReactPointerEvent<SVGGElement>) => {\n const drag = dragRef.current\n const svg = event.currentTarget.ownerSVGElement\n if (drag === null || svg === null || drag.pointerId !== event.pointerId) return\n if (!drag.moved && Math.hypot(event.clientX - drag.startX, event.clientY - drag.startY) < 4) return\n drag.moved = true\n const point = graphPoint(svg, event.clientX, event.clientY)\n const next = new Map(positionsRef.current)\n next.set(drag.nodeId, point)\n commitPositions(next)\n setLayoutMode('custom')\n }\n const endDrag = (event: ReactPointerEvent<SVGGElement>) => {\n const drag = dragRef.current\n if (drag === null || drag.pointerId !== event.pointerId) return\n const svg = event.currentTarget.ownerSVGElement\n if (drag.moved && svg !== null) {\n const next = new Map(positionsRef.current)\n next.set(drag.nodeId, graphPoint(svg, event.clientX, event.clientY))\n commitPositions(next)\n }\n dragRef.current = null\n event.currentTarget.releasePointerCapture?.(event.pointerId)\n if (!drag.moved) {\n const node = visibleNodes.find(candidate => graphNodeKey(candidate) === drag.nodeId)\n if (node !== undefined) props.onSelect(node)\n }\n }\n const cancelDrag = (event: ReactPointerEvent<SVGGElement>) => {\n if (dragRef.current?.pointerId === event.pointerId) dragRef.current = null\n }\n const nudge = (nodeId: string, dx: number, dy: number) => {\n cancelAnimation()\n const current = positionsRef.current.get(nodeId)\n if (current === undefined) return\n const next = new Map(positionsRef.current)\n next.set(nodeId, clampGraphPosition({ x: current.x + dx, y: current.y + dy }))\n commitPositions(next)\n setLayoutMode('custom')\n }\n const layoutLabel = t(layoutMode === 'natural' ? 'graph.layoutNatural' : layoutMode === 'uniform' ? 'graph.layoutUniform' : 'graph.layoutCustom')\n return (\n <>\n <div className={css.graphCanvasControls} role=\"toolbar\" aria-label={t('graph.layoutAria')}>\n <span role=\"status\" aria-label={t('graph.layoutStatus', { layout: layoutLabel })}><i />{t('graph.draggable', { layout: layoutLabel })}</span>\n <button type=\"button\" data-active={layoutMode === 'natural' || undefined} onClick={() => animateTo(naturalGraphPositions(visibleNodes, edges), 'natural')}>{t('graph.naturalAction')}</button>\n <button type=\"button\" data-active={layoutMode === 'uniform' || undefined} onClick={() => animateTo(uniformGraphPositions(visibleNodes), 'uniform')}>{t('graph.uniformAction')}</button>\n </div>\n <svg className={css.graphSvg} viewBox={`0 0 ${GRAPH_WIDTH} ${GRAPH_HEIGHT}`} role=\"img\" data-layout={layoutMode} data-density={visibleNodes.length <= 12 ? 'sparse' : 'dense'} aria-label={t('graph.aria', { nodes: props.graph.nodes.length, edges: props.graph.edges.length })}>\n <defs>\n <pattern id=\"mnemon-grid\" width=\"26\" height=\"26\" patternUnits=\"userSpaceOnUse\"><path d=\"M 26 0 L 0 0 0 26\" className={css.graphGridLine} fill=\"none\" /></pattern>\n <filter id=\"mnemon-glow\" x=\"-100%\" y=\"-100%\" width=\"300%\" height=\"300%\"><feGaussianBlur stdDeviation=\"4\" result=\"blur\" /><feMerge><feMergeNode in=\"blur\" /><feMergeNode in=\"SourceGraphic\" /></feMerge></filter>\n </defs>\n <rect width={GRAPH_WIDTH} height={GRAPH_HEIGHT} className={css.graphBackdrop} />\n <rect width={GRAPH_WIDTH} height={GRAPH_HEIGHT} fill=\"url(#mnemon-grid)\" />\n {curvedEdges.map(({ edge, offset }, index) => {\n const source = positions.get(edge.sourceId) ?? naturalLayout.get(edge.sourceId) ?? { x: GRAPH_WIDTH / 2, y: GRAPH_HEIGHT / 2 }\n const target = positions.get(edge.targetId) ?? naturalLayout.get(edge.targetId) ?? { x: GRAPH_WIDTH / 2, y: GRAPH_HEIGHT / 2 }\n const dx = target.x - source.x\n const dy = target.y - source.y\n const distance = Math.max(1, Math.hypot(dx, dy))\n const direction = edge.sourceId.localeCompare(edge.targetId) <= 0 ? 1 : -1\n const controlX = (source.x + target.x) / 2 - (dy / distance) * offset * direction\n const controlY = (source.y + target.y) / 2 + (dx / distance) * offset * direction\n return <path key={`${edge.sourceId}-${edge.targetId}-${index}`} d={`M ${source.x} ${source.y} Q ${controlX} ${controlY} ${target.x} ${target.y}`} className={css.graphEdge} data-edge={edge.type ?? 'temporal'} data-source-id={edge.sourceId} data-target-id={edge.targetId} data-source-kind={visibleKinds.get(edge.sourceId)} data-target-kind={visibleKinds.get(edge.targetId)} />\n })}\n {visibleNodes.map((node, index) => {\n const nodeKey = graphNodeKey(node)\n const position = positions.get(nodeKey) ?? naturalLayout.get(nodeKey) ?? { x: GRAPH_WIDTH / 2, y: GRAPH_HEIGHT / 2 }\n const selected = props.selectedId === nodeKey\n const showLabel = selected || visibleNodes.length < 22 || index % 3 === 0\n return (\n <g key={nodeKey} className={css.graphNode} data-node-id={nodeKey} data-category={node.category ?? 'general'} data-kind={graphNodeKind(node)} data-selected={selected || undefined}\n transform={`translate(${position.x} ${position.y})`} role=\"button\" tabIndex={0} aria-label={`${graphKindLabel(t, node)}: ${short(node.content, 80)}`}\n data-dragging={dragRef.current?.nodeId === nodeKey || undefined}\n onPointerDown={event => beginDrag(event, nodeKey)} onPointerMove={moveDrag} onPointerUp={endDrag} onPointerCancel={cancelDrag} onLostPointerCapture={cancelDrag}\n onClick={() => props.onSelect(node)}\n onKeyDown={event => {\n if (event.key === 'Enter' || event.key === ' ') props.onSelect(node)\n else if (event.key === 'ArrowLeft') { event.preventDefault(); nudge(nodeKey, -12, 0) }\n else if (event.key === 'ArrowRight') { event.preventDefault(); nudge(nodeKey, 12, 0) }\n else if (event.key === 'ArrowUp') { event.preventDefault(); nudge(nodeKey, 0, -12) }\n else if (event.key === 'ArrowDown') { event.preventDefault(); nudge(nodeKey, 0, 12) }\n }}>\n {graphNodeKind(node) === 'space'\n ? <><rect x={selected ? -20 : -17} y={selected ? -15 : -13} width={selected ? 40 : 34} height={selected ? 30 : 26} rx=\"9\" className={css.nodeHalo} filter={selected ? 'url(#mnemon-glow)' : undefined} /><circle r={selected ? 6 : 5} className={css.nodeCore} /></>\n : graphNodeKind(node) === 'entity'\n ? <><path d={selected ? 'M 0 -18 L 18 0 L 0 18 L -18 0 Z' : 'M 0 -14 L 14 0 L 0 14 L -14 0 Z'} className={css.nodeHalo} filter={selected ? 'url(#mnemon-glow)' : undefined} /><circle r={selected ? 5 : 4} className={css.nodeCore} /></>\n : <><circle r={selected ? 17 : visibleNodes.length <= 12 ? 14 : 11} className={css.nodeHalo} filter={selected ? 'url(#mnemon-glow)' : undefined} /><circle r={selected ? 7 : visibleNodes.length <= 12 ? 6 : 4.5} className={css.nodeCore} /></>}\n {(selected || visibleNodes.length <= 12) && graphNodeKind(node) === 'memory' && node.memoryBodyName !== undefined && <text x=\"0\" y=\"-18\" textAnchor=\"middle\" className={css.nodeBodyLabel}>{short(node.memoryBodyName, 12)}</text>}\n {showLabel && <text x={visibleNodes.length <= 12 ? 19 : 15} y=\"4\" className={css.nodeLabel}>{short(node.content.replace(/\\s+/gu, ' '), selected ? 34 : visibleNodes.length <= 12 ? 26 : 19)}</text>}\n </g>\n )\n })}\n </svg>\n </>\n )\n}\n\nfunction OverviewPage(props: { client: MnemonClient; revision: number; writeEnabled: boolean; fallbackBodies: MemoryBodyView[]; fallbackDirectory: string | undefined; catalogKnown: boolean; onMutate: () => void; onExplore: (query: string) => void }): JSX.Element {\n const t = useT()\n const [graph, setGraph] = useState<MemoryGraphSnapshot | null>(null)\n const [catalog, setCatalog] = useState<MemoryBodyCatalog | null>(null)\n const [selected, setSelected] = useState<MemoryGraphNode | null>(null)\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState<string | null>(null)\n const [changing, setChanging] = useState<string | null>(null)\n const [creating, setCreating] = useState(false)\n const [bodyName, setBodyName] = useState('')\n const [bodyDescription, setBodyDescription] = useState('')\n const [catalogUnavailable, setCatalogUnavailable] = useState(false)\n const [editingBody, setEditingBody] = useState<string | null>(null)\n const [editName, setEditName] = useState('')\n const [editDescription, setEditDescription] = useState('')\n const [savingBody, setSavingBody] = useState<string | null>(null)\n const [preview, setPreview] = useState<MemoryGraphNode | null>(null)\n\n const load = useCallback(async (quiet = false) => {\n if (!quiet) setLoading(true)\n setError(null)\n try {\n const [nextCatalog, next] = await Promise.all([\n props.client.bodies().then(next => { setCatalogUnavailable(false); return next }).catch(() => {\n setCatalogUnavailable(!props.catalogKnown)\n return {\n items: props.fallbackBodies,\n total: props.fallbackBodies.length,\n activeCount: props.fallbackBodies.filter(body => body.active).length,\n directory: props.fallbackDirectory ?? '',\n generatedAt: new Date().toISOString(),\n }\n }),\n props.client.graph(),\n ])\n const enriched = enrichMultiSpaceGraph(next, nextCatalog.items)\n setCatalog(nextCatalog)\n setGraph(enriched)\n setSelected(current => current === null ? null : enriched.nodes.find(node => graphNodeKey(node) === graphNodeKey(current)) ?? null)\n } catch (reason) {\n setError(message(reason))\n } finally {\n setLoading(false)\n }\n }, [props.catalogKnown, props.client, props.fallbackBodies, props.fallbackDirectory])\n\n useEffect(() => {\n void load()\n const timer = window.setInterval(() => void load(true), 15_000)\n return () => window.clearInterval(timer)\n }, [load, props.revision])\n\n const toggle = async (body: MemoryBodyView) => {\n setChanging(body.id); setError(null)\n try {\n await props.client.updateBody(body.id, { active: !body.active })\n await load(true)\n props.onMutate()\n } catch (reason) { setError(message(reason)) } finally { setChanging(null) }\n }\n\n const beginEdit = (body: MemoryBodyView) => {\n setEditingBody(body.id); setEditName(body.name); setEditDescription(body.description ?? ''); setError(null)\n }\n\n const saveEdit = async (event: FormEvent, body: MemoryBodyView) => {\n event.preventDefault()\n if (editName.trim() === '') return\n setSavingBody(body.id); setError(null)\n try {\n await props.client.updateBody(body.id, { name: editName, description: editDescription })\n setEditingBody(null)\n await load(true)\n props.onMutate()\n } catch (reason) { setError(message(reason)) } finally { setSavingBody(null) }\n }\n\n const create = async (event: FormEvent) => {\n event.preventDefault()\n if (bodyName.trim() === '' || bodyDescription.trim() === '') return\n setCreating(true); setError(null)\n try {\n await props.client.createBody({ name: bodyName, description: bodyDescription })\n setBodyName(''); setBodyDescription('')\n await load(true)\n props.onMutate()\n } catch (reason) { setError(message(reason)) } finally { setCreating(false) }\n }\n\n const generated = graph === null ? t('overview.waitingSnapshot') : t('overview.updatedAt', { time: new Date(graph.generatedAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }) })\n const graphSpaces = graph?.nodes.filter(node => graphNodeKind(node) === 'space').length ?? 0\n const graphEntities = graph?.nodes.filter(node => graphNodeKind(node) === 'entity').length ?? 0\n const graphMemories = graph?.nodes.filter(node => graphNodeKind(node) === 'memory').length ?? 0\n const selectedKind = selected === null ? null : graphNodeKind(selected)\n return (\n <div className={css.page}>\n <PageHeader title={t('overview.title')} description={t('overview.description')} meta={t('overview.interval')}\n action={<button type=\"button\" className={css.secondaryButton} disabled={loading} onClick={() => void load()}>{loading ? t('overview.syncing') : t('overview.syncNow')}</button>} />\n {error !== null && <div className={css.inlineError} role=\"alert\">{error}</div>}\n <section className={css.bodyDirectory} aria-label={t('overview.directory')}>\n <div className={css.bodyDirectoryHeader}>\n <div><h3>{t('overview.directory')}</h3><p>{t('overview.directory.description')}</p><code className={css.bodyDirectoryPath}>{catalogUnavailable ? t('overview.directory.unsynced') : catalog?.directory || props.fallbackDirectory || t('overview.directory.waiting')}</code></div>\n <strong>{catalogUnavailable ? t('overview.directory.unsyncedBadge') : `${catalog?.activeCount ?? '—'} / ${catalog?.total ?? '—'} ${t('common.active')}`}</strong>\n </div>\n <div className={css.bodyGrid}>\n {catalog?.items.map(body => (\n <article key={body.id} className={css.bodyCard} data-active={body.active || undefined} data-healthy={body.healthy || undefined} data-editing={editingBody === body.id || undefined} title={body.error}>\n {editingBody === body.id ? (\n <form className={css.bodyEdit} onSubmit={event => void saveEdit(event, body)}>\n <label>{t('overview.editName')}<input aria-label={t('overview.editName')} value={editName} onChange={event => setEditName(event.target.value)} maxLength={100} required /></label>\n <label>{t('overview.editDescription')}<textarea aria-label={t('overview.editDescription')} value={editDescription} onChange={event => setEditDescription(event.target.value)} rows={3} maxLength={1000} /></label>\n <div className={css.bodyEditActions}><button type=\"submit\" className={css.primaryButton} disabled={savingBody === body.id || editName.trim() === ''}>{savingBody === body.id ? t('overview.savingBody') : t('overview.saveBody')}</button><button type=\"button\" className={css.ghostButton} onClick={() => setEditingBody(null)}>{t('common.cancel')}</button></div>\n </form>\n ) : (\n <>\n <div className={css.bodyCardTop}><span className={css.bodySignal} /><div><strong>{body.name}</strong><code>{body.id}</code><small className={css.bodyHealth}>{body.healthy ? t('overview.storageHealthy') : t('overview.storageUnhealthy')}</small></div><div className={css.bodyCardActions}><button type=\"button\" className={css.bodySwitch} role=\"switch\" aria-checked={body.active} aria-label={t('overview.toggleAria', { name: body.name })} disabled={!props.writeEnabled || changing === body.id} onClick={() => void toggle(body)}><span className={css.bodySwitchTrack} aria-hidden=\"true\"><i /></span><span>{changing === body.id ? t('overview.toggling') : body.active ? t('common.active') : t('common.inactive')}</span></button><button type=\"button\" className={css.bodyEditButton} aria-label={t('overview.editBodyAria', { name: body.name })} title={t('overview.editBody')} disabled={!props.writeEnabled} onClick={() => beginEdit(body)}>✎</button></div></div>\n <p>{body.description || t('overview.noDescription')}</p>\n <footer><span>{t('common.memories', { count: body.stats?.totalInsights ?? 0 })}</span><span>{t('common.edges', { count: body.stats?.edgeCount ?? 0 })}</span><span>{humanBytes(body.stats?.dbSizeBytes ?? 0)}</span></footer>\n </>\n )}\n </article>\n ))}\n {catalog?.total === 0 && <div className={css.bodyDirectoryEmpty}><span>◇</span><div><strong>{catalogUnavailable ? t('overview.unsyncedTitle') : t('overview.emptyTitle')}</strong><p>{catalogUnavailable ? t('overview.unsyncedShort') : t('overview.emptyShort')}</p></div></div>}\n </div>\n {props.writeEnabled && !catalogUnavailable && <details className={css.bodyCreate} open={catalog?.total === 0 ? true : undefined}><summary>{t('overview.create')}</summary><form onSubmit={event => void create(event)}><input aria-label={t('overview.createName')} value={bodyName} onChange={event => setBodyName(event.target.value)} placeholder={t('overview.createNamePlaceholder')} required /><input aria-label={t('overview.createDescription')} value={bodyDescription} onChange={event => setBodyDescription(event.target.value)} placeholder={t('overview.createDescriptionPlaceholder')} required /><button type=\"submit\" className={css.secondaryButton} disabled={creating}>{creating ? t('overview.creating') : t('overview.createAction')}</button></form></details>}\n </section>\n {!catalogUnavailable && graph !== null && graph.nodes.length > 0 ? (\n <div className={css.graphLayout}>\n <section className={css.graphPanel}>\n <div className={css.graphToolbar}>\n <div><span className={css.liveDot} />{t('overview.snapshot')} <small>{generated}</small></div>\n <div className={css.graphLegend}><span data-edge=\"scope\">{t('overview.edgeScope')}</span><span data-edge=\"temporal\">{t('overview.edgeTemporal')}</span><span data-edge=\"semantic\">{t('overview.edgeSemantic')}</span><span data-edge=\"causal\">{t('overview.edgeCausal')}</span><span data-edge=\"entity\">{t('overview.edgeEntity')}</span></div>\n </div>\n <div className={css.graphViewport}><MemoryGraph graph={graph} selectedId={selected === null ? undefined : graphNodeKey(selected)} onSelect={setSelected} /></div>\n <div className={css.graphFooter}><span>{t('overview.graphComposition', { spaces: graphSpaces, memories: graphMemories, entities: graphEntities })}</span><span>{t('overview.graphCount', { visible: Math.min(graph.nodes.length, 60), total: graph.nodes.length })} · {t('overview.graphEdges', { count: graph.edges.length })}</span></div>\n </section>\n <aside className={css.graphInspector} data-empty={selected === null || undefined}>\n {selected === null ? (\n <div className={css.inspectorEmpty}><MnemonLogo className={css.inspectorLogo} title={t('overview.inspector')} /><h3>{t('overview.selectNode')}</h3><p>{t('overview.selectNodeText')}</p></div>\n ) : (\n <>\n <div className={css.inspectorHeading}><span>{t(selectedKind === 'space' ? 'overview.inspectorSpace' : selectedKind === 'entity' ? 'overview.inspectorEntity' : 'overview.inspector')}</span><button type=\"button\" onClick={() => setSelected(null)} aria-label={t('overview.closeInspector')}>×</button></div>\n <span className={css.categoryChip}>{graphKindLabel(t, selected)}</span>\n <div className={css.inspectorTitleRow}><h3 className={css.inspectorTitle}>{selected.content}</h3>{selectedKind === 'memory' && selected.content.length > 140 && <button type=\"button\" className={css.inspectorEye} onClick={() => setPreview(selected)} aria-label={t('overview.previewAria')} title={t('overview.previewAria')}><svg viewBox=\"0 0 16 16\" width=\"13\" height=\"13\" aria-hidden=\"true\"><path d=\"M1 8s2.6-4.4 7-4.4S15 8 15 8s-2.6 4.4-7 4.4S1 8 1 8z\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><circle cx=\"8\" cy=\"8\" r=\"2.1\" fill=\"currentColor\" /></svg></button>}</div>\n {selectedKind === 'space'\n ? <dl className={css.inspectorMeta}><div><dt>{t('overview.spaceId')}</dt><dd><code>{selected.memoryBodyId ?? selected.id}</code></dd></div><div><dt>{t('overview.containedMemories')}</dt><dd>{selected.occurrenceCount ?? 0}</dd></div></dl>\n : selectedKind === 'entity'\n ? <dl className={css.inspectorMeta}><div><dt>{t('overview.entityMentions')}</dt><dd>{selected.occurrenceCount ?? 0}</dd></div><div><dt>{t('term.spaces')}</dt><dd>{selected.memoryBodyNames?.join(' · ') || '—'}</dd></div></dl>\n : <dl className={css.inspectorMeta}><div><dt>{t('term.space')}</dt><dd>{selected.memoryBodyName ?? '—'} <code>{selected.memoryBodyId ?? ''}</code></dd></div><div><dt>{t('overview.memoryId')}</dt><dd><code>{selected.id}</code></dd></div><div><dt>{t('common.category')}</dt><dd>{categoryLabel(t, selected.category ?? 'general')}</dd></div></dl>}\n <div className={css.inspectorActions}>{selectedKind !== 'space' && <button type=\"button\" className={css.primaryButton} onClick={() => props.onExplore(selected.content)}>{t('overview.exploreNode')}</button>}<button type=\"button\" className={css.secondaryButton} onClick={() => void navigator.clipboard?.writeText(selected.id)}>{t('common.copyId')}</button></div>\n </>\n )}\n </aside>\n </div>\n ) : !loading && error === null ? (\n catalogUnavailable\n ? <EmptyState glyph=\"◇\" title={t('overview.unsyncedTitle')}>{t('overview.unsyncedLong')}</EmptyState>\n : catalog?.total === 0\n ? <EmptyState glyph=\"◇\" title={t('overview.emptyTitle')}>{t('overview.emptyLong')}</EmptyState>\n : catalog?.activeCount === 0\n ? <EmptyState glyph=\"◇\" title={t('overview.noActiveTitle')}>{t('overview.noActiveText')}</EmptyState>\n : <EmptyState glyph=\"◇\" title={t('overview.noContentTitle')}>{t('overview.noContentText')}</EmptyState>\n ) : (\n <div className={css.loadingPanel}>{t('overview.loading')}</div>\n )}\n {preview !== null && <ContentPreview node={preview} kind={graphKindLabel(t, preview)} onClose={() => setPreview(null)} />}\n </div>\n )\n}\n\nfunction ExplorePage(props: { client: MnemonClient; status: StatusView | null; seed: string; writeEnabled: boolean; onForget: (insight: Insight) => Promise<void> }): JSX.Element {\n const t = useT()\n const [query, setQuery] = useState(props.seed)\n const [mode, setMode] = useState<'smart' | 'keyword' | 'basic'>('smart')\n const [category, setCategory] = useState<Category | ''>('')\n const [results, setResults] = useState<Insight[]>([])\n const [searchKind, setSearchKind] = useState<'direct' | 'agent' | null>(null)\n const [agentAnswer, setAgentAnswer] = useState<{ answer: string; citations: string[]; runId: string } | null>(null)\n const [searched, setSearched] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [relatedTo, setRelatedTo] = useState<Insight | null>(null)\n const [related, setRelated] = useState<Insight[]>([])\n const [relatedLoading, setRelatedLoading] = useState(false)\n\n useEffect(() => { if (props.seed !== '') setQuery(props.seed) }, [props.seed])\n\n const runSearch = async (withAgent: boolean) => {\n if (query.trim() === '') return\n setSearchKind(withAgent ? 'agent' : 'direct'); setSearched(true); setError(null); setRelatedTo(null); setAgentAnswer(null)\n try {\n const request = { query, mode, ...(category === '' ? {} : { category }), limit: props.status?.defaultRecallLimit ?? 10 }\n if (withAgent) {\n const response = await props.client.agentSearch(request)\n setResults(response.results)\n setAgentAnswer({ answer: response.answer, citations: response.citations, runId: response.delegation.runId })\n } else {\n setResults((await props.client.search(request)).results)\n }\n } catch (reason) {\n setError(message(reason)); setResults([]); setAgentAnswer(null)\n } finally {\n setSearchKind(null)\n }\n }\n\n const search = (event: FormEvent) => { event.preventDefault(); void runSearch(false) }\n const searching = searchKind !== null\n\n const showRelated = async (insight: Insight) => {\n setRelatedTo(insight); setRelated([]); setRelatedLoading(true); setError(null)\n if (typeof window.requestAnimationFrame === 'function') window.requestAnimationFrame(() => document.getElementById('mnemon-related-pane')?.scrollIntoView({ block: 'nearest', behavior: 'smooth' }))\n try { setRelated(await props.client.related(insight.id, insight.memoryBodyId)) } catch (reason) { setError(message(reason)) } finally { setRelatedLoading(false) }\n }\n\n const forget = async (insight: Insight) => {\n await props.onForget(insight)\n setResults(items => items.filter(item => insightKey(item) !== insightKey(insight)))\n setRelated(items => items.filter(item => insightKey(item) !== insightKey(insight)))\n if (relatedTo !== null && insightKey(relatedTo) === insightKey(insight)) setRelatedTo(null)\n }\n\n return (\n <div className={css.page}>\n <PageHeader title={t('search.title')} description={t('search.description')} meta={t('search.maxResults', { count: props.status?.defaultRecallLimit ?? '—' })} />\n <form className={css.searchBar} onSubmit={event => void search(event)}>\n <div className={css.queryField}><span aria-hidden=\"true\">⌕</span><input value={query} onChange={event => setQuery(event.target.value)} placeholder={t('search.placeholder')} aria-label={t('search.queryAria')} /><kbd>↵</kbd></div>\n <div className={css.searchControls}>\n <label>{t('common.category')}<select value={category} onChange={event => setCategory(event.target.value as Category | '')} aria-label={t('search.categoryAria')}><option value=\"\">{t('common.allCategories')}</option>{CATEGORIES.map(value => <option key={value} value={value}>{categoryLabel(t, value)}</option>)}</select></label>\n <label>{t('search.strategy')}<select value={mode} onChange={event => setMode(event.target.value as 'smart' | 'keyword' | 'basic')} aria-label={t('search.modeAria')}><option value=\"smart\">{t('search.modeSmart')}</option><option value=\"keyword\">{t('search.modeKeyword')}</option><option value=\"basic\">{t('search.modeBasic')}</option></select></label>\n <div className={css.searchActions}><button type=\"submit\" className={css.secondaryButton} disabled={searching || query.trim() === ''}>{searchKind === 'direct' ? t('search.searching') : t('search.action')}</button><button type=\"button\" className={css.primaryButton} disabled={searching || query.trim() === '' || props.status?.lifecycle?.sessionAvailable !== true} onClick={() => void runSearch(true)}>{searchKind === 'agent' ? t('search.agentSearching') : t('search.agentAction')}</button></div>\n </div>\n </form>\n {agentAnswer !== null && <section className={css.agentAnswer} aria-label={t('search.agentAnswer')}><div className={css.agentAnswerHeading}><div><span>{t('search.agentAnswerHint')}</span><h3>{t('search.agentAnswer')}</h3></div><code>{agentAnswer.runId.slice(0, 8)}</code></div><p>{agentAnswer.answer}</p>{agentAnswer.citations.length > 0 && <div className={css.agentCitations}>{agentAnswer.citations.map(citation => <code key={citation}>{citation}</code>)}</div>}</section>}\n {error !== null && <div className={css.inlineError} role=\"alert\">{error}</div>}\n {!searched && <EmptyState glyph=\"⌕\" title={t('search.startTitle')}>{t('search.startText')}</EmptyState>}\n {searched && !searching && results.length === 0 && error === null && <EmptyState glyph=\"0\" title={t('search.emptyTitle')}>{t('search.emptyText')}</EmptyState>}\n {results.length > 0 && (\n <div className={relatedTo === null ? css.singleColumn : css.resultLayout}>\n <section className={css.results}><div className={css.sectionHeading}><div><h3>{t('search.results')}</h3></div><strong>{results.length}</strong></div>{results.map(insight => <InsightCard key={insightKey(insight)} insight={insight} writeEnabled={props.writeEnabled} onForget={forget} onRelated={item => void showRelated(item)} />)}</section>\n {relatedTo !== null && <aside id=\"mnemon-related-pane\" className={css.relatedPane}><div className={css.sectionHeading}><div><h3>{t('search.related')}</h3></div><button type=\"button\" onClick={() => setRelatedTo(null)} aria-label={t('search.closeRelated')}>×</button></div><p className={css.relatedSource}>{relatedTo.content}</p>{relatedLoading && <div className={css.loading}>{t('search.traversing')}</div>}{!relatedLoading && related.length === 0 && <div className={css.muted}>{t('search.noRelated')}</div>}{related.map(insight => <InsightCard key={insightKey(insight)} insight={insight} writeEnabled={props.writeEnabled} onForget={forget} onRelated={item => void showRelated(item)} />)}</aside>}\n </div>\n )}\n </div>\n )\n}\n\nfunction EntitiesPage(props: { client: MnemonClient; revision: number; writeEnabled: boolean; onForget: (insight: Insight) => Promise<void>; onExplore: (query: string) => void }): JSX.Element {\n const t = useT()\n const [view, setView] = useState<EntityView>({ items: [], insights: [] })\n const [entity, setEntity] = useState('')\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState<string | null>(null)\n\n const load = useCallback(async (selected?: string) => {\n setLoading(true); setError(null)\n try { setView(await props.client.entities(selected, 20)) } catch (reason) { setError(message(reason)) } finally { setLoading(false) }\n }, [props.client])\n\n useEffect(() => { void load() }, [load, props.revision])\n const submit = (event: FormEvent) => { event.preventDefault(); if (entity.trim() !== '') void load(entity) }\n\n return (\n <div className={css.page}>\n <PageHeader title={t('entities.title')} description={t('entities.description')} meta={t('entities.count', { count: view.items.length })} />\n <div className={css.entityLayout}>\n <aside className={css.entityRail}>\n <form className={css.entitySearch} onSubmit={submit}><input aria-label={t('entities.nameAria')} value={entity} onChange={event => setEntity(event.target.value)} placeholder={t('entities.placeholder')} /><button type=\"submit\" className={css.primaryButton} disabled={loading || entity.trim() === ''}>{t('entities.action')}</button></form>\n <div className={css.entityHeading}><span>{t('entities.top')}</span><small>{t('entities.frequency')}</small></div>\n <div className={css.entityList}>{view.items.map(item => <button key={item.entity} type=\"button\" aria-pressed={view.selected === item.entity} onClick={() => { setEntity(item.entity); void load(item.entity) }}><span>{item.entity}</span><strong>{item.count}</strong></button>)}</div>\n {!loading && view.items.length === 0 && <p className={css.muted}>{t('entities.emptyRail')}</p>}\n </aside>\n <section className={css.entityResults}>\n {error !== null && <div className={css.inlineError} role=\"alert\">{error}</div>}\n {loading && <div className={css.loadingPanel}>{t('entities.loading')}</div>}\n {!loading && view.selected === undefined && <EmptyState glyph=\"◎\" title={t('entities.selectTitle')}>{t('entities.selectText')}</EmptyState>}\n {!loading && view.selected !== undefined && <><div className={css.sectionHeading}><div><h3>{view.selected}</h3></div><strong>{view.insights.length}</strong></div>{view.insights.length === 0 ? <EmptyState glyph=\"0\" title={t('entities.emptyTitle')}>{t('entities.emptyText')}</EmptyState> : view.insights.map(insight => <InsightCard key={insightKey(insight)} insight={insight} writeEnabled={props.writeEnabled} onForget={props.onForget} onRelated={() => props.onExplore(insight.content)} />)}</>}\n </section>\n </div>\n </div>\n )\n}\n\nfunction RuntimePage(props: { client: MnemonClient; revision: number; writeEnabled: boolean; onMutate: () => void }): JSX.Element {\n const t = useT()\n const [snapshot, setSnapshot] = useState<RuntimeMemorySnapshot | null>(null)\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState<string | null>(null)\n const [notice, setNotice] = useState<string | null>(null)\n const [target, setTarget] = useState<RuntimeMemoryTarget>('memory')\n const [importance, setImportance] = useState<RuntimeMemoryImportance>('normal')\n const [content, setContent] = useState('')\n const [saving, setSaving] = useState(false)\n const [editing, setEditing] = useState<string | null>(null)\n const [editContent, setEditContent] = useState('')\n const [editImportance, setEditImportance] = useState<RuntimeMemoryImportance>('normal')\n const [removing, setRemoving] = useState<string | null>(null)\n\n const load = useCallback(async () => {\n setLoading(true); setError(null)\n try { setSnapshot(await props.client.runtimeMemory()) } catch (reason) { setError(message(reason)) } finally { setLoading(false) }\n }, [props.client])\n useEffect(() => { void load() }, [load, props.revision])\n\n const entryKey = (entry: RuntimeMemoryEntry) => `${entry.target}:${entry.created_at}:${entry.content}`\n const mutate = async (request: Parameters<MnemonClient['mutateRuntimeMemory']>[0]) => {\n setNotice(null); setError(null)\n const result = await props.client.mutateRuntimeMemory(request)\n setNotice(result.maintenance === undefined\n ? t(`runtime.result.${request.action}` as MnemonKey, { target: t(`runtime.target.${request.target}` as MnemonKey), count: result.entryCount })\n : result.maintenance.kind === 'local-compaction'\n ? t('runtime.result.localCompaction', { target: t(`runtime.target.${request.target}` as MnemonKey), count: result.entryCount })\n : t('runtime.result.maintenance', { target: t(`runtime.target.${request.target}` as MnemonKey), count: result.entryCount, spaces: result.maintenance.memoryBodyIds.join(', ') || '—' }))\n await load()\n props.onMutate()\n }\n const add = async (event: FormEvent) => {\n event.preventDefault()\n if (content.trim() === '') return\n setSaving(true)\n try {\n await mutate({ action: 'add', target, content, importance })\n setContent('')\n } catch (reason) { setError(message(reason)) } finally { setSaving(false) }\n }\n const beginEdit = (entry: RuntimeMemoryEntry) => {\n setEditing(entryKey(entry)); setEditContent(entry.content); setEditImportance(entry.importance); setRemoving(null)\n }\n const replace = async (entry: RuntimeMemoryEntry) => {\n if (editContent.trim() === '') return\n setSaving(true)\n try {\n await mutate({ action: 'replace', target: entry.target, old_text: entry.content, content: editContent, importance: editImportance })\n setEditing(null)\n } catch (reason) { setError(message(reason)) } finally { setSaving(false) }\n }\n const remove = async (entry: RuntimeMemoryEntry) => {\n setSaving(true)\n try {\n await mutate({ action: 'remove', target: entry.target, old_text: entry.content })\n setRemoving(null)\n } catch (reason) { setError(message(reason)) } finally { setSaving(false) }\n }\n\n const targetPanel = (value: RuntimeMemoryTarget) => {\n const view = snapshot?.targets[value]\n const entries = snapshot?.entries.filter(entry => entry.target === value) ?? []\n const percentage = view === undefined || view.limit === 0 ? 0 : Math.min(100, Math.round(view.used / view.limit * 100))\n return (\n <section className={css.runtimeTarget} aria-label={t(`runtime.target.${value}` as MnemonKey)}>\n <header className={css.runtimeTargetHeader}>\n <div><span>{value === 'user' ? 'USER.md' : 'MEMORY.md'}</span><h3>{t(`runtime.target.${value}` as MnemonKey)}</h3></div>\n <strong>{view?.entryCount ?? 0}</strong>\n </header>\n <div className={css.capacityLine}><div><i style={{ width: `${percentage}%` }} /></div><span>{view === undefined ? '—' : `${humanBytes(view.used)} / ${humanBytes(view.limit)}`}</span></div>\n <p className={css.runtimeTargetDescription}>{t(`runtime.target.${value}.description` as MnemonKey)}</p>\n <div className={css.runtimeEntries}>\n {entries.map(entry => {\n const key = entryKey(entry)\n const isEditing = editing === key\n const isRemoving = removing === key\n return <article key={key} className={css.runtimeEntry} data-importance={entry.importance}>\n <div className={css.runtimeEntryMeta}><span>{t(`runtime.importance.${entry.importance}` as MnemonKey)}</span><time dateTime={entry.updated_at}>{new Date(entry.updated_at).toLocaleString()}</time></div>\n {isEditing ? <textarea aria-label={t('runtime.editContent')} value={editContent} onChange={event => setEditContent(event.target.value)} rows={4} /> : <p>{entry.content}</p>}\n {isEditing && <select aria-label={t('runtime.importance')} value={editImportance} onChange={event => setEditImportance(event.target.value as RuntimeMemoryImportance)}><option value=\"critical\">{t('runtime.importance.critical')}</option><option value=\"normal\">{t('runtime.importance.normal')}</option><option value=\"low\">{t('runtime.importance.low')}</option></select>}\n <footer>\n {isRemoving ? <><span>{t('runtime.removeConfirm')}</span><button type=\"button\" className={css.dangerSolidButton} disabled={saving} onClick={() => void remove(entry)}>{t('runtime.removeAction')}</button><button type=\"button\" className={css.ghostButton} onClick={() => setRemoving(null)}>{t('common.cancel')}</button></> : isEditing ? <><button type=\"button\" className={css.primaryButton} disabled={saving || editContent.trim() === ''} onClick={() => void replace(entry)}>{t('runtime.saveEdit')}</button><button type=\"button\" className={css.ghostButton} onClick={() => setEditing(null)}>{t('common.cancel')}</button></> : props.writeEnabled ? <><button type=\"button\" className={css.ghostButton} onClick={() => beginEdit(entry)}>{t('runtime.editAction')}</button><button type=\"button\" className={css.dangerButton} onClick={() => { setRemoving(key); setEditing(null) }}>{t('runtime.removeAction')}</button></> : null}\n </footer>\n </article>\n })}\n {!loading && entries.length === 0 && <div className={css.runtimeEmpty}><span>○</span><p>{t('runtime.empty')}</p></div>}\n </div>\n </section>\n )\n }\n\n return (\n <div className={css.page}>\n <PageHeader title={t('runtime.title')} description={t('runtime.description')} meta={snapshot === null ? t('common.loading') : t('runtime.total', { count: snapshot.entries.length })} action={<button type=\"button\" className={css.secondaryButton} disabled={loading} onClick={() => void load()}>{t('runtime.refresh')}</button>} />\n {error !== null && <div className={css.inlineError} role=\"alert\">{error}</div>}\n {notice !== null && <div className={css.runtimeNotice} role=\"status\">{notice}</div>}\n {props.writeEnabled && <form className={css.runtimeComposer} onSubmit={event => void add(event)}>\n <div className={css.runtimeComposerHeading}><div><h3>{t('runtime.addTitle')}</h3><p>{t('runtime.addDescription')}</p></div><span>{t('runtime.hotContext')}</span></div>\n <textarea aria-label={t('runtime.content')} value={content} onChange={event => setContent(event.target.value)} rows={3} placeholder={t('runtime.placeholder')} />\n <div className={css.runtimeComposerActions}><label>{t('runtime.target')}<select value={target} onChange={event => setTarget(event.target.value as RuntimeMemoryTarget)}><option value=\"memory\">{t('runtime.target.memory')}</option><option value=\"user\">{t('runtime.target.user')}</option></select></label><label>{t('runtime.importance')}<select value={importance} onChange={event => setImportance(event.target.value as RuntimeMemoryImportance)}><option value=\"critical\">{t('runtime.importance.critical')}</option><option value=\"normal\">{t('runtime.importance.normal')}</option><option value=\"low\">{t('runtime.importance.low')}</option></select></label><button type=\"submit\" className={css.primaryButton} disabled={saving || content.trim() === ''}>{saving ? t('runtime.saving') : t('runtime.addAction')}</button></div>\n </form>}\n {!props.writeEnabled && <div className={css.runtimeReadOnly}>{t('runtime.readOnly')}</div>}\n <div className={css.runtimeGrid}>{targetPanel('user')}{targetPanel('memory')}</div>\n <p className={css.runtimeFootnote}>{t('runtime.footnote')}</p>\n </div>\n )\n}\n\nfunction RememberPage(props: { client: MnemonClient; sessionId: string | undefined; memoryBodies: MemoryBodyView[]; writeEnabled: boolean; seed: string; onMutate: () => void }): JSX.Element {\n const t = useT()\n const [content, setContent] = useState(props.seed)\n const [category, setCategory] = useState<Category>('general')\n const [importance, setImportance] = useState(3)\n const [tags, setTags] = useState('')\n const [entities, setEntities] = useState('')\n const [memoryBodyId, setMemoryBodyId] = useState('')\n const [supervising, setSupervising] = useState(false)\n const [saving, setSaving] = useState(false)\n const [result, setResult] = useState<string | null>(null)\n useEffect(() => { if (props.seed !== '') setContent(props.seed) }, [props.seed])\n useEffect(() => {\n if (memoryBodyId === '' && props.memoryBodies.length > 0) setMemoryBodyId((props.memoryBodies.find(body => body.active) ?? props.memoryBodies[0])!.id)\n }, [memoryBodyId, props.memoryBodies])\n\n const supervise = async (event: FormEvent) => {\n event.preventDefault()\n if (content.trim() === '' || props.sessionId === undefined) return\n setSupervising(true); setResult(null)\n try {\n const response = await props.client.supervise(content)\n setResult(`${t(response.action === 'skipped' ? 'remember.skipped' : 'remember.completed')}${response.memoryBodyIds.length === 0 ? '' : ` · ${response.memoryBodyIds.join(', ')}`}${response.summary === '' ? '' : ` · ${response.summary}`}`)\n setContent('')\n props.onMutate()\n } catch (reason) { setResult(t('remember.dispatchFailed', { error: message(reason) })) } finally { setSupervising(false) }\n }\n\n const manualSave = async (event: FormEvent) => {\n event.preventDefault(); if (content.trim() === '') return\n setSaving(true); setResult(null)\n try {\n const response = await props.client.remember({ content, category, importance, tags: tags.split(',').map(value => value.trim()).filter(Boolean), entities: entities.split(',').map(value => value.trim()).filter(Boolean), source: 'user', ...(memoryBodyId === '' ? {} : { memoryBodyId }) })\n const action = typeof response.action === 'string' ? response.action : 'saved'\n const summary = typeof response.summary === 'string' ? response.summary : ''\n setResult(action === 'skipped' ? `${t('remember.skipped')}${summary === '' ? '' : ` · ${summary}`}` : `${t('remember.processed', { action })}${summary === '' ? '' : ` · ${summary}`}`)\n if (action !== 'skipped') { setContent(''); setTags(''); setEntities(''); props.onMutate() }\n } catch (reason) { setResult(t('remember.saveFailed', { error: message(reason) })) } finally { setSaving(false) }\n }\n\n return (\n <div className={css.page}>\n <PageHeader title={t('remember.title')} description={t('remember.description')} meta={props.writeEnabled ? t('remember.worker') : t('common.readOnly')} />\n {!props.writeEnabled ? <EmptyState glyph=\"⊘\" title={t('remember.readOnlyTitle')}>{t('remember.readOnlyText')}</EmptyState> : (\n <div className={css.writebackLayout}>\n <aside className={css.writeGuide}><h3>{t('remember.flowTitle')}</h3><ol><li><strong>{t('remember.routeTitle')}</strong><span>{t('remember.routeText')}</span></li><li><strong>{t('remember.dedupeTitle')}</strong><span>{t('remember.dedupeText')}</span></li><li><strong>{t('remember.writeTitle')}</strong><span>{t('remember.writeText')}</span></li></ol><p>{t('remember.flowText')}</p></aside>\n <section className={css.supervisedComposer}>\n <form className={css.supervisedForm} onSubmit={event => void supervise(event)}>\n <div className={css.supervisedHeading}><div><h3>{t('remember.delegateTitle')}</h3></div><span className={props.sessionId === undefined ? css.sessionMissing : css.sessionReady}>{props.sessionId === undefined ? t('remember.noSession') : t('remember.ready')}</span></div>\n <label className={css.fieldWide}>{t('remember.candidate')}<textarea aria-label={t('remember.candidateAria')} value={content} onChange={event => setContent(event.target.value)} maxLength={8000} rows={8} placeholder={t('remember.placeholder')} /></label>\n {props.sessionId === undefined && <p className={css.sessionHint}>{t('remember.sessionHint')}</p>}\n <div className={css.formActions}><button type=\"submit\" className={css.primaryButton} disabled={supervising || content.trim() === '' || props.sessionId === undefined}>{supervising ? t('remember.processing') : t('remember.action')}</button>{result !== null && <span role=\"status\">{result}</span>}</div>\n </form>\n <details className={css.advancedWrite}>\n <summary><span><strong>{t('remember.advanced')}</strong><small>{t('remember.advancedHint')}</small></span><span>{t('remember.expand')}</span></summary>\n <form className={css.manualForm} onSubmit={event => void manualSave(event)}>\n <div className={css.formGrid}><label className={css.fieldWide}>{t('remember.target')}<select aria-label={t('remember.target')} value={memoryBodyId} onChange={event => setMemoryBodyId(event.target.value)}>{props.memoryBodies.map(body => <option key={body.id} value={body.id}>{body.name} · {body.id}{body.active ? ` · ${t('common.active')}` : ''}</option>)}</select></label><label>{t('common.category')}<select value={category} onChange={event => setCategory(event.target.value as Category)}>{CATEGORIES.map(value => <option key={value} value={value}>{categoryLabel(t, value)}</option>)}</select></label><label>{t('common.importanceLabel')}<select value={importance} onChange={event => setImportance(Number(event.target.value))}>{[1, 2, 3, 4, 5].map(value => <option key={value} value={value}>{value} / 5</option>)}</select></label><label className={css.fieldWide}>{t('remember.entities')}<input value={entities} onChange={event => setEntities(event.target.value)} placeholder=\"SQLite, DSH\" /></label><label className={css.fieldWide}>{t('remember.tags')}<input value={tags} onChange={event => setTags(event.target.value)} placeholder=\"architecture, local-first\" /></label></div>\n <div className={css.manualActions}><p>{t('remember.advancedText')}</p><button type=\"submit\" className={css.secondaryButton} disabled={saving || content.trim() === '' || props.sessionId === undefined || memoryBodyId === ''}>{saving ? t('remember.saving') : t('remember.advancedAction')}</button></div>\n </form>\n </details>\n </section>\n </div>\n )}\n </div>\n )\n}\n\nfunction ListPage(props: { client: MnemonClient; revision: number; writeEnabled: boolean; onForget: (insight: Insight) => Promise<void>; onClone: (insight: Insight) => void; onExplore: (query: string) => void }): JSX.Element {\n const PAGE_SIZE = 48\n const t = useT()\n const [query, setQuery] = useState('')\n const [category, setCategory] = useState<Category | ''>('')\n const [view, setView] = useState<MemoryListView | null>(null)\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState<string | null>(null)\n const [visibleLimit, setVisibleLimit] = useState(PAGE_SIZE)\n\n const load = useCallback(async () => {\n setLoading(true); setError(null)\n try { setView(await props.client.list({ ...(query.trim() === '' ? {} : { query }), ...(category === '' ? {} : { category }), limit: 1000 })) } catch (reason) { setError(message(reason)) } finally { setLoading(false) }\n }, [category, props.client, query])\n useEffect(() => { void load() }, [props.revision])\n const submit = (event: FormEvent) => { event.preventDefault(); setVisibleLimit(PAGE_SIZE); void load() }\n const forget = async (insight: Insight) => { await props.onForget(insight); setView(current => current === null ? current : { ...current, total: Math.max(0, current.total - 1), items: current.items.filter(item => insightKey(item) !== insightKey(insight)) }) }\n const visibleItems = view?.items.slice(0, visibleLimit) ?? []\n const remaining = Math.max(0, (view?.items.length ?? 0) - visibleItems.length)\n\n return (\n <div className={css.page}>\n <PageHeader title={t('content.title')} description={t('content.description')} meta={t('content.count', { count: view?.total ?? '—' })} />\n <form className={css.listToolbar} onSubmit={submit}><input aria-label={t('content.filterAria')} value={query} onChange={event => setQuery(event.target.value)} placeholder={t('content.filterPlaceholder')} /><select aria-label={t('content.categoryAria')} value={category} onChange={event => setCategory(event.target.value as Category | '')}><option value=\"\">{t('common.allCategories')}</option>{CATEGORIES.map(value => <option key={value} value={value}>{categoryLabel(t, value)}</option>)}</select><button type=\"submit\" className={css.primaryButton} disabled={loading}>{loading ? t('common.loading') : t('content.apply')}</button></form>\n <div className={css.listNotice}>{t('content.notice')}</div>\n {error !== null && <div className={css.inlineError} role=\"alert\">{error}</div>}\n {!loading && view?.items.length === 0 && <EmptyState glyph=\"≡\" title={t('content.emptyTitle')}>{t('content.emptyText')}</EmptyState>}\n <div className={css.memoryList}>{visibleItems.map(insight => <InsightCard key={insightKey(insight)} insight={insight} writeEnabled={props.writeEnabled} onForget={forget} onClone={props.onClone} onRelated={() => props.onExplore(insight.content)} />)}</div>\n {view !== null && view.items.length > 0 && <div className={css.listProgress}><span>{t('content.showing', { visible: visibleItems.length, total: view.items.length })}</span>{remaining > 0 && <button type=\"button\" className={css.secondaryButton} onClick={() => setVisibleLimit(value => value + PAGE_SIZE)}>{t('content.showMore', { count: Math.min(PAGE_SIZE, remaining) })}</button>}</div>}\n </div>\n )\n}\n\ntype DocumentListItem = DocumentRecord & { healthy?: boolean; excerpt: string }\n\nfunction DocumentsPage(props: { client: MnemonClient; revision: number; writeEnabled: boolean; sessionId?: string; onMutate: () => void }): JSX.Element {\n const t = useT()\n const [snapshot, setSnapshot] = useState<DocumentSnapshot | null>(null)\n const [items, setItems] = useState<DocumentListItem[]>([])\n const [selectedId, setSelectedId] = useState<string | null>(null)\n const [selected, setSelected] = useState<DocumentView | null>(null)\n const [status, setStatus] = useState<'active' | 'archived'>('active')\n const [query, setQuery] = useState('')\n const [loading, setLoading] = useState(true)\n const [saving, setSaving] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [notice, setNotice] = useState<string | null>(null)\n const [composing, setComposing] = useState(false)\n const [editing, setEditing] = useState(false)\n const [confirmArchive, setConfirmArchive] = useState(false)\n const [title, setTitle] = useState('')\n const [description, setDescription] = useState('')\n const [content, setContent] = useState('')\n const [sources, setSources] = useState('')\n\n const display = useCallback(async (nextQuery: string, nextStatus: 'active' | 'archived') => {\n setLoading(true); setError(null)\n try {\n const current = await props.client.documents()\n const records = nextQuery.trim() === ''\n ? current.documents\n : (await props.client.searchDocuments(nextQuery, nextStatus === 'archived')).results\n const filtered = records.filter(record => record.status === nextStatus)\n setSnapshot(current)\n setItems(filtered)\n setSelectedId(previous => previous !== null && filtered.some(record => record.id === previous) ? previous : filtered[0]?.id ?? null)\n } catch (reason) {\n setError(message(reason)); setSnapshot(null); setItems([]); setSelectedId(null)\n } finally {\n setLoading(false)\n }\n }, [props.client])\n\n useEffect(() => { void display(query, status) }, [display, props.revision, status])\n useEffect(() => {\n setSelected(null)\n if (selectedId === null) return\n let active = true\n void props.client.document(selectedId).then(value => { if (active) setSelected(value) }).catch(reason => { if (active) setError(message(reason)) })\n return () => { active = false }\n }, [props.client, selectedId, props.revision])\n\n const resetComposer = () => { setTitle(''); setDescription(''); setContent(''); setSources(''); setComposing(false) }\n const sourcePaths = (value: string) => value.split(/\\r?\\n|,/gu).map(path => path.trim()).filter(Boolean)\n\n const create = async (event: FormEvent) => {\n event.preventDefault(); setSaving(true); setError(null); setNotice(null)\n try {\n const result = await props.client.mutateDocument({ action: 'create', title, description, content, sourcePaths: sourcePaths(sources) })\n setNotice(result.maintenance === undefined ? t('documents.created') : t('documents.createdAfterArchive', { count: result.maintenance.archivedDocumentIds.length }))\n setStatus('active'); setQuery(''); resetComposer(); props.onMutate(); await display('', 'active'); setSelectedId(result.document.id)\n } catch (reason) { setError(message(reason)) } finally { setSaving(false) }\n }\n\n const beginEdit = () => {\n if (selected === null) return\n setTitle(selected.title); setDescription(selected.description); setContent(selected.content); setSources(selected.sourcePaths.join('\\n')); setEditing(true); setComposing(false); setConfirmArchive(false)\n }\n\n const update = async (event: FormEvent) => {\n event.preventDefault()\n if (selected === null) return\n setSaving(true); setError(null); setNotice(null)\n try {\n const result = await props.client.mutateDocument({ action: 'update', id: selected.id, title, description, content, sourcePaths: sourcePaths(sources) })\n setNotice(result.maintenance === undefined ? t('documents.updated') : t('documents.updatedAfterArchive', { count: result.maintenance.archivedDocumentIds.length }))\n setEditing(false); props.onMutate(); await display(query, status); setSelectedId(result.document.id)\n } catch (reason) { setError(message(reason)) } finally { setSaving(false) }\n }\n\n const archive = async () => {\n if (selected === null) return\n setSaving(true); setError(null); setNotice(null)\n try {\n const result = await props.client.archiveDocument(selected.id)\n setNotice(t('documents.archived', { spaces: result.maintenance?.memoryBodyIds.join(', ') || '—' }))\n setConfirmArchive(false); setStatus('archived'); setQuery(''); props.onMutate(); await display('', 'archived'); setSelectedId(result.document.id)\n } catch (reason) { setError(message(reason)) } finally { setSaving(false) }\n }\n\n const usage = snapshot === null ? 0 : Math.min(100, snapshot.activeBytes / snapshot.limitBytes * 100)\n const activeCount = snapshot?.activeCount ?? 0\n const archivedCount = snapshot?.archivedCount ?? 0\n\n return (\n <div className={css.page}>\n <PageHeader title={t('documents.title')} description={t('documents.description')} meta={snapshot === null ? t('common.loading') : t('documents.capacity', { used: humanBytes(snapshot.activeBytes), limit: humanBytes(snapshot.limitBytes) })} action={<button type=\"button\" className={css.secondaryButton} disabled={loading} onClick={() => void display(query, status)}>{t('documents.refresh')}</button>} />\n {error !== null && <div className={css.inlineError} role=\"alert\">{error}</div>}\n {notice !== null && <div className={css.runtimeNotice} role=\"status\">{notice}</div>}\n\n <section className={css.documentSummary} aria-label={t('documents.summary')}>\n <article><span>{t('documents.active')}</span><strong>{activeCount}</strong><small>{t('documents.activeHint')}</small></article>\n <article><span>{t('documents.archivedCount')}</span><strong>{archivedCount}</strong><small>{t('documents.archivedHint')}</small></article>\n <article className={css.documentCapacity}><span>{t('documents.activeCapacity')}</span><strong>{snapshot === null ? '—' : `${usage.toFixed(1)}%`}</strong><div><i style={{ width: `${usage}%` }} /></div><small>{t('documents.capacityHint')}</small></article>\n </section>\n\n <section className={css.documentToolbar}>\n <form onSubmit={event => { event.preventDefault(); void display(query, status) }}><span aria-hidden=\"true\">⌕</span><input aria-label={t('documents.searchAria')} value={query} onChange={event => setQuery(event.target.value)} placeholder={t('documents.searchPlaceholder')} /><button type=\"submit\" className={css.secondaryButton}>{t('documents.search')}</button></form>\n <div role=\"group\" aria-label={t('documents.scope')}><button type=\"button\" data-active={status === 'active' || undefined} onClick={() => setStatus('active')}>{t('documents.active')} <b>{activeCount}</b></button><button type=\"button\" data-active={status === 'archived' || undefined} onClick={() => setStatus('archived')}>{t('documents.archivedCount')} <b>{archivedCount}</b></button></div>\n {props.writeEnabled && props.sessionId !== undefined && <button type=\"button\" className={css.primaryButton} onClick={() => { setComposing(value => !value); setEditing(false) }}>{composing ? t('common.cancel') : t('documents.new')}</button>}\n </section>\n\n {composing && <form className={css.documentEditor} onSubmit={event => void create(event)}>\n <header><div><h3>{t('documents.newTitle')}</h3><p>{t('documents.editorHint')}</p></div><span>{t('documents.managedCopy')}</span></header>\n <div className={css.documentEditorMeta}><label>{t('documents.name')}<input value={title} onChange={event => setTitle(event.target.value)} required /></label><label>{t('documents.routing')}<input value={description} onChange={event => setDescription(event.target.value)} /></label></div>\n <label>{t('documents.sources')}<input value={sources} onChange={event => setSources(event.target.value)} placeholder={t('documents.sourcesPlaceholder')} /></label>\n <label>{t('documents.markdown')}<textarea value={content} onChange={event => setContent(event.target.value)} rows={10} required /></label>\n <footer><button type=\"button\" className={css.ghostButton} onClick={resetComposer}>{t('common.cancel')}</button><button type=\"submit\" className={css.primaryButton} disabled={saving || title.trim() === '' || content.trim() === ''}>{saving ? t('documents.saving') : t('documents.create')}</button></footer>\n </form>}\n\n <div className={css.documentWorkspace}>\n <aside className={css.documentList} aria-label={t('documents.list')}>\n <header><span>{status === 'active' ? t('documents.activeList') : t('documents.archiveList')}</span><code>{items.length}</code></header>\n {items.map(document => <button type=\"button\" key={document.id} data-selected={selectedId === document.id || undefined} onClick={() => { setSelected(null); setSelectedId(document.id); setEditing(false); setConfirmArchive(false) }}><div><strong>{document.title}</strong><time dateTime={document.updatedAt}>{new Date(document.updatedAt).toLocaleDateString()}</time></div><p>{document.description || document.excerpt || t('documents.noDescription')}</p><footer><span>{humanBytes(document.sizeBytes)}</span><code>{document.id.slice(0, 8)}</code>{document.healthy === false && <em>{t('documents.missing')}</em>}</footer></button>)}\n {!loading && items.length === 0 && <div className={css.documentListEmpty}><span>▤</span><strong>{status === 'active' ? t('documents.emptyActive') : t('documents.emptyArchived')}</strong><p>{status === 'active' ? t('documents.emptyActiveText') : t('documents.emptyArchivedText')}</p></div>}\n {loading && <div className={css.loading}>{t('common.loading')}</div>}\n </aside>\n\n <section className={css.documentReader} aria-label={t('documents.reader')}>\n {selected === null ? <EmptyState glyph=\"▤\" title={t('documents.selectTitle')}>{t('documents.selectText')}</EmptyState> : editing ? <form className={css.documentEditor} onSubmit={event => void update(event)}>\n <header><div><h3>{t('documents.editTitle')}</h3><p>{t('documents.editorHint')}</p></div><code>{selected.id}</code></header>\n <div className={css.documentEditorMeta}><label>{t('documents.name')}<input value={title} onChange={event => setTitle(event.target.value)} required /></label><label>{t('documents.routing')}<input value={description} onChange={event => setDescription(event.target.value)} /></label></div>\n <label>{t('documents.sources')}<input value={sources} onChange={event => setSources(event.target.value)} /></label><label>{t('documents.markdown')}<textarea value={content} onChange={event => setContent(event.target.value)} rows={18} required /></label>\n <footer><button type=\"button\" className={css.ghostButton} onClick={() => setEditing(false)}>{t('common.cancel')}</button><button type=\"submit\" className={css.primaryButton} disabled={saving}>{saving ? t('documents.saving') : t('documents.save')}</button></footer>\n </form> : <article className={css.documentDetail}>\n <header><div><span>{selected.status === 'active' ? t('documents.active') : t('documents.coldArchive')}</span><h3>{selected.title}</h3><p>{selected.description || t('documents.noDescription')}</p></div><div>{props.writeEnabled && selected.status === 'active' && <button type=\"button\" className={css.secondaryButton} onClick={beginEdit}>{t('documents.edit')}</button>}</div></header>\n <dl><div><dt>{t('documents.path')}</dt><dd><code>{selected.relativePath}</code></dd></div><div><dt>{t('documents.revision')}</dt><dd>{selected.revision}</dd></div><div><dt>{t('documents.hash')}</dt><dd><code>{selected.contentHash.slice(0, 16)}</code></dd></div><div><dt>{t('documents.size')}</dt><dd>{humanBytes(selected.sizeBytes)}</dd></div></dl>\n {selected.sourcePaths.length > 0 && <div className={css.documentSources}><span>{t('documents.sources')}</span>{selected.sourcePaths.map(path => <code key={path}>{path}</code>)}</div>}\n {selected.status === 'archived' && <div className={css.documentArchiveReceipt}><strong>{t('documents.archiveReceipt')}</strong><p>{selected.archiveSummary}</p><div>{selected.memoryBodyIds.map(id => <code key={id}>{id}</code>)}</div></div>}\n <DocumentMarkdown content={selected.content} />\n {props.writeEnabled && selected.status === 'active' && <footer className={css.documentDanger}>{confirmArchive ? <><span>{t('documents.archiveConfirm')}</span><button type=\"button\" className={css.dangerSolidButton} disabled={saving} onClick={() => void archive()}>{saving ? t('documents.archiving') : t('documents.archiveNow')}</button><button type=\"button\" className={css.ghostButton} onClick={() => setConfirmArchive(false)}>{t('common.cancel')}</button></> : <><div><strong>{t('documents.archiveTitle')}</strong><p>{t('documents.archiveDescription')}</p></div><button type=\"button\" className={css.dangerButton} onClick={() => setConfirmArchive(true)}>{t('documents.archive')}</button></>}</footer>}\n </article>}\n </section>\n </div>\n <p className={css.runtimeFootnote}>{t('documents.footnote')}</p>\n </div>\n )\n}\n\nfunction StatusPage(props: { status: StatusView | null; loading: boolean; onRefresh: () => void }): JSX.Element {\n const t = useT()\n const status = props.status\n const lifecycle = status?.lifecycle\n const current = lifecycle?.current\n const workers = lifecycle?.subagents\n const documents = status?.documents\n const reviewActivity = current?.reviewActivity\n const reviewThreshold = reviewActivity?.threshold ?? QODERWORK_REVIEW_POLICY.reviewThreshold\n const catalogKnown = status?.memoryBodies !== undefined\n const memoryBodies = useMemo(() => status?.memoryBodies ?? [], [status])\n const activeBodies = memoryBodies.filter(body => body.active).length\n const phase = current?.lastPhase === undefined || current.lastPhase === 'idle' ? t('status.phaseIdle') : current.lastPhase === 'supervised' ? t('status.phaseSupervised') : current.lastPhase === 'error' ? t('status.phaseError') : current.lastPhase === 'prime' ? t('status.prime') : current.lastPhase === 'recall' ? t('status.recallWorker') : current.lastPhase === 'review' ? t('status.phaseReview') : t('status.writeWorker')\n const reviewState = current?.reviewRunning === true\n ? t('status.reviewRunning')\n : current?.idleReviewPending === true\n ? t('status.reviewPending')\n : reviewActivity?.eligible === true\n ? t('status.reviewQualified')\n : t('status.reviewAccumulating')\n const lastReview = current?.lastReviewAt === undefined ? t('status.noReview') : t('status.reviewAt', { time: new Date(current.lastReviewAt).toLocaleTimeString(), action: current.lastReviewAction ?? '—', score: current.lastReviewScore ?? '—' })\n const storage = status?.storage\n const selectedScopeKind = storage?.activeKind ?? 'global'\n const selectedScope = storage?.scopes.find(scope => scope.kind === selectedScopeKind)\n const runtimeArea = selectedScope?.areas.find(area => area.kind === 'runtime')\n const runtimeUserEntries = runtimeArea === undefined ? 0 : Number(runtimeArea.details.userEntries ?? 0)\n const runtimeMemoryEntries = runtimeArea === undefined ? 0 : Number(runtimeArea.details.memoryEntries ?? 0)\n return (\n <div className={css.page}>\n <PageHeader title={t('status.title')} description={t('status.description')} meta={status === null && props.loading ? t('common.loading') : status?.healthy === true && lifecycle?.sessionAvailable === true ? t('status.nominal') : t('status.checkRequired')} action={<button type=\"button\" className={css.secondaryButton} disabled={props.loading} onClick={props.onRefresh}>{props.loading ? t('status.rechecking') : t('status.recheck')}</button>} />\n\n <section className={css.healthStrip} aria-label={t('status.aria')}>\n <article><span className={`${css.healthIndicator} ${status === null ? css.healthMuted : status.healthy ? css.healthGood : css.healthBad}`} /><div><small>{t('status.engine')}</small><strong>{status === null ? t('status.engineChecking') : status.healthy ? t('status.engineConnected') : t('status.engineUnavailable')}</strong><p>{status?.version === undefined ? t('status.versionWaiting') : `CLI ${status.version}`}</p></div></article>\n <article><span className={`${css.healthIndicator} ${runtimeArea === undefined ? css.healthMuted : runtimeArea.status === 'invalid' ? css.healthBad : css.healthGood}`} /><div><small>{t('status.runtime')}</small><strong>{runtimeArea === undefined ? t('status.runtimeWaiting') : t('status.runtimeRatio', { user: runtimeUserEntries, memory: runtimeMemoryEntries })}</strong><p>{runtimeArea === undefined ? t('status.runtimeWaitingDetail') : t('status.runtimeBytes', { bytes: humanBytes(runtimeArea.bytes) })}</p></div></article>\n <article><span className={`${css.healthIndicator} ${activeBodies > 0 ? css.healthGood : css.healthMuted}`} /><div><small>{t('status.spaces')}</small><strong>{catalogKnown ? t('status.activeRatio', { active: activeBodies, total: memoryBodies.length }) : t('status.directoryUnsynced')}</strong><p>{t('status.activeMemories', { count: status?.stats?.totalInsights ?? 0 })}</p></div></article>\n <article><span className={`${css.healthIndicator} ${documents === undefined ? css.healthMuted : css.healthGood}`} /><div><small>{t('status.documents')}</small><strong>{documents === undefined ? t('status.documentsWaiting') : t('status.documentRatio', { active: documents.activeCount, archived: documents.archivedCount })}</strong><p>{documents === undefined ? t('status.documentsSession') : t('status.documentUsage', { used: humanBytes(documents.activeBytes), limit: humanBytes(documents.limitBytes) })}</p></div></article>\n <article><span className={`${css.healthIndicator} ${lifecycle === undefined ? css.healthMuted : lifecycle.sessionAvailable ? css.healthGood : css.healthBad}`} /><div><small>{t('status.router')}</small><strong>{lifecycle === undefined ? t('status.routerChecking') : lifecycle.sessionAvailable ? t('status.routerReady') : t('status.sessionMissing')}</strong><p>{workers === undefined ? t('status.orchestrationWaiting') : t('status.workerSummary', { recalls: workers.recalls, reviews: workers.reviews ?? 0, writes: workers.writes, failures: workers.failures ?? 0 })}</p></div></article>\n </section>\n\n <MemorySystemFlow status={status} reviewState={reviewState} />\n\n <StorageDomains catalog={storage} selected={selectedScope} selectedKind={selectedScopeKind} />\n\n <section className={css.lifecyclePanel}>\n <div className={css.statusSectionHeader}><div><h3>{t('status.lifecycle')}</h3><p>{t('status.lifecycleText')}</p></div><span className={css.phaseBadge}>{phase}</span></div>\n <div className={css.lifecycleFlow}>\n <article><span>01</span><div><strong>{t('status.prime')}</strong><p>{t('status.primeText')}</p></div><code>{lifecycle?.counters.primes ?? 0}</code></article>\n <article data-disabled={lifecycle?.recallMode === 'off' || undefined}><span>02</span><div><strong>{t('status.recallWorker')}</strong><p>{lifecycle?.recallMode === 'guided' ? t('status.recallText') : t('status.recallOff')}</p></div><code>{workers?.recalls ?? 0}</code></article>\n <article data-disabled={lifecycle?.writebackMode === 'off' || undefined}><span>03</span><div><strong>{t('status.writeWorker')}</strong><p>{lifecycle?.writebackMode === 'guided' ? t('status.writeText', { threshold: reviewThreshold, seconds: Math.round((lifecycle.idleReviewMs ?? 0) / 1000) }) : t('status.writeOff')}</p></div><code>{workers?.reviews ?? 0}</code></article>\n </div>\n <div className={css.lifecycleFoot}><span>{t('status.activitySignals')} <strong>{t('status.activitySignalValues', { chars: reviewActivity?.totalUserTextLength ?? 0, turns: reviewActivity?.turnCount ?? 0, tools: reviewActivity?.toolCallCount ?? 0, unique: reviewActivity?.uniqueToolCount ?? 0 })}</strong></span><span>{t('status.lastReview')} <strong>{lastReview}</strong></span><span>{t('status.workerFailures')} <strong>{workers?.failures ?? 0}</strong></span></div>\n {current?.lastError !== undefined && <div className={css.inlineError} role=\"alert\">Lifecycle:{current.lastError}</div>}\n </section>\n\n </div>\n )\n}\n\nfunction storageScopeLabel(t: MnemonTranslate, kind: StorageScopeKind): string {\n return t(kind === 'global' ? 'status.storageGlobal' : kind === 'workspace' ? 'status.storageWorkspace' : 'status.storageCustom')\n}\n\nfunction storageAreaLabel(t: MnemonTranslate, kind: StorageAreaInventory['kind']): string {\n return t(kind === 'runtime' ? 'status.storageRuntime' : kind === 'memory-bodies' ? 'status.storageBodies' : kind === 'documents' ? 'status.storageDocuments' : 'status.storageState')\n}\n\nfunction storageAreaDetails(t: MnemonTranslate, area: StorageAreaInventory): string {\n if (area.kind === 'runtime') return t('status.storageRuntimeDetail', { user: area.details.userEntries ?? 0, memory: area.details.memoryEntries ?? 0 })\n if (area.kind === 'memory-bodies') return t('status.storageBodiesDetail', { active: area.details.activeBodies ?? 0, databases: area.details.databases ?? 0 })\n if (area.kind === 'documents') return t('status.storageDocumentsDetail', { active: area.details.activeDocuments ?? 0, archived: area.details.archivedDocuments ?? 0 })\n return area.details.reviewLedger === true ? t('status.storageStateReady') : t('status.storageStateVolatile')\n}\n\nfunction StorageDomains(props: {\n catalog: StatusView['storage']\n selected: StorageScopeInventory | undefined\n selectedKind: StorageScopeKind\n}): JSX.Element {\n const t = useT()\n const areaStatus = (status: StorageAreaInventory['status']) => t(status === 'ready' ? 'status.storageReady' : status === 'empty' ? 'status.storageEmpty' : status === 'missing' ? 'status.storageMissing' : 'status.storageInvalid')\n return (\n <section className={css.storageDomains} aria-label={t('status.storageDomains')}>\n <div className={css.statusSectionHeader}>\n <div><h3>{t('status.storageDomains')}</h3><p>{t('status.storageDomainsText')}</p></div>\n <span className={css.phaseBadge}>{storageScopeLabel(t, props.selectedKind)}</span>\n </div>\n {props.catalog === undefined ? <div className={css.storageUnavailable}>{t('status.storageWaiting')}</div> : props.selected?.root === undefined ? <div className={css.storageUnavailable}><strong>{storageScopeLabel(t, props.selectedKind)}</strong><p>{props.selectedKind === 'custom' ? t('status.storageCustomUnset') : t('status.storageWorkspaceUnavailable')}</p></div> : <>\n <div className={css.storageRoot}>\n <div><span>{storageScopeLabel(t, props.selectedKind)} · {t('status.storageActiveRoot')}</span><code>{props.selected.root}</code></div>\n <div><strong>{humanBytes(props.selected.totalBytes)}</strong><small>{props.selected.available ? t('status.storageAvailable') : t('status.storageNotCreated')}</small></div>\n </div>\n <div className={css.storageAreaGrid}>\n {props.selected.areas.map(area => <article key={area.kind} data-status={area.status}>\n <header><div><span /> <strong>{storageAreaLabel(t, area.kind)}</strong></div><em>{areaStatus(area.status)}</em></header>\n <div className={css.storageAreaMetric}><strong>{area.itemCount}</strong><span>{t('status.storageItems')}</span><code>{humanBytes(area.bytes)}</code></div>\n <p>{storageAreaDetails(t, area)}</p>\n <code className={css.storagePath}>{area.path}</code>\n {area.issue !== undefined && <small>{area.issue}</small>}\n </article>)}\n </div>\n </>}\n {props.catalog !== undefined && <p className={css.storageFootnote}>{t('status.storageFootnote', { root: props.catalog.activeRoot })}</p>}\n </section>\n )\n}\n\nfunction MemorySystemFlow(props: { status: StatusView | null; reviewState: string }): JSX.Element {\n const t = useT()\n const status = props.status\n const activeScope = status?.storage?.scopes.find(scope => scope.active)\n const runtime = activeScope?.areas.find(area => area.kind === 'runtime')\n const documentArea = activeScope?.areas.find(area => area.kind === 'documents')\n const documents = status?.documents\n const bodies = status?.memoryBodies ?? []\n const activeBodies = bodies.filter(body => body.active).length\n const score = status?.lifecycle?.current?.reviewActivity?.score ?? 0\n const threshold = status?.lifecycle?.current?.reviewActivity?.threshold ?? QODERWORK_REVIEW_POLICY.reviewThreshold\n const idleSeconds = Math.round((status?.lifecycle?.idleReviewMs ?? 30_000) / 1000)\n const hostReady = status?.lifecycle?.sessionAvailable === true\n const flowActive = status?.healthy === true && hostReady\n const areaState = (area: StorageAreaInventory | undefined): 'ready' | 'idle' | 'error' => area?.status === 'invalid' ? 'error' : area?.status === 'ready' ? 'ready' : 'idle'\n const current = status?.lifecycle?.current\n const workers = status?.lifecycle?.subagents\n const lastWorkerOperation = workers?.lastOperation\n const spawnRecent = lastWorkerOperation !== undefined && lastWorkerOperation !== 'review'\n const archiveRecent = lastWorkerOperation === 'document-archive' || lastWorkerOperation === 'migration'\n const reviewState = current?.reviewRunning === true ? 'running' : current?.idleReviewPending === true ? 'pending' : 'idle'\n const rootRunning = current?.status === 'running'\n const semanticActive = rootRunning && (current?.lastPhase === 'recall' || current?.lastPhase === 'supervised')\n const runtimeCount = runtime?.itemCount ?? 0\n const insights = status?.stats?.totalInsights ?? 0\n const flowNode = (title: string, meta: string, state: 'ready' | 'idle' | 'error' = 'idle', kind: 'host' | 'worker' | 'store' | 'task' = 'host', emphasis?: 'active' | 'recent' | 'pending') => (\n <article className={css.flowArchitectureNode} data-state={state} data-kind={kind} data-emphasis={emphasis}>\n <span className={css.flowArchitectureSignal} aria-hidden=\"true\" />\n <div><strong>{title}</strong><small>{meta}</small></div>\n </article>\n )\n const connector = (label: string, kind: 'host' | 'worker' = 'host', active = false) => <div className={css.flowConnector} data-kind={kind} data-active={active || undefined}><span>{label}</span><i aria-hidden=\"true\" /></div>\n return (\n <section className={css.memoryFlow} aria-label={t('status.flowTitle')}>\n <div className={css.statusSectionHeader}><div><h3>{t('status.flowTitle')}</h3><p>{t('status.flowDescription')}</p></div><span className={`${css.runtimeBadge} ${status === null ? css.runtimePending : flowActive ? css.runtimeOnline : css.runtimeOffline}`}>{status === null ? t('common.loading') : flowActive ? t('status.flowLive') : t('status.flowDegraded')}</span></div>\n <div className={css.memoryFlowCanvas}>\n <div className={css.flowArchitecture} role=\"img\" aria-label={`${t('status.flowTitle')}:${t('status.flowDescription')}`}>\n <section className={css.flowLane} data-lane=\"context\">\n <header><span>01</span><div><strong>{t('status.flowLaneContext')}</strong><small>{t('status.flowLaneContextDetail')}</small></div></header>\n <div className={css.flowTrack}>\n {flowNode(t('status.storageRuntime'), t('status.flowRuntimeMeta', { count: runtimeCount }), areaState(runtime), 'store')}\n {connector(t('status.flowPromptAssembly'), 'host')}\n {flowNode(t('status.flowSupervisor'), t('status.flowRootMeta'), hostReady ? 'ready' : 'idle', 'host', rootRunning ? 'active' : undefined)}\n {connector('↔', 'host', rootRunning)}\n {flowNode(t('status.flowConversation'), t('status.flowTurns'), hostReady ? 'ready' : 'idle', 'task')}\n </div>\n <div className={`${css.flowTrack} ${css.flowSecondaryTrack}`}>\n {flowNode(t('status.flowSupervisor'), t('status.flowRootMeta'), hostReady ? 'ready' : 'idle', 'host')}\n {connector(t('status.flowOnDemand'), 'host')}\n {flowNode(t('status.flowDocumentSearch'), t('status.flowOnDemand'), areaState(documentArea), 'host')}\n {connector('→', 'host')}\n {flowNode(t('status.storageDocuments'), t('status.flowDocuments', { active: documents?.activeCount ?? 0, archived: documents?.archivedCount ?? 0 }), areaState(documentArea), 'store')}\n {connector('↩', 'host')}\n {flowNode(t('status.flowContext'), t('status.flowEvidenceMeta'), hostReady ? 'ready' : 'idle', 'task')}\n </div>\n </section>\n\n <section className={css.flowLane} data-lane=\"semantic\">\n <header><span>02</span><div><strong>{t('status.flowLaneSemantic')}</strong><small>{t('status.flowLaneSemanticDetail')}</small></div></header>\n <div className={css.flowTrack}>\n {flowNode(t('status.flowSupervisor'), t('status.flowSemanticRequest'), hostReady ? 'ready' : 'idle', 'task')}\n {connector('→', 'worker', semanticActive)}\n {flowNode(t('status.flowSpawnWorker'), `${t('status.flowSpawnMeta')}${spawnRecent ? ` · ${t('status.flowRecent')}` : ''}`, hostReady ? 'ready' : 'idle', 'worker', semanticActive ? 'active' : spawnRecent ? 'recent' : undefined)}\n {connector('→', 'worker', semanticActive)}\n {flowNode(t('status.flowHostBridge'), t('status.flowHostBridgeMeta'), status?.healthy === false ? 'error' : status?.healthy === true ? 'ready' : 'idle', 'host')}\n {connector('↔', 'host', semanticActive)}\n {flowNode(t('term.spaces'), t('status.flowSpacesMeta', { active: activeBodies, total: bodies.length, insights }), status?.healthy === false ? 'error' : activeBodies > 0 ? 'ready' : 'idle', 'store')}\n {connector('↩', 'host', semanticActive)}\n {flowNode(t('status.flowContext'), t('status.flowEvidenceMeta'), hostReady ? 'ready' : 'idle', 'task')}\n </div>\n </section>\n\n <section className={css.flowLane} data-lane=\"maintenance\">\n <header><span>03</span><div><strong>{t('status.flowLaneMaintenance')}</strong><small>{t('status.flowLaneMaintenanceDetail')}</small></div></header>\n <div className={`${css.flowTrack} ${css.flowMaintenanceTrack}`}>\n {flowNode(t('status.flowDeterministicWrites'), t('status.flowDeterministicWritesMeta'), hostReady ? 'ready' : 'idle', 'task')}\n {connector('→', 'host')}\n {flowNode(t('status.flowControlPlane'), t('status.flowControlPlaneMeta'), areaState(runtime), 'host')}\n {connector('→', 'host')}\n {flowNode(t('status.storageRuntime'), t('status.storageDocuments'), areaState(documentArea), 'store')}\n </div>\n <div className={`${css.flowTrack} ${css.flowReviewTrack}`}>\n {flowNode(t('status.flowReviewGate'), t('status.flowReviewGateMeta', { score, threshold, seconds: idleSeconds }), current?.reviewActivity?.eligible === true ? 'ready' : 'idle', 'task', reviewState === 'pending' ? 'pending' : undefined)}\n {connector('→', 'worker', reviewState === 'running')}\n {flowNode(t('status.flowForkReview'), t('status.flowForkReviewMeta', { state: props.reviewState }), current?.lastError === undefined ? hostReady ? 'ready' : 'idle' : 'error', 'worker', reviewState === 'running' ? 'active' : reviewState === 'pending' ? 'pending' : undefined)}\n {connector('→', 'host', reviewState === 'running')}\n {flowNode(t('status.flowReviewTargets'), t('status.flowReviewTargetsMeta'), areaState(documentArea), 'host')}\n {connector('↩', 'host', reviewState === 'running')}\n {flowNode(t('status.flowContext'), t('status.flowEvidenceMeta'), hostReady ? 'ready' : 'idle', 'task')}\n </div>\n <div className={`${css.flowTrack} ${css.flowArchiveTrack}`}>\n {flowNode(t('status.storageDocuments'), t('status.flowDocuments', { active: documents?.activeCount ?? 0, archived: documents?.archivedCount ?? 0 }), areaState(documentArea), 'store')}\n {connector('→', 'worker')}\n {flowNode(t('status.flowColdArchive'), `${t('status.flowColdArchiveMeta')}${archiveRecent ? ` · ${t('status.flowRecent')}` : ''}`, hostReady ? 'ready' : 'idle', 'worker', archiveRecent ? 'recent' : undefined)}\n {connector('→', 'worker')}\n {flowNode(t('status.flowHostBridge'), t('status.flowHostBridgeMeta'), status?.healthy === false ? 'error' : status?.healthy === true ? 'ready' : 'idle', 'host')}\n {connector('→', 'host')}\n {flowNode(t('status.flowIndexFirst'), t('term.spaces'), status?.healthy === false ? 'error' : activeBodies > 0 ? 'ready' : 'idle', 'store')}\n {connector('→', 'host')}\n {flowNode(t('status.flowRevisionMove'), t('status.flowRevisionMoveMeta', { archived: documents?.archivedCount ?? 0 }), areaState(documentArea), 'store')}\n </div>\n </section>\n </div>\n </div>\n <div className={css.flowLegend}><span><i />{t('status.flowReadWrite')}</span><span><i />{t('status.flowArchive')}</span><span><b />{t('status.flowLegendRecent')}</span><span>{t('status.flowCurrentScope', { scope: storageScopeLabel(t, status?.storage?.activeKind ?? 'global') })}</span></div>\n </section>\n )\n}\n\nexport function MnemonView(props: MnemonViewProps): JSX.Element {\n return <I18nContext.Provider value={props.t ?? translateZh}><MnemonWorkspace {...props} /></I18nContext.Provider>\n}\n\nfunction MnemonWorkspace({ connection, sessionId }: MnemonViewProps): JSX.Element {\n const t = useT()\n const client = useMemo(() => new MnemonClient(connection, sessionId), [connection, sessionId])\n const [page, setPage] = useState<Page>('status')\n const canvasRef = useRef<HTMLElement | null>(null)\n\n /** Pages share one scroll container; drop any carried-over offset so each tab opens at its top. */\n const resetViewportScroll = useCallback(() => {\n const canvas = canvasRef.current\n if (canvas !== null) canvas.scrollTop = 0\n let node: HTMLElement | null = canvas?.parentElement ?? null\n while (node !== null && node !== document.body && node !== document.documentElement) {\n if (node.scrollTop > 0) node.scrollTop = 0\n node = node.parentElement\n }\n }, [])\n\n useEffect(() => { resetViewportScroll() }, [page, resetViewportScroll])\n useEffect(() => {\n // DSH's resident scrollport may restore a stale offset when this view remounts; clear it after layout.\n const frame = window.requestAnimationFrame(() => resetViewportScroll())\n return () => window.cancelAnimationFrame(frame)\n }, [resetViewportScroll])\n const [status, setStatus] = useState<StatusView | null>(null)\n const [statusLoading, setStatusLoading] = useState(true)\n const [statusError, setStatusError] = useState<string | null>(null)\n const [revision, setRevision] = useState(0)\n const [searchSeed, setSearchSeed] = useState('')\n const [rememberSeed, setRememberSeed] = useState('')\n\n const loadStatus = useCallback(async () => {\n setStatusLoading(true); setStatusError(null)\n try { setStatus(await client.status()) } catch (reason) { setStatusError(message(reason)) } finally { setStatusLoading(false) }\n }, [client])\n useEffect(() => { void loadStatus() }, [loadStatus])\n\n const mutate = useCallback(() => { setRevision(value => value + 1); void loadStatus() }, [loadStatus])\n const forget = useCallback(async (insight: Insight) => { await client.forget(insight.id, insight.memoryBodyId); mutate() }, [client, mutate])\n const explore = useCallback((query: string) => { setSearchSeed(query); setPage('explore') }, [])\n const clone = useCallback((insight: Insight) => { setRememberSeed(insight.content); setPage('remember') }, [])\n const refreshAll = () => { setRevision(value => value + 1); void loadStatus() }\n const writeEnabled = status?.writeEnabled === true\n const stats = status?.stats\n const catalogKnown = status?.memoryBodies !== undefined\n const memoryBodies = useMemo(() => status?.memoryBodies ?? [], [status])\n const activeBodies = memoryBodies.filter(body => body.active).length\n\n return (\n <main className={css.shell}>\n <header className={css.masthead}>\n <div className={css.brand}><MnemonLogo className={css.brandLogo} /><h1>Mnemon</h1></div>\n <section className={css.telemetry} aria-label={t('telemetry.aria')}><div className={css.telemetryMetric}><span>{t('telemetry.memories')}</span><strong>{stats?.totalInsights ?? '—'}</strong></div><div className={css.telemetryMetric}><span>{t('telemetry.graph')}</span><strong>{stats?.edgeCount ?? '—'}</strong></div><div className={css.telemetryMetric}><span>{t('telemetry.entities')}</span><strong>{stats?.topEntities.length ?? '—'}</strong></div><div className={css.telemetryMetric}><span>{t('telemetry.spaces')}</span><strong>{status === null || !catalogKnown ? '—' : activeBodies}</strong></div></section>\n <div className={css.statusCluster}><span className={`${css.statusDot} ${statusLoading && status === null ? css.checking : status?.healthy === true ? css.online : css.offline}`} /><span>{statusLoading ? t('header.checking') : status?.healthy === true ? catalogKnown ? t('header.connected', { count: activeBodies }) : t('header.directoryPending') : t('header.unavailable')}</span><button type=\"button\" className={css.iconButton} disabled={statusLoading} onClick={refreshAll} aria-label={t('common.refresh')}>↻</button></div>\n </header>\n {(statusError !== null || status?.healthy === false) && <div className={css.alert} role=\"alert\"><strong>{t('header.notReady')}</strong><span>{statusError ?? status?.error}</span></div>}\n <div className={css.workspace}>\n <div className={css.topNavigation}><nav className={css.nav} aria-label={t('nav.aria')}>{PAGE_NAV.map((group, groupIndex) => <Fragment key={group.aria}><div className={css.navGroup} role=\"group\" aria-label={t(group.aria)}>{group.entries.map(item => <button key={item.id} type=\"button\" aria-current={page === item.id ? 'page' : undefined} onClick={() => setPage(item.id)}><span className={css.navGlyph} aria-hidden=\"true\">{item.glyph}</span><span><strong>{t(item.label)}</strong><small>{t(item.detail)}</small></span></button>)}</div>{groupIndex < PAGE_NAV.length - 1 && <span className={css.navGroupDivider} aria-hidden=\"true\" />}</Fragment>)}</nav><div className={css.spaceSummary}><span>{t('sidebar.activeSpaces')}</span><code>{catalogKnown ? `${activeBodies} / ${memoryBodies.length}` : '— / —'}</code><small>{writeEnabled ? t('common.agentSupervised') : t('common.readOnly')}</small></div></div>\n <section className={css.canvas} ref={canvasRef} data-testid=\"mnemon-canvas\">\n {page === 'overview' && <OverviewPage client={client} revision={revision} writeEnabled={writeEnabled} fallbackBodies={memoryBodies} fallbackDirectory={status?.memoryBodyDirectory} catalogKnown={catalogKnown} onMutate={mutate} onExplore={explore} />}\n {page === 'runtime' && <RuntimePage client={client} revision={revision} writeEnabled={writeEnabled} onMutate={mutate} />}\n {page === 'documents' && <DocumentsPage client={client} revision={revision} writeEnabled={writeEnabled} {...(sessionId === undefined ? {} : { sessionId })} onMutate={mutate} />}\n {page === 'explore' && <ExplorePage client={client} status={status} seed={searchSeed} writeEnabled={writeEnabled} onForget={forget} />}\n {page === 'entities' && <EntitiesPage client={client} revision={revision} writeEnabled={writeEnabled} onForget={forget} onExplore={explore} />}\n {page === 'remember' && <RememberPage client={client} sessionId={sessionId} memoryBodies={status?.memoryBodies ?? []} writeEnabled={writeEnabled} seed={rememberSeed} onMutate={mutate} />}\n {page === 'list' && <ListPage client={client} revision={revision} writeEnabled={writeEnabled} onForget={forget} onClone={clone} onExplore={explore} />}\n {page === 'status' && <StatusPage status={status} loading={statusLoading} onRefresh={() => void loadStatus()} />}\n </section>\n </div>\n </main>\n )\n}\n","import type { HostConnectionHandle, HostRpcHandler, HostSettingsService, RpcResult } from './contracts.ts'\n\nexport const MNEMON_SETTINGS_CHANNEL = '/dsh-mnemon-settings'\nexport const MNEMON_SETTINGS_NAMESPACE = 'mnemon'\n\nfunction success(value: unknown): RpcResult<unknown> {\n return { ok: true, value }\n}\n\nfunction failure(error: unknown): RpcResult<unknown> {\n return {\n ok: false,\n error: {\n code: 'settings-rejected',\n message: error instanceof Error ? error.message : String(error),\n details: { ns: MNEMON_SETTINGS_NAMESPACE },\n },\n }\n}\n\nfunction badRequest(message: string): RpcResult<unknown> {\n return { ok: false, error: { code: 'bad-request', message, details: { issues: [] } } }\n}\n\nfunction descriptor(settings: HostSettingsService) {\n const view = settings.describe({ redactSecrets: true }).find(candidate => candidate.ns === MNEMON_SETTINGS_NAMESPACE)\n if (view === undefined) throw new Error('Mnemon settings namespace is unavailable')\n return {\n status: 'ready' as const,\n value: view.value,\n base: view.base,\n user: view.user,\n revision: view.revision,\n writable: settings.writable,\n mode: 'host' as const,\n applies: view.applies,\n }\n}\n\nfunction object(value: unknown): Record<string, unknown> {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) throw new Error('payload must be an object')\n return value as Record<string, unknown>\n}\n\nexport function createSettingsHandler(settings: HostSettingsService): HostRpcHandler {\n return async (endpoint, rawPayload) => {\n try {\n if (endpoint === 'get') return success(descriptor(settings))\n if (endpoint !== 'mutate') return badRequest(`unknown settings endpoint: ${endpoint}`)\n if (!settings.writable) throw new Error('DSH settings are read-only')\n const payload = object(rawPayload)\n if (!Array.isArray(payload.ops) || payload.ops.length === 0 || payload.ops.length > 16) throw new Error('ops must contain 1..16 settings edits')\n const ops = payload.ops.map((raw) => {\n const op = object(raw)\n const field = Array.isArray(op.path) && op.path.length === 1 ? String(op.path[0]) : ''\n if (!['storageScope', 'cliPath', 'dataDir', 'store', 'timeoutMs', 'defaultRecallLimit', 'routingGuidance', 'lifecycleEnabled', 'recallMode', 'writebackMode', 'idleReviewMs', 'tabEnabled', 'writeEnabled'].includes(field)) {\n throw new Error(`unsupported Mnemon settings field: ${field}`)\n }\n if (op.op === 'unset') return { op: 'unset' as const, path: [field] }\n if (op.op !== 'set') throw new Error(`unsupported settings operation: ${String(op.op)}`)\n return { op: 'set' as const, path: [field], value: op.value }\n })\n const revision = payload.expectedRevision === undefined ? undefined : Number(payload.expectedRevision)\n await settings.mutate(MNEMON_SETTINGS_NAMESPACE, ops, revision)\n return success(descriptor(settings))\n } catch (error) {\n return failure(error)\n }\n }\n}\n\nexport function registerSettingsRpc(connection: HostConnectionHandle, settings: HostSettingsService): void {\n connection.rpc.handle(MNEMON_SETTINGS_CHANNEL, createSettingsHandler(settings), { authority: 'loopback' })\n}\n","import type { ClientConnectionHandle, ClientSettingsScope, ClientSettingsSnapshot } from '../contracts.ts'\nimport type { Config } from '../config.ts'\nimport { MNEMON_SETTINGS_CHANNEL } from '../settings.ts'\n\ntype Operation = { op: 'set'; path: string[]; value: unknown } | { op: 'unset'; path: string[] }\n\nexport class MnemonSettingsScope implements ClientSettingsScope<Config> {\n private snapshot: ClientSettingsSnapshot<Config> = { status: 'loading', writable: false, mode: 'host' }\n private readonly listeners = new Set<() => void>()\n private tail = Promise.resolve()\n\n constructor(private readonly connection: ClientConnectionHandle) {\n void this.load()\n }\n\n getSnapshot = (): ClientSettingsSnapshot<Config> => this.snapshot\n\n subscribe = (listener: () => void): (() => void) => {\n this.listeners.add(listener)\n return () => this.listeners.delete(listener)\n }\n\n set(field: string, value: unknown): Promise<void> {\n return this.write({ op: 'set', path: [field], value })\n }\n\n unset(field: string): Promise<void> {\n return this.write({ op: 'unset', path: [field] })\n }\n\n private async load(): Promise<void> {\n const response = await this.connection.rpc.call(MNEMON_SETTINGS_CHANNEL, 'get', {})\n if (!response.ok) {\n this.publish({ status: 'unavailable', writable: false, mode: 'host' })\n return\n }\n this.publish(response.value as ClientSettingsSnapshot<Config>)\n }\n\n private write(op: Operation): Promise<void> {\n const task = this.tail.then(async () => {\n const response = await this.connection.rpc.call(MNEMON_SETTINGS_CHANNEL, 'mutate', {\n ops: [op],\n ...(this.snapshot.revision === undefined ? {} : { expectedRevision: this.snapshot.revision }),\n })\n if (!response.ok) throw new Error(response.error.message)\n this.publish(response.value as ClientSettingsSnapshot<Config>)\n })\n this.tail = task.catch(() => {})\n return task\n }\n\n private publish(snapshot: ClientSettingsSnapshot<Config>): void {\n this.snapshot = snapshot\n for (const listener of this.listeners) listener()\n }\n}\n","import type { ClientConnectionHandle, ClientContextShape } from '../contracts.ts'\nimport { MnemonSettingsCard } from './MnemonSettingsCard.tsx'\nimport { MnemonView } from './MnemonView.tsx'\nimport { en, zh, type MnemonKey } from './locales.ts'\nimport { MnemonSettingsScope } from './settings.ts'\n\nexport const inject = ['slots', 'connection', 'locale']\n\n/** Add one standard conversation.view entry; unloading the plugin removes it with the slot effect. */\nexport function apply(rawContext: unknown): void {\n const ctx = rawContext as unknown as ClientContextShape\n const settings = new MnemonSettingsScope(ctx.connection)\n const namespace = 'mnemon'\n ctx.effect(() => ctx.locale.register(namespace, { zh, en }), 'dsh-mnemon: locale dictionaries')\n const translate = ctx.locale.bind(namespace)\n ctx.slots.inject('conversation.view', () => ctx.slots.register({\n name: 'conversation.view',\n id: 'mnemon',\n order: 30,\n label: () => translate('tab.label'),\n locale: namespace,\n inject: (): { connection: ClientConnectionHandle; settingsScope: MnemonSettingsScope; t: (key: MnemonKey, params?: Record<string, unknown>) => string } => ({\n connection: ctx.connection,\n settingsScope: settings,\n t: translate as (key: MnemonKey, params?: Record<string, unknown>) => string,\n }),\n }, MnemonView as never))\n ctx.slots.inject('settings.plugin.item', () => ctx.slots.register({\n name: 'settings.plugin.item',\n id: 'mnemon',\n order: 30,\n locale: namespace,\n inject: (): { scope: MnemonSettingsScope; t: (key: MnemonKey, params?: Record<string, unknown>) => string } => ({\n scope: settings,\n t: translate as (key: MnemonKey, params?: Record<string, unknown>) => string,\n }),\n }, MnemonSettingsCard as never))\n}\n"],"x_google_ignoreList":[2],"mappings":"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"}
1
+ {"version":3,"file":"client.js","names":["useMemo","useRef","useState","css","useMemo","useSyncExternalStore","useState","css","m","r","createContext","useContext","css","useCallback","Markdown","useState","useMemo","useRef","Fragment","memo","useState","useMemo","css","memo","useState","css","memo","useState","useRef","css","css","useSyncExternalStore","useState","useMemo","css","createRoot"],"sources":["../src/settings.ts","../src/client/locales.ts","../src/rpc.ts","../src/client/api.ts","../src/client/MnemonPackSection.tsx","../src/client/MnemonSettingsCard.tsx","../src/client/anchor.ts","../node_modules/.pnpm/markdown-to-jsx@7.7.17_react@18.3.1/node_modules/markdown-to-jsx/dist/index.module.js","../src/review-activity.ts","../src/service.ts","../src/client/MnemonLogo.tsx","../src/client/MnemonView.tsx","../src/client/MnemonToolviews.tsx","../src/client/MnemonTurnTail.tsx","../src/client/MnemonSaveAction.tsx","../src/client/settings.ts","../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/client.js","../src/client/sidebar-entry.ts","../src/client/workspace-controller.ts","../src/client/workspace-mount.tsx","../src/client/index.ts"],"sourcesContent":["import type { HostConnectionHandle, HostRpcHandler, HostSettingsService, RpcResult } from './contracts.ts'\n\nexport const MNEMON_SETTINGS_CHANNEL = '/dsh-mnemon-settings'\nexport const MNEMON_SETTINGS_NAMESPACE = 'mnemon'\nexport const MNEMON_UI_SETTINGS_NAMESPACE = 'mnemon-ui'\n\nfunction success(value: unknown): RpcResult<unknown> {\n return { ok: true, value }\n}\n\nfunction failure(error: unknown, namespace: string): RpcResult<unknown> {\n return {\n ok: false,\n error: {\n code: 'settings-rejected',\n message: error instanceof Error ? error.message : String(error),\n details: { ns: namespace },\n },\n }\n}\n\nfunction badRequest(message: string): RpcResult<unknown> {\n return { ok: false, error: { code: 'bad-request', message, details: { issues: [] } } }\n}\n\nfunction descriptor(settings: HostSettingsService, namespace: string) {\n const view = settings.describe({ redactSecrets: true }).find(candidate => candidate.ns === namespace)\n if (view === undefined) throw new Error(`${namespace} settings namespace is unavailable`)\n return {\n status: 'ready' as const,\n value: view.value,\n base: view.base,\n user: view.user,\n revision: view.revision,\n writable: settings.writable,\n mode: 'host' as const,\n applies: view.applies,\n }\n}\n\nfunction object(value: unknown): Record<string, unknown> {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) throw new Error('payload must be an object')\n return value as Record<string, unknown>\n}\n\nconst MUTABLE_FIELDS = [\n 'storageScope', 'cliPath', 'dataDir', 'customPackId', 'customPacks', 'store', 'timeoutMs', 'defaultRecallLimit',\n 'routingGuidance', 'lifecycleEnabled', 'recallMode', 'writebackMode', 'idleReviewMs',\n 'displayMode', 'tabEnabled', 'writeEnabled',\n]\n\n/** Nested paths of the live in-conversation interaction toggles. */\nconst INTERACTION_PATHS: string[][] = [\n ['conversationInteraction', 'toolviews'],\n ['conversationInteraction', 'turnBar'],\n ['conversationInteraction', 'saveAction'],\n]\n\nconst UI_FIELDS = ['toolviews', 'turnBar', 'saveAction']\n\nfunction namespaceOf(payload: Record<string, unknown>): string {\n const namespace = payload.namespace === undefined ? MNEMON_SETTINGS_NAMESPACE : String(payload.namespace)\n if (namespace !== MNEMON_SETTINGS_NAMESPACE && namespace !== MNEMON_UI_SETTINGS_NAMESPACE) throw new Error(`unsupported Mnemon settings namespace: ${namespace}`)\n return namespace\n}\n\n/** Whether one mutation path targets a supported Mnemon settings field. */\nfunction mutablePath(namespace: string, path: string[]): boolean {\n if (namespace === MNEMON_UI_SETTINGS_NAMESPACE) return path.length === 1 && UI_FIELDS.includes(path[0]!)\n if (path.length === 1) return MUTABLE_FIELDS.includes(path[0]!)\n // Accepted only for legacy clients; the current UI writes `mnemon-ui`.\n return INTERACTION_PATHS.some(allowed => allowed.length === path.length && allowed.every((segment, index) => segment === path[index]))\n}\n\nexport function createSettingsHandler(settings: HostSettingsService): HostRpcHandler {\n return async (endpoint, rawPayload) => {\n let namespace = MNEMON_SETTINGS_NAMESPACE\n try {\n const payload = object(rawPayload)\n namespace = namespaceOf(payload)\n if (endpoint === 'get') return success(descriptor(settings, namespace))\n if (endpoint !== 'mutate') return badRequest(`unknown settings endpoint: ${endpoint}`)\n if (!settings.writable) throw new Error('DSH settings are read-only')\n if (!Array.isArray(payload.ops) || payload.ops.length === 0 || payload.ops.length > 16) throw new Error('ops must contain 1..16 settings edits')\n const ops = payload.ops.map((raw) => {\n const op = object(raw)\n const path = Array.isArray(op.path) && op.path.length > 0 ? op.path.map(segment => String(segment)) : []\n if (!mutablePath(namespace, path)) throw new Error(`unsupported ${namespace} settings field: ${path.join('.')}`)\n if (op.op === 'unset') return { op: 'unset' as const, path }\n if (op.op !== 'set') throw new Error(`unsupported settings operation: ${String(op.op)}`)\n return { op: 'set' as const, path, value: op.value }\n })\n const revision = payload.expectedRevision === undefined ? undefined : Number(payload.expectedRevision)\n await settings.mutate(namespace, ops, revision)\n return success(descriptor(settings, namespace))\n } catch (error) {\n return failure(error, namespace)\n }\n }\n}\n\nexport function registerSettingsRpc(connection: HostConnectionHandle, settings: HostSettingsService): void {\n connection.rpc.handle(MNEMON_SETTINGS_CHANNEL, createSettingsHandler(settings), { authority: 'loopback' })\n}\n","/** Mnemon workspace copy, synchronized with DSH's global locale service. */\nexport const zh = {\n 'tab.label': '记忆系统',\n 'term.space': '记忆体',\n 'term.spaces': '记忆体',\n 'category.decision': '决策',\n 'category.preference': '偏好',\n 'category.fact': '事实',\n 'category.insight': '洞察',\n 'category.context': '上下文',\n 'category.general': '通用',\n 'nav.aria': 'Mnemon 页面',\n 'nav.group.system': '系统',\n 'nav.group.storage': '三层记忆',\n 'nav.group.tools': '读写工具',\n 'nav.bodies': '记忆体',\n 'nav.bodies.detail': '记忆体目录与实时图谱',\n 'nav.runtime': '运行时',\n 'nav.runtime.detail': '热记忆与上下文',\n 'nav.documents': '档案',\n 'nav.documents.detail': '项目知识与归档',\n 'nav.search': '检索',\n 'nav.search.detail': '意图增强召回',\n 'nav.entities': '实体',\n 'nav.entities.detail': '关系与上下文',\n 'nav.remember': '沉淀',\n 'nav.remember.detail': 'LLM 监督写回',\n 'nav.content': '内容',\n 'nav.content.detail': '浏览与维护',\n 'nav.status': '状态',\n 'nav.status.detail': '运行与诊断',\n 'common.refresh': '刷新状态',\n 'common.loading': '载入中…',\n 'common.cancel': '取消',\n 'common.copyId': '复制 ID',\n 'common.readOnly': '只读模式',\n 'common.agentSupervised': '子 Agent 监督',\n 'common.active': '已激活',\n 'common.inactive': '未激活',\n 'common.category': '分类',\n 'common.importanceLabel': '重要性',\n 'common.importance': '重要性 {value}',\n 'common.hops': '{count} 跳',\n 'common.allCategories': '全部分类',\n 'common.memories': '{count} 条记忆',\n 'common.edges': '{count} 条连接',\n 'common.count': '{count} 个',\n 'header.checking': '检查中',\n 'header.connected': '已连接 · {count} 个已激活',\n 'header.directoryPending': '已连接 · 目录待同步',\n 'header.unavailable': '不可用',\n 'header.notReady': 'Mnemon 尚未就绪',\n 'workspace.viewing': '查看工作区',\n 'workspace.selectorAria': '选择要查看的记忆工作区',\n 'workspace.mismatchTitle': '查看目录与当前会话未对齐',\n 'workspace.mismatchDescription': '工作台操作面向当前查看目录;Agent、工具和生命周期仍使用当前会话目录。',\n 'workspace.selectedRoot': '查看:{root}',\n 'workspace.effectiveRoot': '生效:{root}',\n 'workspace.align': '对齐当前会话',\n 'telemetry.aria': '记忆统计',\n 'telemetry.title': '记忆统计',\n 'telemetry.memories': '激活记忆',\n 'telemetry.graph': '激活图谱',\n 'telemetry.entities': '激活实体',\n 'telemetry.spaces': '记忆体',\n 'sidebar.activeSpaces': '已激活记忆体',\n 'overview.title': '记忆体',\n 'overview.description': '管理全局记忆体的读取边界,并在一张实时四图快照中观察所有已激活记忆体。',\n 'overview.interval': '每 15 秒',\n 'overview.syncing': '同步中…',\n 'overview.syncNow': '立即同步',\n 'overview.directory': '记忆体目录',\n 'overview.directory.description': '开关只控制读取;写入可选择任意记忆体,写入未激活记忆体后会自动激活。',\n 'overview.directory.waiting': '等待目录',\n 'overview.directory.unsynced': '目录尚未同步',\n 'overview.directory.unsyncedBadge': '目录待同步',\n 'overview.storageHealthy': '存储正常',\n 'overview.storageUnhealthy': '存储异常',\n 'overview.toggleAria': '{name}读取开关',\n 'overview.toggling': '切换中',\n 'overview.noDescription': '尚未提供路由说明。',\n 'overview.unsyncedTitle': '记忆体目录尚未同步',\n 'overview.unsyncedShort': '当前 Web 客户端与 DSH Host 状态不一致;重启 Host 后会重新登记既有 Store。',\n 'overview.unsyncedLong': '当前 Host 仍在使用旧插件契约;重启 DSH 后会重新发现既有 Store,期间不会删除任何 .db。',\n 'overview.emptyTitle': '还没有记忆体',\n 'overview.emptyShort': '创建第一个记忆体并写入稳定上下文后,它会出现在这里。',\n 'overview.emptyLong': '先在上方创建一个记忆体;首次写入后,它会自动激活并出现在实时快照中。',\n 'overview.noActiveTitle': '没有激活的记忆体',\n 'overview.noActiveText': '开启至少一个记忆体的读取开关,即可在这里聚合它的实时图谱。',\n 'overview.noContentTitle': '已激活记忆体尚无内容',\n 'overview.noContentText': '向任意记忆体沉淀稳定上下文后,这里会聚合呈现节点与关系。',\n 'overview.create': '+ 创建空白记忆体',\n 'overview.createName': '新记忆体名称',\n 'overview.createNamePlaceholder': '名称',\n 'overview.createDescription': '新记忆体描述',\n 'overview.createDescriptionPlaceholder': '说明哪些内容属于它,以及何时应被召回',\n 'overview.creating': '创建中…',\n 'overview.createAction': '创建',\n 'overview.editBody': '编辑',\n 'overview.editBodyAria': '编辑{name}',\n 'overview.editName': '名称',\n 'overview.editDescription': '路由说明',\n 'overview.saveBody': '保存',\n 'overview.savingBody': '保存中…',\n 'overview.snapshot': '多记忆体实时快照',\n 'overview.waitingSnapshot': '等待首个快照',\n 'overview.updatedAt': '更新于 {time}',\n 'overview.edgeScope': '空间归属',\n 'overview.edgeTemporal': '时间',\n 'overview.edgeSemantic': '语义',\n 'overview.edgeCausal': '因果',\n 'overview.edgeEntity': '实体关联',\n 'overview.graphComposition': '{spaces} 个空间 · {memories} 条记忆 · {entities} 个实体',\n 'overview.graphCount': '展示 {visible} / {total} 个元素',\n 'overview.graphEdges': '{count} 条图谱连接',\n 'overview.inspector': '记忆详情',\n 'overview.inspectorSpace': '记忆体详情',\n 'overview.inspectorEntity': '实体详情',\n 'overview.selectNode': '选择一个图谱元素',\n 'overview.selectNodeText': '查看记忆体、实体或记忆的精确上下文。',\n 'overview.closeInspector': '关闭节点详情',\n 'overview.memoryId': '记忆 ID',\n 'overview.spaceId': '记忆体 ID',\n 'overview.containedMemories': '包含记忆',\n 'overview.entityMentions': '索引次数',\n 'overview.exploreNode': '围绕它检索',\n 'overview.previewAria': '查看全文',\n 'overview.previewTitle': '内容全文',\n 'overview.loading': '正在同步记忆体目录与多库图谱…',\n 'runtime.title': '运行时记忆',\n 'runtime.description': '管理每轮随上下文加载的紧凑热记忆。结构化数据由统一控制层维护,并自动投影为 USER.md 与 MEMORY.md。',\n 'runtime.total': '{count} 条热记忆',\n 'runtime.refresh': '刷新',\n 'runtime.hotContext': '每轮上下文',\n 'runtime.addTitle': '添加热记忆',\n 'runtime.addDescription': '稳定但仍需频繁使用的信息优先留在这里,长期归档由 Mnemon 记忆体承接。',\n 'runtime.content': '运行时记忆内容',\n 'runtime.placeholder': '输入一条简洁、独立、未来仍然有用的信息…',\n 'runtime.target': '分类',\n 'runtime.importance': '重要性',\n 'runtime.saving': '处理中…',\n 'runtime.addAction': '添加',\n 'runtime.target.user': '用户画像',\n 'runtime.target.user.description': '身份、角色、习惯、表达偏好与明确的协作要求;容量整理始终留在本地,不进入记忆体。',\n 'runtime.target.memory': '工作记忆',\n 'runtime.target.memory.description': '项目、环境、决策、约定、工具特性与可复用经验;容量达到上限时按主题归档到一个或多个记忆体。',\n 'runtime.importance.critical': '关键',\n 'runtime.importance.normal': '普通',\n 'runtime.importance.low': '低',\n 'runtime.empty': '这个分类还没有热记忆。',\n 'runtime.editContent': '编辑运行时记忆',\n 'runtime.editAction': '编辑',\n 'runtime.saveEdit': '保存修改',\n 'runtime.removeAction': '移除',\n 'runtime.removeConfirm': '确认移除这条热记忆?',\n 'runtime.result.add': '已添加到{target} · 当前 {count} 条',\n 'runtime.result.replace': '已更新{target} · 当前 {count} 条',\n 'runtime.result.remove': '已从{target}移除 · 当前 {count} 条',\n 'runtime.result.maintenance': '容量整理完成:已先归档到记忆体 {spaces},再更新{target} · 当前 {count} 条',\n 'runtime.result.localCompaction': '本地画像整理完成:未写入记忆体,已更新{target} · 当前 {count} 条',\n 'runtime.readOnly': '当前部署为只读模式;热记忆仍会进入上下文,但不能在此修改。',\n 'runtime.footnote': 'memories.json 是唯一事实源;两个 Markdown 文件由控制层生成,不应直接编辑。',\n 'documents.title': '项目档案',\n 'documents.description': '在当前工作区维护结构化的项目文档。活跃档案参与近场检索;达到 10 MB 上限前,最久未使用的档案会先在 Mnemon 中建立索引,再迁入归档。',\n 'documents.capacity': '{used} / {limit}',\n 'documents.refresh': '刷新',\n 'documents.summary': '档案存储摘要',\n 'documents.active': '活跃档案',\n 'documents.activeHint': '近场检索范围',\n 'documents.archivedCount': '归档',\n 'documents.archivedHint': '不占活跃容量',\n 'documents.activeCapacity': '活跃容量',\n 'documents.capacityHint': '按实际 UTF-8 文件大小计算',\n 'documents.searchAria': '检索项目档案',\n 'documents.searchPlaceholder': '搜索设计、调查、流程或交接记录…',\n 'documents.search': '检索',\n 'documents.scope': '档案范围',\n 'documents.new': '新建档案',\n 'documents.newTitle': '创建托管档案',\n 'documents.editTitle': '编辑活跃档案',\n 'documents.editorHint': '控制层会生成 frontmatter、哈希与修订号;原项目文件始终只读。',\n 'documents.managedCopy': '托管副本',\n 'documents.name': '标题',\n 'documents.routing': '检索说明',\n 'documents.sources': '来源路径',\n 'documents.sourcesPlaceholder': 'src/index.ts, docs/architecture.md',\n 'documents.markdown': 'Markdown 内容',\n 'documents.saving': '保存中…',\n 'documents.create': '创建档案',\n 'documents.save': '保存修订',\n 'documents.created': '已创建活跃档案。',\n 'documents.createdAfterArchive': '已先迁移 {count} 份旧档案,再创建活跃档案。',\n 'documents.updated': '已保存新的档案修订。',\n 'documents.updatedAfterArchive': '已先迁移 {count} 份旧档案,再保存修订。',\n 'documents.archived': '已建立 Mnemon 冷索引并归档;关联记忆体:{spaces}',\n 'documents.list': '项目档案列表',\n 'documents.activeList': '活跃目录',\n 'documents.archiveList': '归档目录',\n 'documents.noDescription': '暂无检索说明。',\n 'documents.missing': '文件缺失',\n 'documents.emptyActive': '还没有活跃档案',\n 'documents.emptyActiveText': '复杂对话达到活动评分门槛后会自动审阅并整理档案,也可以在上方手动创建。',\n 'documents.emptyArchived': '还没有归档',\n 'documents.emptyArchivedText': '只有完成 Mnemon 索引的档案才会迁移到这里。',\n 'documents.reader': '档案阅读器',\n 'documents.selectTitle': '选择一份档案',\n 'documents.selectText': '在左侧查看活跃项目知识或沿 Mnemon 引用打开归档原文。',\n 'documents.coldArchive': '归档原文',\n 'documents.edit': '编辑',\n 'documents.path': '托管路径',\n 'documents.revision': '修订',\n 'documents.hash': '内容哈希',\n 'documents.size': '文件大小',\n 'documents.archiveReceipt': 'Mnemon 冷索引回执',\n 'documents.archiveTitle': '迁入归档',\n 'documents.archiveDescription': '先由受限子 Agent 写入可检索的 Mnemon 摘要和精确路径,成功后才移动原文。',\n 'documents.archive': '归档',\n 'documents.archiveConfirm': '确认建立 Mnemon 索引并迁移这份档案?',\n 'documents.archiving': '索引并迁移中…',\n 'documents.archiveNow': '确认归档',\n 'documents.footnote': '`.mnemon/documents/index.json` 是控制面事实源;active 总量固定不超过 10 MB,archived 不计入上限,项目源文件不会被修改。',\n 'graph.layoutAria': '图谱布局',\n 'graph.layoutNatural': '自然布局',\n 'graph.layoutUniform': '均匀布局',\n 'graph.layoutCustom': '自定义布局',\n 'graph.layoutStatus': '布局状态:{layout}',\n 'graph.draggable': '{layout} · 可拖拽',\n 'graph.naturalAction': '自然铺开',\n 'graph.uniformAction': '均匀重置',\n 'graph.aria': 'Mnemon 实时记忆图谱,{nodes} 个元素,{edges} 条连接',\n 'graph.kindSpace': '记忆体',\n 'graph.kindEntity': '实体',\n 'card.confirmAria': '确认忘记记忆',\n 'card.confirmText': '软删除这条记忆?',\n 'card.processing': '处理中…',\n 'card.confirmForget': '确认忘记',\n 'card.related': '查看关联',\n 'card.clone': '基于此新建',\n 'card.forget': '忘记',\n 'toolview.recallTitle': '记忆召回',\n 'toolview.writeTitle': '记忆沉淀',\n 'toolview.genericSummary': 'Mnemon 工具调用',\n 'toolview.running': '处理中…',\n 'toolview.recallSummary': '{query} · {count} 条命中',\n 'toolview.relatedSummary': '{id} · 关联 {count} 条',\n 'toolview.documentSearchSummary': '{query} · {count} 份档案命中',\n 'toolview.statusHealthy': 'Mnemon 引擎正常',\n 'toolview.statusUnhealthy': 'Mnemon 引擎异常',\n 'toolview.bodiesSummary': '{count} 个记忆体 · {active} 个激活',\n 'toolview.runtimeSummary': '{action} {target} 热记忆',\n 'toolview.runtimeSummaryWithContent': '{action} {target} 热记忆 · {content}',\n 'toolview.documentManageSummary': '{action} 项目档案',\n 'toolview.documentManageSummaryWithTitle': '{action} 项目档案 · {title}',\n 'toolview.bodyUpdateSummary': '更新记忆体 {id}',\n 'toolview.bodyMergeSummary': '合并到 {target} · {count} 个来源',\n 'toolview.openView': '在记忆视图中打开',\n 'toolview.inspect': '查看轨迹',\n 'toolview.args': '参数',\n 'toolview.result': '结果',\n 'toolview.noResult': '尚无结果',\n 'turnTail.label': '本回合记忆',\n 'turnTail.recall': '召回 {count}',\n 'turnTail.write': '沉淀 {count}',\n 'turnTail.documents': '档案检索 {count}',\n 'turnTail.inspect': '检查 {count}',\n 'turnTail.failed': '失败 {count}',\n 'turnTail.toolList': '本回合记忆工具',\n 'turnTail.openView': '打开记忆视图',\n 'saveAction.button': '存入记忆',\n 'saveAction.title': '将这条回复交给记忆子 Agent',\n 'saveAction.hint': '子 Agent 会判断是否值得沉淀,并查重、提炼、选择记忆体后写入;不会挤占主对话上下文。',\n 'saveAction.fetching': '提取消息文本…',\n 'saveAction.missing': '无法从会话记录提取这条消息的文本。',\n 'saveAction.candidate': '候选内容(可编辑)',\n 'saveAction.truncated': '原回复较长,这里仅载入前 {limit} 个字符。',\n 'saveAction.submit': '交给记忆子 Agent 判断',\n 'saveAction.submitting': '调度中…',\n 'saveAction.result': '记忆子 Agent:{summary}',\n 'saveAction.failed': '调度失败:{error}',\n 'saveAction.readOnly': '当前部署为只读模式,无法写入记忆。',\n 'saveAction.close': '收起',\n 'search.title': '检索记忆',\n 'search.description': '直连 Mnemon 检索原始证据;需要时可让 Agent 只基于命中内容生成答案。',\n 'search.maxResults': '最多 {count} 条',\n 'search.placeholder': '为什么选用 SQLite?这个项目有哪些发布约定?',\n 'search.queryAria': '记忆查询',\n 'search.categoryAria': '记忆分类',\n 'search.strategy': '策略',\n 'search.modeAria': '检索模式',\n 'search.modeSmart': '图增强召回',\n 'search.modeKeyword': '关键词检索',\n 'search.modeBasic': '基础匹配',\n 'search.searching': '检索中…',\n 'search.action': '直接检索',\n 'search.agentAction': 'Agent 查询',\n 'search.agentSearching': 'Agent 分析中…',\n 'search.agentAnswer': 'Agent 查询结果',\n 'search.agentAnswerHint': '基于下方召回证据',\n 'search.startTitle': '从一个明确问题开始',\n 'search.startText': '聚焦实体、决策或时间线,比批量加载整库更可靠。',\n 'search.emptyTitle': '没有命中',\n 'search.emptyText': '换一个更具体的实体、决策或时间线关键词试试。',\n 'search.results': '原始召回内容',\n 'search.related': '关联记忆',\n 'search.closeRelated': '关闭关联记忆',\n 'search.traversing': '正在遍历图谱…',\n 'search.noRelated': '没有找到两跳内的关联节点。',\n 'entities.title': '实体查阅',\n 'entities.description': '直连 Mnemon 查阅实体跨越事实、决策与上下文的关系。',\n 'entities.count': '{count} 个活跃实体',\n 'entities.nameAria': '实体名称',\n 'entities.placeholder': '输入任意实体…',\n 'entities.action': '查阅',\n 'entities.top': '高频实体',\n 'entities.frequency': '按出现频率',\n 'entities.emptyRail': '写入带实体的记忆后,这里会形成入口。',\n 'entities.loading': '正在沿实体关系召回…',\n 'entities.selectTitle': '选择或输入一个实体',\n 'entities.selectText': '实体视图会聚合与它相关的记忆,而不是只做字面匹配。',\n 'entities.emptyTitle': '没有关联记忆',\n 'entities.emptyText': '尝试更完整的名称或另一个实体别名。',\n 'remember.title': '沉淀记忆',\n 'remember.description': '候选内容会进入隔离的记忆子 Agent,由它选择记忆体、查重、提炼并执行写入,不占用主对话上下文。',\n 'remember.worker': '记忆子 Agent',\n 'remember.readOnlyTitle': '当前为只读模式',\n 'remember.readOnlyText': '当前部署禁止记忆写入;如需调整,请修改 DSH 的 Mnemon 配置并保存。',\n 'remember.flowTitle': '记忆子 Agent 会完成什么',\n 'remember.routeTitle': '判断归属',\n 'remember.routeText': '选择既有记忆体,必要时判断是否形成新范围',\n 'remember.dedupeTitle': '检索查重',\n 'remember.dedupeText': '识别重复、补充或冲突的旧记忆',\n 'remember.writeTitle': '结构化写入',\n 'remember.writeText': '提炼内容、元数据与必要关系并返回回执',\n 'remember.flowText': '子 Agent 只拥有 Mnemon 工具,原始目录和检索过程不会挤占主对话上下文。',\n 'remember.delegateTitle': '交给记忆子 Agent',\n 'remember.noSession': '无可用会话',\n 'remember.ready': '子 Agent 就绪',\n 'remember.candidate': '候选内容',\n 'remember.candidateAria': '待沉淀内容',\n 'remember.placeholder': '输入希望跨任务保留的背景、偏好、决策或洞察。模型会先判断它是否真的值得沉淀。',\n 'remember.sessionHint': '当前视图没有绑定活动会话,无法创建记忆子 Agent。',\n 'remember.processing': '记忆子 Agent 处理中…',\n 'remember.action': '调度子 Agent 判断并沉淀',\n 'remember.advanced': '人工高级选项',\n 'remember.advancedHint': '为记忆子 Agent 指定目标记忆体与元数据约束',\n 'remember.expand': '展开',\n 'remember.target': '目标记忆体',\n 'remember.entities': '实体(逗号分隔)',\n 'remember.tags': '标签(逗号分隔)',\n 'remember.advancedText': '高级选项是约束而不是绕过监督;记忆子 Agent 仍会查重并返回结构化回执。',\n 'remember.saving': '子 Agent 写入中…',\n 'remember.advancedAction': '按高级约束沉淀',\n 'remember.skipped': '记忆子 Agent 判断无需写入',\n 'remember.completed': '记忆子 Agent 已完成处理',\n 'remember.processed': '记忆子 Agent 已处理:{action}',\n 'remember.dispatchFailed': '调度失败:{error}',\n 'remember.saveFailed': '保存失败:{error}',\n 'content.title': '记忆内容',\n 'content.description': '无副作用浏览所有已激活记忆体;每条内容都会标明所属记忆体,可继续查阅或维护。',\n 'content.count': '{count} 条记忆',\n 'content.filterAria': '筛选记忆内容',\n 'content.filterPlaceholder': '按内容或精确 ID 筛选…',\n 'content.categoryAria': '记忆分类',\n 'content.apply': '应用筛选',\n 'content.notice': '内容列表读取已激活记忆体的图谱快照,不会增加 recall 访问计数。',\n 'content.showing': '当前显示 {visible} / {total}',\n 'content.showMore': '再显示 {count} 条',\n 'content.emptyTitle': '没有符合条件的记忆',\n 'content.emptyText': '清空筛选,或前往“沉淀”写入第一条稳定上下文。',\n 'status.title': '系统状态',\n 'status.description': '聚焦 Mnemon 引擎、记忆体目录和子 Agent 编排;连接配置由 DSH 部署统一管理。',\n 'status.nominal': '系统正常',\n 'status.checkRequired': '需要检查',\n 'status.rechecking': '检查中…',\n 'status.recheck': '重新检查',\n 'status.aria': 'Mnemon 运行状态',\n 'status.engine': '记忆引擎',\n 'status.engineConnected': 'Mnemon 已连接',\n 'status.engineUnavailable': 'Mnemon 不可用',\n 'status.engineChecking': '正在检查本地引擎',\n 'status.versionWaiting': '等待版本信息',\n 'status.spaces': '记忆体',\n 'status.activeRatio': '{active} / {total} 已激活',\n 'status.runtime': '运行时',\n 'status.runtimeRatio': '{user} 用户 · {memory} 项目',\n 'status.runtimeBytes': '{bytes} 已使用',\n 'status.runtimeWaiting': '等待同步',\n 'status.runtimeWaitingDetail': '宿主存储清单待返回',\n 'status.directoryUnsynced': '目录尚未同步',\n 'status.activeMemories': '{count} 条激活记忆',\n 'status.documents': '项目档案',\n 'status.documentsWaiting': '等待工作区',\n 'status.documentsSession': '绑定活动会话后可用',\n 'status.documentRatio': '{active} 份活跃 · {archived} 份归档',\n 'status.documentUsage': '{used} / {limit} 活跃容量',\n 'status.router': '子 Agent 路由',\n 'status.routerReady': '记忆子 Agent 可用',\n 'status.sessionMissing': '当前会话未绑定',\n 'status.routerChecking': '正在同步会话能力',\n 'status.orchestrationWaiting': '等待编排状态',\n 'status.workerCounts': '召回 {recalls} · 问答 {answers} · 审查 {reviews} · 档案迁移 {documentArchives} · 热记忆归档 {migrations} · 常规写入 {writes}',\n 'status.workerSummary': '召回 {recalls} · 审查 {reviews} · 写入 {writes} · 失败 {failures}',\n 'status.lifecycle': '子 Agent 生命周期',\n 'status.lifecycleText': 'pre-step 只提供短提示;后台按用户输入、turn、工具调用量与工具多样性累计评分,达标并持续空闲后,由一个 fork 子 Agent 同时审阅热记忆与复杂项目档案。',\n 'status.phaseIdle': '待命',\n 'status.phaseSupervised': '受监督请求',\n 'status.phaseError': '异常',\n 'status.phaseReview': '后台审查',\n 'status.prime': '轻量预备',\n 'status.primeText': '初始化路由状态,不读取目录或记忆',\n 'status.recallWorker': '召回处理',\n 'status.recallText': 'pre-step 只提醒判断,主模型按需发起召回',\n 'status.recallOff': '自动召回已关闭',\n 'status.writeWorker': '评分审查',\n 'status.writeText': '活动评分达到 {threshold} 后再等待空闲 {seconds} 秒,fork 完整 checkpoint 按需维护热记忆与项目档案',\n 'status.writeOff': '后台审查已关闭',\n 'status.latestPhase': '最近阶段',\n 'status.latestActivity': '最近活动',\n 'status.reviewState': '审查状态',\n 'status.reviewPending': '评分已达标,等待空闲',\n 'status.reviewRunning': '正在审查',\n 'status.reviewQualified': '评分已达标,等待本轮完成',\n 'status.reviewAccumulating': '累计信号中',\n 'status.reviewIdle': '累计信号中',\n 'status.activityScore': '活动评分',\n 'status.activitySignals': '累计信号',\n 'status.activitySignalValues': '{chars} 字符 · {turns} turn · {tools} 次工具 · {unique} 种工具',\n 'status.lastReview': '最近审查',\n 'status.noReview': '尚未执行',\n 'status.reviewAt': '{time} · {action} · 触发分 {score}',\n 'status.supervisedRequests': '受监督请求',\n 'status.workerFailures': '子 Agent 失败',\n 'status.reviewDocuments': '最近更新档案',\n 'status.noActivity': '尚无运行记录',\n 'status.quickDiagnostics': '快速诊断',\n 'status.cliExecutable': 'Mnemon CLI 可执行',\n 'status.cliMissing': 'Mnemon CLI 未找到',\n 'status.readingSpaces': '{count} 个记忆体参与读取',\n 'status.directoryWaiting': '记忆体目录等待 Host 同步',\n 'status.webAgentReady': 'WebUI 可创建隔离记忆子 Agent',\n 'status.liveSessionMissing': '缺少活动会话',\n 'status.lifecycleFailures': '生命周期失败 {count} 次',\n 'status.documentsUnavailable': '当前会话的档案目录不可用',\n 'status.documentsHealthy': '{count} 份活跃档案可参与近场检索',\n 'status.nativeAccess': '原生命令',\n 'status.nativeAccessText': '模型侧使用原生 mnemon_* 工具;人工命令不会绕入模型。',\n 'status.engineStorage': '引擎与存储',\n 'status.online': '在线',\n 'status.offline': '离线',\n 'status.mnemonVersion': 'Mnemon 版本',\n 'status.directory': '记忆体目录',\n 'status.activeDbSize': '激活数据库大小',\n 'status.activeCount': '已激活',\n 'status.activeGraphEdges': '激活图谱连接',\n 'status.documentDirectory': '项目档案目录',\n 'status.activeDocuments': '活跃档案',\n 'status.coldDocuments': '归档',\n 'status.documentCapacity': '活跃档案容量',\n 'status.storageDomains': '存储域',\n 'status.storageDomainsText': '当前选择决定热记忆、记忆体、项目档案和后台状态共同使用的目录边界。',\n 'status.storageBrowseOnly': '查看不会切换写入',\n 'status.storageScopeAria': '选择要查看的存储域',\n 'status.storageGlobal': '全局',\n 'status.storageWorkspace': '工作区',\n 'status.storageCustom': '自定义',\n 'status.storageCurrent': '当前读写',\n 'status.storageWaiting': '正在读取存储域目录…',\n 'status.storageCustomUnset': '尚未配置自定义目录。当前只展示已经由 DSH 配置并启用的自定义根。',\n 'status.storageWorkspaceUnavailable': '当前会话没有可用的工作区目录。',\n 'status.storageActiveRoot': '当前读写根',\n 'status.storageViewedRoot': '查看根',\n 'status.storageAvailable': '目录可用',\n 'status.storageNotCreated': '目录尚未创建',\n 'status.storageRuntime': '运行时记忆',\n 'status.storageBodies': '记忆体',\n 'status.storageDocuments': '项目档案',\n 'status.storageState': '后台状态',\n 'status.storageReady': '正常',\n 'status.storageEmpty': '空',\n 'status.storageMissing': '未创建',\n 'status.storageInvalid': '需修复',\n 'status.storageItems': '项',\n 'status.storageRuntimeDetail': 'USER {user} · MEMORY {memory}',\n 'status.storageBodiesDetail': '{active} 个激活 · {databases} 个数据库',\n 'status.storageDocumentsDetail': '{active} 份活跃 · {archived} 份归档',\n 'status.storageStateReady': '审阅水位已经持久化',\n 'status.storageStateVolatile': '当前审阅状态仍由 Host 进程维护',\n 'status.storageFootnote': '当前实际读写根:{root}。存储范围只在 DSH「设置 → 记忆系统」中修改,保存后实时生效;插件不会自动迁移、合并或删除旧内容。',\n 'status.flowTitle': '记忆系统流转',\n 'status.flowDescription': '按真实执行边界展开每轮注入、确定性文件控制、语义 worker、CLI 数据面、归档与 fork 审查。',\n 'status.flowLive': '实时状态',\n 'status.flowDegraded': '部分不可用',\n 'status.flowConversation': '用户 / 当前任务',\n 'status.flowTurns': '当前轮输入与工具轨迹',\n 'status.flowSupervisor': 'Root Agent',\n 'status.flowEntries': '{count} 条热记忆',\n 'status.flowDocuments': '{active} 份活跃 · {archived} 份归档',\n 'status.flowContext': '证据 / 回执',\n 'status.flowContextDetail': '结构化结果返回当前任务',\n 'status.flowReadWrite': '确定性 Host 路径',\n 'status.flowArchive': 'LLM 监督路径',\n 'status.flowCurrentScope': '当前范围:{scope}',\n 'status.flowLaneContext': '每轮上下文',\n 'status.flowLaneContextDetail': 'Runtime 每轮注入;Documents 仅按需检索',\n 'status.flowLaneSemantic': '按需语义操作',\n 'status.flowLaneSemanticDetail': '隔离 worker 决策,Host 服务执行',\n 'status.flowLaneMaintenance': '空闲维护与归档',\n 'status.flowLaneMaintenanceDetail': 'fork 审查与先索引后迁移',\n 'status.flowRuntimeMeta': 'USER.md + MEMORY.md · {count} 条',\n 'status.flowPromptAssembly': '每轮 prompt assembly',\n 'status.flowDocumentSearch': 'Document 确定性检索',\n 'status.flowOnDemand': '按需,不注入全文',\n 'status.flowRootMeta': '路由工具调用,不直接访问 SQLite',\n 'status.flowStructuredReturn': '结构化证据 / 回执',\n 'status.flowEvidenceMeta': '带来源返回 Root Agent',\n 'status.flowSemanticRequest': 'recall · write · related',\n 'status.flowSpawnWorker': 'spawn 隔离 worker',\n 'status.flowSpawnMeta': '语义判断 · 最小工具白名单',\n 'status.flowService': 'MnemonService',\n 'status.flowServiceMeta': '校验 · 归一化 · 聚合',\n 'status.flowRunnerCli': 'Runner → 本地 CLI',\n 'status.flowRunnerCliMeta': '超时 / 取消 / JSON 进程边界',\n 'status.flowHostBridge': 'Mnemon Host Bridge',\n 'status.flowHostBridgeMeta': 'Service → Runner → 本地 CLI',\n 'status.flowSpacesMeta': '{active}/{total} 已激活 · {insights} 条记忆',\n 'status.flowDeterministicWrites': '普通 Runtime 与 Document 变更',\n 'status.flowDeterministicWritesMeta': 'add / replace / remove · create / update',\n 'status.flowControlPlane': 'Host 确定性控制层',\n 'status.flowControlPlaneMeta': '锁 · 原子写 · revision · 容量',\n 'status.flowReviewGate': '活动评分与空闲门控',\n 'status.flowReviewGateMeta': '{score}/{threshold} · idle {seconds}s',\n 'status.flowForkReview': 'fork 完成检查点',\n 'status.flowForkReviewMeta': '{state} · 只维护 Runtime / Document',\n 'status.flowReviewTargets': 'Runtime / active Document',\n 'status.flowReviewTargetsMeta': '保守维护 · 新轮次会取消审查',\n 'status.flowColdArchive': 'spawn 归档 worker',\n 'status.flowColdArchiveMeta': '容量维护 / 人工归档',\n 'status.flowIndexFirst': '1 · 先写 / 验证 Mnemon 冷索引',\n 'status.flowRevisionMove': '2 · revision fence 后迁移原文',\n 'status.flowRevisionMoveMeta': '{archived} 份已归档 · 失败或冲突保留 active',\n 'status.flowArchivedDocuments': '已归档 Documents',\n 'status.flowRecent': '最近活动',\n 'status.flowRunning': '正在运行',\n 'status.flowPending': '等待空闲',\n 'status.flowStatic': '执行边界',\n 'status.flowLegendReady': '可用 / 已就绪',\n 'status.flowLegendRecent': '当前或最近链路',\n 'status.flowLegendBoundary': '虚线表示 LLM 判断边界',\n 'config.aria': 'Mnemon 记忆系统配置',\n 'config.tab': 'Mnemon',\n 'config.title': '记忆系统设置',\n 'config.description': '统一配置运行时记忆、项目档案、记忆体和 DSH 界面;点击保存后立即生效。',\n 'config.unsaved': '有未保存修改',\n 'config.ready': '已保存并实时生效',\n 'config.noticeBefore': '配置写入',\n 'config.noticeAfter': ';所有设置点击保存后实时生效。切换范围不会自动迁移旧内容。',\n 'config.displayTitle': '展示形态',\n 'config.displayDescription': '选择记忆系统在 DSH Web 中的入口位置;切换后立即生效。',\n 'config.displayAria': '记忆系统展示形态',\n 'config.displaySidebar': 'Sidebar',\n 'config.displaySidebarHint': '侧边栏中的独立工作台',\n 'config.displayBuildin': 'Buildin',\n 'config.displayBuildinHint': '对话区域的内置标签页',\n 'config.storageTitle': '存储位置',\n 'config.storageDescription': '决定 Mnemon 的运行时记忆、项目档案与记忆体保存在哪里;保存后原子切换。',\n 'config.scope': '存储范围',\n 'config.scopeHint': '全局供所有工作区共享;工作区按当前 DSH 会话隔离;自定义使用指定目录。',\n 'config.scopeAria': 'Mnemon 存储范围',\n 'config.global': '全局',\n 'config.workspace': '工作区',\n 'config.custom': '自定义',\n 'config.customHintShort': '填写一个目录',\n 'config.customSelected': '已填写目录',\n 'config.customPack': '自定义 Pack',\n 'config.customPackAria': '选择自定义 Mnemon Pack',\n 'config.customPackRequired': '请选择或添加一个自定义 Pack。',\n 'config.customDefaultName': '自定义 Pack',\n 'config.noCustomPacks': '尚未配置 Pack',\n 'config.addPack': '添加 Pack',\n 'config.cancelAddPack': '取消添加',\n 'config.removePack': '移除',\n 'config.customPackNameAria': '新 Pack 名称',\n 'config.customPackNamePlaceholder': '例如:项目记忆',\n 'config.newPackDirectoryAria': '新 Pack 数据目录',\n 'config.confirmAddPack': '加入列表',\n 'config.customDirectory': '自定义目录',\n 'config.customHint': '整个 Mnemon 数据域都位于此处。',\n 'config.customAria': 'Mnemon 自定义数据目录',\n 'config.customDirectoryHint': '填写 DSH Host 上的目录路径,只保存这一个目录。',\n 'config.customPlaceholder': '例如:/data/mnemon 或 ~/mnemon',\n 'config.invalidScope': '存储范围无效。',\n 'config.customRequired': '选择自定义存储时必须填写数据目录。',\n 'config.customAbsolute': '自定义目录必须是绝对路径或以 ~/ 开头;Windows 可填写盘符或 UNC 路径。',\n 'config.saveFailed': '保存失败:{error}',\n 'config.readOnly': '当前部署的插件设置为只读。',\n 'config.discard': '放弃修改',\n 'config.saving': '保存中…',\n 'config.save': '保存',\n 'config.overridden': '已覆盖',\n 'config.interactionTitle': '对话界面',\n 'config.interactionLive': '实时生效',\n 'config.interactionHint': '保存后实时生效;关闭某项后恢复 DSH 原生呈现。',\n 'config.interactionToolviews': '记忆工具卡',\n 'config.interactionToolviewsHint': '展示 mnemon_* 工具的状态与摘要',\n 'config.interactionTurnBar': '回合记忆条',\n 'config.interactionTurnBarHint': '在回合尾部展示召回、沉淀与检索活动',\n 'config.interactionSaveAction': '存入记忆按钮',\n 'config.interactionSaveActionHint': '在已定稿回复旁提供受监督的记忆沉淀入口',\n 'config.interactionOn': '开启',\n 'config.packTitle': '备份与迁移',\n 'config.packDescription': '整体导出与导入当前生效目录;导入始终落到下方显示的位置。',\n 'config.packActiveTarget': '当前生效目录',\n 'config.packTargetLoading': '正在读取运行目标…',\n 'config.packUnavailable': '当前 DSH 主机不支持 Mnemon ZIP 备份通道。',\n 'config.packFull': '整体 Pack',\n 'config.packFullHint': 'Runtime、Documents 与记忆体',\n 'config.packRuntime': 'Runtime',\n 'config.packRuntimeHint': '热记忆与 USER / MEMORY 投影',\n 'config.packDocuments': 'Documents',\n 'config.packDocumentsHint': '项目文档、归档与索引',\n 'config.packMemorySpaces': '记忆体',\n 'config.packMemorySpacesHint': '目录清单与 mnemon.db',\n 'config.packExport': '导出',\n 'config.packImport': '导入',\n 'config.packExporting': '导出中…',\n 'config.packInspecting': '检查中…',\n 'config.packImporting': '导入中…',\n 'config.packChooseFile': '选择{component}文件',\n 'config.packFormatHint': '统一使用 .mnemonpack(ZIP + manifest + SHA-256);记忆体仍以独立 mnemon.db 保存在包内。',\n 'config.packPreviewEyebrow': '导入预览',\n 'config.packUnnamed': '未命名 Mnemon Pack',\n 'config.packSource': '来源',\n 'config.packDestination': '导入到',\n 'config.packArchiveSize': '压缩 / 展开',\n 'config.packComponents': '选择要导入的组件',\n 'config.packComponentSummary': '{items} 项 · {files} 个文件 · {size}',\n 'config.packHasData': '目标已有数据',\n 'config.packMerge': '安全合并(推荐)',\n 'config.packMergeHint': '保留现有内容;冲突项自动去重或生成新 ID。',\n 'config.packMergeAction': '合并导入',\n 'config.packReplace': '覆盖当前组件?',\n 'config.packReplaceHint': '所选组件会被 Pack 内容原子替换;其他组件不受影响。',\n 'config.packReplaceAction': '覆盖导入…',\n 'config.packConfirmReplace': '确认覆盖',\n 'config.packComponentMissing': '这个 Pack 不包含所选组件。',\n 'config.packExported': '已导出 {file}({size})。',\n 'config.packImported': '已将 {components} 导入 {root}。',\n 'config.packFailed': 'ZIP 操作失败:{error}',\n 'config.packSimpleDescription': '将当前生效目录整体导出为一个 ZIP,或从 ZIP 安全合并恢复。',\n 'config.packWholeZip': '当前目录 ZIP',\n 'config.packWholeZipHint': '包含 Runtime、Documents 和全部记忆体。',\n 'config.packImportZip': '导入 ZIP',\n 'config.packExportZip': '导出 ZIP',\n 'config.packChooseZip': '选择 Mnemon 备份 ZIP',\n 'config.packUnnamedZip': 'Mnemon 备份.zip',\n 'config.packZipReady': '校验通过 · {components} 个组件 · {items} 项 · {size}',\n 'config.packImportZipAction': '安全导入',\n 'config.packImportedWhole': '已将 ZIP 安全合并到 {root}。',\n} satisfies Record<string, string>\n\nexport type MnemonKey = keyof typeof zh\n\nexport const en = {\n 'tab.label': 'Memory System',\n 'term.space': 'Memory Space',\n 'term.spaces': 'Memory Spaces',\n 'category.decision': 'Decision',\n 'category.preference': 'Preference',\n 'category.fact': 'Fact',\n 'category.insight': 'Insight',\n 'category.context': 'Context',\n 'category.general': 'General',\n 'nav.aria': 'Mnemon pages',\n 'nav.group.system': 'System',\n 'nav.group.storage': 'Memory tiers',\n 'nav.group.tools': 'Read and write',\n 'nav.bodies': 'Memory Spaces',\n 'nav.bodies.detail': 'Directory and live graph',\n 'nav.runtime': 'Runtime',\n 'nav.runtime.detail': 'Hot memory and context',\n 'nav.documents': 'Documents',\n 'nav.documents.detail': 'Project knowledge and archive',\n 'nav.search': 'Recall',\n 'nav.search.detail': 'Intent-aware retrieval',\n 'nav.entities': 'Entities',\n 'nav.entities.detail': 'Relations and context',\n 'nav.remember': 'Distill',\n 'nav.remember.detail': 'LLM-supervised writeback',\n 'nav.content': 'Content',\n 'nav.content.detail': 'Browse and maintain',\n 'nav.status': 'Status',\n 'nav.status.detail': 'Runtime and diagnostics',\n 'common.refresh': 'Refresh status',\n 'common.loading': 'Loading…',\n 'common.cancel': 'Cancel',\n 'common.copyId': 'Copy ID',\n 'common.readOnly': 'Read only',\n 'common.agentSupervised': 'Subagent supervised',\n 'common.active': 'Active',\n 'common.inactive': 'Inactive',\n 'common.category': 'Category',\n 'common.importanceLabel': 'Importance',\n 'common.importance': 'Importance {value}',\n 'common.hops': '{count} hops',\n 'common.allCategories': 'All categories',\n 'common.memories': '{count} memories',\n 'common.edges': '{count} edges',\n 'common.count': '{count}',\n 'header.checking': 'Checking',\n 'header.connected': 'Connected · {count} active',\n 'header.directoryPending': 'Connected · directory pending',\n 'header.unavailable': 'Unavailable',\n 'header.notReady': 'Mnemon is not ready',\n 'workspace.viewing': 'Viewing workspace',\n 'workspace.selectorAria': 'Select a memory workspace to inspect',\n 'workspace.mismatchTitle': 'The inspected directory is not aligned with this session',\n 'workspace.mismatchDescription': 'Workbench actions target the inspected directory; agents, tools, and lifecycle hooks continue to use the current session directory.',\n 'workspace.selectedRoot': 'Viewing: {root}',\n 'workspace.effectiveRoot': 'Effective: {root}',\n 'workspace.align': 'Align with session',\n 'telemetry.aria': 'Memory statistics',\n 'telemetry.title': 'Memory statistics',\n 'telemetry.memories': 'Active memories',\n 'telemetry.graph': 'Active graph',\n 'telemetry.entities': 'Active entities',\n 'telemetry.spaces': 'Spaces',\n 'sidebar.activeSpaces': 'Active Memory Spaces',\n 'overview.title': 'Memory Spaces',\n 'overview.description': 'Control the global read boundary and inspect all active Memory Spaces in one live four-graph snapshot.',\n 'overview.interval': 'Every 15 seconds',\n 'overview.syncing': 'Syncing…',\n 'overview.syncNow': 'Sync now',\n 'overview.directory': 'Memory Space Directory',\n 'overview.directory.description': 'Activation controls reads only. Writes may target any space and automatically activate an inactive target.',\n 'overview.directory.waiting': 'Waiting for directory',\n 'overview.directory.unsynced': 'Directory not synchronized',\n 'overview.directory.unsyncedBadge': 'Directory pending',\n 'overview.storageHealthy': 'Storage healthy',\n 'overview.storageUnhealthy': 'Storage unavailable',\n 'overview.toggleAria': '{name} read toggle',\n 'overview.toggling': 'Switching',\n 'overview.noDescription': 'No routing description yet.',\n 'overview.unsyncedTitle': 'Memory Space directory is not synchronized',\n 'overview.unsyncedShort': 'The Web client and DSH Host are using different contracts. Restart the Host to register existing Stores.',\n 'overview.unsyncedLong': 'The Host is still using the previous plugin contract. Restart DSH to rediscover existing Stores; no .db file will be deleted.',\n 'overview.emptyTitle': 'No Memory Spaces yet',\n 'overview.emptyShort': 'Create the first space and distill durable context into it.',\n 'overview.emptyLong': 'Create a Memory Space above. Its first write will activate it and add it to the live snapshot.',\n 'overview.noActiveTitle': 'No active Memory Spaces',\n 'overview.noActiveText': 'Enable read access for at least one space to aggregate its live graph here.',\n 'overview.noContentTitle': 'Active spaces have no content yet',\n 'overview.noContentText': 'Distill durable context into a space to populate nodes and relations.',\n 'overview.create': '+ Create empty Memory Space',\n 'overview.createName': 'New Memory Space name',\n 'overview.createNamePlaceholder': 'Name',\n 'overview.createDescription': 'New Memory Space description',\n 'overview.createDescriptionPlaceholder': 'Describe what belongs here and when it should be recalled',\n 'overview.creating': 'Creating…',\n 'overview.createAction': 'Create',\n 'overview.editBody': 'Edit',\n 'overview.editBodyAria': 'Edit {name}',\n 'overview.editName': 'Name',\n 'overview.editDescription': 'Routing description',\n 'overview.saveBody': 'Save',\n 'overview.savingBody': 'Saving…',\n 'overview.snapshot': 'Live multi-space snapshot',\n 'overview.waitingSnapshot': 'Waiting for the first snapshot',\n 'overview.updatedAt': 'Updated at {time}',\n 'overview.edgeScope': 'Space scope',\n 'overview.edgeTemporal': 'Temporal',\n 'overview.edgeSemantic': 'Semantic',\n 'overview.edgeCausal': 'Causal',\n 'overview.edgeEntity': 'Entity relation',\n 'overview.graphComposition': '{spaces} spaces · {memories} memories · {entities} entities',\n 'overview.graphCount': 'Showing {visible} / {total} elements',\n 'overview.graphEdges': '{count} graph edges',\n 'overview.inspector': 'Memory details',\n 'overview.inspectorSpace': 'Memory Space details',\n 'overview.inspectorEntity': 'Entity details',\n 'overview.selectNode': 'Select a graph element',\n 'overview.selectNodeText': 'Inspect the exact context for a Memory Space, entity, or memory.',\n 'overview.closeInspector': 'Close node details',\n 'overview.memoryId': 'Memory ID',\n 'overview.spaceId': 'Memory Space ID',\n 'overview.containedMemories': 'Contained memories',\n 'overview.entityMentions': 'Indexed mentions',\n 'overview.exploreNode': 'Recall around this',\n 'overview.previewAria': 'View full content',\n 'overview.previewTitle': 'Full content',\n 'overview.loading': 'Synchronizing the directory and multi-space graph…',\n 'runtime.title': 'Runtime Memory',\n 'runtime.description': 'Manage compact hot memory loaded into every turn. A single control plane owns structured data and projects USER.md and MEMORY.md.',\n 'runtime.total': '{count} hot memories',\n 'runtime.refresh': 'Refresh',\n 'runtime.hotContext': 'Every-turn context',\n 'runtime.addTitle': 'Add hot memory',\n 'runtime.addDescription': 'Keep stable, frequently useful information here; Mnemon Memory Spaces remain the durable archive.',\n 'runtime.content': 'Runtime memory content',\n 'runtime.placeholder': 'Enter one compact, self-contained fact that will remain useful…',\n 'runtime.target': 'Target',\n 'runtime.importance': 'Importance',\n 'runtime.saving': 'Working…',\n 'runtime.addAction': 'Add',\n 'runtime.target.user': 'User Profile',\n 'runtime.target.user.description': 'Identity, role, habits, communication preferences, and explicit collaboration requirements. Capacity maintenance stays local and never enters a Memory Space.',\n 'runtime.target.memory': 'Working Memory',\n 'runtime.target.memory.description': 'Projects, environment, decisions, conventions, tool behavior, and reusable lessons. At capacity, entries are routed into one or more topic-specific Memory Spaces.',\n 'runtime.importance.critical': 'Critical',\n 'runtime.importance.normal': 'Normal',\n 'runtime.importance.low': 'Low',\n 'runtime.empty': 'No hot memory in this target yet.',\n 'runtime.editContent': 'Edit runtime memory',\n 'runtime.editAction': 'Edit',\n 'runtime.saveEdit': 'Save change',\n 'runtime.removeAction': 'Remove',\n 'runtime.removeConfirm': 'Remove this hot-memory entry?',\n 'runtime.result.add': 'Added to {target} · {count} entries',\n 'runtime.result.replace': 'Updated {target} · {count} entries',\n 'runtime.result.remove': 'Removed from {target} · {count} entries',\n 'runtime.result.maintenance': 'Capacity maintenance complete: archived to {spaces}, then updated {target} · {count} entries',\n 'runtime.result.localCompaction': 'Local profile compaction complete: no Memory Space write; updated {target} · {count} entries',\n 'runtime.readOnly': 'This deployment is read only. Hot memory still enters context but cannot be changed here.',\n 'runtime.footnote': 'memories.json is the only source of truth. The control plane generates both Markdown files; do not edit them directly.',\n 'documents.title': 'Project Documents',\n 'documents.description': 'Maintain structured project documents in the current workspace. Active documents support near-field search; before the 10 MB limit is exceeded, the least-recently-used document is indexed in Mnemon and moved to the archive.',\n 'documents.capacity': '{used} / {limit}',\n 'documents.refresh': 'Refresh',\n 'documents.summary': 'Document storage summary',\n 'documents.active': 'Active',\n 'documents.activeHint': 'Near-field search scope',\n 'documents.archivedCount': 'Archive',\n 'documents.archivedHint': 'Excluded from active capacity',\n 'documents.activeCapacity': 'Active capacity',\n 'documents.capacityHint': 'Measured from actual UTF-8 files',\n 'documents.searchAria': 'Search project documents',\n 'documents.searchPlaceholder': 'Search designs, investigations, procedures, or handoffs…',\n 'documents.search': 'Search',\n 'documents.scope': 'Document scope',\n 'documents.new': 'New document',\n 'documents.newTitle': 'Create managed document',\n 'documents.editTitle': 'Edit active document',\n 'documents.editorHint': 'The control plane generates frontmatter, hashes, and revisions. Project source files stay read only.',\n 'documents.managedCopy': 'Managed copy',\n 'documents.name': 'Title',\n 'documents.routing': 'Retrieval description',\n 'documents.sources': 'Source paths',\n 'documents.sourcesPlaceholder': 'src/index.ts, docs/architecture.md',\n 'documents.markdown': 'Markdown content',\n 'documents.saving': 'Saving…',\n 'documents.create': 'Create document',\n 'documents.save': 'Save revision',\n 'documents.created': 'Active document created.',\n 'documents.createdAfterArchive': 'Archived {count} older document(s), then created the active document.',\n 'documents.updated': 'New document revision saved.',\n 'documents.updatedAfterArchive': 'Archived {count} older document(s), then saved the revision.',\n 'documents.archived': 'Mnemon cold index created and document archived; Memory Spaces: {spaces}',\n 'documents.list': 'Project document list',\n 'documents.activeList': 'Active directory',\n 'documents.archiveList': 'Archive directory',\n 'documents.noDescription': 'No retrieval description.',\n 'documents.missing': 'File missing',\n 'documents.emptyActive': 'No active documents yet',\n 'documents.emptyActiveText': 'Complex work is reviewed after it reaches the activity-score gate, or you can create a Document above.',\n 'documents.emptyArchived': 'No archives yet',\n 'documents.emptyArchivedText': 'Only documents with a completed Mnemon index are moved here.',\n 'documents.reader': 'Document reader',\n 'documents.selectTitle': 'Select a document',\n 'documents.selectText': 'Read active project knowledge or follow a Mnemon reference to an archived original.',\n 'documents.coldArchive': 'Archived original',\n 'documents.edit': 'Edit',\n 'documents.path': 'Managed path',\n 'documents.revision': 'Revision',\n 'documents.hash': 'Content hash',\n 'documents.size': 'File size',\n 'documents.archiveReceipt': 'Mnemon cold-index receipt',\n 'documents.archiveTitle': 'Move to archive',\n 'documents.archiveDescription': 'A restricted subagent first stores a searchable Mnemon summary and exact path. The original moves only after that succeeds.',\n 'documents.archive': 'Archive',\n 'documents.archiveConfirm': 'Create the Mnemon index and archive this document?',\n 'documents.archiving': 'Indexing and moving…',\n 'documents.archiveNow': 'Confirm archive',\n 'documents.footnote': '`.mnemon/documents/index.json` is the control-plane source of truth. active stays at or below 10 MB, archived is excluded, and project source files are never modified.',\n 'graph.layoutAria': 'Graph layout',\n 'graph.layoutNatural': 'Natural layout',\n 'graph.layoutUniform': 'Uniform layout',\n 'graph.layoutCustom': 'Custom layout',\n 'graph.layoutStatus': 'Layout: {layout}',\n 'graph.draggable': '{layout} · draggable',\n 'graph.naturalAction': 'Natural spread',\n 'graph.uniformAction': 'Uniform reset',\n 'graph.aria': 'Mnemon live memory graph with {nodes} elements and {edges} edges',\n 'graph.kindSpace': 'Memory Space',\n 'graph.kindEntity': 'Entity',\n 'card.confirmAria': 'Confirm forgetting memory',\n 'card.confirmText': 'Soft-delete this memory?',\n 'card.processing': 'Processing…',\n 'card.confirmForget': 'Confirm forget',\n 'card.related': 'View related',\n 'card.clone': 'Create from this',\n 'card.forget': 'Forget',\n 'toolview.recallTitle': 'Memory recall',\n 'toolview.writeTitle': 'Memory write',\n 'toolview.genericSummary': 'Mnemon tool call',\n 'toolview.running': 'Working…',\n 'toolview.recallSummary': '{query} · {count} hits',\n 'toolview.relatedSummary': '{id} · {count} related',\n 'toolview.documentSearchSummary': '{query} · {count} documents',\n 'toolview.statusHealthy': 'Mnemon engine healthy',\n 'toolview.statusUnhealthy': 'Mnemon engine unhealthy',\n 'toolview.bodiesSummary': '{count} spaces · {active} active',\n 'toolview.runtimeSummary': '{action} {target} hot memory',\n 'toolview.runtimeSummaryWithContent': '{action} {target} hot memory · {content}',\n 'toolview.documentManageSummary': '{action} project document',\n 'toolview.documentManageSummaryWithTitle': '{action} project document · {title}',\n 'toolview.bodyUpdateSummary': 'Update Memory Space {id}',\n 'toolview.bodyMergeSummary': 'Merge into {target} · {count} sources',\n 'toolview.openView': 'Open in Memory view',\n 'toolview.inspect': 'Inspect',\n 'toolview.args': 'Arguments',\n 'toolview.result': 'Result',\n 'toolview.noResult': 'No result yet',\n 'turnTail.label': 'Turn memory',\n 'turnTail.recall': 'recalled {count}',\n 'turnTail.write': 'wrote {count}',\n 'turnTail.documents': 'document search {count}',\n 'turnTail.inspect': 'inspected {count}',\n 'turnTail.failed': 'failed {count}',\n 'turnTail.toolList': 'Memory tools this turn',\n 'turnTail.openView': 'Open Memory view',\n 'saveAction.button': 'Save to memory',\n 'saveAction.title': 'Send this reply to the memory subagent',\n 'saveAction.hint': 'The subagent decides whether it qualifies, then dedupes, distills, chooses a Memory Space, and writes without filling the main conversation context.',\n 'saveAction.fetching': 'Extracting message text…',\n 'saveAction.missing': 'Could not extract this message text from the session log.',\n 'saveAction.candidate': 'Candidate (editable)',\n 'saveAction.truncated': 'This reply is long; only the first {limit} characters are loaded here.',\n 'saveAction.submit': 'Send to memory subagent',\n 'saveAction.submitting': 'Dispatching…',\n 'saveAction.result': 'Memory subagent: {summary}',\n 'saveAction.failed': 'Dispatch failed: {error}',\n 'saveAction.readOnly': 'This deployment is read only; memory writes are disabled.',\n 'saveAction.close': 'Collapse',\n 'search.title': 'Recall Memory',\n 'search.description': 'Query raw Mnemon evidence directly, then optionally ask an Agent to answer from those matches only.',\n 'search.maxResults': 'Up to {count} results',\n 'search.placeholder': 'Why did we choose SQLite? What release conventions apply?',\n 'search.queryAria': 'Memory query',\n 'search.categoryAria': 'Memory category',\n 'search.strategy': 'Strategy',\n 'search.modeAria': 'Recall mode',\n 'search.modeSmart': 'Graph-enhanced recall',\n 'search.modeKeyword': 'Keyword search',\n 'search.modeBasic': 'Basic match',\n 'search.searching': 'Recalling…',\n 'search.action': 'Direct search',\n 'search.agentAction': 'Ask Agent',\n 'search.agentSearching': 'Agent analyzing…',\n 'search.agentAnswer': 'Agent answer',\n 'search.agentAnswerHint': 'Grounded in the recalled evidence below',\n 'search.startTitle': 'Start with a focused question',\n 'search.startText': 'A focused entity, decision, or timeline is more reliable than loading the whole database.',\n 'search.emptyTitle': 'No matches',\n 'search.emptyText': 'Try a more specific entity, decision, or timeline keyword.',\n 'search.results': 'Raw recalled evidence',\n 'search.related': 'Related memories',\n 'search.closeRelated': 'Close related memories',\n 'search.traversing': 'Traversing the graph…',\n 'search.noRelated': 'No related nodes found within two hops.',\n 'entities.title': 'Entity Explorer',\n 'entities.description': 'Query Mnemon directly for an entity\\'s facts, decisions, and context.',\n 'entities.count': '{count} active entities',\n 'entities.nameAria': 'Entity name',\n 'entities.placeholder': 'Enter any entity…',\n 'entities.action': 'Explore',\n 'entities.top': 'Top entities',\n 'entities.frequency': 'By frequency',\n 'entities.emptyRail': 'Entities appear here after memories with entity metadata are stored.',\n 'entities.loading': 'Recalling entity relations…',\n 'entities.selectTitle': 'Select or enter an entity',\n 'entities.selectText': 'The entity view aggregates related memories instead of relying on literal matching.',\n 'entities.emptyTitle': 'No related memories',\n 'entities.emptyText': 'Try the full name or another entity alias.',\n 'remember.title': 'Distill Memory',\n 'remember.description': 'An isolated memory subagent selects a Memory Space, checks duplicates, distills the candidate, and completes the write without filling the main conversation context.',\n 'remember.worker': 'Memory subagent',\n 'remember.readOnlyTitle': 'Read-only mode',\n 'remember.readOnlyText': 'This deployment disables memory writes. Change and save the DSH Mnemon configuration to enable them.',\n 'remember.flowTitle': 'What the memory subagent does',\n 'remember.routeTitle': 'Choose ownership',\n 'remember.routeText': 'Select an existing Memory Space or recognize a durable new scope',\n 'remember.dedupeTitle': 'Search and deduplicate',\n 'remember.dedupeText': 'Identify duplicates, additions, or conflicts with existing memories',\n 'remember.writeTitle': 'Write structured memory',\n 'remember.writeText': 'Distill content and metadata, create useful relations, and return a receipt',\n 'remember.flowText': 'The subagent only receives Mnemon tools, keeping the raw directory and retrieval process out of the main context.',\n 'remember.delegateTitle': 'Send to memory subagent',\n 'remember.noSession': 'No live session',\n 'remember.ready': 'Subagent ready',\n 'remember.candidate': 'Candidate',\n 'remember.candidateAria': 'Memory candidate',\n 'remember.placeholder': 'Enter background, preferences, decisions, or insights worth retaining across tasks. The model decides whether they qualify.',\n 'remember.sessionHint': 'This view is not bound to a live session, so it cannot start a memory subagent.',\n 'remember.processing': 'Memory subagent is working…',\n 'remember.action': 'Evaluate and distill',\n 'remember.advanced': 'Advanced human constraints',\n 'remember.advancedHint': 'Constrain the target Memory Space and metadata',\n 'remember.expand': 'Expand',\n 'remember.target': 'Target Memory Space',\n 'remember.entities': 'Entities (comma-separated)',\n 'remember.tags': 'Tags (comma-separated)',\n 'remember.advancedText': 'Advanced options constrain the subagent; they do not bypass supervision or duplicate checks.',\n 'remember.saving': 'Subagent is writing…',\n 'remember.advancedAction': 'Distill with constraints',\n 'remember.skipped': 'The memory subagent decided not to write',\n 'remember.completed': 'The memory subagent completed processing',\n 'remember.processed': 'Memory subagent processed: {action}',\n 'remember.dispatchFailed': 'Dispatch failed: {error}',\n 'remember.saveFailed': 'Save failed: {error}',\n 'content.title': 'Memory Content',\n 'content.description': 'Browse active Memory Spaces without recall side effects. Every item identifies its owning space and remains maintainable.',\n 'content.count': '{count} memories',\n 'content.filterAria': 'Filter memory content',\n 'content.filterPlaceholder': 'Filter by content or exact ID…',\n 'content.categoryAria': 'Memory category',\n 'content.apply': 'Apply filters',\n 'content.notice': 'The list reads active graph snapshots without increasing recall access counts.',\n 'content.showing': 'Showing {visible} / {total}',\n 'content.showMore': 'Show {count} more',\n 'content.emptyTitle': 'No matching memories',\n 'content.emptyText': 'Clear the filters or distill the first durable memory.',\n 'status.title': 'System Status',\n 'status.description': 'Mnemon engine, Memory Space directory, and subagent orchestration. DSH deployment owns connection configuration.',\n 'status.nominal': 'System nominal',\n 'status.checkRequired': 'Check required',\n 'status.rechecking': 'Checking…',\n 'status.recheck': 'Check again',\n 'status.aria': 'Mnemon runtime status',\n 'status.engine': 'Memory engine',\n 'status.engineConnected': 'Mnemon connected',\n 'status.engineUnavailable': 'Mnemon unavailable',\n 'status.engineChecking': 'Checking the local engine',\n 'status.versionWaiting': 'Waiting for version',\n 'status.spaces': 'Memory Spaces',\n 'status.activeRatio': '{active} / {total} active',\n 'status.runtime': 'Runtime',\n 'status.runtimeRatio': '{user} user · {memory} project',\n 'status.runtimeBytes': '{bytes} used',\n 'status.runtimeWaiting': 'Waiting',\n 'status.runtimeWaitingDetail': 'Awaiting the Host storage inventory',\n 'status.directoryUnsynced': 'Directory not synchronized',\n 'status.activeMemories': '{count} active memories',\n 'status.documents': 'Project Documents',\n 'status.documentsWaiting': 'Waiting for workspace',\n 'status.documentsSession': 'Available after binding a live session',\n 'status.documentRatio': '{active} active · {archived} archived',\n 'status.documentUsage': '{used} / {limit} active capacity',\n 'status.router': 'Subagent router',\n 'status.routerReady': 'Memory subagent available',\n 'status.sessionMissing': 'No live session bound',\n 'status.routerChecking': 'Synchronizing session capabilities',\n 'status.orchestrationWaiting': 'Waiting for orchestration status',\n 'status.workerCounts': '{recalls} recalls · {answers} answers · {reviews} reviews · {documentArchives} document moves · {migrations} hot-memory archives · {writes} regular writes',\n 'status.workerSummary': '{recalls} recalls · {reviews} reviews · {writes} writes · {failures} failed',\n 'status.lifecycle': 'Subagent Lifecycle',\n 'status.lifecycleText': 'Pre-step adds only a short cue. Background activity is scored from user text, turns, completed tool calls, and tool diversity; after the gate and idle delay, one fork child reviews hot memory and substantial project documentation together.',\n 'status.phaseIdle': 'Idle',\n 'status.phaseSupervised': 'Supervised request',\n 'status.phaseError': 'Error',\n 'status.phaseReview': 'Background review',\n 'status.prime': 'Prime',\n 'status.primeText': 'Initialize routing state without reading the directory or memory',\n 'status.recallWorker': 'Recall worker',\n 'status.recallText': 'Pre-step only prompts a decision; the main model recalls on demand',\n 'status.recallOff': 'Automatic recall is disabled',\n 'status.writeWorker': 'Scored review',\n 'status.writeText': 'After activity reaches {threshold}, wait {seconds}s idle, fork the full checkpoint, and maintain hot memory or Documents only when justified',\n 'status.writeOff': 'Background review is disabled',\n 'status.latestPhase': 'Latest phase',\n 'status.latestActivity': 'Latest activity',\n 'status.reviewState': 'Review state',\n 'status.reviewPending': 'Score reached; waiting for idle',\n 'status.reviewRunning': 'Reviewing',\n 'status.reviewQualified': 'Score reached; waiting for turn completion',\n 'status.reviewAccumulating': 'Accumulating signals',\n 'status.reviewIdle': 'Accumulating signals',\n 'status.activityScore': 'Activity score',\n 'status.activitySignals': 'Accumulated signals',\n 'status.activitySignalValues': '{chars} chars · {turns} turns · {tools} tool calls · {unique} tools',\n 'status.lastReview': 'Last review',\n 'status.noReview': 'Not run yet',\n 'status.reviewAt': '{time} · {action} · trigger score {score}',\n 'status.supervisedRequests': 'Supervised requests',\n 'status.workerFailures': 'Subagent failures',\n 'status.reviewDocuments': 'Documents in last review',\n 'status.noActivity': 'No activity yet',\n 'status.quickDiagnostics': 'Quick Diagnostics',\n 'status.cliExecutable': 'Mnemon CLI executable',\n 'status.cliMissing': 'Mnemon CLI not found',\n 'status.readingSpaces': '{count} Memory Spaces participate in reads',\n 'status.directoryWaiting': 'Memory Space directory is waiting for Host synchronization',\n 'status.webAgentReady': 'WebUI can start isolated memory subagents',\n 'status.liveSessionMissing': 'Live session missing',\n 'status.lifecycleFailures': '{count} lifecycle failures',\n 'status.documentsUnavailable': 'Document directory unavailable for this session',\n 'status.documentsHealthy': '{count} active document(s) available for near-field search',\n 'status.nativeAccess': 'Native commands',\n 'status.nativeAccessText': 'Models use native mnemon_* tools. Human commands still use supervised routing.',\n 'status.engineStorage': 'Engine and Storage',\n 'status.online': 'Online',\n 'status.offline': 'Offline',\n 'status.mnemonVersion': 'Mnemon version',\n 'status.directory': 'Memory Space directory',\n 'status.activeDbSize': 'Active database size',\n 'status.activeCount': 'Active',\n 'status.activeGraphEdges': 'Active graph edges',\n 'status.documentDirectory': 'Project Documents directory',\n 'status.activeDocuments': 'Active Documents',\n 'status.coldDocuments': 'Archives',\n 'status.documentCapacity': 'Active document capacity',\n 'status.storageDomains': 'Storage Domains',\n 'status.storageDomainsText': 'The current selection is the shared directory boundary for runtime memory, Memory Spaces, project Documents, and background state.',\n 'status.storageBrowseOnly': 'Browsing does not switch writes',\n 'status.storageScopeAria': 'Select a storage domain to inspect',\n 'status.storageGlobal': 'Global',\n 'status.storageWorkspace': 'Workspace',\n 'status.storageCustom': 'Custom',\n 'status.storageCurrent': 'Current read/write',\n 'status.storageWaiting': 'Reading storage-domain directories…',\n 'status.storageCustomUnset': 'No custom directory is configured. This view exposes only a custom root already configured and active in DSH.',\n 'status.storageWorkspaceUnavailable': 'The current session has no available workspace directory.',\n 'status.storageActiveRoot': 'Current read/write root',\n 'status.storageViewedRoot': 'Viewed root',\n 'status.storageAvailable': 'Directory available',\n 'status.storageNotCreated': 'Directory not created',\n 'status.storageRuntime': 'Runtime Memory',\n 'status.storageBodies': 'Memory Spaces',\n 'status.storageDocuments': 'Project Documents',\n 'status.storageState': 'Background State',\n 'status.storageReady': 'Ready',\n 'status.storageEmpty': 'Empty',\n 'status.storageMissing': 'Not created',\n 'status.storageInvalid': 'Repair needed',\n 'status.storageItems': 'items',\n 'status.storageRuntimeDetail': 'USER {user} · MEMORY {memory}',\n 'status.storageBodiesDetail': '{active} active · {databases} databases',\n 'status.storageDocumentsDetail': '{active} active · {archived} archived',\n 'status.storageStateReady': 'Review watermarks are persisted',\n 'status.storageStateVolatile': 'Review state is currently owned by the Host process',\n 'status.storageFootnote': 'Current read/write root: {root}. Change the scope only in DSH Settings → Memory System; it applies live after Save and never auto-migrates, merges, or deletes old content.',\n 'status.flowTitle': 'Memory System Flow',\n 'status.flowDescription': 'Maps the real execution boundaries across per-turn injection, deterministic file control, semantic workers, the CLI data plane, archive, and fork review.',\n 'status.flowLive': 'Live state',\n 'status.flowDegraded': 'Partially unavailable',\n 'status.flowConversation': 'User / Current Task',\n 'status.flowTurns': 'Current-turn input and tool trace',\n 'status.flowSupervisor': 'Root Agent',\n 'status.flowEntries': '{count} hot-memory entries',\n 'status.flowDocuments': '{active} active · {archived} archived',\n 'status.flowContext': 'Evidence / Receipts',\n 'status.flowContextDetail': 'Structured results return to the task',\n 'status.flowReadWrite': 'Deterministic Host path',\n 'status.flowArchive': 'LLM-supervised path',\n 'status.flowCurrentScope': 'Current scope: {scope}',\n 'status.flowLaneContext': 'Per-turn Context',\n 'status.flowLaneContextDetail': 'Runtime is injected every turn; Documents are searched on demand',\n 'status.flowLaneSemantic': 'On-demand Semantic Operations',\n 'status.flowLaneSemanticDetail': 'An isolated worker decides; Host services execute',\n 'status.flowLaneMaintenance': 'Idle Maintenance and Archive',\n 'status.flowLaneMaintenanceDetail': 'Fork review plus index-before-move archival',\n 'status.flowRuntimeMeta': 'USER.md + MEMORY.md · {count} entries',\n 'status.flowPromptAssembly': 'every-turn prompt assembly',\n 'status.flowDocumentSearch': 'Deterministic Document Search',\n 'status.flowOnDemand': 'on demand; no full-content injection',\n 'status.flowRootMeta': 'routes tools; never opens SQLite directly',\n 'status.flowStructuredReturn': 'structured evidence / receipt',\n 'status.flowEvidenceMeta': 'returns to the Root Agent with sources',\n 'status.flowSemanticRequest': 'recall · write · related',\n 'status.flowSpawnWorker': 'spawn Isolated Worker',\n 'status.flowSpawnMeta': 'semantic judgment · minimal tool allowlist',\n 'status.flowService': 'MnemonService',\n 'status.flowServiceMeta': 'validate · normalize · aggregate',\n 'status.flowRunnerCli': 'Runner → Local CLI',\n 'status.flowRunnerCliMeta': 'timeout / cancel / JSON process boundary',\n 'status.flowHostBridge': 'Mnemon Host Bridge',\n 'status.flowHostBridgeMeta': 'Service → Runner → local CLI',\n 'status.flowSpacesMeta': '{active}/{total} active · {insights} memories',\n 'status.flowDeterministicWrites': 'Ordinary Runtime and Document Changes',\n 'status.flowDeterministicWritesMeta': 'add / replace / remove · create / update',\n 'status.flowControlPlane': 'Deterministic Host Control',\n 'status.flowControlPlaneMeta': 'locks · atomic writes · revision · capacity',\n 'status.flowReviewGate': 'Activity Score and Idle Gate',\n 'status.flowReviewGateMeta': '{score}/{threshold} · idle {seconds}s',\n 'status.flowForkReview': 'fork Completed Checkpoint',\n 'status.flowForkReviewMeta': '{state} · Runtime / Document maintenance only',\n 'status.flowReviewTargets': 'Runtime / active Document',\n 'status.flowReviewTargetsMeta': 'conservative upkeep · a new turn cancels review',\n 'status.flowColdArchive': 'spawn Archive Worker',\n 'status.flowColdArchiveMeta': 'capacity maintenance / manual archive',\n 'status.flowIndexFirst': '1 · write / verify the Mnemon cold index',\n 'status.flowRevisionMove': '2 · move the original after revision fence',\n 'status.flowRevisionMoveMeta': '{archived} archived · failure or conflict keeps active content',\n 'status.flowArchivedDocuments': 'Archived Documents',\n 'status.flowRecent': 'Recent activity',\n 'status.flowRunning': 'Running',\n 'status.flowPending': 'Waiting for idle',\n 'status.flowStatic': 'Execution boundary',\n 'status.flowLegendReady': 'Available / ready',\n 'status.flowLegendRecent': 'Current or recent path',\n 'status.flowLegendBoundary': 'Dashed lines mark LLM judgment boundaries',\n 'config.aria': 'Mnemon memory system configuration',\n 'config.tab': 'Mnemon',\n 'config.title': 'Memory system settings',\n 'config.description': 'Configure runtime memory, project Documents, Memory Spaces, and the DSH interface together. Changes apply immediately after Save.',\n 'config.unsaved': 'Unsaved changes',\n 'config.ready': 'Saved and applied live',\n 'config.noticeBefore': 'Configuration is written to',\n 'config.noticeAfter': '. All settings apply live after Save. Switching scopes never migrates existing content automatically.',\n 'config.displayTitle': 'Display mode',\n 'config.displayDescription': 'Choose where the memory system appears in DSH Web. Switching modes applies immediately.',\n 'config.displayAria': 'Memory system display mode',\n 'config.displaySidebar': 'Sidebar',\n 'config.displaySidebarHint': 'Dedicated workspace in the sidebar',\n 'config.displayBuildin': 'Buildin',\n 'config.displayBuildinHint': 'Built-in tab in the conversation area',\n 'config.storageTitle': 'Storage location',\n 'config.storageDescription': 'Choose where Mnemon keeps runtime memory, project Documents, and Memory Spaces. Save atomically switches the active root.',\n 'config.scope': 'Storage scope',\n 'config.scopeHint': 'Global is shared across workspaces; Workspace is isolated by the current DSH session; Custom uses the directory below.',\n 'config.scopeAria': 'Mnemon storage scope',\n 'config.global': 'Global',\n 'config.workspace': 'Workspace',\n 'config.custom': 'Custom',\n 'config.customHintShort': 'Enter one directory',\n 'config.customSelected': 'Directory entered',\n 'config.customPack': 'Custom Pack',\n 'config.customPackAria': 'Select a custom Mnemon Pack',\n 'config.customPackRequired': 'Select or add a custom Pack.',\n 'config.customDefaultName': 'Custom Pack',\n 'config.noCustomPacks': 'No Packs configured',\n 'config.addPack': 'Add Pack',\n 'config.cancelAddPack': 'Cancel adding',\n 'config.removePack': 'Remove',\n 'config.customPackNameAria': 'New Pack name',\n 'config.customPackNamePlaceholder': 'For example: Project memory',\n 'config.newPackDirectoryAria': 'New Pack data directory',\n 'config.confirmAddPack': 'Add to list',\n 'config.customDirectory': 'Custom directory',\n 'config.customHint': 'The complete Mnemon data domain lives here.',\n 'config.customAria': 'Mnemon custom data directory',\n 'config.customDirectoryHint': 'Enter a directory path on the DSH Host; only this one directory is stored.',\n 'config.customPlaceholder': 'For example: /data/mnemon or ~/mnemon',\n 'config.invalidScope': 'The storage scope is invalid.',\n 'config.customRequired': 'A data directory is required for custom storage.',\n 'config.customAbsolute': 'The custom directory must be absolute or start with ~/. Windows drive and UNC paths are supported.',\n 'config.saveFailed': 'Save failed: {error}',\n 'config.readOnly': 'Plugin settings are read-only in this deployment.',\n 'config.discard': 'Discard changes',\n 'config.saving': 'Saving…',\n 'config.save': 'Save',\n 'config.overridden': 'Overridden',\n 'config.interactionTitle': 'Conversation interface',\n 'config.interactionLive': 'Live',\n 'config.interactionHint': 'Changes apply live after saving. Disabling an item restores DSH\\'s native presentation.',\n 'config.interactionToolviews': 'Memory tool cards',\n 'config.interactionToolviewsHint': 'Show status and summaries for mnemon_* tools',\n 'config.interactionTurnBar': 'Turn memory bar',\n 'config.interactionTurnBarHint': 'Show recall, write, and search activity below each turn',\n 'config.interactionSaveAction': 'Save to memory action',\n 'config.interactionSaveActionHint': 'Add supervised memory distillation beside finalized replies',\n 'config.interactionOn': 'Enabled',\n 'config.packTitle': 'Backup and migration',\n 'config.packDescription': 'Export or import the complete effective directory. Imports always target the location shown below.',\n 'config.packActiveTarget': 'Active directory',\n 'config.packTargetLoading': 'Loading the running target…',\n 'config.packUnavailable': 'This DSH host does not provide the Mnemon ZIP backup channel.',\n 'config.packFull': 'Complete Pack',\n 'config.packFullHint': 'Runtime, Documents, and Memory Spaces',\n 'config.packRuntime': 'Runtime',\n 'config.packRuntimeHint': 'Hot memory and USER / MEMORY projections',\n 'config.packDocuments': 'Documents',\n 'config.packDocumentsHint': 'Project documents, archive, and index',\n 'config.packMemorySpaces': 'Memory Spaces',\n 'config.packMemorySpacesHint': 'Catalog and mnemon.db databases',\n 'config.packExport': 'Export',\n 'config.packImport': 'Import',\n 'config.packExporting': 'Exporting…',\n 'config.packInspecting': 'Inspecting…',\n 'config.packImporting': 'Importing…',\n 'config.packChooseFile': 'Choose a {component} file',\n 'config.packFormatHint': 'Uses .mnemonpack throughout (ZIP + manifest + SHA-256). Each Memory Space remains a separate mnemon.db inside the Pack.',\n 'config.packPreviewEyebrow': 'Import preview',\n 'config.packUnnamed': 'Unnamed Mnemon Pack',\n 'config.packSource': 'Source',\n 'config.packDestination': 'Import into',\n 'config.packArchiveSize': 'Archive / expanded',\n 'config.packComponents': 'Components to import',\n 'config.packComponentSummary': '{items} items · {files} files · {size}',\n 'config.packHasData': 'Target has data',\n 'config.packMerge': 'Safe merge (recommended)',\n 'config.packMergeHint': 'Keeps existing data; conflicting items are deduplicated or assigned new IDs.',\n 'config.packMergeAction': 'Merge import',\n 'config.packReplace': 'Replace current components?',\n 'config.packReplaceHint': 'Selected components are atomically replaced by the Pack; other components are unchanged.',\n 'config.packReplaceAction': 'Replace import…',\n 'config.packConfirmReplace': 'Confirm replace',\n 'config.packComponentMissing': 'This Pack does not contain the selected component.',\n 'config.packExported': 'Exported {file} ({size}).',\n 'config.packImported': 'Imported {components} into {root}.',\n 'config.packFailed': 'ZIP operation failed: {error}',\n 'config.packSimpleDescription': 'Export the complete effective directory as one ZIP, or safely merge-restore it from a ZIP.',\n 'config.packWholeZip': 'Current directory ZIP',\n 'config.packWholeZipHint': 'Includes Runtime, Documents, and every Memory Space.',\n 'config.packImportZip': 'Import ZIP',\n 'config.packExportZip': 'Export ZIP',\n 'config.packChooseZip': 'Choose a Mnemon backup ZIP',\n 'config.packUnnamedZip': 'Mnemon backup.zip',\n 'config.packZipReady': 'Verified · {components} components · {items} items · {size}',\n 'config.packImportZipAction': 'Safe import',\n 'config.packImportedWhole': 'Safely merged the ZIP into {root}.',\n} satisfies Record<MnemonKey, string>\n\nexport type MnemonTranslate = (key: MnemonKey, params?: Record<string, unknown>) => string\n\nfunction interpolate(dictionary: Record<MnemonKey, string>, key: MnemonKey, params?: Record<string, unknown>): string {\n const template = dictionary[key]\n if (params === undefined) return template\n return template.replace(/\\{(\\w+)\\}/g, (match, name: string) => name in params ? String(params[name]) : match)\n}\n\nexport function translateZh(key: MnemonKey, params?: Record<string, unknown>): string {\n return interpolate(zh, key, params)\n}\n\nexport function translateEn(key: MnemonKey, params?: Record<string, unknown>): string {\n return interpolate(en, key, params)\n}\n","import type { HostConnectionHandle, HostRpcHandler, RpcResult } from './contracts.ts'\nimport type { MnemonLifecycle } from './lifecycle.ts'\nimport type { RuntimeMemoryController, RuntimeMemoryImportance, RuntimeMemoryTarget } from './runtime-memory.ts'\nimport type { Category, EdgeType, Intent, MnemonService, SearchRequest, Source } from './service.ts'\nimport type { StorageScopeInspector } from './storage-scope.ts'\nimport type { MnemonPackManager } from './pack.ts'\nimport type { LiveMnemonRuntime, MnemonRuntimeGraph } from './live-runtime.ts'\n\ntype RuntimeInput = MnemonService | LiveMnemonRuntime\n\nfunction isRoutedRuntime(value: RuntimeInput): value is LiveMnemonRuntime {\n return 'route' in value && typeof value.route === 'function'\n}\n\nfunction requestedScope(payload: Record<string, unknown>): { workspaceId?: string; sessionId?: string } {\n const workspaceId = payload.workspaceId === undefined ? undefined : String(payload.workspaceId).trim()\n const sessionId = payload.sessionId === undefined ? undefined : String(payload.sessionId).trim()\n return {\n ...(workspaceId === undefined || workspaceId === '' ? {} : { workspaceId }),\n ...(sessionId === undefined || sessionId === '' ? {} : { sessionId }),\n }\n}\n\nfunction runtimeFor(\n input: RuntimeInput,\n payload: Record<string, unknown>,\n runtimeMemory?: RuntimeMemoryController,\n storage?: StorageScopeInspector,\n): {\n graph: Pick<MnemonRuntimeGraph, 'service' | 'runtimeMemory' | 'documents' | 'storage' | 'packs'>\n route?: ReturnType<LiveMnemonRuntime['route']>\n explicitWorkspace: boolean\n} {\n if (isRoutedRuntime(input)) {\n const scope = requestedScope(payload)\n const route = input.route(scope)\n return { graph: route.graph, route, explicitWorkspace: scope.workspaceId !== undefined && route.graph.config.storageScope === 'workspace' }\n }\n return {\n graph: {\n service: input,\n runtimeMemory: runtimeMemory as RuntimeMemoryController,\n documents: undefined as never,\n storage: storage as StorageScopeInspector,\n packs: undefined as never,\n },\n explicitWorkspace: false,\n }\n}\n\nfunction requireAligned(route: ReturnType<LiveMnemonRuntime['route']> | undefined): void {\n if (route?.aligned === false) throw new Error('the selected memory workspace differs from the current session; align the workbench before running an Agent-backed operation')\n}\n\nexport const MNEMON_READ_CHANNEL = '/dsh-mnemon-read'\nexport const MNEMON_WRITE_CHANNEL = '/dsh-mnemon-write'\nexport const MNEMON_PACK_CHANNEL = '/dsh-mnemon-pack'\n\nfunction object(value: unknown): Record<string, unknown> {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) throw new Error('payload must be an object')\n return value as Record<string, unknown>\n}\n\nfunction success(value: unknown): RpcResult<unknown> {\n return { ok: true, value }\n}\n\nfunction failure(error: unknown): RpcResult<unknown> {\n return {\n ok: false,\n error: {\n code: 'internal',\n message: error instanceof Error ? error.message : String(error),\n details: {},\n },\n }\n}\n\nfunction badRequest(message: string): RpcResult<unknown> {\n return { ok: false, error: { code: 'bad-request', message, details: { issues: [] } } }\n}\n\nexport function createReadHandler(input: RuntimeInput, lifecycle?: MnemonLifecycle, runtimeMemory?: RuntimeMemoryController, storage?: StorageScopeInspector): HostRpcHandler {\n return async (endpoint, rawPayload) => {\n try {\n const payload = object(rawPayload)\n const resolved = runtimeFor(input, payload, runtimeMemory, storage)\n const { service } = resolved.graph\n const selectedWorkspace = resolved.route?.selectedWorkspace\n const documentController = resolved.explicitWorkspace && selectedWorkspace !== undefined\n ? resolved.graph.documents.forWorkspace(selectedWorkspace.path)\n : undefined\n switch (endpoint) {\n case 'runtime-memory':\n if (resolved.graph.runtimeMemory === undefined) throw new Error('runtime memory is unavailable')\n return success(resolved.graph.runtimeMemory.snapshot())\n case 'status':\n {\n const sessionId = payload.sessionId === undefined ? '' : String(payload.sessionId).trim()\n let documents\n if (documentController !== undefined) {\n try { documents = documentController.snapshot() } catch {}\n } else if (lifecycle !== undefined && sessionId !== '') {\n try { documents = lifecycle.documents(sessionId) } catch {}\n }\n return success({\n ...await service.status(),\n ...(lifecycle === undefined ? {} : {\n lifecycle: lifecycle.snapshot(payload.sessionId === undefined ? undefined : String(payload.sessionId)),\n }),\n ...(documents === undefined ? {} : { documents }),\n ...(resolved.graph.storage === undefined ? {} : { storage: resolved.graph.storage.catalog(selectedWorkspace?.path ?? lifecycle?.workspaceRoot(sessionId)) }),\n ...(resolved.route === undefined ? {} : {\n workspaceContext: {\n mode: service.config.storageScope,\n selectedRoot: resolved.route.selectedRoot,\n effectiveRoot: resolved.route.effectiveRoot,\n aligned: resolved.route.aligned,\n ...(resolved.route.selectedWorkspace === undefined ? {} : { selectedWorkspace: resolved.route.selectedWorkspace }),\n ...(resolved.route.effectiveWorkspace === undefined ? {} : { effectiveWorkspace: resolved.route.effectiveWorkspace }),\n },\n }),\n })\n }\n case 'documents':\n if (documentController !== undefined) return success(documentController.snapshot())\n if (lifecycle === undefined) throw new Error('Mnemon Documents require lifecycle integration')\n return success(lifecycle.documents(String(payload.sessionId ?? '')))\n case 'document':\n if (documentController !== undefined) return success(documentController.get(String(payload.id ?? '')))\n if (lifecycle === undefined) throw new Error('Mnemon Documents require lifecycle integration')\n return success(lifecycle.document(String(payload.sessionId ?? ''), String(payload.id ?? '')))\n case 'document-search':\n if (documentController !== undefined) return success(await documentController.search(\n String(payload.query ?? ''),\n { includeArchived: payload.includeArchived === true, ...(payload.limit === undefined ? {} : { limit: Number(payload.limit) }) },\n ))\n if (lifecycle === undefined) throw new Error('Mnemon Documents require lifecycle integration')\n return success(await lifecycle.searchDocuments(\n String(payload.sessionId ?? ''),\n String(payload.query ?? ''),\n payload.includeArchived === true,\n payload.limit === undefined ? undefined : Number(payload.limit),\n ))\n case 'graph':\n return success(await service.graph(undefined, Array.isArray(payload.memoryBodyIds) ? payload.memoryBodyIds.map(String) : undefined))\n case 'bodies':\n return success(await service.bodies())\n case 'list':\n return success(await service.list({\n ...(payload.query === undefined ? {} : { query: String(payload.query) }),\n ...(payload.category === undefined ? {} : { category: payload.category as Category }),\n ...(payload.limit === undefined ? {} : { limit: Number(payload.limit) }),\n ...(Array.isArray(payload.memoryBodyIds) ? { memoryBodyIds: payload.memoryBodyIds.map(String) } : {}),\n }))\n case 'entities':\n {\n const entity = payload.entity === undefined ? '' : String(payload.entity).trim()\n const limit = payload.limit === undefined ? undefined : Number(payload.limit)\n return success(await service.entities(entity || undefined, limit))\n }\n case 'search':\n {\n const request = {\n query: String(payload.query ?? ''),\n ...(payload.mode === undefined ? {} : { mode: payload.mode as NonNullable<SearchRequest['mode']> }),\n ...(payload.limit === undefined ? {} : { limit: Number(payload.limit) }),\n ...(payload.category === undefined ? {} : { category: payload.category as Category }),\n ...(payload.source === undefined ? {} : { source: payload.source as Source }),\n ...(payload.intent === undefined ? {} : { intent: payload.intent as Intent }),\n ...(Array.isArray(payload.memoryBodyIds) ? { memoryBodyIds: payload.memoryBodyIds.map(String) } : {}),\n }\n return success(await service.search(request))\n }\n case 'agent-search':\n {\n if (lifecycle === undefined) throw new Error('Mnemon Agent query is unavailable without lifecycle integration')\n const request = {\n query: String(payload.query ?? ''),\n ...(payload.mode === undefined ? {} : { mode: payload.mode as NonNullable<SearchRequest['mode']> }),\n ...(payload.limit === undefined ? {} : { limit: Number(payload.limit) }),\n ...(payload.category === undefined ? {} : { category: payload.category as Category }),\n ...(payload.source === undefined ? {} : { source: payload.source as Source }),\n ...(payload.intent === undefined ? {} : { intent: payload.intent as Intent }),\n ...(Array.isArray(payload.memoryBodyIds) ? { memoryBodyIds: payload.memoryBodyIds.map(String) } : {}),\n }\n const recalled = await service.search(request)\n const answer = await lifecycle.answer(String(payload.sessionId ?? ''), request.query, recalled.results)\n return success({ ...recalled, ...answer })\n }\n case 'related':\n return success(await service.related(String(payload.id ?? ''), payload.depth === undefined ? 2 : Number(payload.depth), payload.edge as EdgeType | undefined, undefined, payload.memoryBodyId === undefined ? undefined : String(payload.memoryBodyId)))\n case 'turn-activities':\n if (lifecycle === undefined) throw new Error('Mnemon turn activity requires lifecycle integration')\n return success(lifecycle.turnActivities(String(payload.sessionId ?? '')))\n case 'turn-activity':\n if (lifecycle === undefined) throw new Error('Mnemon turn activity requires lifecycle integration')\n {\n const snapshot = lifecycle.turnActivities(String(payload.sessionId ?? ''))\n return success(snapshot.activities.find(activity => activity.turn === Number(payload.turn)) ?? null)\n }\n case 'assistant-message':\n if (lifecycle === undefined) throw new Error('Mnemon assistant message requires lifecycle integration')\n return success(lifecycle.assistantMessage(String(payload.sessionId ?? ''), String(payload.messageId ?? '')))\n default:\n return badRequest(`unknown read endpoint: ${endpoint}`)\n }\n } catch (error) {\n return failure(error)\n }\n }\n}\n\nexport function createWriteHandler(input: RuntimeInput, lifecycle?: MnemonLifecycle, runtimeMemory?: RuntimeMemoryController): HostRpcHandler {\n return async (endpoint, rawPayload) => {\n try {\n const payload = object(rawPayload)\n const resolved = runtimeFor(input, payload, runtimeMemory)\n const { service } = resolved.graph\n if (!service.config.writeEnabled) throw new Error('dsh-mnemon is configured read-only (writeEnabled: false)')\n const selectedWorkspace = resolved.route?.selectedWorkspace\n const documentController = resolved.explicitWorkspace && selectedWorkspace !== undefined\n ? resolved.graph.documents.forWorkspace(selectedWorkspace.path)\n : undefined\n const inspectionDiverged = resolved.explicitWorkspace && resolved.route?.aligned === false\n const alignedSession = resolved.explicitWorkspace && resolved.route?.aligned === true && resolved.route.effectiveWorkspace !== undefined\n switch (endpoint) {\n case 'runtime-memory':\n if (resolved.graph.runtimeMemory === undefined) throw new Error('runtime memory is unavailable')\n {\n const request = {\n action: String(payload.action ?? '') as 'add' | 'replace' | 'remove',\n target: String(payload.target ?? '') as RuntimeMemoryTarget,\n ...(payload.content === undefined ? {} : { content: String(payload.content) }),\n ...(payload.old_text === undefined ? {} : { oldText: String(payload.old_text) }),\n ...(payload.importance === undefined ? {} : { importance: String(payload.importance) as RuntimeMemoryImportance }),\n }\n const sessionId = String(payload.sessionId ?? '').trim()\n return success(inspectionDiverged || lifecycle === undefined || sessionId === '' || (resolved.explicitWorkspace && !alignedSession)\n ? await resolved.graph.runtimeMemory.mutate(request)\n : await lifecycle.runtime(sessionId, request))\n }\n case 'supervise':\n if (lifecycle === undefined) throw new Error('Mnemon lifecycle integration is unavailable')\n requireAligned(resolved.route)\n return success(await lifecycle.supervise(\n String(payload.sessionId ?? ''),\n String(payload.content ?? ''),\n payload.idempotencyKey === undefined ? undefined : String(payload.idempotencyKey),\n ))\n case 'document':\n {\n const action = String(payload.action ?? '')\n const sessionId = String(payload.sessionId ?? '')\n if (documentController !== undefined && action !== 'archive' && (!alignedSession || lifecycle === undefined)) {\n const sessionIds = resolved.route?.aligned === true && sessionId.trim() !== '' ? [sessionId] : []\n if (action === 'create') return success(await documentController.mutate({\n action: 'create',\n title: String(payload.title ?? ''),\n content: String(payload.content ?? ''),\n ...(payload.description === undefined ? {} : { description: String(payload.description) }),\n ...(Array.isArray(payload.sourcePaths) ? { sourcePaths: payload.sourcePaths.map(String) } : {}),\n sessionIds,\n }))\n if (action === 'update') return success(await documentController.mutate({\n action: 'update',\n id: String(payload.id ?? ''),\n ...(payload.title === undefined ? {} : { title: String(payload.title) }),\n ...(payload.description === undefined ? {} : { description: String(payload.description) }),\n ...(payload.content === undefined ? {} : { content: String(payload.content) }),\n ...(Array.isArray(payload.sourcePaths) ? { sourcePaths: payload.sourcePaths.map(String) } : {}),\n sessionIds,\n }))\n }\n if (lifecycle === undefined) throw new Error('Mnemon Documents require lifecycle integration')\n if (resolved.explicitWorkspace) requireAligned(resolved.route)\n if (action === 'archive') return success(await lifecycle.archiveDocument(sessionId, String(payload.id ?? '')))\n if (action === 'create') return success(await lifecycle.mutateDocument(sessionId, {\n action: 'create',\n title: String(payload.title ?? ''),\n content: String(payload.content ?? ''),\n ...(payload.description === undefined ? {} : { description: String(payload.description) }),\n ...(Array.isArray(payload.sourcePaths) ? { sourcePaths: payload.sourcePaths.map(String) } : {}),\n sessionIds: [sessionId],\n }))\n if (action === 'update') return success(await lifecycle.mutateDocument(sessionId, {\n action: 'update',\n id: String(payload.id ?? ''),\n ...(payload.title === undefined ? {} : { title: String(payload.title) }),\n ...(payload.description === undefined ? {} : { description: String(payload.description) }),\n ...(payload.content === undefined ? {} : { content: String(payload.content) }),\n ...(Array.isArray(payload.sourcePaths) ? { sourcePaths: payload.sourcePaths.map(String) } : {}),\n sessionIds: [sessionId],\n }))\n return badRequest(`unknown document action: ${action}`)\n }\n case 'remember':\n {\n const request = {\n content: String(payload.content ?? ''),\n ...(payload.category === undefined ? {} : { category: payload.category as Category }),\n ...(payload.importance === undefined ? {} : { importance: Number(payload.importance) }),\n ...(Array.isArray(payload.tags) ? { tags: payload.tags.map(String) } : {}),\n ...(Array.isArray(payload.entities) ? { entities: payload.entities.map(String) } : {}),\n ...(payload.memoryBodyId === undefined ? {} : { memoryBodyId: String(payload.memoryBodyId) }),\n source: 'user',\n } as const\n return success(inspectionDiverged || lifecycle === undefined || (resolved.explicitWorkspace && !alignedSession)\n ? await service.remember(request)\n : await lifecycle.remember(String(payload.sessionId ?? ''), request))\n }\n case 'link':\n return success(inspectionDiverged || lifecycle === undefined || (resolved.explicitWorkspace && !alignedSession)\n ? await service.link(String(payload.sourceId ?? ''), String(payload.targetId ?? ''), payload.type as EdgeType | undefined, payload.weight === undefined ? 0.5 : Number(payload.weight), payload.reason === undefined ? undefined : String(payload.reason), undefined, payload.memoryBodyId === undefined ? undefined : String(payload.memoryBodyId))\n : await lifecycle.mutate(String(payload.sessionId ?? ''), 'link', payload))\n case 'forget':\n return success(inspectionDiverged || lifecycle === undefined || (resolved.explicitWorkspace && !alignedSession)\n ? await service.forget(String(payload.id ?? ''), undefined, payload.memoryBodyId === undefined ? undefined : String(payload.memoryBodyId))\n : await lifecycle.mutate(String(payload.sessionId ?? ''), 'forget', { id: String(payload.id ?? ''), ...(payload.memoryBodyId === undefined ? {} : { memoryBodyId: String(payload.memoryBodyId) }) }))\n case 'body-create':\n return success(await service.createBody({\n name: String(payload.name ?? ''),\n description: String(payload.description ?? ''),\n ...(payload.active === undefined ? {} : { active: Boolean(payload.active) }),\n }))\n case 'body-update':\n return success(service.updateBody(String(payload.memoryBodyId ?? ''), {\n ...(payload.name === undefined ? {} : { name: String(payload.name) }),\n ...(payload.description === undefined ? {} : { description: String(payload.description) }),\n ...(payload.active === undefined ? {} : { active: Boolean(payload.active) }),\n }))\n default:\n return badRequest(`unknown write endpoint: ${endpoint}`)\n }\n } catch (error) {\n return failure(error)\n }\n }\n}\n\n/** Backup payloads contain private memory and therefore remain loopback-only. */\nexport function createPackHandler(manager: MnemonPackManager, writeEnabled: boolean | (() => boolean) = true): HostRpcHandler {\n return async (endpoint, rawPayload) => {\n try {\n const payload = object(rawPayload)\n if (endpoint === 'target') return success(manager.target())\n if (endpoint === 'export') return success(await manager.exportPack('full'))\n if (endpoint === 'inspect') return success(manager.inspectPack(String(payload.base64 ?? ''), payload.fileName === undefined ? undefined : String(payload.fileName)))\n if (endpoint === 'import') {\n const writable = typeof writeEnabled === 'function' ? writeEnabled() : writeEnabled\n if (!writable) throw new Error('Mnemon Pack import is disabled while memory writes are read-only')\n return success(await manager.importPack(String(payload.base64 ?? ''), { mode: 'merge' }))\n }\n return badRequest(`unknown Pack endpoint: ${endpoint}`)\n } catch (error) {\n return failure(error)\n }\n }\n}\n\n/** Read operations are available to trusted Web hosts; local mutations stay loopback-only. */\nexport function registerRpc(connection: HostConnectionHandle, input: RuntimeInput, lifecycle?: MnemonLifecycle, runtimeMemory?: RuntimeMemoryController, storage?: StorageScopeInspector, packs?: MnemonPackManager): void {\n connection.rpc.handle(MNEMON_READ_CHANNEL, createReadHandler(input, lifecycle, runtimeMemory, storage), { authority: 'trusted-host' })\n connection.rpc.handle(MNEMON_WRITE_CHANNEL, createWriteHandler(input, lifecycle, runtimeMemory), { authority: 'loopback' })\n const packManager = isRoutedRuntime(input) ? input.packs : packs\n const config = input.config\n if (packManager !== undefined) connection.rpc.handle(MNEMON_PACK_CHANNEL, createPackHandler(packManager, () => config.writeEnabled), { authority: 'loopback' })\n}\n","import type { ClientConnectionHandle } from '../contracts.ts'\nimport { MNEMON_PACK_CHANNEL, MNEMON_READ_CHANNEL, MNEMON_WRITE_CHANNEL } from '../rpc.ts'\nimport type { MemoryBody } from '../memory-bodies.ts'\nimport type { DocumentMutation, DocumentMutationResult, DocumentSearchResult, DocumentSnapshot, DocumentView } from '../documents.ts'\nimport type { RuntimeMemoryImportance, RuntimeMemoryMutationResult, RuntimeMemorySnapshot, RuntimeMemoryTarget } from '../runtime-memory.ts'\nimport type { EntityView, Insight, MemoryBodyCatalog, MemoryGraphSnapshot, MemoryListRequest, MemoryListView, RememberRequest, SearchRequest, StatusView } from '../service.ts'\nimport type { AssistantMessageText, TurnMemoryActivity, TurnMemoryActivitySnapshot } from '../lifecycle.ts'\nimport type { MnemonPackExport, MnemonPackImportResult, MnemonPackPreview } from '../pack.ts'\n\ninterface TurnActivityCacheEntry {\n cursor: number\n activities: Map<number, TurnMemoryActivity>\n inFlight?: Promise<TurnMemoryActivitySnapshot>\n}\n\nconst turnActivityCache = new WeakMap<ClientConnectionHandle, Map<string, TurnActivityCacheEntry>>()\n\nasync function loadTurnActivities(connection: ClientConnectionHandle, sessionId: string | undefined, requiredCursor: number): Promise<TurnMemoryActivitySnapshot> {\n let sessions = turnActivityCache.get(connection)\n if (sessions === undefined) {\n sessions = new Map()\n turnActivityCache.set(connection, sessions)\n }\n const key = sessionId ?? ''\n let entry = sessions.get(key)\n if (entry === undefined) {\n entry = { cursor: -1, activities: new Map() }\n sessions.set(key, entry)\n }\n if (entry.cursor >= requiredCursor) return { cursor: entry.cursor, activities: [...entry.activities.values()] }\n if (entry.inFlight !== undefined) {\n const snapshot = await entry.inFlight\n return snapshot.cursor >= requiredCursor ? snapshot : loadTurnActivities(connection, sessionId, requiredCursor)\n }\n\n const request = connection.rpc.call(MNEMON_READ_CHANNEL, 'turn-activities', sessionId === undefined ? {} : { sessionId })\n .then(response => {\n if (!response.ok) throw new Error(response.error.message)\n const snapshot = response.value as TurnMemoryActivitySnapshot\n entry!.cursor = snapshot.cursor\n entry!.activities = new Map(snapshot.activities.map(activity => [activity.turn, activity]))\n return snapshot\n })\n .finally(() => { delete entry!.inFlight })\n entry.inFlight = request\n return request\n}\n\nexport interface SearchResponse {\n query: string\n mode: string\n results: Insight[]\n hint?: string\n}\n\nexport interface AgentSearchResponse extends SearchResponse {\n answer: string\n citations: string[]\n delegation: { runId: string; provider: string }\n}\n\nexport class MnemonClient {\n constructor(private readonly connection: ClientConnectionHandle, private readonly sessionId?: string, private readonly workspaceId?: string) {}\n\n private async call<T>(channel: string, endpoint: string, payload: unknown): Promise<T> {\n const response = await this.connection.rpc.call(channel, endpoint, payload)\n if (!response.ok) throw new Error(response.error.message)\n return response.value as T\n }\n\n private scoped<T extends object = Record<string, never>>(payload: T = {} as T): T & { sessionId?: string; workspaceId?: string } {\n return {\n ...payload,\n ...(this.sessionId === undefined ? {} : { sessionId: this.sessionId }),\n ...(this.workspaceId === undefined ? {} : { workspaceId: this.workspaceId }),\n }\n }\n\n status(): Promise<StatusView> {\n return this.call(MNEMON_READ_CHANNEL, 'status', this.scoped())\n }\n\n runtimeMemory(): Promise<RuntimeMemorySnapshot> {\n return this.call(MNEMON_READ_CHANNEL, 'runtime-memory', this.scoped())\n }\n\n mutateRuntimeMemory(request: {\n action: 'add' | 'replace' | 'remove'\n target: RuntimeMemoryTarget\n content?: string\n old_text?: string\n importance?: RuntimeMemoryImportance\n }): Promise<RuntimeMemoryMutationResult> {\n return this.call(MNEMON_WRITE_CHANNEL, 'runtime-memory', this.scoped(request))\n }\n\n documents(): Promise<DocumentSnapshot> {\n return this.call(MNEMON_READ_CHANNEL, 'documents', this.scoped())\n }\n\n document(id: string): Promise<DocumentView> {\n return this.call(MNEMON_READ_CHANNEL, 'document', this.scoped({ id }))\n }\n\n searchDocuments(query: string, includeArchived = false, limit = 50): Promise<DocumentSearchResult> {\n return this.call(MNEMON_READ_CHANNEL, 'document-search', this.scoped({ query, includeArchived, limit }))\n }\n\n mutateDocument(request: DocumentMutation): Promise<DocumentMutationResult> {\n return this.call(MNEMON_WRITE_CHANNEL, 'document', this.scoped(request))\n }\n\n archiveDocument(id: string): Promise<DocumentMutationResult> {\n return this.call(MNEMON_WRITE_CHANNEL, 'document', this.scoped({ action: 'archive', id }))\n }\n\n bodies(): Promise<MemoryBodyCatalog> {\n return this.call(MNEMON_READ_CHANNEL, 'bodies', this.scoped())\n }\n\n graph(memoryBodyIds?: string[]): Promise<MemoryGraphSnapshot> {\n return this.call(MNEMON_READ_CHANNEL, 'graph', this.scoped(memoryBodyIds === undefined ? {} : { memoryBodyIds }))\n }\n\n list(request: MemoryListRequest = {}): Promise<MemoryListView> {\n return this.call(MNEMON_READ_CHANNEL, 'list', this.scoped(request))\n }\n\n entities(entity?: string, limit?: number): Promise<EntityView> {\n return this.call(MNEMON_READ_CHANNEL, 'entities', this.scoped({\n ...(entity === undefined ? {} : { entity }),\n ...(limit === undefined ? {} : { limit }),\n }))\n }\n\n search(request: SearchRequest): Promise<SearchResponse> {\n return this.call(MNEMON_READ_CHANNEL, 'search', this.scoped(request))\n }\n\n agentSearch(request: SearchRequest): Promise<AgentSearchResponse> {\n return this.call(MNEMON_READ_CHANNEL, 'agent-search', this.scoped(request))\n }\n\n related(id: string, memoryBodyId?: string): Promise<Insight[]> {\n return this.call(MNEMON_READ_CHANNEL, 'related', this.scoped({ id, depth: 2, ...(memoryBodyId === undefined ? {} : { memoryBodyId }) }))\n }\n\n /** Settled memory-tool activity of one turn, shared across all mounted tails. */\n async turnActivity(turn: number, cursor = 0): Promise<TurnMemoryActivity | null> {\n const snapshot = await loadTurnActivities(this.connection, this.sessionId, cursor)\n return snapshot.activities.find(activity => activity.turn === turn) ?? null\n }\n\n /** Plain text of one finalized assistant message; null when absent or empty. */\n assistantMessageText(messageId: string): Promise<AssistantMessageText | null> {\n return this.call(MNEMON_READ_CHANNEL, 'assistant-message', { sessionId: this.sessionId, messageId })\n }\n\n remember(request: RememberRequest): Promise<Record<string, unknown>> {\n return this.call(MNEMON_WRITE_CHANNEL, 'remember', this.scoped(request))\n }\n\n supervise(content: string, idempotencyKey?: string): Promise<{ delegated: true; sessionId: string; runId: string; provider: string; summary: string; action: string; memoryBodyIds: string[] }> {\n return this.call(MNEMON_WRITE_CHANNEL, 'supervise', this.scoped({ content, ...(idempotencyKey === undefined ? {} : { idempotencyKey }) }))\n }\n\n forget(id: string, memoryBodyId?: string): Promise<Record<string, unknown>> {\n return this.call(MNEMON_WRITE_CHANNEL, 'forget', this.scoped({ id, ...(memoryBodyId === undefined ? {} : { memoryBodyId }) }))\n }\n\n createBody(request: { name: string; description: string; active?: boolean }): Promise<MemoryBody> {\n return this.call(MNEMON_WRITE_CHANNEL, 'body-create', this.scoped(request))\n }\n\n updateBody(memoryBodyId: string, request: { name?: string; description?: string; active?: boolean }): Promise<MemoryBody> {\n return this.call(MNEMON_WRITE_CHANNEL, 'body-update', this.scoped({ memoryBodyId, ...request }))\n }\n\n packTarget(): Promise<{ root: string; scope: 'global' | 'workspace' | 'custom' }> {\n return this.call(MNEMON_PACK_CHANNEL, 'target', {})\n }\n\n exportPack(): Promise<MnemonPackExport> {\n return this.call(MNEMON_PACK_CHANNEL, 'export', {})\n }\n\n inspectPack(base64: string, fileName?: string): Promise<MnemonPackPreview> {\n return this.call(MNEMON_PACK_CHANNEL, 'inspect', { base64, ...(fileName === undefined ? {} : { fileName }) })\n }\n\n importPack(base64: string): Promise<MnemonPackImportResult> {\n return this.call(MNEMON_PACK_CHANNEL, 'import', { base64 })\n }\n}\n","import { useEffect, useMemo, useRef, useState, type ChangeEvent, type JSX } from 'react'\nimport type { ClientConnectionHandle } from '../contracts.ts'\nimport type { MnemonPackExport, MnemonPackPreview } from '../pack.ts'\nimport { MnemonClient } from './api.ts'\nimport type { MnemonTranslate } from './locales.ts'\nimport css from './MnemonSettingsCard.module.css'\n\ninterface MnemonPackSectionProps {\n connection?: ClientConnectionHandle\n refreshKey: number\n t: MnemonTranslate\n}\n\ninterface PendingZip {\n base64: string\n preview: MnemonPackPreview\n}\n\nconst ZIP_ACCEPT = '.zip,application/zip'\n\nfunction fileBase64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.onerror = () => reject(reader.error ?? new Error('Could not read ZIP file'))\n reader.onload = () => {\n const value = reader.result\n if (typeof value !== 'string') return reject(new Error('Could not read ZIP file'))\n const separator = value.indexOf(',')\n if (separator < 0) return reject(new Error('ZIP file encoding is invalid'))\n resolve(value.slice(separator + 1))\n }\n reader.readAsDataURL(file)\n })\n}\n\nfunction bytesFromBase64(base64: string): ArrayBuffer {\n const binary = atob(base64)\n const buffer = new ArrayBuffer(binary.length)\n const bytes = new Uint8Array(buffer)\n for (let index = 0; index < binary.length; index += 1) bytes[index] = binary.charCodeAt(index)\n return buffer\n}\n\nfunction download(result: MnemonPackExport): void {\n const blob = new Blob([bytesFromBase64(result.base64)], { type: result.mimeType })\n const url = URL.createObjectURL(blob)\n const anchor = document.createElement('a')\n anchor.href = url; anchor.download = result.fileName; anchor.hidden = true\n document.body.append(anchor); anchor.click(); anchor.remove()\n window.setTimeout(() => URL.revokeObjectURL(url), 0)\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`\n}\n\nexport function MnemonPackSection({ connection, refreshKey, t }: MnemonPackSectionProps): JSX.Element {\n const client = useMemo(() => connection === undefined ? null : new MnemonClient(connection), [connection])\n const input = useRef<HTMLInputElement | null>(null)\n const [target, setTarget] = useState<{ root: string; scope: 'global' | 'workspace' | 'custom' } | null>(null)\n const [pending, setPending] = useState<PendingZip | null>(null)\n const [busy, setBusy] = useState<'target' | 'export' | 'inspect' | 'import' | null>(client === null ? null : 'target')\n const [failed, setFailed] = useState<string | null>(null)\n const [notice, setNotice] = useState<string | null>(null)\n\n useEffect(() => {\n let active = true\n if (client === null) return\n setBusy('target'); setFailed(null)\n void client.packTarget().then(value => { if (active) setTarget(value) }).catch(reason => {\n if (active) setFailed(reason instanceof Error ? reason.message : String(reason))\n }).finally(() => { if (active) setBusy(null) })\n return () => { active = false }\n }, [client, refreshKey])\n\n const scopeLabel = (scope: string): string => scope === 'global' ? t('config.global') : scope === 'workspace' ? t('config.workspace') : t('config.custom')\n\n const exportZip = async (): Promise<void> => {\n if (client === null || busy !== null) return\n setBusy('export'); setFailed(null); setNotice(null)\n try {\n const result = await client.exportPack()\n download(result)\n setNotice(t('config.packExported', { file: result.fileName, size: formatBytes(result.bytes) }))\n } catch (reason) {\n setFailed(reason instanceof Error ? reason.message : String(reason))\n } finally { setBusy(null) }\n }\n\n const inspectZip = async (file: File): Promise<void> => {\n if (client === null || busy !== null) return\n setBusy('inspect'); setFailed(null); setNotice(null); setPending(null)\n try {\n const base64 = await fileBase64(file)\n const preview = await client.inspectPack(base64, file.name)\n setPending({ base64, preview })\n } catch (reason) {\n setFailed(reason instanceof Error ? reason.message : String(reason))\n } finally { setBusy(null) }\n }\n\n const chooseFile = (event: ChangeEvent<HTMLInputElement>): void => {\n const file = event.currentTarget.files?.[0]\n event.currentTarget.value = ''\n if (file !== undefined) void inspectZip(file)\n }\n\n const importZip = async (): Promise<void> => {\n if (client === null || pending === null || busy !== null) return\n setBusy('import'); setFailed(null); setNotice(null)\n try {\n const result = await client.importPack(pending.base64)\n setNotice(t('config.packImportedWhole', { root: result.targetRoot }))\n setPending(null)\n } catch (reason) {\n setFailed(reason instanceof Error ? reason.message : String(reason))\n } finally { setBusy(null) }\n }\n\n const items = pending?.preview.manifest.summary.reduce((sum, component) => sum + component.items, 0) ?? 0\n\n return <section className={css.section} aria-labelledby=\"mnemon-pack-heading\">\n <div className={css.sectionHeading}><div><h2 id=\"mnemon-pack-heading\">{t('config.packTitle')}</h2><p>{t('config.packSimpleDescription')}</p></div></div>\n <div className={css.settingRow}>\n <div className={css.settingCopy}>\n <strong>{t('config.packWholeZip')}</strong>\n <small>{t('config.packWholeZipHint')}</small>\n <code className={css.activePath} title={target?.root}>{target?.root ?? t('config.packTargetLoading')}</code>\n {target !== null && <em className={css.scopeMeta}>{scopeLabel(target.scope)}</em>}\n </div>\n <div className={css.rowActions}>\n <button type=\"button\" className={css.pillButton} disabled={client === null || busy !== null} onClick={() => input.current?.click()}>{busy === 'inspect' ? t('config.packInspecting') : t('config.packImportZip')}</button>\n <button type=\"button\" className={css.pillButton} disabled={client === null || busy !== null || target === null} onClick={() => void exportZip()}>{busy === 'export' ? t('config.packExporting') : t('config.packExportZip')}</button>\n </div>\n <input ref={input} className={css.visuallyHidden} type=\"file\" accept={ZIP_ACCEPT} aria-label={t('config.packChooseZip')} onChange={chooseFile} />\n </div>\n {pending !== null && <div className={css.importBar} role=\"status\">\n <div><strong>{pending.preview.fileName ?? t('config.packUnnamedZip')}</strong><small>{t('config.packZipReady', { components: pending.preview.manifest.components.length, items, size: formatBytes(pending.preview.archiveBytes) })}</small></div>\n <button type=\"button\" className={css.textButton} disabled={busy !== null} onClick={() => setPending(null)}>{t('common.cancel')}</button>\n <button type=\"button\" className={css.primaryPill} disabled={busy !== null} onClick={() => void importZip()}>{busy === 'import' ? t('config.packImporting') : t('config.packImportZipAction')}</button>\n </div>}\n <div className={css.packFeedback} aria-live=\"polite\">\n {failed !== null && <p className={css.error} role=\"alert\">{t('config.packFailed', { error: failed })}</p>}\n {notice !== null && <p className={css.packSuccess}>{notice}</p>}\n {client === null && <p className={css.readOnly}>{t('config.packUnavailable')}</p>}\n </div>\n </section>\n}\n","import { useEffect, useMemo, useState, useSyncExternalStore, type JSX } from 'react'\nimport type { Config, InteractionConfig } from '../config.ts'\nimport type { ClientConnectionHandle, ClientSettingsScope, ClientSettingsSnapshot, SettingsOperation } from '../contracts.ts'\nimport css from './MnemonSettingsCard.module.css'\nimport { translateZh, type MnemonTranslate } from './locales.ts'\nimport { MnemonPackSection } from './MnemonPackSection.tsx'\n\nexport interface MnemonSettingsCardProps {\n scope: ClientSettingsScope<Config>\n /** Separate live namespace; falls back to the core scope for older hosts. */\n interactionScope?: ClientSettingsScope<InteractionConfig>\n /** Loopback RPC used for whole-directory ZIP backup and restore. */\n connection?: ClientConnectionHandle\n t?: MnemonTranslate\n}\n\ntype CoreField = 'displayMode' | 'storageScope' | 'dataDir'\ntype InteractionField = 'toolviews' | 'turnBar' | 'saveAction'\ntype Field = CoreField | InteractionField\ninterface Draft extends Record<InteractionField, boolean> {\n displayMode: 'sidebar' | 'buildin'\n storageScope: string\n dataDir: string\n}\n\nconst CORE_FIELDS: CoreField[] = ['displayMode', 'storageScope', 'dataDir']\nconst INTERACTION_FIELDS: InteractionField[] = ['toolviews', 'turnBar', 'saveAction']\n\nfunction record(value: unknown): Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value) ? value as Record<string, unknown> : {}\n}\n\nfunction legacyPackDirectory(value: Config): string {\n const packs = value.customPacks ?? []\n return packs.find(pack => pack.id === value.customPackId)?.dataDir?.trim()\n ?? (packs.length === 1 ? packs[0]?.dataDir?.trim() : undefined)\n ?? ''\n}\n\nfunction coreDraft(value: Config | undefined): Pick<Draft, CoreField> {\n const resolved = value ?? {}\n const dataDir = resolved.dataDir?.trim() || legacyPackDirectory(resolved)\n return {\n displayMode: resolved.displayMode ?? 'sidebar',\n storageScope: resolved.storageScope ?? (dataDir === '' ? 'global' : 'custom'),\n dataDir,\n }\n}\n\nfunction interactionDraft(value: InteractionConfig | undefined): Pick<Draft, InteractionField> {\n return {\n toolviews: value?.toolviews === true,\n turnBar: value?.turnBar === true,\n saveAction: value?.saveAction === true,\n }\n}\n\nfunction draftOf(core: Config | undefined, interaction: InteractionConfig | undefined): Draft {\n return { ...coreDraft(core), ...interactionDraft(interaction) }\n}\n\nfunction validation(t: MnemonTranslate, draft: Draft): string | null {\n if (!['global', 'workspace', 'custom'].includes(draft.storageScope)) return t('config.invalidScope')\n if (draft.storageScope !== 'custom') return null\n const directory = draft.dataDir.trim()\n if (directory === '') return t('config.customRequired')\n const posixAbsolute = directory.startsWith('/')\n const homeRelative = directory === '~' || directory.startsWith('~/')\n const windowsDriveAbsolute = /^[a-zA-Z]:[\\\\/]/.test(directory)\n const windowsUncAbsolute = /^\\\\\\\\[^\\\\/]+[\\\\/][^\\\\/]+/.test(directory)\n if (!posixAbsolute && !homeRelative && !windowsDriveAbsolute && !windowsUncAbsolute) return t('config.customAbsolute')\n return null\n}\n\nfunction useScope<T>(scope: ClientSettingsScope<T>): ClientSettingsSnapshot<T> {\n const subscribe = useMemo(() => scope.subscribe.bind(scope), [scope])\n const getSnapshot = useMemo(() => scope.getSnapshot.bind(scope), [scope])\n return useSyncExternalStore(subscribe, getSnapshot, getSnapshot)\n}\n\nfunction operations(fields: readonly Field[], dirty: ReadonlySet<Field>, draft: Draft): SettingsOperation[] {\n return fields.flatMap((field): SettingsOperation[] => {\n if (!dirty.has(field)) return []\n if (field === 'dataDir' && draft.dataDir.trim() === '') return [{ op: 'unset', path: [field] }]\n const value = draft[field]\n return [{ op: 'set', path: [field], value: typeof value === 'string' ? value.trim() : value }]\n })\n}\n\nasync function commit<T>(scope: ClientSettingsScope<T>, edits: SettingsOperation[]): Promise<void> {\n if (scope.mutate !== undefined) return scope.mutate(edits)\n for (const edit of edits) {\n if (edit.path.length === 1) {\n if (edit.op === 'set') await scope.set(edit.path[0]!, edit.value)\n else await scope.unset(edit.path[0]!)\n } else if (edit.op === 'set') await scope.setPath(edit.path, edit.value)\n else await scope.unsetPath(edit.path)\n }\n}\n\n/** Dedicated Mnemon page contributed directly to DSH's settings navigation. */\nexport function MnemonSettingsCard({ scope, interactionScope: suppliedInteractionScope, connection, t = translateZh }: MnemonSettingsCardProps): JSX.Element | null {\n const interactionScope = suppliedInteractionScope ?? scope as unknown as ClientSettingsScope<InteractionConfig>\n const coreSnapshot = useScope(scope)\n const interactionSnapshot = useScope(interactionScope)\n const [draft, setDraft] = useState<Draft>(() => draftOf(coreSnapshot.value, interactionSnapshot.value))\n const [dirty, setDirty] = useState<Set<Field>>(() => new Set())\n const [saving, setSaving] = useState(false)\n const [failed, setFailed] = useState<string | null>(null)\n const [applied, setApplied] = useState(false)\n const [targetRevision, setTargetRevision] = useState(0)\n\n useEffect(() => {\n if (dirty.size === 0) setDraft(draftOf(coreSnapshot.value, interactionSnapshot.value))\n }, [dirty.size, coreSnapshot.value, interactionSnapshot.value])\n\n const coreUser = useMemo(() => record(coreSnapshot.user), [coreSnapshot.user])\n const error = validation(t, draft)\n const loading = coreSnapshot.status === 'loading' || interactionSnapshot.status === 'loading'\n const writable = coreSnapshot.writable && interactionSnapshot.writable\n\n if (coreSnapshot.status === 'unavailable' && interactionSnapshot.status === 'unavailable') return null\n\n const edit = (field: Field, value: string | boolean): void => {\n setDraft(current => ({ ...current, [field]: value }))\n setDirty(current => new Set(current).add(field))\n setFailed(null)\n setApplied(false)\n }\n\n const discard = (): void => {\n setDraft(draftOf(coreSnapshot.value, interactionSnapshot.value))\n setDirty(new Set()); setFailed(null); setApplied(false)\n }\n\n const save = async (): Promise<void> => {\n if (error !== null || dirty.size === 0 || saving || !writable) return\n setSaving(true); setFailed(null)\n try {\n const coreOps = operations(CORE_FIELDS, dirty, draft)\n if (coreOps.length > 0) {\n if (Object.hasOwn(coreUser, 'customPackId')) coreOps.push({ op: 'unset', path: ['customPackId'] })\n if (Object.hasOwn(coreUser, 'customPacks')) coreOps.push({ op: 'unset', path: ['customPacks'] })\n }\n const interactionOps = operations(INTERACTION_FIELDS, dirty, draft)\n await Promise.all([\n ...(coreOps.length === 0 ? [] : [commit(scope, coreOps)]),\n ...(interactionOps.length === 0 ? [] : [commit(interactionScope, interactionOps)]),\n ])\n setDirty(new Set())\n setApplied(true)\n if (coreOps.length > 0) setTargetRevision(revision => revision + 1)\n } catch (reason) {\n setFailed(reason instanceof Error ? reason.message : String(reason))\n } finally {\n setSaving(false)\n }\n }\n\n const coreDisabled = loading || saving || !coreSnapshot.writable\n const interactionDisabled = loading || saving || !interactionSnapshot.writable\n return (\n <section className={css.page} aria-label={t('config.aria')} aria-busy={saving || loading}>\n {loading ? <p className={css.loading} role=\"status\">{t('common.loading')}</p> : <>\n <header className={css.pageHeader}>\n <h1>{t('config.title')}</h1>\n <p>{t('config.description')}</p>\n </header>\n\n <section className={css.section} aria-labelledby=\"mnemon-display-heading\">\n <div className={css.sectionHeading}>\n <div><h2 id=\"mnemon-display-heading\">{t('config.displayTitle')}</h2><p>{t('config.displayDescription')}</p></div>\n </div>\n <div className={`${css.choiceGrid} ${css.displayGrid}`} role=\"radiogroup\" aria-label={t('config.displayAria')}>\n <ChoiceCard id=\"mnemon-display-sidebar\" name=\"mnemon-display\" label={t('config.displaySidebar')} detail={t('config.displaySidebarHint')} checked={draft.displayMode === 'sidebar'} disabled={coreDisabled} onChange={() => edit('displayMode', 'sidebar')} />\n <ChoiceCard id=\"mnemon-display-buildin\" name=\"mnemon-display\" label={t('config.displayBuildin')} detail={t('config.displayBuildinHint')} checked={draft.displayMode === 'buildin'} disabled={coreDisabled} onChange={() => edit('displayMode', 'buildin')} />\n </div>\n </section>\n\n <section className={css.section} aria-labelledby=\"mnemon-storage-heading\">\n <div className={css.sectionHeading}>\n <div><h2 id=\"mnemon-storage-heading\">{t('config.storageTitle')}</h2><p>{t('config.storageDescription')}</p></div>\n </div>\n <div className={css.choiceGrid} role=\"radiogroup\" aria-label={t('config.scopeAria')}>\n <ChoiceCard id=\"mnemon-storage-global\" name=\"mnemon-storage\" label={t('config.global')} detail=\"~/.mnemon\" checked={draft.storageScope === 'global'} disabled={coreDisabled} onChange={() => edit('storageScope', 'global')} />\n <ChoiceCard id=\"mnemon-storage-workspace\" name=\"mnemon-storage\" label={t('config.workspace')} detail=\"<workspace>/.mnemon\" checked={draft.storageScope === 'workspace'} disabled={coreDisabled} onChange={() => edit('storageScope', 'workspace')} />\n <ChoiceCard id=\"mnemon-storage-custom\" name=\"mnemon-storage\" label={t('config.custom')} detail={draft.dataDir === '' ? t('config.customHintShort') : t('config.customSelected')} checked={draft.storageScope === 'custom'} disabled={coreDisabled} onChange={() => edit('storageScope', 'custom')} />\n </div>\n {draft.storageScope === 'custom' && <div className={css.settingRow}>\n <div className={css.settingCopy}><strong>{t('config.customDirectory')}</strong><small>{t('config.customDirectoryHint')}</small></div>\n <div className={css.directoryControl}>\n <input\n id=\"mnemon-custom-directory\"\n name=\"mnemon-custom-directory\"\n type=\"text\"\n className={css.directoryInput}\n aria-label={t('config.customAria')}\n aria-invalid={error !== null}\n placeholder={t('config.customPlaceholder')}\n value={draft.dataDir}\n disabled={coreDisabled}\n autoComplete=\"off\"\n spellCheck={false}\n autoCapitalize=\"none\"\n autoCorrect=\"off\"\n onChange={event => edit('dataDir', event.target.value)}\n />\n </div>\n </div>}\n </section>\n\n <section className={css.section} aria-labelledby=\"mnemon-interaction-heading\">\n <div className={css.sectionHeading}>\n <div><h2 id=\"mnemon-interaction-heading\">{t('config.interactionTitle')}</h2><p>{t('config.interactionHint')}</p></div>\n </div>\n <div className={css.rowGroup}>\n <ToggleRow id=\"mnemon-interaction-toolviews\" label={t('config.interactionToolviews')} hint={t('config.interactionToolviewsHint')} checked={draft.toolviews} disabled={interactionDisabled} onChange={value => edit('toolviews', value)} />\n <ToggleRow id=\"mnemon-interaction-turn-bar\" label={t('config.interactionTurnBar')} hint={t('config.interactionTurnBarHint')} checked={draft.turnBar} disabled={interactionDisabled} onChange={value => edit('turnBar', value)} />\n <ToggleRow id=\"mnemon-interaction-save-action\" label={t('config.interactionSaveAction')} hint={t('config.interactionSaveActionHint')} checked={draft.saveAction} disabled={interactionDisabled} onChange={value => edit('saveAction', value)} />\n </div>\n </section>\n\n <MnemonPackSection {...(connection === undefined ? {} : { connection })} refreshKey={targetRevision} t={t} />\n\n <div className={css.feedback} aria-live=\"polite\">\n {error !== null && <p className={css.error} role=\"alert\">{error}</p>}\n {failed !== null && <p className={css.error} role=\"alert\">{t('config.saveFailed', { error: failed })}</p>}\n {applied && <p className={css.success} role=\"status\">{t('config.ready')}</p>}\n {!writable && <p className={css.readOnly}>{t('config.readOnly')}</p>}\n </div>\n\n <footer className={`${css.actions} ${dirty.size > 0 ? css.actionsVisible : ''}`} aria-live=\"polite\">\n <span>{t('config.unsaved')}</span>\n <div><button type=\"button\" className={css.discard} disabled={saving} onClick={discard}>{t('config.discard')}</button><button type=\"button\" className={css.save} disabled={saving || error !== null || !writable} onClick={() => void save()}>{saving ? t('config.saving') : t('config.save')}</button></div>\n </footer>\n <p className={css.settingsNote}>{t('config.noticeBefore')} <code>.dsh/settings.yaml</code>{t('config.noticeAfter')}</p>\n </>}\n </section>\n )\n}\n\nfunction ChoiceCard(props: { id: string; name: string; label: string; detail: string; checked: boolean; disabled: boolean; onChange: () => void }): JSX.Element {\n return <label className={css.choiceCard} htmlFor={props.id}><input id={props.id} name={props.name} type=\"radio\" aria-label={props.label} checked={props.checked} disabled={props.disabled} onChange={props.onChange} /><span className={css.choiceFace}><strong>{props.label}</strong><small>{props.detail}</small><span className={css.check} aria-hidden=\"true\">✓</span></span></label>\n}\n\nfunction ToggleRow(props: { id: string; label: string; hint: string; checked: boolean; disabled: boolean; onChange: (value: boolean) => void }): JSX.Element {\n return <label className={css.toggleRow} htmlFor={props.id}><span className={css.settingCopy}><strong>{props.label}</strong><small>{props.hint}</small></span><input id={props.id} type=\"checkbox\" aria-label={props.label} checked={props.checked} disabled={props.disabled} onChange={event => props.onChange(event.target.checked)} /><span className={css.switch} aria-hidden=\"true\"><i /></span></label>\n}\n","/**\n * Lightweight anchor channel between conversation-scoped Mnemon surfaces\n * (toolviews, turnTail bar, assistant actions) and the Mnemon workspace view.\n *\n * A dispatch asks the Mnemon view to open a page (optionally with a seed) in\n * the session the dispatch came from. The view may not be mounted when the\n * user clicks — the dispatch is then held per session and consumed the next\n * time that session's Mnemon view mounts, so switching to the Memory System\n * tab afterwards still lands on the requested page.\n */\n\n/** Pages of the Mnemon workspace, mirroring MnemonView's internal Page union. */\nexport type MnemonAnchorPage = 'overview' | 'runtime' | 'documents' | 'explore' | 'entities' | 'remember' | 'list' | 'status'\n\nexport interface MnemonAnchor {\n /** Target workspace page. */\n page: MnemonAnchorPage\n /** Optional context seed (recall query for explore, candidate text for remember). */\n seed?: string\n /** Session the dispatch belongs to; omitted dispatches address every session. */\n sessionId?: string\n}\n\nexport const MNEMON_ANCHOR_EVENT = 'mnemon:anchor'\n\nconst pendingBySession = new Map<string, MnemonAnchor>()\n\nfunction keyOf(sessionId?: string): string {\n return sessionId === undefined || sessionId === '' ? '*' : sessionId\n}\n\n/** Ask the Mnemon view to open a page; held until a matching view consumes it. */\nexport function dispatchMnemonAnchor(anchor: MnemonAnchor): void {\n pendingBySession.set(keyOf(anchor.sessionId), anchor)\n window.dispatchEvent(new CustomEvent<MnemonAnchor>(MNEMON_ANCHOR_EVENT, { detail: anchor }))\n}\n\n/** Take the anchor held for this session (usually at mount time), or null. */\nexport function consumeMnemonAnchor(sessionId?: string): MnemonAnchor | null {\n const key = keyOf(sessionId)\n const anchor = pendingBySession.get(key)\n if (anchor === undefined) return null\n pendingBySession.delete(key)\n return anchor\n}\n\n/** Subscribe to anchors addressed to this session; returns an unsubscribe. */\nexport function subscribeMnemonAnchor(sessionId: string | undefined, onAnchor: (anchor: MnemonAnchor) => void): () => void {\n const key = keyOf(sessionId)\n const handler = (event: Event): void => {\n const anchor = (event as CustomEvent<MnemonAnchor>).detail\n if (anchor !== undefined && keyOf(anchor.sessionId) === key) {\n // A mounted view consumes the event immediately. Clear only this exact\n // dispatch so a newer anchor cannot be lost if listeners navigate again.\n if (pendingBySession.get(key) === anchor) pendingBySession.delete(key)\n onAnchor(anchor)\n }\n }\n window.addEventListener(MNEMON_ANCHOR_EVENT, handler)\n return () => window.removeEventListener(MNEMON_ANCHOR_EVENT, handler)\n}\n","import*as r from\"react\";function n(){return n=Object.assign?Object.assign.bind():function(r){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t])}return r},n.apply(this,arguments)}var e=[\"children\",\"options\"],t={blockQuote:\"0\",breakLine:\"1\",breakThematic:\"2\",codeBlock:\"3\",codeFenced:\"4\",codeInline:\"5\",footnote:\"6\",footnoteReference:\"7\",gfmTask:\"8\",heading:\"9\",headingSetext:\"10\",htmlBlock:\"11\",htmlComment:\"12\",htmlSelfClosing:\"13\",image:\"14\",link:\"15\",linkAngleBraceStyleDetector:\"16\",linkBareUrlDetector:\"17\",linkMailtoDetector:\"18\",newlineCoalescer:\"19\",orderedList:\"20\",paragraph:\"21\",ref:\"22\",refImage:\"23\",refLink:\"24\",table:\"25\",tableSeparator:\"26\",text:\"27\",textBolded:\"28\",textEmphasized:\"29\",textEscaped:\"30\",textMarked:\"31\",textStrikethroughed:\"32\",unorderedList:\"33\"},u=[\"allowFullScreen\",\"allowTransparency\",\"autoComplete\",\"autoFocus\",\"autoPlay\",\"cellPadding\",\"cellSpacing\",\"charSet\",\"classId\",\"colSpan\",\"contentEditable\",\"contextMenu\",\"crossOrigin\",\"encType\",\"formAction\",\"formEncType\",\"formMethod\",\"formNoValidate\",\"formTarget\",\"frameBorder\",\"hrefLang\",\"inputMode\",\"keyParams\",\"keyType\",\"marginHeight\",\"marginWidth\",\"maxLength\",\"mediaGroup\",\"minLength\",\"noValidate\",\"radioGroup\",\"readOnly\",\"rowSpan\",\"spellCheck\",\"srcDoc\",\"srcLang\",\"srcSet\",\"tabIndex\",\"useMap\"].reduce(function(r,n){return r[n.toLowerCase()]=n,r},{class:\"className\",for:\"htmlFor\"}),a={amp:\"&\",apos:\"'\",gt:\">\",lt:\"<\",nbsp:\" \",quot:\"“\"},i=[\"style\",\"script\",\"pre\"],o=[\"src\",\"href\",\"data\",\"formAction\",\"srcDoc\",\"action\"],c=/([-A-Z0-9_:]+)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|(?:\\{((?:\\\\.|{[^}]*?}|[^}])*)\\})))?/gi,f=/\\n{2,}$/,l=/^(\\s*>[\\s\\S]*?)(?=\\n\\n|$)/,_=/^ *> ?/gm,d=/^(?:\\[!([^\\]]*)\\]\\n)?([\\s\\S]*)/,s=/^ {2,}\\n/,v=/^(?:([-*_])( *\\1){2,}) *(?:\\n *)+\\n/,p=/^(?: {1,3})?(`{3,}|~{3,}) *(\\S+)? *([^\\n]*?)?\\n([\\s\\S]*?)(?:\\1\\n?|$)/,y=/^(?: {4}[^\\n]+\\n*)+(?:\\n *)+\\n?/,h=/^(`+)((?:\\\\`|(?!\\1)`|[^`])+)\\1/,g=/^(?:\\n *)*\\n/,m=/\\r\\n?/g,k=/^\\[\\^([^\\]]+)](:(.*)((\\n+ {4,}.*)|(\\n(?!\\[\\^).+))*)/,x=/^\\[\\^([^\\]]+)]/,q=/\\f/g,b=/^---[ \\t]*\\n(.|\\n)*\\n---[ \\t]*\\n/,S=/^\\s*?\\[(x|\\s)\\]/,z=/^ *(#{1,6}) *([^\\n]+?)(?: +#*)?(?:\\n *)*(?:\\n|$)/,$=/^ *(#{1,6}) +([^\\n]+?)(?: +#*)?(?:\\n *)*(?:\\n|$)/,E=/^([^\\n]+)\\n *(=|-)\\2{2,} *\\n/,A=/^ *(?!<[a-z][^ >/]* ?\\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\\n?(\\s*(?:<\\1[^>]*?>[\\s\\S]*?<\\/\\1>|(?!<\\1\\b)[\\s\\S])*?)<\\/\\1>(?!<\\/\\1>)\\n*/i,R=/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi,B=/^<!--[\\s\\S]*?(?:-->)/,L=/^(data|aria|x)-[a-z_][a-z\\d_.-]*$/,O=/^ *<([a-z][a-z0-9:]*)(?:\\s+((?:<.*?>|[^>])*))?\\/?>(?!<\\/\\1>)(\\s*\\n)?/i,j=/^\\{.*\\}$/,C=/^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,I=/^<([^ >]+[:@\\/][^ >]+)>/,T=/-([a-z])?/gi,M=/^(\\|.*)\\n(?: *(\\|? *[-:]+ *\\|[-| :]*)\\n((?:.*\\|.*\\n)*))?\\n?/,w=/^[^\\n]+(?: \\n|\\n{2,})/,D=/^\\[([^\\]]*)\\]:\\s+<?([^\\s>]+)>?\\s*(\"([^\"]*)\")?/,F=/^!\\[([^\\]]*)\\] ?\\[([^\\]]*)\\]/,P=/^\\[([^\\]]*)\\] ?\\[([^\\]]*)\\]/,Z=/(\\n|^[-*]\\s|^#|^ {2,}|^-{2,}|^>\\s)/,N=/\\t/g,G=/(^ *\\||\\| *$)/g,U=/^ *:-+: *$/,V=/^ *:-+ *$/,H=/^ *-+: *$/,Q=function(r){return\"(?=[\\\\s\\\\S]+?\\\\1\"+(r?\"\\\\1\":\"\")+\")\"},W=\"((?:\\\\[.*?\\\\][([].*?[)\\\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|\\\\\\\\\\\\1|[\\\\s\\\\S])+?)\",J=RegExp(\"^([*_])\\\\1\"+Q(1)+W+\"\\\\1\\\\1(?!\\\\1)\"),K=RegExp(\"^([*_])\"+Q(0)+W+\"\\\\1(?!\\\\1)\"),X=RegExp(\"^(==)\"+Q(0)+W+\"\\\\1\"),Y=RegExp(\"^(~~)\"+Q(0)+W+\"\\\\1\"),rr=/^(:[a-zA-Z0-9-_]+:)/,nr=/^\\\\([^0-9A-Za-z\\s])/,er=/\\\\([^0-9A-Za-z\\s])/g,tr=/^[\\s\\S](?:(?! \\n|[0-9]\\.|http)[^=*_~\\-\\n:<`\\\\\\[!])*/,ur=/^\\n+/,ar=/^([ \\t]*)/,ir=/(?:^|\\n)( *)$/,or=\"(?:\\\\d+\\\\.)\",cr=\"(?:[*+-])\";function fr(r){return\"( *)(\"+(1===r?or:cr)+\") +\"}var lr=fr(1),_r=fr(2);function dr(r){return RegExp(\"^\"+(1===r?lr:_r))}var sr=dr(1),vr=dr(2);function pr(r){return RegExp(\"^\"+(1===r?lr:_r)+\"[^\\\\n]*(?:\\\\n(?!\\\\1\"+(1===r?or:cr)+\" )[^\\\\n]*)*(\\\\n|$)\",\"gm\")}var yr=pr(1),hr=pr(2);function gr(r){var n=1===r?or:cr;return RegExp(\"^( *)(\"+n+\") [\\\\s\\\\S]+?(?:\\\\n{2,}(?! )(?!\\\\1\"+n+\" (?!\"+n+\" ))\\\\n*|\\\\s*\\\\n*$)\")}var mr=gr(1),kr=gr(2);function xr(r,n){var e=1===n,t=e?mr:kr,u=e?yr:hr,a=e?sr:vr;return{t:function(r){return a.test(r)},u:jr(function(r,n){var e=ir.exec(n.prevCapture);return e&&(n.list||!n.inline&&!n.simple)?t.exec(r=e[1]+r):null}),i:1,o:function(r,n,t){var i=e?+r[2]:void 0,o=r[0].replace(f,\"\\n\").match(u),c=!1;return{items:o.map(function(r,e){var u=a.exec(r)[0].length,i=RegExp(\"^ {1,\"+u+\"}\",\"gm\"),f=r.replace(i,\"\").replace(a,\"\"),l=e===o.length-1,_=-1!==f.indexOf(\"\\n\\n\")||l&&c;c=_;var d,s=t.inline,v=t.list;t.list=!0,_?(t.inline=!1,d=zr(f)+\"\\n\\n\"):(t.inline=!0,d=zr(f));var p=n(d,t);return t.inline=s,t.list=v,p}),ordered:e,start:i}},l:function(n,e,t){return r(n.ordered?\"ol\":\"ul\",{key:t.key,start:\"20\"===n.type?n.start:void 0},n.items.map(function(n,u){return r(\"li\",{key:u},e(n,t))}))}}}var qr=RegExp(\"^\\\\[((?:\\\\[[^\\\\[\\\\]]*(?:\\\\[[^\\\\[\\\\]]*\\\\][^\\\\[\\\\]]*)*\\\\]|[^\\\\[\\\\]])*)\\\\]\\\\(\\\\s*<?((?:\\\\([^)]*\\\\)|[^\\\\s\\\\\\\\]|\\\\\\\\.)*?)>?(?:\\\\s+['\\\"]([\\\\s\\\\S]*?)['\\\"])?\\\\s*\\\\)\"),br=/^!\\[(.*?)\\]\\( *((?:\\([^)]*\\)|[^() ])*) *\"?([^)\"]*)?\"?\\)/;function Sr(r){return\"string\"==typeof r}function zr(r){for(var n=r.length;n>0&&r[n-1]<=\" \";)n--;return r.slice(0,n)}function $r(r,n){return r.startsWith(n)}function Er(r,n,e){if(Array.isArray(e)){for(var t=0;t<e.length;t++)if($r(r,e[t]))return!0;return!1}return e(r,n)}function Ar(r){return r.replace(/[ÀÁÂÃÄÅàáâãä忯]/g,\"a\").replace(/[çÇ]/g,\"c\").replace(/[ðÐ]/g,\"d\").replace(/[ÈÉÊËéèêë]/g,\"e\").replace(/[ÏïÎîÍíÌì]/g,\"i\").replace(/[Ññ]/g,\"n\").replace(/[øØœŒÕõÔôÓóÒò]/g,\"o\").replace(/[ÜüÛûÚúÙù]/g,\"u\").replace(/[ŸÿÝý]/g,\"y\").replace(/[^a-z0-9- ]/gi,\"\").replace(/ /gi,\"-\").toLowerCase()}function Rr(r){return H.test(r)?\"right\":U.test(r)?\"center\":V.test(r)?\"left\":null}function Br(r,n,e,t){var u=e.inTable;e.inTable=!0;var a=[[]],i=\"\";function o(){if(i){var r=a[a.length-1];r.push.apply(r,n(i,e)),i=\"\"}}return r.trim().split(/(`[^`]*`|\\\\\\||\\|)/).filter(Boolean).forEach(function(r,n,e){\"|\"===r.trim()&&(o(),t)?0!==n&&n!==e.length-1&&a.push([]):i+=r}),o(),e.inTable=u,a}function Lr(r,n,e){e.inline=!0;var t=r[2]?r[2].replace(G,\"\").split(\"|\").map(Rr):[],u=r[3]?function(r,n,e){return r.trim().split(\"\\n\").map(function(r){return Br(r,n,e,!0)})}(r[3],n,e):[],a=Br(r[1],n,e,!!u.length);return e.inline=!1,u.length?{align:t,cells:u,header:a,type:\"25\"}:{children:a,type:\"21\"}}function Or(r,n){return null==r.align[n]?{}:{textAlign:r.align[n]}}function jr(r){return r.inline=1,r}function Cr(r){return jr(function(n,e){return e.inline?r.exec(n):null})}function Ir(r){return jr(function(n,e){return e.inline||e.simple?r.exec(n):null})}function Tr(r){return function(n,e){return e.inline||e.simple?null:r.exec(n)}}function Mr(r){return jr(function(n){return r.exec(n)})}var wr=/(javascript|vbscript|data(?!:image)):/i;function Dr(r){try{var n=decodeURIComponent(r).replace(/[^A-Za-z0-9/:]/g,\"\");if(wr.test(n))return null}catch(r){return null}return r}function Fr(r){return r?r.replace(er,\"$1\"):r}function Pr(r,n,e){var t=e.inline||!1,u=e.simple||!1;e.inline=!0,e.simple=!0;var a=r(n,e);return e.inline=t,e.simple=u,a}function Zr(r,n,e){var t=e.inline||!1,u=e.simple||!1;e.inline=!1,e.simple=!0;var a=r(n,e);return e.inline=t,e.simple=u,a}function Nr(r,n,e){var t=e.inline||!1;e.inline=!1;var u=r(n,e);return e.inline=t,u}var Gr=function(r,n,e){return{children:Pr(n,r[2],e)}};function Ur(){return{}}function Vr(){return null}function Hr(){return[].slice.call(arguments).filter(Boolean).join(\" \")}function Qr(r,n,e){for(var t=r,u=n.split(\".\");u.length&&void 0!==(t=t[u[0]]);)u.shift();return t||e}function Wr(r,n){var e=Qr(n,r);return e?\"function\"==typeof e||\"object\"==typeof e&&\"render\"in e?e:Qr(n,r+\".component\",r):r}function Jr(e,t){var f;void 0===e&&(e=\"\"),void 0===t&&(t={}),t.overrides=t.overrides||{},t.namedCodesToUnicode=t.namedCodesToUnicode?n({},a,t.namedCodesToUnicode):a;var G=t.slugify||Ar,U=t.sanitizer||Dr,V=t.createElement||r.createElement,H=[l,p,y,t.enforceAtxHeadings?$:z,E,M,mr,kr],Q=[].concat(H,[w,A,B,O]);function W(r,n){for(var e=0;e<r.length;e++)if(r[e].test(n))return!0;return!1}function er(r,e){var u=Qr(t.overrides,r+\".props\",{});return V.apply(void 0,[Wr(r,t.overrides),n({},e,u,{className:Hr(null==e?void 0:e.className,u.className)||void 0})].concat([].slice.call(arguments,2)))}function ir(r){r=r.replace(b,\"\");var n=!1;t.forceInline?n=!0:t.forceBlock||(n=!1===Z.test(r));for(var e=dr(_r(n?r:zr(r).replace(ur,\"\")+\"\\n\\n\",{inline:n}));Sr(e[e.length-1])&&!e[e.length-1].trim();)e.pop();if(null===t.wrapper)return e;var u,a=t.wrapper||(n?\"span\":\"div\");if(e.length>1||t.forceWrapper)u=e;else{if(1===e.length)return\"string\"==typeof(u=e[0])?er(\"span\",{key:\"outer\"},u):u;u=null}return V(a,{key:\"outer\"},u)}function or(r,n){if(!n||!n.trim())return null;var e=n.match(c);return e?e.reduce(function(n,e){var t=e.indexOf(\"=\");if(-1!==t){var a=function(r){return-1!==r.indexOf(\"-\")&&null===r.match(L)&&(r=r.replace(T,function(r,n){return n.toUpperCase()})),r}(e.slice(0,t)).trim(),i=function(r){var n=r[0];return('\"'===n||\"'\"===n)&&r.length>=2&&r[r.length-1]===n?r.slice(1,-1):r}(e.slice(t+1).trim()),c=u[a]||a;if(\"ref\"===c)return n;var f=n[c]=function(r,n,e,t){return\"style\"===n?function(r){var n=[],e=\"\",t=!1,u=!1,a=\"\";if(!r)return n;for(var i=0;i<r.length;i++){var o=r[i];if('\"'!==o&&\"'\"!==o||t||(u?o===a&&(u=!1,a=\"\"):(u=!0,a=o)),\"(\"===o&&e.endsWith(\"url\")?t=!0:\")\"===o&&t&&(t=!1),\";\"!==o||u||t)e+=o;else{var c=e.trim();if(c){var f=c.indexOf(\":\");if(f>0){var l=c.slice(0,f).trim(),_=c.slice(f+1).trim();n.push([l,_])}}e=\"\"}}var d=e.trim();if(d){var s=d.indexOf(\":\");if(s>0){var v=d.slice(0,s).trim(),p=d.slice(s+1).trim();n.push([v,p])}}return n}(e).reduce(function(n,e){var u=e[0],a=e[1];return n[u.replace(/(-[a-z])/g,function(r){return r[1].toUpperCase()})]=t(a,r,u),n},{}):-1!==o.indexOf(n)?t(Fr(e),r,n):(e.match(j)&&(e=Fr(e.slice(1,e.length-1))),\"true\"===e||\"false\"!==e&&e)}(r,a,i,U);\"string\"==typeof f&&(A.test(f)||O.test(f))&&(n[c]=ir(f.trim()))}else\"style\"!==e&&(n[u[e]||e]=!0);return n},{}):null}var cr=[],fr={},lr=((f={})[0]={t:[\">\"],u:Tr(l),i:1,o:function(r,n,e){var t=r[0].replace(_,\"\").match(d);return{alert:t[1],children:n(t[2],e)}},l:function(r,n,e){var t={key:e.key};return r.alert&&(t.className=\"markdown-alert-\"+G(r.alert.toLowerCase(),Ar),r.children.unshift({attrs:{},children:[{type:\"27\",text:r.alert}],noInnerParse:!0,type:\"11\",tag:\"header\"})),er(\"blockquote\",t,n(r.children,e))}},f[1]={t:[\" \"],u:Mr(s),i:1,o:Ur,l:function(r,n,e){return er(\"br\",{key:e.key})}},f[2]={t:[\"--\",\"__\",\"**\",\"- \",\"* \",\"_ \"],u:Tr(v),i:1,o:Ur,l:function(r,n,e){return er(\"hr\",{key:e.key})}},f[3]={t:[\" \"],u:Tr(y),i:0,o:function(r){return{lang:void 0,text:Fr(zr(r[0].replace(/^ {4}/gm,\"\")))}},l:function(r,e,t){return er(\"pre\",{key:t.key},er(\"code\",n({},r.attrs,{className:r.lang?\"lang-\"+r.lang:\"\"}),r.text))}},f[4]={t:[\"```\",\"~~~\"],u:Tr(p),i:0,o:function(r){return{attrs:or(\"code\",r[3]||\"\"),lang:r[2]||void 0,text:r[4],type:\"3\"}}},f[5]={t:[\"`\"],u:Ir(h),i:3,o:function(r){return{text:Fr(r[2])}},l:function(r,n,e){return er(\"code\",{key:e.key},r.text)}},f[6]={t:[\"[^\"],u:Tr(k),i:0,o:function(r){return cr.push({footnote:r[2],identifier:r[1]}),{}},l:Vr},f[7]={t:[\"[^\"],u:Cr(x),i:1,o:function(r){return{target:\"#\"+G(r[1],Ar),text:r[1]}},l:function(r,n,e){return er(\"a\",{key:e.key,href:U(r.target,\"a\",\"href\")},er(\"sup\",{key:e.key},r.text))}},f[8]={t:[\"[ ]\",\"[x]\"],u:Cr(S),i:1,o:function(r){return{completed:\"x\"===r[1].toLowerCase()}},l:function(r,n,e){return er(\"input\",{checked:r.completed,key:e.key,readOnly:!0,type:\"checkbox\"})}},f[9]={t:[\"#\"],u:Tr(t.enforceAtxHeadings?$:z),i:1,o:function(r,n,e){return{children:Pr(n,r[2],e),id:G(r[2],Ar),level:r[1].length}},l:function(r,n,e){return er(\"h\"+r.level,{id:r.id,key:e.key},n(r.children,e))}},f[10]={t:function(r){var n=r.indexOf(\"\\n\");return n>0&&n<r.length-1&&(\"=\"===r[n+1]||\"-\"===r[n+1])},u:Tr(E),i:1,o:function(r,n,e){return{children:Pr(n,r[1],e),level:\"=\"===r[2]?1:2,type:\"9\"}}},f[11]={t:[\"<\"],u:Mr(A),i:1,o:function(r,n,e){var t=r[3].match(ar),u=RegExp(\"^\"+t[1],\"gm\"),a=r[3].replace(u,\"\"),o=W(Q,a)?Nr:Pr,c=r[1].toLowerCase(),f=-1!==i.indexOf(c),l=(f?c:r[1]).trim(),_={attrs:or(l,r[2]),noInnerParse:f,tag:l};if(e.inAnchor=e.inAnchor||\"a\"===c,f)_.text=r[3];else{var d=e.inHTML;e.inHTML=!0,_.children=o(n,a,e),e.inHTML=d}return e.inAnchor=!1,_},l:function(r,e,t){return er(r.tag,n({key:t.key},r.attrs),r.text||(r.children?e(r.children,t):\"\"))}},f[13]={t:[\"<\"],u:Mr(O),i:1,o:function(r){var n=r[1].trim();return{attrs:or(n,r[2]||\"\"),tag:n}},l:function(r,e,t){return er(r.tag,n({},r.attrs,{key:t.key}))}},f[12]={t:[\"\\x3c!--\"],u:Mr(B),i:1,o:function(){return{}},l:Vr},f[14]={t:[\"![\"],u:Ir(br),i:1,o:function(r){return{alt:Fr(r[1]),target:Fr(r[2]),title:Fr(r[3])}},l:function(r,n,e){return er(\"img\",{key:e.key,alt:r.alt||void 0,title:r.title||void 0,src:U(r.target,\"img\",\"src\")})}},f[15]={t:[\"[\"],u:Cr(qr),i:3,o:function(r,n,e){return{children:Zr(n,r[1],e),target:Fr(r[2]),title:Fr(r[3])}},l:function(r,n,e){return er(\"a\",{key:e.key,href:U(r.target,\"a\",\"href\"),title:r.title},n(r.children,e))}},f[16]={t:[\"<\"],u:Cr(I),i:0,o:function(r){var n=r[1],e=!1;return-1!==n.indexOf(\"@\")&&-1===n.indexOf(\"//\")&&(e=!0,n=n.replace(\"mailto:\",\"\")),{children:[{text:n,type:\"27\"}],target:e?\"mailto:\"+n:n,type:\"15\"}}},f[17]={t:function(r,n){return!n.inAnchor&&!t.disableAutoLink&&($r(r,\"http://\")||$r(r,\"https://\"))},u:Cr(C),i:0,o:function(r){return{children:[{text:r[1],type:\"27\"}],target:r[1],title:void 0,type:\"15\"}}},f[20]=xr(er,1),f[33]=xr(er,2),f[19]={t:[\"\\n\"],u:Tr(g),i:3,o:Ur,l:function(){return\"\\n\"}},f[21]={u:jr(function(r,n){if(n.inline||n.simple||n.inHTML&&-1===r.indexOf(\"\\n\\n\")&&-1===n.prevCapture.indexOf(\"\\n\\n\"))return null;for(var e=\"\",t=0;;){var u=r.indexOf(\"\\n\",t),a=r.slice(t,-1===u?void 0:u+1);if(W(H,a))break;if(e+=a,-1===u||!a.trim())break;t=u+1}var i=zr(e);return\"\"===i?null:[e,,i]}),i:3,o:Gr,l:function(r,n,e){return er(\"p\",{key:e.key},n(r.children,e))}},f[22]={t:[\"[\"],u:Cr(D),i:0,o:function(r){return fr[r[1]]={target:r[2],title:r[4]},{}},l:Vr},f[23]={t:[\"![\"],u:Ir(F),i:0,o:function(r){return{alt:r[1]?Fr(r[1]):void 0,ref:r[2]}},l:function(r,n,e){return fr[r.ref]?er(\"img\",{key:e.key,alt:r.alt,src:U(fr[r.ref].target,\"img\",\"src\"),title:fr[r.ref].title}):null}},f[24]={t:function(r){return\"[\"===r[0]&&-1===r.indexOf(\"](\")},u:Cr(P),i:0,o:function(r,n,e){return{children:n(r[1],e),fallbackChildren:r[0],ref:r[2]}},l:function(r,n,e){return fr[r.ref]?er(\"a\",{key:e.key,href:U(fr[r.ref].target,\"a\",\"href\"),title:fr[r.ref].title},n(r.children,e)):er(\"span\",{key:e.key},r.fallbackChildren)}},f[25]={t:[\"|\"],u:Tr(M),i:1,o:Lr,l:function(r,n,e){var t=r;return er(\"table\",{key:e.key},er(\"thead\",null,er(\"tr\",null,t.header.map(function(r,u){return er(\"th\",{key:u,style:Or(t,u)},n(r,e))}))),er(\"tbody\",null,t.cells.map(function(r,u){return er(\"tr\",{key:u},r.map(function(r,u){return er(\"td\",{key:u,style:Or(t,u)},n(r,e))}))})))}},f[27]={u:jr(function(r,n){var e;return $r(r,\":\")&&(e=rr.exec(r)),e||tr.exec(r)}),i:4,o:function(r){var n=r[0];return{text:-1===n.indexOf(\"&\")?n:n.replace(R,function(r,n){return t.namedCodesToUnicode[n]||r})}},l:function(r){return r.text}},f[28]={t:[\"**\",\"__\"],u:Ir(J),i:2,o:function(r,n,e){return{children:n(r[2],e)}},l:function(r,n,e){return er(\"strong\",{key:e.key},n(r.children,e))}},f[29]={t:function(r){var n=r[0];return(\"*\"===n||\"_\"===n)&&r[1]!==n},u:Ir(K),i:3,o:function(r,n,e){return{children:n(r[2],e)}},l:function(r,n,e){return er(\"em\",{key:e.key},n(r.children,e))}},f[30]={t:[\"\\\\\"],u:Ir(nr),i:1,o:function(r){return{text:r[1],type:\"27\"}}},f[31]={t:[\"==\"],u:Ir(X),i:3,o:Gr,l:function(r,n,e){return er(\"mark\",{key:e.key},n(r.children,e))}},f[32]={t:[\"~~\"],u:Ir(Y),i:3,o:Gr,l:function(r,n,e){return er(\"del\",{key:e.key},n(r.children,e))}},f);!0===t.disableParsingRawHTML&&(delete lr[11],delete lr[13]);var _r=function(r){var n=Object.keys(r);function e(t,u){var a=[];if(u.prevCapture=u.prevCapture||\"\",t.trim())for(;t;)for(var i=0;i<n.length;){var o=n[i],c=r[o];if(!c.t||Er(t,u,c.t)){var f=c.u(t,u);if(f&&f[0]){t=t.substring(f[0].length);var l=c.o(f,e,u);u.prevCapture+=f[0],l.type||(l.type=o),a.push(l);break}i++}else i++}return u.prevCapture=\"\",a}return n.sort(function(n,e){return r[n].i-r[e].i||(n<e?-1:1)}),function(r,n){return e(function(r){return r.replace(m,\"\\n\").replace(q,\"\").replace(N,\" \")}(r),n)}}(lr),dr=function(r,n){return function e(t,u){if(void 0===u&&(u={}),Array.isArray(t)){for(var a=u.key,i=[],o=!1,c=0;c<t.length;c++){u.key=c;var f=e(t[c],u),l=Sr(f);l&&o?i[i.length-1]+=f:null!==f&&i.push(f),o=l}return u.key=a,i}return function(e,t,u){var a=r[e.type].l;return n?n(function(){return a(e,t,u)},e,t,u):a(e,t,u)}(t,e,u)}}(lr,t.renderRule),sr=ir(e);return cr.length?er(\"div\",null,sr,er(\"footer\",{key:\"footer\"},cr.map(function(r){return er(\"div\",{id:G(r.identifier,Ar),key:r.identifier},r.identifier,dr(_r(r.footnote,{inline:!0})))}))):sr}export default function(n){var t=n.children,u=n.options,a=function(r,n){if(null==r)return{};var e,t,u={},a=Object.keys(r);for(t=0;t<a.length;t++)n.indexOf(e=a[t])>=0||(u[e]=r[e]);return u}(n,e);return r.cloneElement(Jr(null==t?\"\":t,u),a)}export{t as RuleType,Jr as compiler,Dr as sanitizer,Ar as slugify};\n//# sourceMappingURL=index.module.js.map\n","/**\n * QoderWork 0.9.12's deterministic post-turn review gate.\n *\n * The upstream implementation scores user text length rather than provider\n * token usage, which keeps the gate stable when an adapter omits usage data.\n */\nexport const QODERWORK_REVIEW_POLICY = Object.freeze({\n reviewThreshold: 5,\n textLengthScoreUnit: 50,\n textLengthScoreCap: 3,\n toolCountScoreUnit: 5,\n toolCountScoreCap: 2,\n toolDiversityThreshold: 3,\n toolDiversityScoreCap: 2,\n turnScore: 1,\n})\n\nexport interface ReviewActivity {\n totalUserTextLength: number\n turnCount: number\n toolCallCount: number\n uniqueToolCount: number\n}\n\nexport interface ReviewActivityScore extends ReviewActivity {\n textLengthScore: number\n turnScore: number\n toolCallScore: number\n toolDiversityScore: number\n score: number\n threshold: number\n eligible: boolean\n}\n\nexport function scoreReviewActivity(activity: ReviewActivity): ReviewActivityScore {\n const policy = QODERWORK_REVIEW_POLICY\n const textLengthScore = Math.min(\n Math.floor(activity.totalUserTextLength / policy.textLengthScoreUnit),\n policy.textLengthScoreCap,\n )\n const turnScore = activity.turnCount * policy.turnScore\n const toolCallScore = Math.min(\n Math.floor(activity.toolCallCount / policy.toolCountScoreUnit),\n policy.toolCountScoreCap,\n )\n const toolDiversityScore = activity.uniqueToolCount < policy.toolDiversityThreshold\n ? 0\n : Math.min(\n activity.uniqueToolCount - policy.toolDiversityThreshold + 1,\n policy.toolDiversityScoreCap,\n )\n const score = textLengthScore + turnScore + toolCallScore + toolDiversityScore\n return {\n ...activity,\n textLengthScore,\n turnScore,\n toolCallScore,\n toolDiversityScore,\n score,\n threshold: policy.reviewThreshold,\n eligible: score >= policy.reviewThreshold,\n }\n}\n","import { mkdtempSync, rmSync, writeFileSync } from 'node:fs'\nimport { tmpdir } from 'node:os'\nimport { join } from 'node:path'\nimport type { JsonValue } from './contracts.ts'\nimport type { ResolvedConfig } from './config.ts'\nimport {\n MemoryBodyRegistry,\n type CreateMemoryBodyRequest,\n type MemoryBody,\n type UpdateMemoryBodyRequest,\n} from './memory-bodies.ts'\nimport type { MnemonRunner } from './runner.ts'\nimport type { LifecycleSnapshot } from './lifecycle.ts'\nimport type { DocumentSnapshot } from './documents.ts'\nimport type { StorageScopeCatalog } from './storage-scope.ts'\n\nexport const CATEGORIES = ['preference', 'decision', 'fact', 'insight', 'context', 'general'] as const\nexport type Category = typeof CATEGORIES[number]\nexport const SOURCES = ['user', 'agent', 'external'] as const\nexport type Source = typeof SOURCES[number]\nexport const EDGE_TYPES = ['temporal', 'semantic', 'causal', 'entity'] as const\nexport type EdgeType = typeof EDGE_TYPES[number]\nexport const INTENTS = ['WHY', 'WHEN', 'ENTITY', 'GENERAL'] as const\nexport type Intent = typeof INTENTS[number]\n\nexport interface Insight {\n id: string\n content: string\n category?: string\n importance?: number\n tags?: string[]\n entities?: string[]\n source?: string\n score?: number\n confidence?: string\n intent?: string\n matchedVia?: string\n createdAt?: string\n depth?: number\n edgeType?: string\n memoryBodyId?: string\n memoryBodyName?: string\n}\n\nexport interface SearchRequest {\n query: string\n mode?: 'smart' | 'keyword' | 'basic'\n limit?: number\n category?: Category\n source?: Source\n intent?: Intent\n memoryBodyIds?: string[]\n}\n\nexport interface RememberRequest {\n content: string\n category?: Category\n importance?: number\n tags?: string[]\n entities?: string[]\n source?: Source\n memoryBodyId?: string\n}\n\nexport interface MemoryBodyStats {\n totalInsights: number\n deletedInsights: number\n edgeCount: number\n oplogCount: number\n dbSizeBytes: number\n byCategory: Record<string, number>\n topEntities: Array<{ entity: string; count: number }>\n}\n\nexport interface MemoryBodyView extends MemoryBody {\n healthy: boolean\n error?: string\n stats?: MemoryBodyStats\n}\n\nexport interface MemoryBodyCatalog {\n items: MemoryBodyView[]\n total: number\n activeCount: number\n directory: string\n generatedAt: string\n}\n\nexport interface StatusView {\n healthy: boolean\n error?: string\n version?: string\n cliPath: string\n commandFound: boolean\n dataDir: string\n store: string\n writeEnabled: boolean\n timeoutMs: number\n defaultRecallLimit: number\n memoryBodyDirectory: string\n memoryBodies: MemoryBodyView[]\n lifecycle?: LifecycleSnapshot\n documents?: DocumentSnapshot\n storage?: StorageScopeCatalog\n workspaceContext?: {\n mode: 'global' | 'workspace' | 'custom'\n selectedRoot: string\n effectiveRoot: string\n aligned: boolean\n selectedWorkspace?: { id: string; title: string; path: string }\n effectiveWorkspace?: { id: string; title: string; path: string }\n }\n stats?: MemoryBodyStats & { dbPath?: string }\n}\n\nexport interface MemoryGraphNode extends Insight {\n color: string\n graphId?: string\n kind?: 'memory' | 'entity' | 'space'\n memoryBodyIds?: string[]\n memoryBodyNames?: string[]\n occurrenceCount?: number\n}\n\nexport interface MemoryGraphEdge {\n sourceId: string\n targetId: string\n label: string\n color: string\n type?: EdgeType | 'scope'\n}\n\nexport interface MemoryGraphSnapshot {\n nodes: MemoryGraphNode[]\n edges: MemoryGraphEdge[]\n generatedAt: string\n memoryBodies?: Array<Pick<MemoryBody, 'id' | 'name' | 'active'>>\n}\n\nexport interface MemoryListRequest {\n query?: string\n category?: Category\n limit?: number\n memoryBodyIds?: string[]\n}\n\nexport interface MemoryListView {\n items: MemoryGraphNode[]\n total: number\n generatedAt: string\n}\n\nexport interface EntityView {\n items: Array<{ entity: string; count: number }>\n insights: Insight[]\n selected?: string\n}\n\nfunction record(value: JsonValue | undefined): Record<string, JsonValue> | undefined {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n ? value as Record<string, JsonValue>\n : undefined\n}\n\nfunction text(value: JsonValue | undefined): string | undefined {\n return typeof value === 'string' ? value : undefined\n}\n\nfunction number(value: JsonValue | undefined): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction stringArray(value: JsonValue | undefined): string[] | undefined {\n if (!Array.isArray(value)) return undefined\n return value.filter((entry): entry is string => typeof entry === 'string')\n}\n\nfunction normalizeInsight(value: JsonValue): Insight | undefined {\n const item = record(value)\n if (item === undefined) return undefined\n // Mnemon <=0.1.2 returns full recall rows as\n // `{ insight: { id, content, ... }, score, intent, via, signals }`; newer\n // builds default to a compact flat row. Accept both without version gates.\n const nested = record(item.insight)\n const core = nested ?? item\n const id = text(core.id)\n const content = text(core.content)\n if (id === undefined || content === undefined) return undefined\n const insight: Insight = { id, content }\n const optionalText = {\n category: text(core.category),\n source: text(core.source),\n confidence: text(item.confidence),\n intent: text(item.intent),\n matchedVia: text(item.matched_via ?? item.via ?? item.via_edge_type),\n createdAt: text(core.created_at),\n edgeType: text(item.via_edge_type),\n }\n for (const [key, value] of Object.entries(optionalText)) if (value !== undefined) Object.assign(insight, { [key]: value })\n const optionalNumbers = {\n importance: number(core.importance),\n score: number(item.score),\n depth: number(item.depth),\n }\n for (const [key, value] of Object.entries(optionalNumbers)) if (value !== undefined) Object.assign(insight, { [key]: value })\n const tags = stringArray(core.tags)\n const entities = stringArray(core.entities)\n if (tags !== undefined) insight.tags = tags\n if (entities !== undefined) insight.entities = entities\n return insight\n}\n\nconst JS_STRING = '\"(?:\\\\\\\\.|[^\"\\\\\\\\])*\"'\nconst VIZ_NODE_PATTERN = new RegExp(`\\\\{id:(${JS_STRING}),label:(${JS_STRING}),title:(${JS_STRING}),color:(${JS_STRING}),font:\\\\{color:\"white\"\\\\}\\\\}`, 'g')\nconst VIZ_EDGE_PATTERN = new RegExp(`\\\\{from:(${JS_STRING}),to:(${JS_STRING}),label:(${JS_STRING}),color:\\\\{color:(${JS_STRING})\\\\},arrows:\"to\"`, 'g')\nconst EDGE_COLORS: Record<string, EdgeType> = {\n '#aaaaaa': 'temporal',\n '#3498db': 'semantic',\n '#e74c3c': 'causal',\n '#2ecc71': 'entity',\n}\n\nfunction decodeJsString(value: string): string {\n const decoded = JSON.parse(value) as unknown\n if (typeof decoded !== 'string') throw new Error('Mnemon viz contained an invalid string')\n return decoded\n}\n\n/** Parse the official Mnemon vis.js export without executing its HTML or loading its CDN script. */\nexport function parseMemoryGraph(html: string, now = new Date()): MemoryGraphSnapshot {\n const nodes: MemoryGraphNode[] = []\n const edges: MemoryGraphEdge[] = []\n for (const match of html.matchAll(VIZ_NODE_PATTERN)) {\n const id = decodeJsString(match[1]!)\n const label = decodeJsString(match[2]!)\n const content = decodeJsString(match[3]!).replaceAll('\\\\n', '\\n')\n const color = decodeJsString(match[4]!)\n const category = /\\[([a-z_]+)\\]/i.exec(label)?.[1] ?? 'general'\n nodes.push({ id, content, category, color })\n }\n for (const match of html.matchAll(VIZ_EDGE_PATTERN)) {\n const color = decodeJsString(match[4]!)\n const type = EDGE_COLORS[color.toLowerCase()]\n edges.push({\n sourceId: decodeJsString(match[1]!),\n targetId: decodeJsString(match[2]!),\n label: decodeJsString(match[3]!),\n color,\n ...(type === undefined ? {} : { type }),\n })\n }\n if (!html.includes('var nodes = new vis.DataSet([')) throw new Error('Mnemon viz returned an unexpected HTML payload')\n return { nodes, edges, generatedAt: now.toISOString() }\n}\n\nfunction boundedInteger(value: number | undefined, fallback: number, min: number, max: number): number {\n if (value === undefined) return fallback\n if (!Number.isInteger(value) || value < min || value > max) throw new Error(`value must be an integer within ${min}..${max}`)\n return value\n}\n\nfunction required(value: string, label: string, max: number): string {\n const normalized = value.trim()\n if (normalized === '') throw new Error(`${label} is required`)\n if (normalized.length > max) throw new Error(`${label} is too long (max ${max} characters)`)\n return normalized\n}\n\nfunction allowed<T extends string>(value: T | undefined, values: readonly T[], label: string): T | undefined {\n if (value !== undefined && !values.includes(value)) {\n throw new Error(`${label} must be one of: ${values.join(', ')}`)\n }\n return value\n}\n\nfunction commaList(values: string[] | undefined, label: string, limit: number): string | undefined {\n if (values === undefined) return undefined\n const normalized = values.map(value => value.trim()).filter(value => value !== '')\n if (normalized.length > limit) throw new Error(`${label} accepts at most ${limit} values`)\n if (normalized.some(value => value.includes(','))) throw new Error(`${label} values cannot contain commas`)\n return normalized.length === 0 ? undefined : normalized.join(',')\n}\n\nexport class MnemonService {\n readonly memoryBodies: MemoryBodyRegistry\n\n constructor(readonly runner: MnemonRunner, readonly config: ResolvedConfig, memoryBodies?: MemoryBodyRegistry) {\n this.memoryBodies = memoryBodies ?? new MemoryBodyRegistry(runner)\n }\n\n async bodies(signal?: AbortSignal): Promise<MemoryBodyCatalog> {\n const items: MemoryBodyView[] = []\n for (const body of this.memoryBodies.list()) items.push(await this.bodyStatus(body, signal))\n return {\n items,\n total: items.length,\n activeCount: items.filter(body => body.active).length,\n directory: this.memoryBodies.directory,\n generatedAt: new Date().toISOString(),\n }\n }\n\n async status(signal?: AbortSignal): Promise<StatusView> {\n const catalog = await this.bodies(signal)\n const active = catalog.items.filter(body => body.active)\n const base = {\n cliPath: this.runner.command,\n commandFound: this.runner.commandFound,\n dataDir: this.runner.effectiveDataDir(),\n store: active.map(body => body.id).join(', ') || 'none',\n writeEnabled: this.config.writeEnabled,\n timeoutMs: this.config.timeoutMs,\n defaultRecallLimit: this.config.defaultRecallLimit,\n memoryBodyDirectory: catalog.directory,\n memoryBodies: catalog.items,\n }\n try {\n const rawVersion = await this.runner.runText(['--version'], signal === undefined ? { globalFlags: false } : { signal, globalFlags: false })\n const healthyBodies = active.filter(body => body.healthy && body.stats !== undefined)\n const topEntities = new Map<string, number>()\n const byCategory: Record<string, number> = {}\n for (const body of healthyBodies) {\n for (const [category, count] of Object.entries(body.stats!.byCategory)) byCategory[category] = (byCategory[category] ?? 0) + count\n for (const entity of body.stats!.topEntities) topEntities.set(entity.entity, (topEntities.get(entity.entity) ?? 0) + entity.count)\n }\n const stats: StatusView['stats'] = {\n totalInsights: healthyBodies.reduce((total, body) => total + body.stats!.totalInsights, 0),\n deletedInsights: healthyBodies.reduce((total, body) => total + body.stats!.deletedInsights, 0),\n edgeCount: healthyBodies.reduce((total, body) => total + body.stats!.edgeCount, 0),\n oplogCount: healthyBodies.reduce((total, body) => total + body.stats!.oplogCount, 0),\n dbSizeBytes: healthyBodies.reduce((total, body) => total + body.stats!.dbSizeBytes, 0),\n byCategory,\n topEntities: [...topEntities].map(([entity, count]) => ({ entity, count })).sort((left, right) => right.count - left.count),\n ...(active.length === 1 ? { dbPath: active[0]!.dbPath } : {}),\n }\n const failed = active.filter(body => !body.healthy)\n return {\n healthy: failed.length === 0,\n ...base,\n version: rawVersion.trim().replace(/^mnemon version\\s+/i, ''),\n stats,\n ...(failed.length === 0 ? {} : { error: failed.map(body => `${body.name}: ${body.error ?? 'unavailable'}`).join('; ') }),\n }\n } catch (error) {\n return { healthy: false, ...base, error: error instanceof Error ? error.message : String(error) }\n }\n }\n\n async search(request: SearchRequest, signal?: AbortSignal): Promise<{ query: string; mode: string; results: Insight[]; hint?: string }> {\n const query = required(request.query, 'query', 2000)\n const limit = boundedInteger(request.limit, this.config.defaultRecallLimit, 1, 50)\n const mode = allowed(request.mode, ['smart', 'keyword', 'basic'] as const, 'mode') ?? 'smart'\n const category = allowed(request.category, CATEGORIES, 'category')\n const source = allowed(request.source, SOURCES, 'source')\n const intent = allowed(request.intent, INTENTS, 'intent')\n const bodies = this.readBodies(request.memoryBodyIds)\n const results: Insight[] = []\n const hints: string[] = []\n for (const body of bodies) {\n const args = mode === 'keyword'\n ? ['search', query, '--limit', String(limit)]\n : ['recall', query, '--limit', String(limit)]\n if (mode === 'basic') args.push('--basic')\n if (mode !== 'keyword') {\n if (category !== undefined) args.push('--cat', category)\n if (source !== undefined) args.push('--source', source)\n if (intent !== undefined) args.push('--intent', intent)\n }\n const payload = await this.runner.runJson(args, { ...(signal === undefined ? {} : { signal }), store: body.id })\n const wrapper = record(payload)\n const values = Array.isArray(payload) ? payload : Array.isArray(wrapper?.results) ? wrapper.results : []\n results.push(...values.map(normalizeInsight).filter((entry): entry is Insight => entry !== undefined).map(entry => this.annotate(entry, body)))\n const hint = text(wrapper?.hint)\n if (hint !== undefined) hints.push(`${body.name}: ${hint}`)\n }\n results.sort((left, right) => (right.score ?? 0) - (left.score ?? 0))\n return { query, mode, results: results.slice(0, limit), ...(hints.length === 0 ? {} : { hint: hints.join('\\n') }) }\n }\n\n async graph(signal?: AbortSignal, memoryBodyIds?: string[]): Promise<MemoryGraphSnapshot> {\n const bodies = this.readBodies(memoryBodyIds)\n const nodes: MemoryGraphNode[] = []\n const edges: MemoryGraphEdge[] = []\n for (const body of bodies) {\n const snapshot = await this.graphForBody(body, signal)\n const graphId = (id: string): string => `${body.id}:${id}`\n nodes.push(...snapshot.nodes.map(node => ({ ...this.annotate(node, body), color: node.color, graphId: graphId(node.id) })))\n edges.push(...snapshot.edges.map(edge => ({ ...edge, sourceId: graphId(edge.sourceId), targetId: graphId(edge.targetId) })))\n }\n return {\n nodes,\n edges,\n generatedAt: new Date().toISOString(),\n memoryBodies: bodies.map(({ id, name, active }) => ({ id, name, active })),\n }\n }\n\n async list(request: MemoryListRequest = {}, signal?: AbortSignal): Promise<MemoryListView> {\n const query = request.query?.trim().toLocaleLowerCase() ?? ''\n if (query.length > 500) throw new Error('query is too long (max 500 characters)')\n const category = allowed(request.category, CATEGORIES, 'category')\n const limit = boundedInteger(request.limit, 200, 1, 1000)\n const graph = await this.graph(signal, request.memoryBodyIds)\n const matches = graph.nodes.filter(node =>\n (category === undefined || node.category === category)\n && (query === '' || node.content.toLocaleLowerCase().includes(query) || node.id.toLocaleLowerCase().includes(query)),\n )\n return { items: matches.slice(0, limit), total: matches.length, generatedAt: graph.generatedAt }\n }\n\n async entities(entity?: string, limit?: number, signal?: AbortSignal): Promise<EntityView> {\n const status = await this.status(signal)\n const items = status.stats?.topEntities ?? []\n const selected = entity?.trim() ?? ''\n if (selected === '') return { items, insights: [] }\n if (selected.length > 200) throw new Error('entity is too long (max 200 characters)')\n const response = await this.search({ query: selected, intent: 'ENTITY', limit: boundedInteger(limit, 20, 1, 50) }, signal)\n return { items, selected, insights: response.results }\n }\n\n async remember(request: RememberRequest, signal?: AbortSignal): Promise<JsonValue> {\n this.assertWritable()\n const body = this.writeBody(request.memoryBodyId)\n const content = required(request.content, 'content', 8000)\n const importance = boundedInteger(request.importance, 3, 1, 5)\n const category = allowed(request.category, CATEGORIES, 'category') ?? 'general'\n const source = allowed(request.source, SOURCES, 'source') ?? 'user'\n const args = ['remember', content, '--cat', category, '--imp', String(importance), '--source', source]\n const tags = commaList(request.tags, 'tags', 20)\n const entities = commaList(request.entities, 'entities', 50)\n if (tags !== undefined) args.push('--tags', tags)\n if (entities !== undefined) args.push('--entities', entities)\n const result = await this.runner.runJson(args, { ...(signal === undefined ? {} : { signal }), store: body.id })\n this.activateAfterWrite(body)\n return this.annotateResult(result, body)\n }\n\n async related(id: string, depth = 2, edge?: EdgeType, signal?: AbortSignal, memoryBodyId?: string): Promise<Insight[]> {\n const body = this.readBody(memoryBodyId)\n const args = ['related', required(id, 'id', 200), '--depth', String(boundedInteger(depth, 2, 1, 5))]\n const selectedEdge = allowed(edge, EDGE_TYPES, 'edge')\n if (selectedEdge !== undefined) args.push('--edge', selectedEdge)\n const payload = await this.runner.runJson(args, { ...(signal === undefined ? {} : { signal }), store: body.id })\n if (!Array.isArray(payload)) return []\n return payload.map(normalizeInsight).filter((entry): entry is Insight => entry !== undefined).map(entry => this.annotate(entry, body))\n }\n\n async link(sourceId: string, targetId: string, type: EdgeType = 'semantic', weight = 0.5, reason?: string, signal?: AbortSignal, memoryBodyId?: string): Promise<JsonValue> {\n this.assertWritable()\n const body = this.writeBody(memoryBodyId)\n if (!Number.isFinite(weight) || weight < 0 || weight > 1) throw new Error('weight must be within 0..1')\n const selectedType = allowed(type, EDGE_TYPES, 'type') ?? 'semantic'\n const args = ['link', required(sourceId, 'sourceId', 200), required(targetId, 'targetId', 200), '--type', selectedType, '--weight', String(weight)]\n if (reason !== undefined && reason.trim() !== '') args.push('--meta', JSON.stringify({ reason: required(reason, 'reason', 1000) }))\n const result = await this.runner.runJson(args, { ...(signal === undefined ? {} : { signal }), store: body.id })\n this.activateAfterWrite(body)\n return this.annotateResult(result, body)\n }\n\n async forget(id: string, signal?: AbortSignal, memoryBodyId?: string): Promise<JsonValue> {\n this.assertWritable()\n const body = this.writeBody(memoryBodyId)\n const result = await this.runner.runJson(['forget', required(id, 'id', 200)], { ...(signal === undefined ? {} : { signal }), store: body.id })\n this.activateAfterWrite(body)\n return this.annotateResult(result, body)\n }\n\n async createBody(request: CreateMemoryBodyRequest, signal?: AbortSignal): Promise<MemoryBody> {\n this.assertWritable()\n return this.memoryBodies.create(request, signal)\n }\n\n updateBody(id: string, request: UpdateMemoryBodyRequest): MemoryBody {\n this.assertWritable()\n return this.memoryBodies.update(id, request)\n }\n\n async mergeBodies(targetBodyId: string, sourceBodyIds: string[], deactivateSources = true, signal?: AbortSignal): Promise<JsonValue> {\n this.assertWritable()\n const target = this.memoryBodies.get(targetBodyId)\n const sourceIds = [...new Set(sourceBodyIds.map(id => id.trim()).filter(id => id !== ''))]\n if (sourceIds.length === 0) throw new Error('sourceMemoryBodyIds requires at least one memory body')\n if (sourceIds.includes(target.id)) throw new Error('target memory body cannot also be a merge source')\n const sources = sourceIds.map(id => this.memoryBodies.get(id))\n const insights: Array<Record<string, JsonValue>> = []\n const edges: Array<Record<string, JsonValue>> = []\n for (const source of sources) {\n const offset = insights.length\n const sourceInsights = await this.allInsights(source, signal)\n const indexById = new Map(sourceInsights.map((insight, index) => [insight.id, offset + index]))\n for (const insight of sourceInsights) {\n insights.push({\n content: insight.content,\n ...(insight.category === undefined ? {} : { category: insight.category }),\n ...(insight.importance === undefined ? {} : { importance: insight.importance }),\n ...(insight.tags === undefined ? {} : { tags: insight.tags }),\n ...(insight.entities === undefined ? {} : { entities: insight.entities }),\n ...(insight.source === undefined ? {} : { source: insight.source }),\n ...(insight.createdAt === undefined ? {} : { created_at: insight.createdAt }),\n })\n }\n const graph = await this.graphForBody(source, signal)\n for (const edge of graph.edges) {\n const sourceIndex = indexById.get(edge.sourceId)\n const targetIndex = indexById.get(edge.targetId)\n if (sourceIndex === undefined || targetIndex === undefined || edge.type === undefined) continue\n edges.push({ source_index: sourceIndex, target_index: targetIndex, edge_type: edge.type, weight: 0.5, reason: edge.label })\n }\n }\n if (insights.length === 0) {\n this.activateAfterWrite(target)\n if (deactivateSources) for (const source of sources) this.memoryBodies.setActive(source.id, false)\n return { imported: 0, updated: 0, skipped: 0, edges_inserted: 0, targetMemoryBodyId: target.id }\n }\n const temporary = mkdtempSync(join(tmpdir(), 'dsh-mnemon-merge-'))\n const draftPath = join(temporary, 'memory-draft.json')\n try {\n writeFileSync(draftPath, JSON.stringify({ schema_version: '1', source: 'dsh-mnemon-merge', insights, edges }), { encoding: 'utf8', mode: 0o600 })\n const result = await this.runner.runJson(['import', draftPath], { ...(signal === undefined ? {} : { signal }), store: target.id })\n this.activateAfterWrite(target)\n if (deactivateSources) for (const source of sources) this.memoryBodies.setActive(source.id, false)\n return this.annotateResult(result, target)\n } finally {\n rmSync(temporary, { recursive: true, force: true })\n }\n }\n\n private async bodyStatus(body: MemoryBody, signal?: AbortSignal): Promise<MemoryBodyView> {\n try {\n const raw = await this.runner.runJson(['status'], { ...(signal === undefined ? {} : { signal }), store: body.id })\n const status = record(raw)\n if (status === undefined) throw new Error('mnemon status returned an unexpected payload')\n return { ...body, healthy: true, stats: this.parseStats(status) }\n } catch (error) {\n return { ...body, healthy: false, error: error instanceof Error ? error.message : String(error) }\n }\n }\n\n private parseStats(status: Record<string, JsonValue>): MemoryBodyStats {\n const byCategoryRecord = record(status.by_category) ?? {}\n const byCategory: Record<string, number> = {}\n for (const [category, count] of Object.entries(byCategoryRecord)) if (typeof count === 'number') byCategory[category] = count\n const topEntities = Array.isArray(status.top_entities)\n ? status.top_entities.flatMap((entry) => {\n const entity = record(entry)\n const name = text(entity?.entity)\n const count = number(entity?.count)\n return name === undefined || count === undefined ? [] : [{ entity: name, count }]\n })\n : []\n return {\n totalInsights: number(status.total_insights) ?? 0,\n deletedInsights: number(status.deleted_insights) ?? 0,\n edgeCount: number(status.edge_count) ?? 0,\n oplogCount: number(status.oplog_count) ?? 0,\n dbSizeBytes: number(status.db_size_bytes) ?? 0,\n byCategory,\n topEntities,\n }\n }\n\n private async graphForBody(body: MemoryBody, signal?: AbortSignal): Promise<MemoryGraphSnapshot> {\n const [html, insights] = await Promise.all([\n this.runner.runText(['viz', '--format', 'html', '--output', '-'], { ...(signal === undefined ? {} : { signal }), store: body.id }),\n // Mnemon's HTML visualization omits tags and entities. A readonly recall\n // supplies that metadata without incrementing access counters.\n this.allInsights(body, signal, true),\n ])\n const snapshot = parseMemoryGraph(html)\n const metadata = new Map(insights.map(insight => [insight.id, insight]))\n return {\n ...snapshot,\n nodes: snapshot.nodes.map(node => {\n const insight = metadata.get(node.id)\n return insight === undefined\n ? node\n : { ...node, ...insight, id: node.id, content: node.content, color: node.color }\n }),\n }\n }\n\n private async allInsights(body: MemoryBody, signal?: AbortSignal, readonly = false): Promise<Insight[]> {\n const payload = await this.runner.runJson([\n ...(readonly ? ['--readonly'] : []),\n 'recall', '', '--basic', '--limit', '100000',\n ], { ...(signal === undefined ? {} : { signal }), store: body.id })\n const values = Array.isArray(payload) ? payload : Array.isArray(record(payload)?.results) ? record(payload)!.results as JsonValue[] : []\n return values.map(normalizeInsight).filter((entry): entry is Insight => entry !== undefined)\n }\n\n private readBodies(ids?: string[]): MemoryBody[] {\n const active = this.memoryBodies.active()\n if (ids === undefined || ids.length === 0) return active\n const requested = [...new Set(ids.map(id => id.trim()).filter(id => id !== ''))]\n return requested.map(id => {\n const body = this.memoryBodies.get(id)\n if (!body.active) throw new Error(`memory body is not active for reading: ${id}`)\n return body\n })\n }\n\n private readBody(id?: string): MemoryBody {\n if (id !== undefined && id.trim() !== '') {\n const body = this.memoryBodies.get(id)\n if (!body.active) throw new Error(`memory body is not active for reading: ${body.id}`)\n return body\n }\n const active = this.memoryBodies.active()\n if (active.length !== 1) throw new Error('memoryBodyId is required when the number of active memory bodies is not exactly one')\n return active[0]!\n }\n\n private writeBody(id?: string): MemoryBody {\n if (id !== undefined && id.trim() !== '') return this.memoryBodies.get(id)\n const active = this.memoryBodies.active()\n if (active.length !== 1) throw new Error('memoryBodyId is required when the number of active memory bodies is not exactly one')\n return active[0]!\n }\n\n private annotate<T extends Insight>(insight: T, body: MemoryBody): T {\n return { ...insight, memoryBodyId: body.id, memoryBodyName: body.name }\n }\n\n private annotateResult(result: JsonValue, body: MemoryBody): JsonValue {\n const value = record(result)\n return value === undefined ? result : { ...value, memoryBodyId: body.id, memoryBodyName: body.name }\n }\n\n private activateAfterWrite(body: MemoryBody): void {\n if (!body.active) this.memoryBodies.setActive(body.id, true)\n }\n\n private assertWritable(): void {\n if (!this.config.writeEnabled) throw new Error('dsh-mnemon is configured read-only (writeEnabled: false)')\n }\n}\n","export interface MnemonLogoProps {\n className?: string | undefined\n title?: string\n}\n\n/** Official Mnemon mark from mnemon-dev/mnemon (Apache-2.0). */\nexport function MnemonLogo({ className, title = 'Mnemon' }: MnemonLogoProps): JSX.Element {\n return (\n <svg className={className} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 400 400\" role=\"img\" aria-label={title}>\n <rect width=\"400\" height=\"400\" fill=\"#1A1A1A\" />\n <path d=\"M 91.5,153.5 L 98.5,146.5 L 98.5,98.5 L 146.5,98.5 L 153.5,91.5 L 91.5,91.5 Z\" fill=\"#D4D4D8\" />\n <path d=\"M 246.5,91.5 L 253.5,98.5 L 301.5,98.5 L 301.5,146.5 L 308.5,153.5 L 308.5,91.5 Z\" fill=\"#D4D4D8\" />\n <path d=\"M 91.5,246.5 L 98.5,253.5 L 98.5,301.5 L 146.5,301.5 L 153.5,308.5 L 91.5,308.5 Z\" fill=\"#D4D4D8\" />\n <path d=\"M 308.5,246.5 L 301.5,253.5 L 301.5,301.5 L 253.5,301.5 L 246.5,308.5 L 308.5,308.5 Z\" fill=\"#D4D4D8\" />\n <polyline points=\"265,187 278,200 265,213\" fill=\"none\" stroke=\"#D4D4D8\" strokeWidth=\"2\" strokeLinecap=\"square\" />\n <polyline points=\"135,187 122,200 135,213\" fill=\"none\" stroke=\"#D4D4D8\" strokeWidth=\"2\" strokeLinecap=\"square\" />\n <polygon points=\"200,155 245,200 200,245 155,200\" fill=\"none\" stroke=\"#D4D4D8\" strokeWidth=\"7\" />\n </svg>\n )\n}\n","import { createContext, Fragment, useCallback, useContext, useEffect, useMemo, useRef, useState, type FormEvent, type PointerEvent as ReactPointerEvent } from 'react'\nimport { consumeMnemonAnchor, subscribeMnemonAnchor, type MnemonAnchor } from './anchor.ts'\nimport Markdown from 'markdown-to-jsx'\nimport type { ClientConnectionHandle, ClientSettingsScope } from '../contracts.ts'\nimport type { Config } from '../config.ts'\nimport type { DocumentRecord, DocumentSnapshot, DocumentView } from '../documents.ts'\nimport { QODERWORK_REVIEW_POLICY } from '../review-activity.ts'\nimport type { RuntimeMemoryEntry, RuntimeMemoryImportance, RuntimeMemorySnapshot, RuntimeMemoryTarget } from '../runtime-memory.ts'\nimport type { StorageAreaInventory, StorageScopeInventory, StorageScopeKind } from '../storage-scope.ts'\nimport {\n CATEGORIES,\n type Category,\n type EntityView,\n type Insight,\n type MemoryGraphNode,\n type MemoryGraphSnapshot,\n type MemoryListView,\n type MemoryBodyCatalog,\n type MemoryBodyView,\n type StatusView,\n} from '../service.ts'\nimport { MnemonClient } from './api.ts'\nimport { translateZh, type MnemonKey, type MnemonTranslate } from './locales.ts'\nimport { MnemonLogo } from './MnemonLogo.tsx'\nimport css from './MnemonView.module.css'\n\nexport interface MnemonViewProps {\n connection: ClientConnectionHandle\n settingsScope: ClientSettingsScope<Config>\n sessionId?: string\n workspaceId?: string\n workspaceSelection?: MnemonWorkspaceSelection\n t?: MnemonTranslate\n}\n\nexport interface MnemonWorkspaceSelection {\n options: Array<{ id: string; title: string; path: string }>\n selectedWorkspaceId?: string\n effectiveWorkspaceId?: string\n onSelect(workspaceId: string): void\n onAlign(): void\n}\n\ntype Page = 'overview' | 'runtime' | 'documents' | 'explore' | 'entities' | 'remember' | 'list' | 'status'\n\ntype NavEntry = { id: Page; label: MnemonKey; detail: MnemonKey; glyph: string }\ntype NavGroup = { aria: MnemonKey; entries: NavEntry[] }\n\n/** 系统 → 三层存储 → 读写工具;组间以分隔线呈现。 */\nconst PAGE_NAV: NavGroup[] = [\n {\n aria: 'nav.group.system',\n entries: [\n { id: 'status', label: 'nav.status', detail: 'nav.status.detail', glyph: '⌘' },\n ],\n },\n {\n aria: 'nav.group.storage',\n entries: [\n { id: 'runtime', label: 'nav.runtime', detail: 'nav.runtime.detail', glyph: '◫' },\n { id: 'overview', label: 'nav.bodies', detail: 'nav.bodies.detail', glyph: '◇' },\n { id: 'documents', label: 'nav.documents', detail: 'nav.documents.detail', glyph: '▤' },\n ],\n },\n {\n aria: 'nav.group.tools',\n entries: [\n { id: 'remember', label: 'nav.remember', detail: 'nav.remember.detail', glyph: '+' },\n { id: 'explore', label: 'nav.search', detail: 'nav.search.detail', glyph: '⌕' },\n { id: 'entities', label: 'nav.entities', detail: 'nav.entities.detail', glyph: '◎' },\n { id: 'list', label: 'nav.content', detail: 'nav.content.detail', glyph: '≡' },\n ],\n },\n]\n\nconst CATEGORY_KEYS: Record<string, MnemonKey> = {\n decision: 'category.decision',\n preference: 'category.preference',\n fact: 'category.fact',\n insight: 'category.insight',\n context: 'category.context',\n general: 'category.general',\n}\n\nconst I18nContext = createContext<MnemonTranslate>(translateZh)\nfunction useT(): MnemonTranslate { return useContext(I18nContext) }\nfunction categoryLabel(t: MnemonTranslate, category: string): string { return CATEGORY_KEYS[category] === undefined ? category : t(CATEGORY_KEYS[category]!) }\n\nfunction humanBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`\n return `${(bytes / 1024 / 1024).toFixed(1)} MB`\n}\n\nfunction message(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n\nfunction short(value: string, max: number): string {\n return value.length <= max ? value : `${value.slice(0, max - 1)}…`\n}\n\nfunction insightKey(insight: Insight): string {\n return `${insight.memoryBodyId ?? 'memory'}:${insight.id}`\n}\n\nfunction PageHeader(props: { title: string; description: string; meta?: string; action?: JSX.Element }): JSX.Element {\n return (\n <div className={css.pageHeader}>\n <div><h2>{props.title}</h2><p>{props.description}</p></div>\n <div className={css.pageHeaderMeta}>{props.meta !== undefined && <code>{props.meta}</code>}{props.action}</div>\n </div>\n )\n}\n\nfunction EmptyState(props: { glyph: string; title: string; children: string }): JSX.Element {\n return (\n <div className={css.emptyState}>\n <div className={css.emptyGlyph} aria-hidden=\"true\"><span>{props.glyph}</span></div>\n <div><h3>{props.title}</h3><p>{props.children}</p></div>\n </div>\n )\n}\n\n/** Full-text popup for a selected graph node whose inspector preview is clamped. */\nfunction ContentPreview(props: { node: MemoryGraphNode; kind: string; onClose: () => void }): JSX.Element {\n const t = useT()\n const close = useCallback(() => props.onClose(), [props])\n useEffect(() => {\n const onKey = (event: KeyboardEvent) => { if (event.key === 'Escape') props.onClose() }\n window.addEventListener('keydown', onKey)\n return () => window.removeEventListener('keydown', onKey)\n }, [props])\n const meta = [props.kind, props.node.id, props.node.memoryBodyName].filter((entry): entry is string => entry !== undefined).join(' · ')\n return (\n <div className={css.previewOverlay} onPointerDown={event => { if (event.target === event.currentTarget) props.onClose() }}>\n <div className={css.previewDialog} role=\"dialog\" aria-modal=\"true\" aria-label={t('overview.previewTitle')}>\n <header className={css.previewHeading}><span>{t('overview.previewTitle')}</span><button type=\"button\" onClick={close} aria-label={t('common.cancel')}>×</button></header>\n <div className={css.previewMeta}>{meta}</div>\n <div className={css.previewBody}><p>{props.node.content}</p></div>\n </div>\n </div>\n )\n}\n\nconst SAFE_LINK_PATTERN = /^(?:https?:|mailto:|#|\\/)/iu\n\nfunction safeLink(href: string | null | undefined): string | undefined {\n if (href == null) return undefined\n const value = href.trim()\n return SAFE_LINK_PATTERN.test(value) ? value : undefined\n}\n\n/** Render managed Markdown without raw HTML and with a deliberately small link surface. */\nfunction DocumentMarkdown(props: { content: string }): JSX.Element {\n return (\n <div className={css.markdownBody}>\n <Markdown options={{\n disableParsingRawHTML: true,\n forceBlock: true,\n overrides: {\n a: {\n component: ({ href, children, ...rest }: { href?: string; children?: JSX.Element | string }) => {\n const target = safeLink(href)\n return target === undefined\n ? <span>{children}</span>\n : <a {...rest} href={target} target={target.startsWith('http') ? '_blank' : undefined} rel={target.startsWith('http') ? 'noreferrer noopener' : undefined}>{children}</a>\n },\n },\n },\n }}>{props.content}</Markdown>\n </div>\n )\n}\n\nfunction InsightCard(props: {\n insight: Insight\n writeEnabled: boolean\n onForget: (insight: Insight) => Promise<void>\n onRelated?: (insight: Insight) => void\n onClone?: (insight: Insight) => void\n}): JSX.Element {\n const t = useT()\n const [confirming, setConfirming] = useState(false)\n const [forgetting, setForgetting] = useState(false)\n const { insight } = props\n const meta = [\n insight.memoryBodyName,\n insight.category !== undefined ? categoryLabel(t, insight.category) : undefined,\n insight.importance !== undefined ? t('common.importance', { value: insight.importance }) : undefined,\n insight.score !== undefined ? `score ${insight.score.toFixed(3)}` : undefined,\n insight.depth !== undefined ? t('common.hops', { count: insight.depth }) : undefined,\n ].filter((entry): entry is string => entry !== undefined)\n\n const forget = async () => {\n setForgetting(true)\n try {\n await props.onForget(insight)\n } finally {\n setForgetting(false)\n setConfirming(false)\n }\n }\n\n return (\n <article className={css.insightCard}>\n <div className={css.cardTop}>\n <div className={css.badges}>{meta.map(entry => <span key={entry} className={css.badge}>{entry}</span>)}</div>\n <code className={css.id} title={insight.id}>{insight.id.slice(0, 8)}</code>\n </div>\n <p className={css.content}>{insight.content}</p>\n {(insight.tags?.length ?? 0) > 0 && <div className={css.tags}>{insight.tags!.map(tag => <span key={tag}>#{tag}</span>)}</div>}\n {(insight.entities?.length ?? 0) > 0 && <div className={css.entities}>{insight.entities!.map(entity => <span key={entity}>{entity}</span>)}</div>}\n <div className={css.cardActions}>\n {confirming ? (\n <div className={css.confirmBar} role=\"group\" aria-label={t('card.confirmAria')}>\n <span>{t('card.confirmText')}</span>\n <button type=\"button\" className={css.dangerSolidButton} disabled={forgetting} onClick={() => void forget()}>{forgetting ? t('card.processing') : t('card.confirmForget')}</button>\n <button type=\"button\" className={css.ghostButton} disabled={forgetting} onClick={() => setConfirming(false)}>{t('common.cancel')}</button>\n </div>\n ) : (\n <>\n {props.onRelated !== undefined && <button type=\"button\" className={css.ghostButton} onClick={() => props.onRelated?.(insight)}>{t('card.related')}</button>}\n {props.onClone !== undefined && <button type=\"button\" className={css.ghostButton} onClick={() => props.onClone?.(insight)}>{t('card.clone')}</button>}\n <button type=\"button\" className={css.ghostButton} onClick={() => void navigator.clipboard?.writeText(insight.id)}>{t('common.copyId')}</button>\n {props.writeEnabled && <button type=\"button\" className={css.dangerButton} onClick={() => setConfirming(true)}>{t('card.forget')}</button>}\n </>\n )}\n </div>\n </article>\n )\n}\n\nconst GRAPH_WIDTH = 930\nconst GRAPH_HEIGHT = 520\nconst GRAPH_MARGIN_X = 58\nconst GRAPH_MARGIN_Y = 58\nconst CATEGORY_ORDER = ['space', 'entity', 'preference', 'decision', 'fact', 'insight', 'context', 'general']\n\ninterface GraphPosition { x: number; y: number }\ntype GraphPositions = Map<string, GraphPosition>\ntype GraphLayoutMode = 'natural' | 'uniform' | 'custom'\n\nfunction hash(value: string): number {\n let result = 2166136261\n for (const char of value) result = Math.imul(result ^ char.charCodeAt(0), 16777619)\n return result >>> 0\n}\n\nfunction graphNodeKey(node: MemoryGraphNode): string {\n return node.graphId ?? node.id\n}\n\nfunction graphNodeKind(node: MemoryGraphNode): NonNullable<MemoryGraphNode['kind']> {\n return node.kind ?? 'memory'\n}\n\nfunction spaceGraphId(id: string): string {\n return `space:${id}`\n}\n\nfunction entityGraphId(entity: string): string {\n return `entity:${encodeURIComponent(normalizeEntity(entity))}`\n}\n\nfunction normalizeEntity(entity: string): string {\n return entity.normalize('NFKC').trim().toLocaleLowerCase()\n}\n\n/** Add routing scopes and entity indexes without issuing another recall. */\nfunction enrichMultiSpaceGraph(graph: MemoryGraphSnapshot, bodies: MemoryBodyView[]): MemoryGraphSnapshot {\n if (graph.nodes.length === 0) return graph\n const memories = graph.nodes.map(node => ({ ...node, kind: 'memory' as const }))\n const memoriesByBody = new Map<string, MemoryGraphNode[]>()\n for (const node of memories) {\n if (node.memoryBodyId === undefined) continue\n memoriesByBody.set(node.memoryBodyId, [...(memoriesByBody.get(node.memoryBodyId) ?? []), node])\n }\n\n const activeBodies = bodies.filter(body => body.active && ((memoriesByBody.get(body.id)?.length ?? 0) > 0 || (body.stats?.topEntities.length ?? 0) > 0))\n const spaceNodes: MemoryGraphNode[] = activeBodies.map(body => ({\n id: body.id,\n graphId: spaceGraphId(body.id),\n kind: 'space',\n category: 'space',\n content: body.name,\n color: '#22a879',\n memoryBodyId: body.id,\n memoryBodyName: body.name,\n occurrenceCount: body.stats?.totalInsights ?? memoriesByBody.get(body.id)?.length ?? 0,\n }))\n\n // Native Mnemon entity edges connect two memories. This overview renders\n // entities as first-class nodes, so retaining those edges would falsely make\n // a memory-to-memory edge look like an entity-to-memory association.\n const edges: MemoryGraphSnapshot['edges'] = graph.edges.filter(edge => edge.type !== 'entity')\n for (const body of activeBodies) {\n for (const memory of memoriesByBody.get(body.id) ?? []) {\n edges.push({ sourceId: spaceGraphId(body.id), targetId: graphNodeKey(memory), label: 'scope', color: '#708199', type: 'scope' })\n }\n }\n\n const bodiesById = new Map(activeBodies.map(body => [body.id, body]))\n const indexedEntities = new Map<string, { entity: string; memories: MemoryGraphNode[]; bodies: MemoryBodyView[] }>()\n for (const memory of memories) {\n const body = memory.memoryBodyId === undefined ? undefined : bodiesById.get(memory.memoryBodyId)\n if (body === undefined) continue\n const seen = new Set<string>()\n for (const rawEntity of memory.entities ?? []) {\n const entity = rawEntity.trim()\n const key = normalizeEntity(entity)\n if (key === '' || seen.has(key)) continue\n seen.add(key)\n const current = indexedEntities.get(key)\n if (current === undefined) indexedEntities.set(key, { entity, memories: [memory], bodies: [body] })\n else {\n current.memories.push(memory)\n if (!current.bodies.some(candidate => candidate.id === body.id)) current.bodies.push(body)\n }\n }\n }\n const entities = [...indexedEntities.values()].sort((left, right) => right.memories.length - left.memories.length || left.entity.localeCompare(right.entity)).slice(0, 24)\n const entityNodes: MemoryGraphNode[] = entities.map(item => ({\n id: item.entity,\n graphId: entityGraphId(item.entity),\n kind: 'entity',\n category: 'entity',\n content: item.entity,\n color: '#2b9db9',\n occurrenceCount: item.memories.length,\n memoryBodyIds: item.bodies.map(body => body.id),\n memoryBodyNames: item.bodies.map(body => body.name),\n }))\n for (const item of entities) {\n const key = entityGraphId(item.entity)\n for (const memory of item.memories) edges.push({ sourceId: key, targetId: graphNodeKey(memory), label: item.entity, color: '#22a879', type: 'entity' })\n }\n\n return { ...graph, nodes: [...spaceNodes, ...entityNodes, ...memories], edges }\n}\n\nfunction graphKindLabel(t: MnemonTranslate, node: MemoryGraphNode): string {\n const kind = graphNodeKind(node)\n return kind === 'space' ? t('graph.kindSpace') : kind === 'entity' ? t('graph.kindEntity') : categoryLabel(t, node.category ?? 'general')\n}\n\nfunction activeCategoryAnchors(grouped: Map<string, MemoryGraphNode[]>): Map<string, GraphPosition> {\n const categories = [...grouped.keys()].sort((left, right) => {\n const leftIndex = CATEGORY_ORDER.indexOf(left)\n const rightIndex = CATEGORY_ORDER.indexOf(right)\n return (leftIndex < 0 ? CATEGORY_ORDER.length : leftIndex) - (rightIndex < 0 ? CATEGORY_ORDER.length : rightIndex)\n })\n const anchors = new Map<string, GraphPosition>()\n if (categories.length === 1) {\n anchors.set(categories[0]!, { x: GRAPH_WIDTH / 2, y: GRAPH_HEIGHT / 2 })\n return anchors\n }\n categories.forEach((category, index) => {\n const angle = -Math.PI / 2 + (index / categories.length) * Math.PI * 2\n anchors.set(category, {\n x: GRAPH_WIDTH / 2 + Math.cos(angle) * Math.min(250, 115 + categories.length * 23),\n y: GRAPH_HEIGHT / 2 + Math.sin(angle) * Math.min(165, 78 + categories.length * 15),\n })\n })\n return anchors\n}\n\nfunction clampGraphPosition(position: GraphPosition): GraphPosition {\n return {\n x: Math.min(GRAPH_WIDTH - GRAPH_MARGIN_X, Math.max(GRAPH_MARGIN_X, position.x)),\n y: Math.min(GRAPH_HEIGHT - GRAPH_MARGIN_Y, Math.max(GRAPH_MARGIN_Y, position.y)),\n }\n}\n\nfunction naturalGraphPositions(nodes: MemoryGraphNode[], edges: MemoryGraphSnapshot['edges']): GraphPositions {\n const positions: GraphPositions = new Map()\n const grouped = new Map<string, MemoryGraphNode[]>()\n for (const node of nodes) {\n const category = node.category ?? 'general'\n grouped.set(category, [...(grouped.get(category) ?? []), node])\n }\n const anchors = activeCategoryAnchors(grouped)\n for (const [category, items] of grouped) {\n const anchor = anchors.get(category) ?? { x: GRAPH_WIDTH / 2, y: GRAPH_HEIGHT / 2 }\n items.forEach((node, index) => {\n const seed = hash(graphNodeKey(node))\n const angle = index * 2.399963 + ((seed % 37) / 37) * .4\n const radius = items.length === 1 ? 0 : 24 + Math.sqrt(index + 1) * 35\n positions.set(graphNodeKey(node), clampGraphPosition({ x: anchor.x + Math.cos(angle) * radius, y: anchor.y + Math.sin(angle) * radius }))\n })\n }\n\n const velocities = new Map(nodes.map(node => [graphNodeKey(node), { x: 0, y: 0 }]))\n const visibleIds = new Set(nodes.map(graphNodeKey))\n const visibleEdges = edges.filter(edge => visibleIds.has(edge.sourceId) && visibleIds.has(edge.targetId))\n for (let iteration = 0; iteration < 150; iteration += 1) {\n const cooling = 1 - iteration / 180\n for (let leftIndex = 0; leftIndex < nodes.length; leftIndex += 1) {\n const left = nodes[leftIndex]!\n const leftPosition = positions.get(graphNodeKey(left))!\n const leftVelocity = velocities.get(graphNodeKey(left))!\n for (let rightIndex = leftIndex + 1; rightIndex < nodes.length; rightIndex += 1) {\n const right = nodes[rightIndex]!\n const rightPosition = positions.get(graphNodeKey(right))!\n const rightVelocity = velocities.get(graphNodeKey(right))!\n let dx = leftPosition.x - rightPosition.x\n let dy = leftPosition.y - rightPosition.y\n if (dx === 0 && dy === 0) { dx = ((hash(graphNodeKey(left)) % 13) - 6) || 1; dy = ((hash(graphNodeKey(right)) % 11) - 5) || -1 }\n const distanceSquared = Math.max(100, dx * dx + dy * dy)\n const distance = Math.sqrt(distanceSquared)\n const repulsion = Math.min(9, 18_000 / distanceSquared) * cooling\n const collision = distance < 66 ? (66 - distance) * .08 : 0\n const force = repulsion + collision\n const forceX = (dx / distance) * force\n const forceY = (dy / distance) * force\n leftVelocity.x += forceX; leftVelocity.y += forceY\n rightVelocity.x -= forceX; rightVelocity.y -= forceY\n }\n }\n for (const edge of visibleEdges) {\n const source = positions.get(edge.sourceId)!\n const target = positions.get(edge.targetId)!\n const sourceVelocity = velocities.get(edge.sourceId)!\n const targetVelocity = velocities.get(edge.targetId)!\n const dx = target.x - source.x\n const dy = target.y - source.y\n const distance = Math.max(1, Math.hypot(dx, dy))\n const sparseScale = nodes.length <= 3 ? 2 : nodes.length <= 8 ? 1.45 : 1\n const desired = (edge.type === 'scope' ? 138 : edge.type === 'entity' ? 94 : edge.type === 'semantic' ? 118 : 106) * sparseScale\n const spring = (distance - desired) * .018 * cooling\n const forceX = (dx / distance) * spring\n const forceY = (dy / distance) * spring\n sourceVelocity.x += forceX; sourceVelocity.y += forceY\n targetVelocity.x -= forceX; targetVelocity.y -= forceY\n }\n for (const node of nodes) {\n const key = graphNodeKey(node)\n const position = positions.get(key)!\n const velocity = velocities.get(key)!\n const anchor = anchors.get(node.category ?? 'general') ?? { x: GRAPH_WIDTH / 2, y: GRAPH_HEIGHT / 2 }\n velocity.x += (anchor.x - position.x) * .0035 * cooling + (GRAPH_WIDTH / 2 - position.x) * .0008\n velocity.y += (anchor.y - position.y) * .0035 * cooling + (GRAPH_HEIGHT / 2 - position.y) * .0008\n velocity.x = Math.max(-12, Math.min(12, velocity.x * .76))\n velocity.y = Math.max(-12, Math.min(12, velocity.y * .76))\n positions.set(key, clampGraphPosition({ x: position.x + velocity.x, y: position.y + velocity.y }))\n }\n }\n return positions\n}\n\nfunction uniformGraphPositions(nodes: MemoryGraphNode[]): GraphPositions {\n const positions: GraphPositions = new Map()\n const ordered = [...nodes].sort((left, right) => {\n const categoryDifference = CATEGORY_ORDER.indexOf(left.category ?? 'general') - CATEGORY_ORDER.indexOf(right.category ?? 'general')\n return categoryDifference === 0 ? left.id.localeCompare(right.id) : categoryDifference\n })\n const columns = Math.max(1, Math.ceil(Math.sqrt(ordered.length * 1.65)))\n const rows = Math.max(1, Math.ceil(ordered.length / columns))\n const cellWidth = (GRAPH_WIDTH - GRAPH_MARGIN_X * 2) / columns\n const cellHeight = (GRAPH_HEIGHT - GRAPH_MARGIN_Y * 2) / rows\n ordered.forEach((node, index) => {\n const row = Math.floor(index / columns)\n const column = index % columns\n const rowLength = Math.min(columns, ordered.length - row * columns)\n const rowOffset = (columns - rowLength) * cellWidth / 2\n positions.set(graphNodeKey(node), {\n x: GRAPH_MARGIN_X + rowOffset + cellWidth * (column + .5),\n y: GRAPH_MARGIN_Y + cellHeight * (row + .5),\n })\n })\n return positions\n}\n\nfunction graphPoint(svg: SVGSVGElement, clientX: number, clientY: number): GraphPosition {\n const matrix = svg.getScreenCTM?.()\n if (matrix !== null && matrix !== undefined && typeof svg.createSVGPoint === 'function') {\n const point = svg.createSVGPoint()\n point.x = clientX; point.y = clientY\n return clampGraphPosition(point.matrixTransform(matrix.inverse()))\n }\n const bounds = svg.getBoundingClientRect()\n const width = bounds.width || GRAPH_WIDTH\n const height = bounds.height || GRAPH_HEIGHT\n return clampGraphPosition({ x: (clientX - bounds.left) * GRAPH_WIDTH / width, y: (clientY - bounds.top) * GRAPH_HEIGHT / height })\n}\n\nfunction MemoryGraph(props: { graph: MemoryGraphSnapshot; selectedId?: string | undefined; onSelect: (node: MemoryGraphNode) => void }): JSX.Element {\n const t = useT()\n const visibleNodes = useMemo(() => {\n const spaces = props.graph.nodes.filter(node => graphNodeKind(node) === 'space')\n const entities = props.graph.nodes.filter(node => graphNodeKind(node) === 'entity').slice(0, 20)\n const memories = props.graph.nodes.filter(node => graphNodeKind(node) === 'memory').slice(0, Math.max(0, 60 - spaces.length - entities.length))\n return [...spaces, ...entities, ...memories].slice(0, 60)\n }, [props.graph.nodes])\n const visibleIds = useMemo(() => new Set(visibleNodes.map(graphNodeKey)), [visibleNodes])\n const visibleKinds = useMemo(() => new Map(visibleNodes.map(node => [graphNodeKey(node), graphNodeKind(node)])), [visibleNodes])\n const edges = useMemo(() => {\n const priority = new Map<string, number>([['entity', 0], ['scope', 1], ['causal', 2], ['semantic', 3], ['temporal', 4]])\n return props.graph.edges\n .filter(edge => visibleIds.has(edge.sourceId) && visibleIds.has(edge.targetId))\n .map((edge, index) => ({ edge, index }))\n .sort((left, right) => (priority.get(left.edge.type ?? 'temporal') ?? 5) - (priority.get(right.edge.type ?? 'temporal') ?? 5) || left.index - right.index)\n .slice(0, 180)\n .map(({ edge }) => edge)\n }, [props.graph.edges, visibleIds])\n const curvedEdges = useMemo(() => {\n const groups = new Map<string, number[]>()\n edges.forEach((edge, index) => {\n const key = [edge.sourceId, edge.targetId].sort().join('::')\n groups.set(key, [...(groups.get(key) ?? []), index])\n })\n return edges.map((edge, index) => {\n const key = [edge.sourceId, edge.targetId].sort().join('::')\n const group = groups.get(key) ?? [index]\n const groupIndex = group.indexOf(index)\n return { edge, offset: (groupIndex - (group.length - 1) / 2) * 12 }\n })\n }, [edges])\n const layoutKey = `${visibleNodes.map(node => `${graphNodeKey(node)}:${graphNodeKind(node)}:${node.category ?? 'general'}`).join('|')}::${edges.map(edge => `${edge.sourceId}>${edge.targetId}:${edge.type ?? 'temporal'}`).join('|')}`\n const naturalLayout = useMemo(() => naturalGraphPositions(visibleNodes, edges), [layoutKey])\n const [positions, setPositions] = useState<GraphPositions>(() => naturalLayout)\n const [layoutMode, setLayoutMode] = useState<GraphLayoutMode>('natural')\n const positionsRef = useRef(positions)\n const animationRef = useRef<number | null>(null)\n const dragRef = useRef<{ nodeId: string; pointerId: number; startX: number; startY: number; moved: boolean } | null>(null)\n\n const commitPositions = useCallback((next: GraphPositions) => {\n positionsRef.current = next\n setPositions(next)\n }, [])\n\n const cancelAnimation = useCallback(() => {\n if (animationRef.current !== null && typeof window.cancelAnimationFrame === 'function') window.cancelAnimationFrame(animationRef.current)\n animationRef.current = null\n }, [])\n\n const animateTo = useCallback((target: GraphPositions, mode: Exclude<GraphLayoutMode, 'custom'>) => {\n cancelAnimation()\n setLayoutMode(mode)\n if (typeof window.requestAnimationFrame !== 'function') { commitPositions(target); return }\n const start = new Map(positionsRef.current)\n const startedAt = performance.now()\n const tick = (time: number) => {\n const progress = Math.min(1, (time - startedAt) / 620)\n const eased = 1 - Math.pow(1 - progress, 3)\n const next: GraphPositions = new Map()\n for (const [id, destination] of target) {\n const origin = start.get(id) ?? { x: GRAPH_WIDTH / 2, y: GRAPH_HEIGHT / 2 }\n next.set(id, { x: origin.x + (destination.x - origin.x) * eased, y: origin.y + (destination.y - origin.y) * eased })\n }\n commitPositions(next)\n if (progress < 1) animationRef.current = window.requestAnimationFrame(tick)\n else animationRef.current = null\n }\n animationRef.current = window.requestAnimationFrame(tick)\n }, [cancelAnimation, commitPositions])\n\n useEffect(() => { animateTo(naturalLayout, 'natural') }, [layoutKey])\n useEffect(() => () => cancelAnimation(), [cancelAnimation])\n\n const beginDrag = (event: ReactPointerEvent<SVGGElement>, nodeId: string) => {\n cancelAnimation()\n dragRef.current = { nodeId, pointerId: event.pointerId, startX: event.clientX, startY: event.clientY, moved: false }\n event.currentTarget.setPointerCapture?.(event.pointerId)\n }\n const moveDrag = (event: ReactPointerEvent<SVGGElement>) => {\n const drag = dragRef.current\n const svg = event.currentTarget.ownerSVGElement\n if (drag === null || svg === null || drag.pointerId !== event.pointerId) return\n if (!drag.moved && Math.hypot(event.clientX - drag.startX, event.clientY - drag.startY) < 4) return\n drag.moved = true\n const point = graphPoint(svg, event.clientX, event.clientY)\n const next = new Map(positionsRef.current)\n next.set(drag.nodeId, point)\n commitPositions(next)\n setLayoutMode('custom')\n }\n const endDrag = (event: ReactPointerEvent<SVGGElement>) => {\n const drag = dragRef.current\n if (drag === null || drag.pointerId !== event.pointerId) return\n const svg = event.currentTarget.ownerSVGElement\n if (drag.moved && svg !== null) {\n const next = new Map(positionsRef.current)\n next.set(drag.nodeId, graphPoint(svg, event.clientX, event.clientY))\n commitPositions(next)\n }\n dragRef.current = null\n event.currentTarget.releasePointerCapture?.(event.pointerId)\n if (!drag.moved) {\n const node = visibleNodes.find(candidate => graphNodeKey(candidate) === drag.nodeId)\n if (node !== undefined) props.onSelect(node)\n }\n }\n const cancelDrag = (event: ReactPointerEvent<SVGGElement>) => {\n if (dragRef.current?.pointerId === event.pointerId) dragRef.current = null\n }\n const nudge = (nodeId: string, dx: number, dy: number) => {\n cancelAnimation()\n const current = positionsRef.current.get(nodeId)\n if (current === undefined) return\n const next = new Map(positionsRef.current)\n next.set(nodeId, clampGraphPosition({ x: current.x + dx, y: current.y + dy }))\n commitPositions(next)\n setLayoutMode('custom')\n }\n const layoutLabel = t(layoutMode === 'natural' ? 'graph.layoutNatural' : layoutMode === 'uniform' ? 'graph.layoutUniform' : 'graph.layoutCustom')\n return (\n <>\n <div className={css.graphCanvasControls} role=\"toolbar\" aria-label={t('graph.layoutAria')}>\n <span role=\"status\" aria-label={t('graph.layoutStatus', { layout: layoutLabel })}><i />{t('graph.draggable', { layout: layoutLabel })}</span>\n <button type=\"button\" data-active={layoutMode === 'natural' || undefined} onClick={() => animateTo(naturalGraphPositions(visibleNodes, edges), 'natural')}>{t('graph.naturalAction')}</button>\n <button type=\"button\" data-active={layoutMode === 'uniform' || undefined} onClick={() => animateTo(uniformGraphPositions(visibleNodes), 'uniform')}>{t('graph.uniformAction')}</button>\n </div>\n <svg className={css.graphSvg} viewBox={`0 0 ${GRAPH_WIDTH} ${GRAPH_HEIGHT}`} role=\"img\" data-layout={layoutMode} data-density={visibleNodes.length <= 12 ? 'sparse' : 'dense'} aria-label={t('graph.aria', { nodes: props.graph.nodes.length, edges: props.graph.edges.length })}>\n <defs>\n <pattern id=\"mnemon-grid\" width=\"26\" height=\"26\" patternUnits=\"userSpaceOnUse\"><path d=\"M 26 0 L 0 0 0 26\" className={css.graphGridLine} fill=\"none\" /></pattern>\n <filter id=\"mnemon-glow\" x=\"-100%\" y=\"-100%\" width=\"300%\" height=\"300%\"><feGaussianBlur stdDeviation=\"4\" result=\"blur\" /><feMerge><feMergeNode in=\"blur\" /><feMergeNode in=\"SourceGraphic\" /></feMerge></filter>\n </defs>\n <rect width={GRAPH_WIDTH} height={GRAPH_HEIGHT} className={css.graphBackdrop} />\n <rect width={GRAPH_WIDTH} height={GRAPH_HEIGHT} fill=\"url(#mnemon-grid)\" />\n {curvedEdges.map(({ edge, offset }, index) => {\n const source = positions.get(edge.sourceId) ?? naturalLayout.get(edge.sourceId) ?? { x: GRAPH_WIDTH / 2, y: GRAPH_HEIGHT / 2 }\n const target = positions.get(edge.targetId) ?? naturalLayout.get(edge.targetId) ?? { x: GRAPH_WIDTH / 2, y: GRAPH_HEIGHT / 2 }\n const dx = target.x - source.x\n const dy = target.y - source.y\n const distance = Math.max(1, Math.hypot(dx, dy))\n const direction = edge.sourceId.localeCompare(edge.targetId) <= 0 ? 1 : -1\n const controlX = (source.x + target.x) / 2 - (dy / distance) * offset * direction\n const controlY = (source.y + target.y) / 2 + (dx / distance) * offset * direction\n return <path key={`${edge.sourceId}-${edge.targetId}-${index}`} d={`M ${source.x} ${source.y} Q ${controlX} ${controlY} ${target.x} ${target.y}`} className={css.graphEdge} data-edge={edge.type ?? 'temporal'} data-source-id={edge.sourceId} data-target-id={edge.targetId} data-source-kind={visibleKinds.get(edge.sourceId)} data-target-kind={visibleKinds.get(edge.targetId)} />\n })}\n {visibleNodes.map((node, index) => {\n const nodeKey = graphNodeKey(node)\n const position = positions.get(nodeKey) ?? naturalLayout.get(nodeKey) ?? { x: GRAPH_WIDTH / 2, y: GRAPH_HEIGHT / 2 }\n const selected = props.selectedId === nodeKey\n const showLabel = selected || visibleNodes.length < 22 || index % 3 === 0\n return (\n <g key={nodeKey} className={css.graphNode} data-node-id={nodeKey} data-category={node.category ?? 'general'} data-kind={graphNodeKind(node)} data-selected={selected || undefined}\n transform={`translate(${position.x} ${position.y})`} role=\"button\" tabIndex={0} aria-label={`${graphKindLabel(t, node)}: ${short(node.content, 80)}`}\n data-dragging={dragRef.current?.nodeId === nodeKey || undefined}\n onPointerDown={event => beginDrag(event, nodeKey)} onPointerMove={moveDrag} onPointerUp={endDrag} onPointerCancel={cancelDrag} onLostPointerCapture={cancelDrag}\n onClick={() => props.onSelect(node)}\n onKeyDown={event => {\n if (event.key === 'Enter' || event.key === ' ') props.onSelect(node)\n else if (event.key === 'ArrowLeft') { event.preventDefault(); nudge(nodeKey, -12, 0) }\n else if (event.key === 'ArrowRight') { event.preventDefault(); nudge(nodeKey, 12, 0) }\n else if (event.key === 'ArrowUp') { event.preventDefault(); nudge(nodeKey, 0, -12) }\n else if (event.key === 'ArrowDown') { event.preventDefault(); nudge(nodeKey, 0, 12) }\n }}>\n {graphNodeKind(node) === 'space'\n ? <><rect x={selected ? -20 : -17} y={selected ? -15 : -13} width={selected ? 40 : 34} height={selected ? 30 : 26} rx=\"9\" className={css.nodeHalo} filter={selected ? 'url(#mnemon-glow)' : undefined} /><circle r={selected ? 6 : 5} className={css.nodeCore} /></>\n : graphNodeKind(node) === 'entity'\n ? <><path d={selected ? 'M 0 -18 L 18 0 L 0 18 L -18 0 Z' : 'M 0 -14 L 14 0 L 0 14 L -14 0 Z'} className={css.nodeHalo} filter={selected ? 'url(#mnemon-glow)' : undefined} /><circle r={selected ? 5 : 4} className={css.nodeCore} /></>\n : <><circle r={selected ? 17 : visibleNodes.length <= 12 ? 14 : 11} className={css.nodeHalo} filter={selected ? 'url(#mnemon-glow)' : undefined} /><circle r={selected ? 7 : visibleNodes.length <= 12 ? 6 : 4.5} className={css.nodeCore} /></>}\n {(selected || visibleNodes.length <= 12) && graphNodeKind(node) === 'memory' && node.memoryBodyName !== undefined && <text x=\"0\" y=\"-18\" textAnchor=\"middle\" className={css.nodeBodyLabel}>{short(node.memoryBodyName, 12)}</text>}\n {showLabel && <text x={visibleNodes.length <= 12 ? 19 : 15} y=\"4\" className={css.nodeLabel}>{short(node.content.replace(/\\s+/gu, ' '), selected ? 34 : visibleNodes.length <= 12 ? 26 : 19)}</text>}\n </g>\n )\n })}\n </svg>\n </>\n )\n}\n\nfunction OverviewPage(props: { client: MnemonClient; revision: number; writeEnabled: boolean; fallbackBodies: MemoryBodyView[]; fallbackDirectory: string | undefined; catalogKnown: boolean; onMutate: () => void; onExplore: (query: string) => void }): JSX.Element {\n const t = useT()\n const [graph, setGraph] = useState<MemoryGraphSnapshot | null>(null)\n const [catalog, setCatalog] = useState<MemoryBodyCatalog | null>(null)\n const [selected, setSelected] = useState<MemoryGraphNode | null>(null)\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState<string | null>(null)\n const [changing, setChanging] = useState<string | null>(null)\n const [creating, setCreating] = useState(false)\n const [bodyName, setBodyName] = useState('')\n const [bodyDescription, setBodyDescription] = useState('')\n const [catalogUnavailable, setCatalogUnavailable] = useState(false)\n const [editingBody, setEditingBody] = useState<string | null>(null)\n const [editName, setEditName] = useState('')\n const [editDescription, setEditDescription] = useState('')\n const [savingBody, setSavingBody] = useState<string | null>(null)\n const [preview, setPreview] = useState<MemoryGraphNode | null>(null)\n\n const load = useCallback(async (quiet = false) => {\n if (!quiet) setLoading(true)\n setError(null)\n try {\n const [nextCatalog, next] = await Promise.all([\n props.client.bodies().then(next => { setCatalogUnavailable(false); return next }).catch(() => {\n setCatalogUnavailable(!props.catalogKnown)\n return {\n items: props.fallbackBodies,\n total: props.fallbackBodies.length,\n activeCount: props.fallbackBodies.filter(body => body.active).length,\n directory: props.fallbackDirectory ?? '',\n generatedAt: new Date().toISOString(),\n }\n }),\n props.client.graph(),\n ])\n const enriched = enrichMultiSpaceGraph(next, nextCatalog.items)\n setCatalog(nextCatalog)\n setGraph(enriched)\n setSelected(current => current === null ? null : enriched.nodes.find(node => graphNodeKey(node) === graphNodeKey(current)) ?? null)\n } catch (reason) {\n setError(message(reason))\n } finally {\n setLoading(false)\n }\n }, [props.catalogKnown, props.client, props.fallbackBodies, props.fallbackDirectory])\n\n useEffect(() => {\n void load()\n const timer = window.setInterval(() => void load(true), 15_000)\n return () => window.clearInterval(timer)\n }, [load, props.revision])\n\n const toggle = async (body: MemoryBodyView) => {\n setChanging(body.id); setError(null)\n try {\n await props.client.updateBody(body.id, { active: !body.active })\n await load(true)\n props.onMutate()\n } catch (reason) { setError(message(reason)) } finally { setChanging(null) }\n }\n\n const beginEdit = (body: MemoryBodyView) => {\n setEditingBody(body.id); setEditName(body.name); setEditDescription(body.description ?? ''); setError(null)\n }\n\n const saveEdit = async (event: FormEvent, body: MemoryBodyView) => {\n event.preventDefault()\n if (editName.trim() === '') return\n setSavingBody(body.id); setError(null)\n try {\n await props.client.updateBody(body.id, { name: editName, description: editDescription })\n setEditingBody(null)\n await load(true)\n props.onMutate()\n } catch (reason) { setError(message(reason)) } finally { setSavingBody(null) }\n }\n\n const create = async (event: FormEvent) => {\n event.preventDefault()\n if (bodyName.trim() === '' || bodyDescription.trim() === '') return\n setCreating(true); setError(null)\n try {\n await props.client.createBody({ name: bodyName, description: bodyDescription })\n setBodyName(''); setBodyDescription('')\n await load(true)\n props.onMutate()\n } catch (reason) { setError(message(reason)) } finally { setCreating(false) }\n }\n\n const generated = graph === null ? t('overview.waitingSnapshot') : t('overview.updatedAt', { time: new Date(graph.generatedAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' }) })\n const graphSpaces = graph?.nodes.filter(node => graphNodeKind(node) === 'space').length ?? 0\n const graphEntities = graph?.nodes.filter(node => graphNodeKind(node) === 'entity').length ?? 0\n const graphMemories = graph?.nodes.filter(node => graphNodeKind(node) === 'memory').length ?? 0\n const selectedKind = selected === null ? null : graphNodeKind(selected)\n return (\n <div className={css.page}>\n <PageHeader title={t('overview.title')} description={t('overview.description')} meta={t('overview.interval')}\n action={<button type=\"button\" className={css.secondaryButton} disabled={loading} onClick={() => void load()}>{loading ? t('overview.syncing') : t('overview.syncNow')}</button>} />\n {error !== null && <div className={css.inlineError} role=\"alert\">{error}</div>}\n <section className={css.bodyDirectory} aria-label={t('overview.directory')}>\n <div className={css.bodyDirectoryHeader}>\n <div><h3>{t('overview.directory')}</h3><p>{t('overview.directory.description')}</p><code className={css.bodyDirectoryPath}>{catalogUnavailable ? t('overview.directory.unsynced') : catalog?.directory || props.fallbackDirectory || t('overview.directory.waiting')}</code></div>\n <strong>{catalogUnavailable ? t('overview.directory.unsyncedBadge') : `${catalog?.activeCount ?? '—'} / ${catalog?.total ?? '—'} ${t('common.active')}`}</strong>\n </div>\n <div className={css.bodyGrid}>\n {catalog?.items.map(body => (\n <article key={body.id} className={css.bodyCard} data-active={body.active || undefined} data-healthy={body.healthy || undefined} data-editing={editingBody === body.id || undefined} title={body.error}>\n {editingBody === body.id ? (\n <form className={css.bodyEdit} onSubmit={event => void saveEdit(event, body)}>\n <label>{t('overview.editName')}<input aria-label={t('overview.editName')} value={editName} onChange={event => setEditName(event.target.value)} maxLength={100} required /></label>\n <label>{t('overview.editDescription')}<textarea aria-label={t('overview.editDescription')} value={editDescription} onChange={event => setEditDescription(event.target.value)} rows={3} maxLength={1000} /></label>\n <div className={css.bodyEditActions}><button type=\"submit\" className={css.primaryButton} disabled={savingBody === body.id || editName.trim() === ''}>{savingBody === body.id ? t('overview.savingBody') : t('overview.saveBody')}</button><button type=\"button\" className={css.ghostButton} onClick={() => setEditingBody(null)}>{t('common.cancel')}</button></div>\n </form>\n ) : (\n <>\n <div className={css.bodyCardTop}><span className={css.bodySignal} /><div><strong>{body.name}</strong><code>{body.id}</code><small className={css.bodyHealth}>{body.healthy ? t('overview.storageHealthy') : t('overview.storageUnhealthy')}</small></div><div className={css.bodyCardActions}><button type=\"button\" className={css.bodySwitch} role=\"switch\" aria-checked={body.active} aria-label={t('overview.toggleAria', { name: body.name })} disabled={!props.writeEnabled || changing === body.id} onClick={() => void toggle(body)}><span className={css.bodySwitchTrack} aria-hidden=\"true\"><i /></span><span>{changing === body.id ? t('overview.toggling') : body.active ? t('common.active') : t('common.inactive')}</span></button><button type=\"button\" className={css.bodyEditButton} aria-label={t('overview.editBodyAria', { name: body.name })} title={t('overview.editBody')} disabled={!props.writeEnabled} onClick={() => beginEdit(body)}>✎</button></div></div>\n <p>{body.description || t('overview.noDescription')}</p>\n <footer><span>{t('common.memories', { count: body.stats?.totalInsights ?? 0 })}</span><span>{t('common.edges', { count: body.stats?.edgeCount ?? 0 })}</span><span>{humanBytes(body.stats?.dbSizeBytes ?? 0)}</span></footer>\n </>\n )}\n </article>\n ))}\n {catalog?.total === 0 && <div className={css.bodyDirectoryEmpty}><span>◇</span><div><strong>{catalogUnavailable ? t('overview.unsyncedTitle') : t('overview.emptyTitle')}</strong><p>{catalogUnavailable ? t('overview.unsyncedShort') : t('overview.emptyShort')}</p></div></div>}\n </div>\n {props.writeEnabled && !catalogUnavailable && <details className={css.bodyCreate} open={catalog?.total === 0 ? true : undefined}><summary>{t('overview.create')}</summary><form onSubmit={event => void create(event)}><input aria-label={t('overview.createName')} value={bodyName} onChange={event => setBodyName(event.target.value)} placeholder={t('overview.createNamePlaceholder')} required /><input aria-label={t('overview.createDescription')} value={bodyDescription} onChange={event => setBodyDescription(event.target.value)} placeholder={t('overview.createDescriptionPlaceholder')} required /><button type=\"submit\" className={css.secondaryButton} disabled={creating}>{creating ? t('overview.creating') : t('overview.createAction')}</button></form></details>}\n </section>\n {!catalogUnavailable && graph !== null && graph.nodes.length > 0 ? (\n <div className={css.graphLayout}>\n <section className={css.graphPanel}>\n <div className={css.graphToolbar}>\n <div><span className={css.liveDot} />{t('overview.snapshot')} <small>{generated}</small></div>\n <div className={css.graphLegend}><span data-edge=\"scope\">{t('overview.edgeScope')}</span><span data-edge=\"temporal\">{t('overview.edgeTemporal')}</span><span data-edge=\"semantic\">{t('overview.edgeSemantic')}</span><span data-edge=\"causal\">{t('overview.edgeCausal')}</span><span data-edge=\"entity\">{t('overview.edgeEntity')}</span></div>\n </div>\n <div className={css.graphViewport}><MemoryGraph graph={graph} selectedId={selected === null ? undefined : graphNodeKey(selected)} onSelect={setSelected} /></div>\n <div className={css.graphFooter}><span>{t('overview.graphComposition', { spaces: graphSpaces, memories: graphMemories, entities: graphEntities })}</span><span>{t('overview.graphCount', { visible: Math.min(graph.nodes.length, 60), total: graph.nodes.length })} · {t('overview.graphEdges', { count: graph.edges.length })}</span></div>\n </section>\n <aside className={css.graphInspector} data-empty={selected === null || undefined}>\n {selected === null ? (\n <div className={css.inspectorEmpty}><MnemonLogo className={css.inspectorLogo} title={t('overview.inspector')} /><h3>{t('overview.selectNode')}</h3><p>{t('overview.selectNodeText')}</p></div>\n ) : (\n <>\n <div className={css.inspectorHeading}><span>{t(selectedKind === 'space' ? 'overview.inspectorSpace' : selectedKind === 'entity' ? 'overview.inspectorEntity' : 'overview.inspector')}</span><button type=\"button\" onClick={() => setSelected(null)} aria-label={t('overview.closeInspector')}>×</button></div>\n <span className={css.categoryChip}>{graphKindLabel(t, selected)}</span>\n <div className={css.inspectorTitleRow}><h3 className={css.inspectorTitle}>{selected.content}</h3>{selectedKind === 'memory' && selected.content.length > 140 && <button type=\"button\" className={css.inspectorEye} onClick={() => setPreview(selected)} aria-label={t('overview.previewAria')} title={t('overview.previewAria')}><svg viewBox=\"0 0 16 16\" width=\"13\" height=\"13\" aria-hidden=\"true\"><path d=\"M1 8s2.6-4.4 7-4.4S15 8 15 8s-2.6 4.4-7 4.4S1 8 1 8z\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><circle cx=\"8\" cy=\"8\" r=\"2.1\" fill=\"currentColor\" /></svg></button>}</div>\n {selectedKind === 'space'\n ? <dl className={css.inspectorMeta}><div><dt>{t('overview.spaceId')}</dt><dd><code>{selected.memoryBodyId ?? selected.id}</code></dd></div><div><dt>{t('overview.containedMemories')}</dt><dd>{selected.occurrenceCount ?? 0}</dd></div></dl>\n : selectedKind === 'entity'\n ? <dl className={css.inspectorMeta}><div><dt>{t('overview.entityMentions')}</dt><dd>{selected.occurrenceCount ?? 0}</dd></div><div><dt>{t('term.spaces')}</dt><dd>{selected.memoryBodyNames?.join(' · ') || '—'}</dd></div></dl>\n : <dl className={css.inspectorMeta}><div><dt>{t('term.space')}</dt><dd>{selected.memoryBodyName ?? '—'} <code>{selected.memoryBodyId ?? ''}</code></dd></div><div><dt>{t('overview.memoryId')}</dt><dd><code>{selected.id}</code></dd></div><div><dt>{t('common.category')}</dt><dd>{categoryLabel(t, selected.category ?? 'general')}</dd></div></dl>}\n <div className={css.inspectorActions}>{selectedKind !== 'space' && <button type=\"button\" className={css.primaryButton} onClick={() => props.onExplore(selected.content)}>{t('overview.exploreNode')}</button>}<button type=\"button\" className={css.secondaryButton} onClick={() => void navigator.clipboard?.writeText(selected.id)}>{t('common.copyId')}</button></div>\n </>\n )}\n </aside>\n </div>\n ) : !loading && error === null ? (\n catalogUnavailable\n ? <EmptyState glyph=\"◇\" title={t('overview.unsyncedTitle')}>{t('overview.unsyncedLong')}</EmptyState>\n : catalog?.total === 0\n ? <EmptyState glyph=\"◇\" title={t('overview.emptyTitle')}>{t('overview.emptyLong')}</EmptyState>\n : catalog?.activeCount === 0\n ? <EmptyState glyph=\"◇\" title={t('overview.noActiveTitle')}>{t('overview.noActiveText')}</EmptyState>\n : <EmptyState glyph=\"◇\" title={t('overview.noContentTitle')}>{t('overview.noContentText')}</EmptyState>\n ) : (\n <div className={css.loadingPanel}>{t('overview.loading')}</div>\n )}\n {preview !== null && <ContentPreview node={preview} kind={graphKindLabel(t, preview)} onClose={() => setPreview(null)} />}\n </div>\n )\n}\n\nfunction ExplorePage(props: { client: MnemonClient; status: StatusView | null; seed: string; writeEnabled: boolean; onForget: (insight: Insight) => Promise<void> }): JSX.Element {\n const t = useT()\n const [query, setQuery] = useState(props.seed)\n const [mode, setMode] = useState<'smart' | 'keyword' | 'basic'>('smart')\n const [category, setCategory] = useState<Category | ''>('')\n const [results, setResults] = useState<Insight[]>([])\n const [searchKind, setSearchKind] = useState<'direct' | 'agent' | null>(null)\n const [agentAnswer, setAgentAnswer] = useState<{ answer: string; citations: string[]; runId: string } | null>(null)\n const [searched, setSearched] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [relatedTo, setRelatedTo] = useState<Insight | null>(null)\n const [related, setRelated] = useState<Insight[]>([])\n const [relatedLoading, setRelatedLoading] = useState(false)\n\n useEffect(() => { if (props.seed !== '') setQuery(props.seed) }, [props.seed])\n\n const runSearch = async (withAgent: boolean) => {\n if (query.trim() === '') return\n setSearchKind(withAgent ? 'agent' : 'direct'); setSearched(true); setError(null); setRelatedTo(null); setAgentAnswer(null)\n try {\n const request = { query, mode, ...(category === '' ? {} : { category }), limit: props.status?.defaultRecallLimit ?? 10 }\n if (withAgent) {\n const response = await props.client.agentSearch(request)\n setResults(response.results)\n setAgentAnswer({ answer: response.answer, citations: response.citations, runId: response.delegation.runId })\n } else {\n setResults((await props.client.search(request)).results)\n }\n } catch (reason) {\n setError(message(reason)); setResults([]); setAgentAnswer(null)\n } finally {\n setSearchKind(null)\n }\n }\n\n const search = (event: FormEvent) => { event.preventDefault(); void runSearch(false) }\n const searching = searchKind !== null\n\n const showRelated = async (insight: Insight) => {\n setRelatedTo(insight); setRelated([]); setRelatedLoading(true); setError(null)\n if (typeof window.requestAnimationFrame === 'function') window.requestAnimationFrame(() => document.getElementById('mnemon-related-pane')?.scrollIntoView({ block: 'nearest', behavior: 'smooth' }))\n try { setRelated(await props.client.related(insight.id, insight.memoryBodyId)) } catch (reason) { setError(message(reason)) } finally { setRelatedLoading(false) }\n }\n\n const forget = async (insight: Insight) => {\n await props.onForget(insight)\n setResults(items => items.filter(item => insightKey(item) !== insightKey(insight)))\n setRelated(items => items.filter(item => insightKey(item) !== insightKey(insight)))\n if (relatedTo !== null && insightKey(relatedTo) === insightKey(insight)) setRelatedTo(null)\n }\n\n return (\n <div className={css.page}>\n <PageHeader title={t('search.title')} description={t('search.description')} meta={t('search.maxResults', { count: props.status?.defaultRecallLimit ?? '—' })} />\n <form className={css.searchBar} onSubmit={event => void search(event)}>\n <div className={css.queryField}><span aria-hidden=\"true\">⌕</span><input value={query} onChange={event => setQuery(event.target.value)} placeholder={t('search.placeholder')} aria-label={t('search.queryAria')} /><kbd>↵</kbd></div>\n <div className={css.searchControls}>\n <label>{t('common.category')}<select value={category} onChange={event => setCategory(event.target.value as Category | '')} aria-label={t('search.categoryAria')}><option value=\"\">{t('common.allCategories')}</option>{CATEGORIES.map(value => <option key={value} value={value}>{categoryLabel(t, value)}</option>)}</select></label>\n <label>{t('search.strategy')}<select value={mode} onChange={event => setMode(event.target.value as 'smart' | 'keyword' | 'basic')} aria-label={t('search.modeAria')}><option value=\"smart\">{t('search.modeSmart')}</option><option value=\"keyword\">{t('search.modeKeyword')}</option><option value=\"basic\">{t('search.modeBasic')}</option></select></label>\n <div className={css.searchActions}><button type=\"submit\" className={css.secondaryButton} disabled={searching || query.trim() === ''}>{searchKind === 'direct' ? t('search.searching') : t('search.action')}</button><button type=\"button\" className={css.primaryButton} disabled={searching || query.trim() === '' || props.status?.lifecycle?.sessionAvailable !== true} onClick={() => void runSearch(true)}>{searchKind === 'agent' ? t('search.agentSearching') : t('search.agentAction')}</button></div>\n </div>\n </form>\n {agentAnswer !== null && <section className={css.agentAnswer} aria-label={t('search.agentAnswer')}><div className={css.agentAnswerHeading}><div><span>{t('search.agentAnswerHint')}</span><h3>{t('search.agentAnswer')}</h3></div><code>{agentAnswer.runId.slice(0, 8)}</code></div><p>{agentAnswer.answer}</p>{agentAnswer.citations.length > 0 && <div className={css.agentCitations}>{agentAnswer.citations.map(citation => <code key={citation}>{citation}</code>)}</div>}</section>}\n {error !== null && <div className={css.inlineError} role=\"alert\">{error}</div>}\n {!searched && <EmptyState glyph=\"⌕\" title={t('search.startTitle')}>{t('search.startText')}</EmptyState>}\n {searched && !searching && results.length === 0 && error === null && <EmptyState glyph=\"0\" title={t('search.emptyTitle')}>{t('search.emptyText')}</EmptyState>}\n {results.length > 0 && (\n <div className={relatedTo === null ? css.singleColumn : css.resultLayout}>\n <section className={css.results}><div className={css.sectionHeading}><div><h3>{t('search.results')}</h3></div><strong>{results.length}</strong></div>{results.map(insight => <InsightCard key={insightKey(insight)} insight={insight} writeEnabled={props.writeEnabled} onForget={forget} onRelated={item => void showRelated(item)} />)}</section>\n {relatedTo !== null && <aside id=\"mnemon-related-pane\" className={css.relatedPane}><div className={css.sectionHeading}><div><h3>{t('search.related')}</h3></div><button type=\"button\" onClick={() => setRelatedTo(null)} aria-label={t('search.closeRelated')}>×</button></div><p className={css.relatedSource}>{relatedTo.content}</p>{relatedLoading && <div className={css.loading}>{t('search.traversing')}</div>}{!relatedLoading && related.length === 0 && <div className={css.muted}>{t('search.noRelated')}</div>}{related.map(insight => <InsightCard key={insightKey(insight)} insight={insight} writeEnabled={props.writeEnabled} onForget={forget} onRelated={item => void showRelated(item)} />)}</aside>}\n </div>\n )}\n </div>\n )\n}\n\nfunction EntitiesPage(props: { client: MnemonClient; revision: number; writeEnabled: boolean; onForget: (insight: Insight) => Promise<void>; onExplore: (query: string) => void }): JSX.Element {\n const t = useT()\n const [view, setView] = useState<EntityView>({ items: [], insights: [] })\n const [entity, setEntity] = useState('')\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState<string | null>(null)\n\n const load = useCallback(async (selected?: string) => {\n setLoading(true); setError(null)\n try { setView(await props.client.entities(selected, 20)) } catch (reason) { setError(message(reason)) } finally { setLoading(false) }\n }, [props.client])\n\n useEffect(() => { void load() }, [load, props.revision])\n const submit = (event: FormEvent) => { event.preventDefault(); if (entity.trim() !== '') void load(entity) }\n\n return (\n <div className={css.page}>\n <PageHeader title={t('entities.title')} description={t('entities.description')} meta={t('entities.count', { count: view.items.length })} />\n <div className={css.entityLayout}>\n <aside className={css.entityRail}>\n <form className={css.entitySearch} onSubmit={submit}><input aria-label={t('entities.nameAria')} value={entity} onChange={event => setEntity(event.target.value)} placeholder={t('entities.placeholder')} /><button type=\"submit\" className={css.primaryButton} disabled={loading || entity.trim() === ''}>{t('entities.action')}</button></form>\n <div className={css.entityHeading}><span>{t('entities.top')}</span><small>{t('entities.frequency')}</small></div>\n <div className={css.entityList}>{view.items.map(item => <button key={item.entity} type=\"button\" aria-pressed={view.selected === item.entity} onClick={() => { setEntity(item.entity); void load(item.entity) }}><span>{item.entity}</span><strong>{item.count}</strong></button>)}</div>\n {!loading && view.items.length === 0 && <p className={css.muted}>{t('entities.emptyRail')}</p>}\n </aside>\n <section className={css.entityResults}>\n {error !== null && <div className={css.inlineError} role=\"alert\">{error}</div>}\n {loading && <div className={css.loadingPanel}>{t('entities.loading')}</div>}\n {!loading && view.selected === undefined && <EmptyState glyph=\"◎\" title={t('entities.selectTitle')}>{t('entities.selectText')}</EmptyState>}\n {!loading && view.selected !== undefined && <><div className={css.sectionHeading}><div><h3>{view.selected}</h3></div><strong>{view.insights.length}</strong></div>{view.insights.length === 0 ? <EmptyState glyph=\"0\" title={t('entities.emptyTitle')}>{t('entities.emptyText')}</EmptyState> : view.insights.map(insight => <InsightCard key={insightKey(insight)} insight={insight} writeEnabled={props.writeEnabled} onForget={props.onForget} onRelated={() => props.onExplore(insight.content)} />)}</>}\n </section>\n </div>\n </div>\n )\n}\n\nfunction RuntimePage(props: { client: MnemonClient; revision: number; writeEnabled: boolean; onMutate: () => void }): JSX.Element {\n const t = useT()\n const [snapshot, setSnapshot] = useState<RuntimeMemorySnapshot | null>(null)\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState<string | null>(null)\n const [notice, setNotice] = useState<string | null>(null)\n const [target, setTarget] = useState<RuntimeMemoryTarget>('memory')\n const [importance, setImportance] = useState<RuntimeMemoryImportance>('normal')\n const [content, setContent] = useState('')\n const [saving, setSaving] = useState(false)\n const [editing, setEditing] = useState<string | null>(null)\n const [editContent, setEditContent] = useState('')\n const [editImportance, setEditImportance] = useState<RuntimeMemoryImportance>('normal')\n const [removing, setRemoving] = useState<string | null>(null)\n\n const load = useCallback(async () => {\n setLoading(true); setError(null)\n try { setSnapshot(await props.client.runtimeMemory()) } catch (reason) { setError(message(reason)) } finally { setLoading(false) }\n }, [props.client])\n useEffect(() => { void load() }, [load, props.revision])\n\n const entryKey = (entry: RuntimeMemoryEntry) => `${entry.target}:${entry.created_at}:${entry.content}`\n const mutate = async (request: Parameters<MnemonClient['mutateRuntimeMemory']>[0]) => {\n setNotice(null); setError(null)\n const result = await props.client.mutateRuntimeMemory(request)\n setNotice(result.maintenance === undefined\n ? t(`runtime.result.${request.action}` as MnemonKey, { target: t(`runtime.target.${request.target}` as MnemonKey), count: result.entryCount })\n : result.maintenance.kind === 'local-compaction'\n ? t('runtime.result.localCompaction', { target: t(`runtime.target.${request.target}` as MnemonKey), count: result.entryCount })\n : t('runtime.result.maintenance', { target: t(`runtime.target.${request.target}` as MnemonKey), count: result.entryCount, spaces: result.maintenance.memoryBodyIds.join(', ') || '—' }))\n await load()\n props.onMutate()\n }\n const add = async (event: FormEvent) => {\n event.preventDefault()\n if (content.trim() === '') return\n setSaving(true)\n try {\n await mutate({ action: 'add', target, content, importance })\n setContent('')\n } catch (reason) { setError(message(reason)) } finally { setSaving(false) }\n }\n const beginEdit = (entry: RuntimeMemoryEntry) => {\n setEditing(entryKey(entry)); setEditContent(entry.content); setEditImportance(entry.importance); setRemoving(null)\n }\n const replace = async (entry: RuntimeMemoryEntry) => {\n if (editContent.trim() === '') return\n setSaving(true)\n try {\n await mutate({ action: 'replace', target: entry.target, old_text: entry.content, content: editContent, importance: editImportance })\n setEditing(null)\n } catch (reason) { setError(message(reason)) } finally { setSaving(false) }\n }\n const remove = async (entry: RuntimeMemoryEntry) => {\n setSaving(true)\n try {\n await mutate({ action: 'remove', target: entry.target, old_text: entry.content })\n setRemoving(null)\n } catch (reason) { setError(message(reason)) } finally { setSaving(false) }\n }\n\n const targetPanel = (value: RuntimeMemoryTarget) => {\n const view = snapshot?.targets[value]\n const entries = snapshot?.entries.filter(entry => entry.target === value) ?? []\n const percentage = view === undefined || view.limit === 0 ? 0 : Math.min(100, Math.round(view.used / view.limit * 100))\n return (\n <section className={css.runtimeTarget} aria-label={t(`runtime.target.${value}` as MnemonKey)}>\n <header className={css.runtimeTargetHeader}>\n <div><span>{value === 'user' ? 'USER.md' : 'MEMORY.md'}</span><h3>{t(`runtime.target.${value}` as MnemonKey)}</h3></div>\n <strong>{view?.entryCount ?? 0}</strong>\n </header>\n <div className={css.capacityLine}><div><i style={{ width: `${percentage}%` }} /></div><span>{view === undefined ? '—' : `${humanBytes(view.used)} / ${humanBytes(view.limit)}`}</span></div>\n <p className={css.runtimeTargetDescription}>{t(`runtime.target.${value}.description` as MnemonKey)}</p>\n <div className={css.runtimeEntries}>\n {entries.map(entry => {\n const key = entryKey(entry)\n const isEditing = editing === key\n const isRemoving = removing === key\n return <article key={key} className={css.runtimeEntry} data-importance={entry.importance}>\n <div className={css.runtimeEntryMeta}><span>{t(`runtime.importance.${entry.importance}` as MnemonKey)}</span><time dateTime={entry.updated_at}>{new Date(entry.updated_at).toLocaleString()}</time></div>\n {isEditing ? <textarea aria-label={t('runtime.editContent')} value={editContent} onChange={event => setEditContent(event.target.value)} rows={4} /> : <p>{entry.content}</p>}\n {isEditing && <select aria-label={t('runtime.importance')} value={editImportance} onChange={event => setEditImportance(event.target.value as RuntimeMemoryImportance)}><option value=\"critical\">{t('runtime.importance.critical')}</option><option value=\"normal\">{t('runtime.importance.normal')}</option><option value=\"low\">{t('runtime.importance.low')}</option></select>}\n <footer>\n {isRemoving ? <><span>{t('runtime.removeConfirm')}</span><button type=\"button\" className={css.dangerSolidButton} disabled={saving} onClick={() => void remove(entry)}>{t('runtime.removeAction')}</button><button type=\"button\" className={css.ghostButton} onClick={() => setRemoving(null)}>{t('common.cancel')}</button></> : isEditing ? <><button type=\"button\" className={css.primaryButton} disabled={saving || editContent.trim() === ''} onClick={() => void replace(entry)}>{t('runtime.saveEdit')}</button><button type=\"button\" className={css.ghostButton} onClick={() => setEditing(null)}>{t('common.cancel')}</button></> : props.writeEnabled ? <><button type=\"button\" className={css.ghostButton} onClick={() => beginEdit(entry)}>{t('runtime.editAction')}</button><button type=\"button\" className={css.dangerButton} onClick={() => { setRemoving(key); setEditing(null) }}>{t('runtime.removeAction')}</button></> : null}\n </footer>\n </article>\n })}\n {!loading && entries.length === 0 && <div className={css.runtimeEmpty}><span>○</span><p>{t('runtime.empty')}</p></div>}\n </div>\n </section>\n )\n }\n\n return (\n <div className={css.page}>\n <PageHeader title={t('runtime.title')} description={t('runtime.description')} meta={snapshot === null ? t('common.loading') : t('runtime.total', { count: snapshot.entries.length })} action={<button type=\"button\" className={css.secondaryButton} disabled={loading} onClick={() => void load()}>{t('runtime.refresh')}</button>} />\n {error !== null && <div className={css.inlineError} role=\"alert\">{error}</div>}\n {notice !== null && <div className={css.runtimeNotice} role=\"status\">{notice}</div>}\n {props.writeEnabled && <form className={css.runtimeComposer} onSubmit={event => void add(event)}>\n <div className={css.runtimeComposerHeading}><div><h3>{t('runtime.addTitle')}</h3><p>{t('runtime.addDescription')}</p></div><span>{t('runtime.hotContext')}</span></div>\n <textarea aria-label={t('runtime.content')} value={content} onChange={event => setContent(event.target.value)} rows={3} placeholder={t('runtime.placeholder')} />\n <div className={css.runtimeComposerActions}><label>{t('runtime.target')}<select value={target} onChange={event => setTarget(event.target.value as RuntimeMemoryTarget)}><option value=\"memory\">{t('runtime.target.memory')}</option><option value=\"user\">{t('runtime.target.user')}</option></select></label><label>{t('runtime.importance')}<select value={importance} onChange={event => setImportance(event.target.value as RuntimeMemoryImportance)}><option value=\"critical\">{t('runtime.importance.critical')}</option><option value=\"normal\">{t('runtime.importance.normal')}</option><option value=\"low\">{t('runtime.importance.low')}</option></select></label><button type=\"submit\" className={css.primaryButton} disabled={saving || content.trim() === ''}>{saving ? t('runtime.saving') : t('runtime.addAction')}</button></div>\n </form>}\n {!props.writeEnabled && <div className={css.runtimeReadOnly}>{t('runtime.readOnly')}</div>}\n <div className={css.runtimeGrid}>{targetPanel('user')}{targetPanel('memory')}</div>\n <p className={css.runtimeFootnote}>{t('runtime.footnote')}</p>\n </div>\n )\n}\n\nfunction RememberPage(props: { client: MnemonClient; sessionId: string | undefined; memoryBodies: MemoryBodyView[]; writeEnabled: boolean; seed: string; onMutate: () => void }): JSX.Element {\n const t = useT()\n const [content, setContent] = useState(props.seed)\n const [category, setCategory] = useState<Category>('general')\n const [importance, setImportance] = useState(3)\n const [tags, setTags] = useState('')\n const [entities, setEntities] = useState('')\n const [memoryBodyId, setMemoryBodyId] = useState('')\n const [supervising, setSupervising] = useState(false)\n const [saving, setSaving] = useState(false)\n const [result, setResult] = useState<string | null>(null)\n useEffect(() => { if (props.seed !== '') setContent(props.seed) }, [props.seed])\n useEffect(() => {\n if (memoryBodyId === '' && props.memoryBodies.length > 0) setMemoryBodyId((props.memoryBodies.find(body => body.active) ?? props.memoryBodies[0])!.id)\n }, [memoryBodyId, props.memoryBodies])\n\n const supervise = async (event: FormEvent) => {\n event.preventDefault()\n if (content.trim() === '' || props.sessionId === undefined) return\n setSupervising(true); setResult(null)\n try {\n const response = await props.client.supervise(content)\n setResult(`${t(response.action === 'skipped' ? 'remember.skipped' : 'remember.completed')}${response.memoryBodyIds.length === 0 ? '' : ` · ${response.memoryBodyIds.join(', ')}`}${response.summary === '' ? '' : ` · ${response.summary}`}`)\n setContent('')\n props.onMutate()\n } catch (reason) { setResult(t('remember.dispatchFailed', { error: message(reason) })) } finally { setSupervising(false) }\n }\n\n const manualSave = async (event: FormEvent) => {\n event.preventDefault(); if (content.trim() === '') return\n setSaving(true); setResult(null)\n try {\n const response = await props.client.remember({ content, category, importance, tags: tags.split(',').map(value => value.trim()).filter(Boolean), entities: entities.split(',').map(value => value.trim()).filter(Boolean), source: 'user', ...(memoryBodyId === '' ? {} : { memoryBodyId }) })\n const action = typeof response.action === 'string' ? response.action : 'saved'\n const summary = typeof response.summary === 'string' ? response.summary : ''\n setResult(action === 'skipped' ? `${t('remember.skipped')}${summary === '' ? '' : ` · ${summary}`}` : `${t('remember.processed', { action })}${summary === '' ? '' : ` · ${summary}`}`)\n if (action !== 'skipped') { setContent(''); setTags(''); setEntities(''); props.onMutate() }\n } catch (reason) { setResult(t('remember.saveFailed', { error: message(reason) })) } finally { setSaving(false) }\n }\n\n return (\n <div className={css.page}>\n <PageHeader title={t('remember.title')} description={t('remember.description')} meta={props.writeEnabled ? t('remember.worker') : t('common.readOnly')} />\n {!props.writeEnabled ? <EmptyState glyph=\"⊘\" title={t('remember.readOnlyTitle')}>{t('remember.readOnlyText')}</EmptyState> : (\n <div className={css.writebackLayout}>\n <aside className={css.writeGuide}><h3>{t('remember.flowTitle')}</h3><ol><li><strong>{t('remember.routeTitle')}</strong><span>{t('remember.routeText')}</span></li><li><strong>{t('remember.dedupeTitle')}</strong><span>{t('remember.dedupeText')}</span></li><li><strong>{t('remember.writeTitle')}</strong><span>{t('remember.writeText')}</span></li></ol><p>{t('remember.flowText')}</p></aside>\n <section className={css.supervisedComposer}>\n <form className={css.supervisedForm} onSubmit={event => void supervise(event)}>\n <div className={css.supervisedHeading}><div><h3>{t('remember.delegateTitle')}</h3></div><span className={props.sessionId === undefined ? css.sessionMissing : css.sessionReady}>{props.sessionId === undefined ? t('remember.noSession') : t('remember.ready')}</span></div>\n <label className={css.fieldWide}>{t('remember.candidate')}<textarea aria-label={t('remember.candidateAria')} value={content} onChange={event => setContent(event.target.value)} maxLength={8000} rows={8} placeholder={t('remember.placeholder')} /></label>\n {props.sessionId === undefined && <p className={css.sessionHint}>{t('remember.sessionHint')}</p>}\n <div className={css.formActions}><button type=\"submit\" className={css.primaryButton} disabled={supervising || content.trim() === '' || props.sessionId === undefined}>{supervising ? t('remember.processing') : t('remember.action')}</button>{result !== null && <span role=\"status\">{result}</span>}</div>\n </form>\n <details className={css.advancedWrite}>\n <summary><span><strong>{t('remember.advanced')}</strong><small>{t('remember.advancedHint')}</small></span><span>{t('remember.expand')}</span></summary>\n <form className={css.manualForm} onSubmit={event => void manualSave(event)}>\n <div className={css.formGrid}><label className={css.fieldWide}>{t('remember.target')}<select aria-label={t('remember.target')} value={memoryBodyId} onChange={event => setMemoryBodyId(event.target.value)}>{props.memoryBodies.map(body => <option key={body.id} value={body.id}>{body.name} · {body.id}{body.active ? ` · ${t('common.active')}` : ''}</option>)}</select></label><label>{t('common.category')}<select value={category} onChange={event => setCategory(event.target.value as Category)}>{CATEGORIES.map(value => <option key={value} value={value}>{categoryLabel(t, value)}</option>)}</select></label><label>{t('common.importanceLabel')}<select value={importance} onChange={event => setImportance(Number(event.target.value))}>{[1, 2, 3, 4, 5].map(value => <option key={value} value={value}>{value} / 5</option>)}</select></label><label className={css.fieldWide}>{t('remember.entities')}<input value={entities} onChange={event => setEntities(event.target.value)} placeholder=\"SQLite, DSH\" /></label><label className={css.fieldWide}>{t('remember.tags')}<input value={tags} onChange={event => setTags(event.target.value)} placeholder=\"architecture, local-first\" /></label></div>\n <div className={css.manualActions}><p>{t('remember.advancedText')}</p><button type=\"submit\" className={css.secondaryButton} disabled={saving || content.trim() === '' || props.sessionId === undefined || memoryBodyId === ''}>{saving ? t('remember.saving') : t('remember.advancedAction')}</button></div>\n </form>\n </details>\n </section>\n </div>\n )}\n </div>\n )\n}\n\nfunction ListPage(props: { client: MnemonClient; revision: number; writeEnabled: boolean; onForget: (insight: Insight) => Promise<void>; onClone: (insight: Insight) => void; onExplore: (query: string) => void }): JSX.Element {\n const PAGE_SIZE = 48\n const t = useT()\n const [query, setQuery] = useState('')\n const [category, setCategory] = useState<Category | ''>('')\n const [view, setView] = useState<MemoryListView | null>(null)\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState<string | null>(null)\n const [visibleLimit, setVisibleLimit] = useState(PAGE_SIZE)\n\n const load = useCallback(async () => {\n setLoading(true); setError(null)\n try { setView(await props.client.list({ ...(query.trim() === '' ? {} : { query }), ...(category === '' ? {} : { category }), limit: 1000 })) } catch (reason) { setError(message(reason)) } finally { setLoading(false) }\n }, [category, props.client, query])\n useEffect(() => { void load() }, [props.revision])\n const submit = (event: FormEvent) => { event.preventDefault(); setVisibleLimit(PAGE_SIZE); void load() }\n const forget = async (insight: Insight) => { await props.onForget(insight); setView(current => current === null ? current : { ...current, total: Math.max(0, current.total - 1), items: current.items.filter(item => insightKey(item) !== insightKey(insight)) }) }\n const visibleItems = view?.items.slice(0, visibleLimit) ?? []\n const remaining = Math.max(0, (view?.items.length ?? 0) - visibleItems.length)\n\n return (\n <div className={css.page}>\n <PageHeader title={t('content.title')} description={t('content.description')} meta={t('content.count', { count: view?.total ?? '—' })} />\n <form className={css.listToolbar} onSubmit={submit}><input aria-label={t('content.filterAria')} value={query} onChange={event => setQuery(event.target.value)} placeholder={t('content.filterPlaceholder')} /><select aria-label={t('content.categoryAria')} value={category} onChange={event => setCategory(event.target.value as Category | '')}><option value=\"\">{t('common.allCategories')}</option>{CATEGORIES.map(value => <option key={value} value={value}>{categoryLabel(t, value)}</option>)}</select><button type=\"submit\" className={css.primaryButton} disabled={loading}>{loading ? t('common.loading') : t('content.apply')}</button></form>\n <div className={css.listNotice}>{t('content.notice')}</div>\n {error !== null && <div className={css.inlineError} role=\"alert\">{error}</div>}\n {!loading && view?.items.length === 0 && <EmptyState glyph=\"≡\" title={t('content.emptyTitle')}>{t('content.emptyText')}</EmptyState>}\n <div className={css.memoryList}>{visibleItems.map(insight => <InsightCard key={insightKey(insight)} insight={insight} writeEnabled={props.writeEnabled} onForget={forget} onClone={props.onClone} onRelated={() => props.onExplore(insight.content)} />)}</div>\n {view !== null && view.items.length > 0 && <div className={css.listProgress}><span>{t('content.showing', { visible: visibleItems.length, total: view.items.length })}</span>{remaining > 0 && <button type=\"button\" className={css.secondaryButton} onClick={() => setVisibleLimit(value => value + PAGE_SIZE)}>{t('content.showMore', { count: Math.min(PAGE_SIZE, remaining) })}</button>}</div>}\n </div>\n )\n}\n\ntype DocumentListItem = DocumentRecord & { healthy?: boolean; excerpt: string }\n\nfunction DocumentsPage(props: { client: MnemonClient; revision: number; writeEnabled: boolean; sessionId?: string; onMutate: () => void }): JSX.Element {\n const t = useT()\n const [snapshot, setSnapshot] = useState<DocumentSnapshot | null>(null)\n const [items, setItems] = useState<DocumentListItem[]>([])\n const [selectedId, setSelectedId] = useState<string | null>(null)\n const [selected, setSelected] = useState<DocumentView | null>(null)\n const [status, setStatus] = useState<'active' | 'archived'>('active')\n const [query, setQuery] = useState('')\n const [loading, setLoading] = useState(true)\n const [saving, setSaving] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [notice, setNotice] = useState<string | null>(null)\n const [composing, setComposing] = useState(false)\n const [editing, setEditing] = useState(false)\n const [confirmArchive, setConfirmArchive] = useState(false)\n const [title, setTitle] = useState('')\n const [description, setDescription] = useState('')\n const [content, setContent] = useState('')\n const [sources, setSources] = useState('')\n\n const display = useCallback(async (nextQuery: string, nextStatus: 'active' | 'archived') => {\n setLoading(true); setError(null)\n try {\n const current = await props.client.documents()\n const records = nextQuery.trim() === ''\n ? current.documents\n : (await props.client.searchDocuments(nextQuery, nextStatus === 'archived')).results\n const filtered = records.filter(record => record.status === nextStatus)\n setSnapshot(current)\n setItems(filtered)\n setSelectedId(previous => previous !== null && filtered.some(record => record.id === previous) ? previous : filtered[0]?.id ?? null)\n } catch (reason) {\n setError(message(reason)); setSnapshot(null); setItems([]); setSelectedId(null)\n } finally {\n setLoading(false)\n }\n }, [props.client])\n\n useEffect(() => { void display(query, status) }, [display, props.revision, status])\n useEffect(() => {\n setSelected(null)\n if (selectedId === null) return\n let active = true\n void props.client.document(selectedId).then(value => { if (active) setSelected(value) }).catch(reason => { if (active) setError(message(reason)) })\n return () => { active = false }\n }, [props.client, selectedId, props.revision])\n\n const resetComposer = () => { setTitle(''); setDescription(''); setContent(''); setSources(''); setComposing(false) }\n const sourcePaths = (value: string) => value.split(/\\r?\\n|,/gu).map(path => path.trim()).filter(Boolean)\n\n const create = async (event: FormEvent) => {\n event.preventDefault(); setSaving(true); setError(null); setNotice(null)\n try {\n const result = await props.client.mutateDocument({ action: 'create', title, description, content, sourcePaths: sourcePaths(sources) })\n setNotice(result.maintenance === undefined ? t('documents.created') : t('documents.createdAfterArchive', { count: result.maintenance.archivedDocumentIds.length }))\n setStatus('active'); setQuery(''); resetComposer(); props.onMutate(); await display('', 'active'); setSelectedId(result.document.id)\n } catch (reason) { setError(message(reason)) } finally { setSaving(false) }\n }\n\n const beginEdit = () => {\n if (selected === null) return\n setTitle(selected.title); setDescription(selected.description); setContent(selected.content); setSources(selected.sourcePaths.join('\\n')); setEditing(true); setComposing(false); setConfirmArchive(false)\n }\n\n const update = async (event: FormEvent) => {\n event.preventDefault()\n if (selected === null) return\n setSaving(true); setError(null); setNotice(null)\n try {\n const result = await props.client.mutateDocument({ action: 'update', id: selected.id, title, description, content, sourcePaths: sourcePaths(sources) })\n setNotice(result.maintenance === undefined ? t('documents.updated') : t('documents.updatedAfterArchive', { count: result.maintenance.archivedDocumentIds.length }))\n setEditing(false); props.onMutate(); await display(query, status); setSelectedId(result.document.id)\n } catch (reason) { setError(message(reason)) } finally { setSaving(false) }\n }\n\n const archive = async () => {\n if (selected === null) return\n setSaving(true); setError(null); setNotice(null)\n try {\n const result = await props.client.archiveDocument(selected.id)\n setNotice(t('documents.archived', { spaces: result.maintenance?.memoryBodyIds.join(', ') || '—' }))\n setConfirmArchive(false); setStatus('archived'); setQuery(''); props.onMutate(); await display('', 'archived'); setSelectedId(result.document.id)\n } catch (reason) { setError(message(reason)) } finally { setSaving(false) }\n }\n\n const usage = snapshot === null ? 0 : Math.min(100, snapshot.activeBytes / snapshot.limitBytes * 100)\n const activeCount = snapshot?.activeCount ?? 0\n const archivedCount = snapshot?.archivedCount ?? 0\n\n return (\n <div className={css.page}>\n <PageHeader title={t('documents.title')} description={t('documents.description')} meta={snapshot === null ? t('common.loading') : t('documents.capacity', { used: humanBytes(snapshot.activeBytes), limit: humanBytes(snapshot.limitBytes) })} action={<button type=\"button\" className={css.secondaryButton} disabled={loading} onClick={() => void display(query, status)}>{t('documents.refresh')}</button>} />\n {error !== null && <div className={css.inlineError} role=\"alert\">{error}</div>}\n {notice !== null && <div className={css.runtimeNotice} role=\"status\">{notice}</div>}\n\n <section className={css.documentSummary} aria-label={t('documents.summary')}>\n <article><span>{t('documents.active')}</span><strong>{activeCount}</strong><small>{t('documents.activeHint')}</small></article>\n <article><span>{t('documents.archivedCount')}</span><strong>{archivedCount}</strong><small>{t('documents.archivedHint')}</small></article>\n <article className={css.documentCapacity}><span>{t('documents.activeCapacity')}</span><strong>{snapshot === null ? '—' : `${usage.toFixed(1)}%`}</strong><div><i style={{ width: `${usage}%` }} /></div><small>{t('documents.capacityHint')}</small></article>\n </section>\n\n <section className={css.documentToolbar}>\n <form onSubmit={event => { event.preventDefault(); void display(query, status) }}><span aria-hidden=\"true\">⌕</span><input aria-label={t('documents.searchAria')} value={query} onChange={event => setQuery(event.target.value)} placeholder={t('documents.searchPlaceholder')} /><button type=\"submit\" className={css.secondaryButton}>{t('documents.search')}</button></form>\n <div role=\"group\" aria-label={t('documents.scope')}><button type=\"button\" data-active={status === 'active' || undefined} onClick={() => setStatus('active')}>{t('documents.active')} <b>{activeCount}</b></button><button type=\"button\" data-active={status === 'archived' || undefined} onClick={() => setStatus('archived')}>{t('documents.archivedCount')} <b>{archivedCount}</b></button></div>\n {props.writeEnabled && props.sessionId !== undefined && <button type=\"button\" className={css.primaryButton} onClick={() => { setComposing(value => !value); setEditing(false) }}>{composing ? t('common.cancel') : t('documents.new')}</button>}\n </section>\n\n {composing && <form className={css.documentEditor} onSubmit={event => void create(event)}>\n <header><div><h3>{t('documents.newTitle')}</h3><p>{t('documents.editorHint')}</p></div><span>{t('documents.managedCopy')}</span></header>\n <div className={css.documentEditorMeta}><label>{t('documents.name')}<input value={title} onChange={event => setTitle(event.target.value)} required /></label><label>{t('documents.routing')}<input value={description} onChange={event => setDescription(event.target.value)} /></label></div>\n <label>{t('documents.sources')}<input value={sources} onChange={event => setSources(event.target.value)} placeholder={t('documents.sourcesPlaceholder')} /></label>\n <label>{t('documents.markdown')}<textarea value={content} onChange={event => setContent(event.target.value)} rows={10} required /></label>\n <footer><button type=\"button\" className={css.ghostButton} onClick={resetComposer}>{t('common.cancel')}</button><button type=\"submit\" className={css.primaryButton} disabled={saving || title.trim() === '' || content.trim() === ''}>{saving ? t('documents.saving') : t('documents.create')}</button></footer>\n </form>}\n\n <div className={css.documentWorkspace}>\n <aside className={css.documentList} aria-label={t('documents.list')}>\n <header><span>{status === 'active' ? t('documents.activeList') : t('documents.archiveList')}</span><code>{items.length}</code></header>\n {items.map(document => <button type=\"button\" key={document.id} data-selected={selectedId === document.id || undefined} onClick={() => { setSelected(null); setSelectedId(document.id); setEditing(false); setConfirmArchive(false) }}><div><strong>{document.title}</strong><time dateTime={document.updatedAt}>{new Date(document.updatedAt).toLocaleDateString()}</time></div><p>{document.description || document.excerpt || t('documents.noDescription')}</p><footer><span>{humanBytes(document.sizeBytes)}</span><code>{document.id.slice(0, 8)}</code>{document.healthy === false && <em>{t('documents.missing')}</em>}</footer></button>)}\n {!loading && items.length === 0 && <div className={css.documentListEmpty}><span>▤</span><strong>{status === 'active' ? t('documents.emptyActive') : t('documents.emptyArchived')}</strong><p>{status === 'active' ? t('documents.emptyActiveText') : t('documents.emptyArchivedText')}</p></div>}\n {loading && <div className={css.loading}>{t('common.loading')}</div>}\n </aside>\n\n <section className={css.documentReader} aria-label={t('documents.reader')}>\n {selected === null ? <EmptyState glyph=\"▤\" title={t('documents.selectTitle')}>{t('documents.selectText')}</EmptyState> : editing ? <form className={css.documentEditor} onSubmit={event => void update(event)}>\n <header><div><h3>{t('documents.editTitle')}</h3><p>{t('documents.editorHint')}</p></div><code>{selected.id}</code></header>\n <div className={css.documentEditorMeta}><label>{t('documents.name')}<input value={title} onChange={event => setTitle(event.target.value)} required /></label><label>{t('documents.routing')}<input value={description} onChange={event => setDescription(event.target.value)} /></label></div>\n <label>{t('documents.sources')}<input value={sources} onChange={event => setSources(event.target.value)} /></label><label>{t('documents.markdown')}<textarea value={content} onChange={event => setContent(event.target.value)} rows={18} required /></label>\n <footer><button type=\"button\" className={css.ghostButton} onClick={() => setEditing(false)}>{t('common.cancel')}</button><button type=\"submit\" className={css.primaryButton} disabled={saving}>{saving ? t('documents.saving') : t('documents.save')}</button></footer>\n </form> : <article className={css.documentDetail}>\n <header><div><span>{selected.status === 'active' ? t('documents.active') : t('documents.coldArchive')}</span><h3>{selected.title}</h3><p>{selected.description || t('documents.noDescription')}</p></div><div>{props.writeEnabled && selected.status === 'active' && <button type=\"button\" className={css.secondaryButton} onClick={beginEdit}>{t('documents.edit')}</button>}</div></header>\n <dl><div><dt>{t('documents.path')}</dt><dd><code>{selected.relativePath}</code></dd></div><div><dt>{t('documents.revision')}</dt><dd>{selected.revision}</dd></div><div><dt>{t('documents.hash')}</dt><dd><code>{selected.contentHash.slice(0, 16)}</code></dd></div><div><dt>{t('documents.size')}</dt><dd>{humanBytes(selected.sizeBytes)}</dd></div></dl>\n {selected.sourcePaths.length > 0 && <div className={css.documentSources}><span>{t('documents.sources')}</span>{selected.sourcePaths.map(path => <code key={path}>{path}</code>)}</div>}\n {selected.status === 'archived' && <div className={css.documentArchiveReceipt}><strong>{t('documents.archiveReceipt')}</strong><p>{selected.archiveSummary}</p><div>{selected.memoryBodyIds.map(id => <code key={id}>{id}</code>)}</div></div>}\n <DocumentMarkdown content={selected.content} />\n {props.writeEnabled && selected.status === 'active' && <footer className={css.documentDanger}>{confirmArchive ? <><span>{t('documents.archiveConfirm')}</span><button type=\"button\" className={css.dangerSolidButton} disabled={saving} onClick={() => void archive()}>{saving ? t('documents.archiving') : t('documents.archiveNow')}</button><button type=\"button\" className={css.ghostButton} onClick={() => setConfirmArchive(false)}>{t('common.cancel')}</button></> : <><div><strong>{t('documents.archiveTitle')}</strong><p>{t('documents.archiveDescription')}</p></div><button type=\"button\" className={css.dangerButton} onClick={() => setConfirmArchive(true)}>{t('documents.archive')}</button></>}</footer>}\n </article>}\n </section>\n </div>\n <p className={css.runtimeFootnote}>{t('documents.footnote')}</p>\n </div>\n )\n}\n\nfunction StatusPage(props: { status: StatusView | null; loading: boolean; onRefresh: () => void }): JSX.Element {\n const t = useT()\n const status = props.status\n const lifecycle = status?.lifecycle\n const current = lifecycle?.current\n const workers = lifecycle?.subagents\n const documents = status?.documents\n const reviewActivity = current?.reviewActivity\n const reviewThreshold = reviewActivity?.threshold ?? QODERWORK_REVIEW_POLICY.reviewThreshold\n const catalogKnown = status?.memoryBodies !== undefined\n const memoryBodies = useMemo(() => status?.memoryBodies ?? [], [status])\n const activeBodies = memoryBodies.filter(body => body.active).length\n const phase = current?.lastPhase === undefined || current.lastPhase === 'idle' ? t('status.phaseIdle') : current.lastPhase === 'supervised' ? t('status.phaseSupervised') : current.lastPhase === 'error' ? t('status.phaseError') : current.lastPhase === 'prime' ? t('status.prime') : current.lastPhase === 'recall' ? t('status.recallWorker') : current.lastPhase === 'review' ? t('status.phaseReview') : t('status.writeWorker')\n const reviewState = current?.reviewRunning === true\n ? t('status.reviewRunning')\n : current?.idleReviewPending === true\n ? t('status.reviewPending')\n : reviewActivity?.eligible === true\n ? t('status.reviewQualified')\n : t('status.reviewAccumulating')\n const lastReview = current?.lastReviewAt === undefined ? t('status.noReview') : t('status.reviewAt', { time: new Date(current.lastReviewAt).toLocaleTimeString(), action: current.lastReviewAction ?? '—', score: current.lastReviewScore ?? '—' })\n const storage = status?.storage\n const selectedScopeKind = storage?.activeKind ?? 'global'\n const selectedScope = storage?.scopes.find(scope => scope.kind === selectedScopeKind)\n const runtimeArea = selectedScope?.areas.find(area => area.kind === 'runtime')\n const runtimeUserEntries = runtimeArea === undefined ? 0 : Number(runtimeArea.details.userEntries ?? 0)\n const runtimeMemoryEntries = runtimeArea === undefined ? 0 : Number(runtimeArea.details.memoryEntries ?? 0)\n return (\n <div className={css.page}>\n <PageHeader title={t('status.title')} description={t('status.description')} meta={status === null && props.loading ? t('common.loading') : status?.healthy === true && lifecycle?.sessionAvailable === true ? t('status.nominal') : t('status.checkRequired')} action={<button type=\"button\" className={css.secondaryButton} disabled={props.loading} onClick={props.onRefresh}>{props.loading ? t('status.rechecking') : t('status.recheck')}</button>} />\n\n <section className={css.healthStrip} aria-label={t('status.aria')}>\n <article><span className={`${css.healthIndicator} ${status === null ? css.healthMuted : status.healthy ? css.healthGood : css.healthBad}`} /><div><small>{t('status.engine')}</small><strong>{status === null ? t('status.engineChecking') : status.healthy ? t('status.engineConnected') : t('status.engineUnavailable')}</strong><p>{status?.version === undefined ? t('status.versionWaiting') : `CLI ${status.version}`}</p></div></article>\n <article><span className={`${css.healthIndicator} ${runtimeArea === undefined ? css.healthMuted : runtimeArea.status === 'invalid' ? css.healthBad : css.healthGood}`} /><div><small>{t('status.runtime')}</small><strong>{runtimeArea === undefined ? t('status.runtimeWaiting') : t('status.runtimeRatio', { user: runtimeUserEntries, memory: runtimeMemoryEntries })}</strong><p>{runtimeArea === undefined ? t('status.runtimeWaitingDetail') : t('status.runtimeBytes', { bytes: humanBytes(runtimeArea.bytes) })}</p></div></article>\n <article><span className={`${css.healthIndicator} ${activeBodies > 0 ? css.healthGood : css.healthMuted}`} /><div><small>{t('status.spaces')}</small><strong>{catalogKnown ? t('status.activeRatio', { active: activeBodies, total: memoryBodies.length }) : t('status.directoryUnsynced')}</strong><p>{t('status.activeMemories', { count: status?.stats?.totalInsights ?? 0 })}</p></div></article>\n <article><span className={`${css.healthIndicator} ${documents === undefined ? css.healthMuted : css.healthGood}`} /><div><small>{t('status.documents')}</small><strong>{documents === undefined ? t('status.documentsWaiting') : t('status.documentRatio', { active: documents.activeCount, archived: documents.archivedCount })}</strong><p>{documents === undefined ? t('status.documentsSession') : t('status.documentUsage', { used: humanBytes(documents.activeBytes), limit: humanBytes(documents.limitBytes) })}</p></div></article>\n <article><span className={`${css.healthIndicator} ${lifecycle === undefined ? css.healthMuted : lifecycle.sessionAvailable ? css.healthGood : css.healthBad}`} /><div><small>{t('status.router')}</small><strong>{lifecycle === undefined ? t('status.routerChecking') : lifecycle.sessionAvailable ? t('status.routerReady') : t('status.sessionMissing')}</strong><p>{workers === undefined ? t('status.orchestrationWaiting') : t('status.workerSummary', { recalls: workers.recalls, reviews: workers.reviews ?? 0, writes: workers.writes, failures: workers.failures ?? 0 })}</p></div></article>\n </section>\n\n <MemorySystemFlow status={status} reviewState={reviewState} />\n\n <StorageDomains catalog={storage} selected={selectedScope} selectedKind={selectedScopeKind} />\n\n <section className={css.lifecyclePanel}>\n <div className={css.statusSectionHeader}><div><h3>{t('status.lifecycle')}</h3><p>{t('status.lifecycleText')}</p></div><span className={css.phaseBadge}>{phase}</span></div>\n <div className={css.lifecycleFlow}>\n <article><span>01</span><div><strong>{t('status.prime')}</strong><p>{t('status.primeText')}</p></div><code>{lifecycle?.counters.primes ?? 0}</code></article>\n <article data-disabled={lifecycle?.recallMode === 'off' || undefined}><span>02</span><div><strong>{t('status.recallWorker')}</strong><p>{lifecycle?.recallMode === 'guided' ? t('status.recallText') : t('status.recallOff')}</p></div><code>{workers?.recalls ?? 0}</code></article>\n <article data-disabled={lifecycle?.writebackMode === 'off' || undefined}><span>03</span><div><strong>{t('status.writeWorker')}</strong><p>{lifecycle?.writebackMode === 'guided' ? t('status.writeText', { threshold: reviewThreshold, seconds: Math.round((lifecycle.idleReviewMs ?? 0) / 1000) }) : t('status.writeOff')}</p></div><code>{workers?.reviews ?? 0}</code></article>\n </div>\n <div className={css.lifecycleFoot}><span>{t('status.activitySignals')} <strong>{t('status.activitySignalValues', { chars: reviewActivity?.totalUserTextLength ?? 0, turns: reviewActivity?.turnCount ?? 0, tools: reviewActivity?.toolCallCount ?? 0, unique: reviewActivity?.uniqueToolCount ?? 0 })}</strong></span><span>{t('status.lastReview')} <strong>{lastReview}</strong></span><span>{t('status.workerFailures')} <strong>{workers?.failures ?? 0}</strong></span></div>\n {current?.lastError !== undefined && <div className={css.inlineError} role=\"alert\">Lifecycle:{current.lastError}</div>}\n </section>\n\n </div>\n )\n}\n\nfunction storageScopeLabel(t: MnemonTranslate, kind: StorageScopeKind): string {\n return t(kind === 'global' ? 'status.storageGlobal' : kind === 'workspace' ? 'status.storageWorkspace' : 'status.storageCustom')\n}\n\nfunction storageAreaLabel(t: MnemonTranslate, kind: StorageAreaInventory['kind']): string {\n return t(kind === 'runtime' ? 'status.storageRuntime' : kind === 'memory-bodies' ? 'status.storageBodies' : kind === 'documents' ? 'status.storageDocuments' : 'status.storageState')\n}\n\nfunction storageAreaDetails(t: MnemonTranslate, area: StorageAreaInventory): string {\n if (area.kind === 'runtime') return t('status.storageRuntimeDetail', { user: area.details.userEntries ?? 0, memory: area.details.memoryEntries ?? 0 })\n if (area.kind === 'memory-bodies') return t('status.storageBodiesDetail', { active: area.details.activeBodies ?? 0, databases: area.details.databases ?? 0 })\n if (area.kind === 'documents') return t('status.storageDocumentsDetail', { active: area.details.activeDocuments ?? 0, archived: area.details.archivedDocuments ?? 0 })\n return area.details.reviewLedger === true ? t('status.storageStateReady') : t('status.storageStateVolatile')\n}\n\nfunction StorageDomains(props: {\n catalog: StatusView['storage']\n selected: StorageScopeInventory | undefined\n selectedKind: StorageScopeKind\n}): JSX.Element {\n const t = useT()\n const areaStatus = (status: StorageAreaInventory['status']) => t(status === 'ready' ? 'status.storageReady' : status === 'empty' ? 'status.storageEmpty' : status === 'missing' ? 'status.storageMissing' : 'status.storageInvalid')\n return (\n <section className={css.storageDomains} aria-label={t('status.storageDomains')}>\n <div className={css.statusSectionHeader}>\n <div><h3>{t('status.storageDomains')}</h3><p>{t('status.storageDomainsText')}</p></div>\n <span className={css.phaseBadge}>{storageScopeLabel(t, props.selectedKind)}</span>\n </div>\n {props.catalog === undefined ? <div className={css.storageUnavailable}>{t('status.storageWaiting')}</div> : props.selected?.root === undefined ? <div className={css.storageUnavailable}><strong>{storageScopeLabel(t, props.selectedKind)}</strong><p>{props.selectedKind === 'custom' ? t('status.storageCustomUnset') : t('status.storageWorkspaceUnavailable')}</p></div> : <>\n <div className={css.storageRoot}>\n <div><span>{storageScopeLabel(t, props.selectedKind)} · {t('status.storageActiveRoot')}</span><code>{props.selected.root}</code></div>\n <div><strong>{humanBytes(props.selected.totalBytes)}</strong><small>{props.selected.available ? t('status.storageAvailable') : t('status.storageNotCreated')}</small></div>\n </div>\n <div className={css.storageAreaGrid}>\n {props.selected.areas.map(area => <article key={area.kind} data-status={area.status}>\n <header><div><span /> <strong>{storageAreaLabel(t, area.kind)}</strong></div><em>{areaStatus(area.status)}</em></header>\n <div className={css.storageAreaMetric}><strong>{area.itemCount}</strong><span>{t('status.storageItems')}</span><code>{humanBytes(area.bytes)}</code></div>\n <p>{storageAreaDetails(t, area)}</p>\n <code className={css.storagePath}>{area.path}</code>\n {area.issue !== undefined && <small>{area.issue}</small>}\n </article>)}\n </div>\n </>}\n {props.catalog !== undefined && <p className={css.storageFootnote}>{t('status.storageFootnote', { root: props.catalog.activeRoot })}</p>}\n </section>\n )\n}\n\nfunction MemorySystemFlow(props: { status: StatusView | null; reviewState: string }): JSX.Element {\n const t = useT()\n const status = props.status\n const activeScope = status?.storage?.scopes.find(scope => scope.active)\n const runtime = activeScope?.areas.find(area => area.kind === 'runtime')\n const documentArea = activeScope?.areas.find(area => area.kind === 'documents')\n const documents = status?.documents\n const bodies = status?.memoryBodies ?? []\n const activeBodies = bodies.filter(body => body.active).length\n const score = status?.lifecycle?.current?.reviewActivity?.score ?? 0\n const threshold = status?.lifecycle?.current?.reviewActivity?.threshold ?? QODERWORK_REVIEW_POLICY.reviewThreshold\n const idleSeconds = Math.round((status?.lifecycle?.idleReviewMs ?? 30_000) / 1000)\n const hostReady = status?.lifecycle?.sessionAvailable === true\n const flowActive = status?.healthy === true && hostReady\n const areaState = (area: StorageAreaInventory | undefined): 'ready' | 'idle' | 'error' => area?.status === 'invalid' ? 'error' : area?.status === 'ready' ? 'ready' : 'idle'\n const current = status?.lifecycle?.current\n const workers = status?.lifecycle?.subagents\n const lastWorkerOperation = workers?.lastOperation\n const spawnRecent = lastWorkerOperation !== undefined && lastWorkerOperation !== 'review'\n const archiveRecent = lastWorkerOperation === 'document-archive' || lastWorkerOperation === 'migration'\n const reviewState = current?.reviewRunning === true ? 'running' : current?.idleReviewPending === true ? 'pending' : 'idle'\n const rootRunning = current?.status === 'running'\n const semanticActive = rootRunning && (current?.lastPhase === 'recall' || current?.lastPhase === 'supervised')\n const runtimeCount = runtime?.itemCount ?? 0\n const insights = status?.stats?.totalInsights ?? 0\n const flowNode = (title: string, meta: string, state: 'ready' | 'idle' | 'error' = 'idle', kind: 'host' | 'worker' | 'store' | 'task' = 'host', emphasis?: 'active' | 'recent' | 'pending') => (\n <article className={css.flowArchitectureNode} data-state={state} data-kind={kind} data-emphasis={emphasis}>\n <span className={css.flowArchitectureSignal} aria-hidden=\"true\" />\n <div><strong>{title}</strong><small>{meta}</small></div>\n </article>\n )\n const connector = (label: string, kind: 'host' | 'worker' = 'host', active = false) => <div className={css.flowConnector} data-kind={kind} data-active={active || undefined}><span>{label}</span><i aria-hidden=\"true\" /></div>\n return (\n <section className={css.memoryFlow} aria-label={t('status.flowTitle')}>\n <div className={css.statusSectionHeader}><div><h3>{t('status.flowTitle')}</h3><p>{t('status.flowDescription')}</p></div><span className={`${css.runtimeBadge} ${status === null ? css.runtimePending : flowActive ? css.runtimeOnline : css.runtimeOffline}`}>{status === null ? t('common.loading') : flowActive ? t('status.flowLive') : t('status.flowDegraded')}</span></div>\n <div className={css.memoryFlowCanvas}>\n <div className={css.flowArchitecture} role=\"img\" aria-label={`${t('status.flowTitle')}:${t('status.flowDescription')}`}>\n <section className={css.flowLane} data-lane=\"context\">\n <header><span>01</span><div><strong>{t('status.flowLaneContext')}</strong><small>{t('status.flowLaneContextDetail')}</small></div></header>\n <div className={css.flowTrack}>\n {flowNode(t('status.storageRuntime'), t('status.flowRuntimeMeta', { count: runtimeCount }), areaState(runtime), 'store')}\n {connector(t('status.flowPromptAssembly'), 'host')}\n {flowNode(t('status.flowSupervisor'), t('status.flowRootMeta'), hostReady ? 'ready' : 'idle', 'host', rootRunning ? 'active' : undefined)}\n {connector('↔', 'host', rootRunning)}\n {flowNode(t('status.flowConversation'), t('status.flowTurns'), hostReady ? 'ready' : 'idle', 'task')}\n </div>\n <div className={`${css.flowTrack} ${css.flowSecondaryTrack}`}>\n {flowNode(t('status.flowSupervisor'), t('status.flowRootMeta'), hostReady ? 'ready' : 'idle', 'host')}\n {connector(t('status.flowOnDemand'), 'host')}\n {flowNode(t('status.flowDocumentSearch'), t('status.flowOnDemand'), areaState(documentArea), 'host')}\n {connector('→', 'host')}\n {flowNode(t('status.storageDocuments'), t('status.flowDocuments', { active: documents?.activeCount ?? 0, archived: documents?.archivedCount ?? 0 }), areaState(documentArea), 'store')}\n {connector('↩', 'host')}\n {flowNode(t('status.flowContext'), t('status.flowEvidenceMeta'), hostReady ? 'ready' : 'idle', 'task')}\n </div>\n </section>\n\n <section className={css.flowLane} data-lane=\"semantic\">\n <header><span>02</span><div><strong>{t('status.flowLaneSemantic')}</strong><small>{t('status.flowLaneSemanticDetail')}</small></div></header>\n <div className={css.flowTrack}>\n {flowNode(t('status.flowSupervisor'), t('status.flowSemanticRequest'), hostReady ? 'ready' : 'idle', 'task')}\n {connector('→', 'worker', semanticActive)}\n {flowNode(t('status.flowSpawnWorker'), `${t('status.flowSpawnMeta')}${spawnRecent ? ` · ${t('status.flowRecent')}` : ''}`, hostReady ? 'ready' : 'idle', 'worker', semanticActive ? 'active' : spawnRecent ? 'recent' : undefined)}\n {connector('→', 'worker', semanticActive)}\n {flowNode(t('status.flowHostBridge'), t('status.flowHostBridgeMeta'), status?.healthy === false ? 'error' : status?.healthy === true ? 'ready' : 'idle', 'host')}\n {connector('↔', 'host', semanticActive)}\n {flowNode(t('term.spaces'), t('status.flowSpacesMeta', { active: activeBodies, total: bodies.length, insights }), status?.healthy === false ? 'error' : activeBodies > 0 ? 'ready' : 'idle', 'store')}\n {connector('↩', 'host', semanticActive)}\n {flowNode(t('status.flowContext'), t('status.flowEvidenceMeta'), hostReady ? 'ready' : 'idle', 'task')}\n </div>\n </section>\n\n <section className={css.flowLane} data-lane=\"maintenance\">\n <header><span>03</span><div><strong>{t('status.flowLaneMaintenance')}</strong><small>{t('status.flowLaneMaintenanceDetail')}</small></div></header>\n <div className={`${css.flowTrack} ${css.flowMaintenanceTrack}`}>\n {flowNode(t('status.flowDeterministicWrites'), t('status.flowDeterministicWritesMeta'), hostReady ? 'ready' : 'idle', 'task')}\n {connector('→', 'host')}\n {flowNode(t('status.flowControlPlane'), t('status.flowControlPlaneMeta'), areaState(runtime), 'host')}\n {connector('→', 'host')}\n {flowNode(t('status.storageRuntime'), t('status.storageDocuments'), areaState(documentArea), 'store')}\n </div>\n <div className={`${css.flowTrack} ${css.flowReviewTrack}`}>\n {flowNode(t('status.flowReviewGate'), t('status.flowReviewGateMeta', { score, threshold, seconds: idleSeconds }), current?.reviewActivity?.eligible === true ? 'ready' : 'idle', 'task', reviewState === 'pending' ? 'pending' : undefined)}\n {connector('→', 'worker', reviewState === 'running')}\n {flowNode(t('status.flowForkReview'), t('status.flowForkReviewMeta', { state: props.reviewState }), current?.lastError === undefined ? hostReady ? 'ready' : 'idle' : 'error', 'worker', reviewState === 'running' ? 'active' : reviewState === 'pending' ? 'pending' : undefined)}\n {connector('→', 'host', reviewState === 'running')}\n {flowNode(t('status.flowReviewTargets'), t('status.flowReviewTargetsMeta'), areaState(documentArea), 'host')}\n {connector('↩', 'host', reviewState === 'running')}\n {flowNode(t('status.flowContext'), t('status.flowEvidenceMeta'), hostReady ? 'ready' : 'idle', 'task')}\n </div>\n <div className={`${css.flowTrack} ${css.flowArchiveTrack}`}>\n {flowNode(t('status.storageDocuments'), t('status.flowDocuments', { active: documents?.activeCount ?? 0, archived: documents?.archivedCount ?? 0 }), areaState(documentArea), 'store')}\n {connector('→', 'worker')}\n {flowNode(t('status.flowColdArchive'), `${t('status.flowColdArchiveMeta')}${archiveRecent ? ` · ${t('status.flowRecent')}` : ''}`, hostReady ? 'ready' : 'idle', 'worker', archiveRecent ? 'recent' : undefined)}\n {connector('→', 'worker')}\n {flowNode(t('status.flowHostBridge'), t('status.flowHostBridgeMeta'), status?.healthy === false ? 'error' : status?.healthy === true ? 'ready' : 'idle', 'host')}\n {connector('→', 'host')}\n {flowNode(t('status.flowIndexFirst'), t('term.spaces'), status?.healthy === false ? 'error' : activeBodies > 0 ? 'ready' : 'idle', 'store')}\n {connector('→', 'host')}\n {flowNode(t('status.flowRevisionMove'), t('status.flowRevisionMoveMeta', { archived: documents?.archivedCount ?? 0 }), areaState(documentArea), 'store')}\n </div>\n </section>\n </div>\n </div>\n <div className={css.flowLegend}><span><i />{t('status.flowReadWrite')}</span><span><i />{t('status.flowArchive')}</span><span><b />{t('status.flowLegendRecent')}</span><span>{t('status.flowCurrentScope', { scope: storageScopeLabel(t, status?.storage?.activeKind ?? 'global') })}</span></div>\n </section>\n )\n}\n\nexport function MnemonView(props: MnemonViewProps): JSX.Element {\n return <I18nContext.Provider value={props.t ?? translateZh}><MnemonWorkspace {...props} /></I18nContext.Provider>\n}\n\nfunction MnemonWorkspace({ connection, sessionId, workspaceId, workspaceSelection }: MnemonViewProps): JSX.Element {\n const t = useT()\n const client = useMemo(() => new MnemonClient(connection, sessionId, workspaceId), [connection, sessionId, workspaceId])\n const [page, setPage] = useState<Page>('status')\n const canvasRef = useRef<HTMLElement | null>(null)\n\n /** Pages share one plugin-owned scroll container; never mutate DSH ancestor scrollports. */\n const resetViewportScroll = useCallback(() => {\n const canvas = canvasRef.current\n if (canvas !== null) canvas.scrollTop = 0\n }, [])\n\n useEffect(() => { resetViewportScroll() }, [page, resetViewportScroll])\n useEffect(() => {\n // Clear only this view's offset after layout; the host owns every ancestor.\n const frame = window.requestAnimationFrame(() => resetViewportScroll())\n return () => window.cancelAnimationFrame(frame)\n }, [resetViewportScroll])\n const [status, setStatus] = useState<StatusView | null>(null)\n const [statusLoading, setStatusLoading] = useState(true)\n const [statusError, setStatusError] = useState<string | null>(null)\n const statusRequest = useRef(0)\n const [revision, setRevision] = useState(0)\n const [searchSeed, setSearchSeed] = useState('')\n const [rememberSeed, setRememberSeed] = useState('')\n\n /** Conversation surfaces ask this view to open a page (optionally with a seed). */\n const applyAnchor = useCallback((anchor: MnemonAnchor) => {\n if (anchor.seed !== undefined && anchor.seed !== '') {\n if (anchor.page === 'explore') setSearchSeed(anchor.seed)\n if (anchor.page === 'remember') setRememberSeed(anchor.seed)\n }\n setPage(anchor.page)\n }, [])\n useEffect(() => {\n const held = consumeMnemonAnchor(sessionId)\n if (held !== null) applyAnchor(held)\n return subscribeMnemonAnchor(sessionId, applyAnchor)\n }, [sessionId, applyAnchor])\n\n const loadStatus = useCallback(async () => {\n const request = ++statusRequest.current\n setStatusLoading(true); setStatusError(null)\n try {\n const next = await client.status()\n if (request === statusRequest.current) setStatus(next)\n } catch (reason) {\n if (request === statusRequest.current) setStatusError(message(reason))\n } finally {\n if (request === statusRequest.current) setStatusLoading(false)\n }\n }, [client])\n useEffect(() => { void loadStatus() }, [loadStatus])\n\n const mutate = useCallback(() => { setRevision(value => value + 1); void loadStatus() }, [loadStatus])\n const forget = useCallback(async (insight: Insight) => { await client.forget(insight.id, insight.memoryBodyId); mutate() }, [client, mutate])\n const explore = useCallback((query: string) => { setSearchSeed(query); setPage('explore') }, [])\n const clone = useCallback((insight: Insight) => { setRememberSeed(insight.content); setPage('remember') }, [])\n const refreshAll = () => { setRevision(value => value + 1); void loadStatus() }\n const writeEnabled = status?.writeEnabled === true\n const stats = status?.stats\n const catalogKnown = status?.memoryBodies !== undefined\n const memoryBodies = useMemo(() => status?.memoryBodies ?? [], [status])\n const activeBodies = memoryBodies.filter(body => body.active).length\n const workspaceContext = status?.workspaceContext\n const showWorkspacePicker = workspaceContext?.mode === 'workspace' && workspaceSelection !== undefined && workspaceSelection.options.length > 0\n\n return (\n <main className={css.shell}>\n <header className={css.masthead}>\n <div className={css.brand}><MnemonLogo className={css.brandLogo} /><h1>Mnemon</h1></div>\n <section className={css.telemetry} aria-label={t('telemetry.aria')}><div className={css.telemetryMetric}><span>{t('telemetry.memories')}</span><strong>{stats?.totalInsights ?? '—'}</strong></div><div className={css.telemetryMetric}><span>{t('telemetry.graph')}</span><strong>{stats?.edgeCount ?? '—'}</strong></div><div className={css.telemetryMetric}><span>{t('telemetry.entities')}</span><strong>{stats?.topEntities.length ?? '—'}</strong></div><div className={css.telemetryMetric}><span>{t('telemetry.spaces')}</span><strong>{status === null || !catalogKnown ? '—' : activeBodies}</strong></div></section>\n <div className={css.headerActions}>{showWorkspacePicker && <label className={css.workspacePicker}><span>{t('workspace.viewing')}</span><select aria-label={t('workspace.selectorAria')} value={workspaceSelection.selectedWorkspaceId ?? ''} onChange={event => workspaceSelection.onSelect(event.target.value)}>{workspaceSelection.options.map(workspace => <option key={workspace.id} value={workspace.id}>{workspace.title}</option>)}</select></label>}<div className={css.statusCluster}><span className={`${css.statusDot} ${statusLoading && status === null ? css.checking : status?.healthy === true ? css.online : css.offline}`} /><span>{statusLoading ? t('header.checking') : status?.healthy === true ? catalogKnown ? t('header.connected', { count: activeBodies }) : t('header.directoryPending') : t('header.unavailable')}</span><button type=\"button\" className={css.iconButton} disabled={statusLoading} onClick={refreshAll} aria-label={t('common.refresh')}>↻</button></div></div>\n </header>\n {(statusError !== null || status?.healthy === false) && <div className={css.alert} role=\"alert\"><strong>{t('header.notReady')}</strong><span>{statusError ?? status?.error}</span></div>}\n {workspaceContext?.mode === 'workspace' && !workspaceContext.aligned && <div className={css.workspaceMismatch} role=\"status\"><div><strong>{t('workspace.mismatchTitle')}</strong><span>{t('workspace.mismatchDescription')}</span><div><code>{t('workspace.selectedRoot', { root: workspaceContext.selectedRoot })}</code><code>{t('workspace.effectiveRoot', { root: workspaceContext.effectiveRoot })}</code></div></div>{workspaceSelection?.effectiveWorkspaceId !== undefined && <button type=\"button\" className={css.secondaryButton} onClick={workspaceSelection.onAlign}>{t('workspace.align')}</button>}</div>}\n <div className={css.workspace}>\n <div className={css.topNavigation}><nav className={css.nav} aria-label={t('nav.aria')}>{PAGE_NAV.map((group, groupIndex) => <Fragment key={group.aria}><div className={css.navGroup} role=\"group\" aria-label={t(group.aria)}>{group.entries.map(item => <button key={item.id} type=\"button\" aria-current={page === item.id ? 'page' : undefined} onClick={() => setPage(item.id)}><span className={css.navGlyph} aria-hidden=\"true\">{item.glyph}</span><span><strong>{t(item.label)}</strong><small>{t(item.detail)}</small></span></button>)}</div>{groupIndex < PAGE_NAV.length - 1 && <span className={css.navGroupDivider} aria-hidden=\"true\" />}</Fragment>)}</nav><div className={css.spaceSummary}><span>{t('sidebar.activeSpaces')}</span><code>{catalogKnown ? `${activeBodies} / ${memoryBodies.length}` : '— / —'}</code><small>{writeEnabled ? t('common.agentSupervised') : t('common.readOnly')}</small></div></div>\n <section className={css.canvas} ref={canvasRef} data-testid=\"mnemon-canvas\">\n {page === 'overview' && <OverviewPage client={client} revision={revision} writeEnabled={writeEnabled} fallbackBodies={memoryBodies} fallbackDirectory={status?.memoryBodyDirectory} catalogKnown={catalogKnown} onMutate={mutate} onExplore={explore} />}\n {page === 'runtime' && <RuntimePage client={client} revision={revision} writeEnabled={writeEnabled} onMutate={mutate} />}\n {page === 'documents' && <DocumentsPage client={client} revision={revision} writeEnabled={writeEnabled} {...(sessionId === undefined ? {} : { sessionId })} onMutate={mutate} />}\n {page === 'explore' && <ExplorePage client={client} status={status} seed={searchSeed} writeEnabled={writeEnabled} onForget={forget} />}\n {page === 'entities' && <EntitiesPage client={client} revision={revision} writeEnabled={writeEnabled} onForget={forget} onExplore={explore} />}\n {page === 'remember' && <RememberPage client={client} sessionId={sessionId} memoryBodies={status?.memoryBodies ?? []} writeEnabled={writeEnabled} seed={rememberSeed} onMutate={mutate} />}\n {page === 'list' && <ListPage client={client} revision={revision} writeEnabled={writeEnabled} onForget={forget} onClone={clone} onExplore={explore} />}\n {page === 'status' && <StatusPage status={status} loading={statusLoading} onRefresh={() => void loadStatus()} />}\n </section>\n </div>\n </main>\n )\n}\n","import { memo, useMemo, useState, type JSX, type MouseEvent as ReactMouseEvent } from 'react'\nimport { MnemonLogo } from './MnemonLogo.tsx'\nimport { dispatchMnemonAnchor, type MnemonAnchorPage } from './anchor.ts'\nimport type { MnemonKey } from './locales.ts'\nimport css from './MnemonToolviews.module.css'\n\nexport interface MnemonToolViewProps {\n callId: string\n toolName: string\n /** RunningToolCall while live, ToolResultNode once settled; both are opaque wire slices. */\n block: unknown\n openFile?: ((path: string) => void) | undefined\n cwd?: string | undefined\n /** Optional on older/newer DSH tool hosts; omit the action when unavailable. */\n inspect?: (() => void) | undefined\n /** Session the call belongs to; injected by the slot host. */\n sessionId?: string | undefined\n t: (key: MnemonKey, params?: Record<string, unknown>) => string\n}\n\nconst READ_TOOLS = new Set(['mnemon_recall', 'mnemon_related', 'mnemon_document_search', 'mnemon_status', 'mnemon_memory_bodies'])\n\n/** Anchor destination per tool: where \"open in Memory view\" should land. */\nconst ANCHOR_TARGETS: Record<string, { page: MnemonAnchorPage; seed?: (args: Record<string, unknown>) => string | undefined }> = {\n mnemon_recall: { page: 'explore', seed: args => typeof args.query === 'string' && args.query.trim() !== '' ? args.query.trim() : undefined },\n mnemon_related: { page: 'explore', seed: args => typeof args.id === 'string' && args.id.trim() !== '' ? args.id.trim() : undefined },\n mnemon_document_search: { page: 'documents' },\n mnemon_status: { page: 'status' },\n mnemon_memory_bodies: { page: 'overview' },\n mnemon_runtime_memory: { page: 'runtime' },\n mnemon_document_manage: { page: 'documents' },\n mnemon_remember: { page: 'overview' },\n mnemon_forget: { page: 'overview' },\n mnemon_link: { page: 'overview' },\n mnemon_memory_body_create: { page: 'overview' },\n mnemon_memory_body_update: { page: 'overview' },\n mnemon_memory_body_merge: { page: 'overview' },\n}\n\nfunction isSettled(block: unknown): boolean {\n return typeof block === 'object' && block !== null && 'kind' in block\n}\n\n/** Parse the call's raw arguments JSON; always returns a plain object. */\nfunction argsOf(block: unknown): Record<string, unknown> {\n const record = block as { call?: { argsRaw?: unknown }; argsRaw?: unknown } | null\n const raw = typeof record?.call?.argsRaw === 'string' ? record.call.argsRaw : typeof record?.argsRaw === 'string' ? record.argsRaw : ''\n if (raw === '') return {}\n try {\n const parsed: unknown = JSON.parse(raw)\n return typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed) ? parsed as Record<string, unknown> : {}\n } catch {\n return {}\n }\n}\n\n/** Joined text blocks of a settled result; empty while running. */\nfunction resultText(block: unknown): string {\n if (!isSettled(block)) return ''\n const content = (block as { content?: unknown }).content\n if (!Array.isArray(content)) return ''\n return content\n .filter(item => typeof item === 'object' && item !== null && (item as { type?: unknown }).type === 'text' && typeof (item as { text?: unknown }).text === 'string')\n .map(item => String((item as { text: string }).text))\n .join('')\n}\n\n/** Parsed result JSON when the output is one object; otherwise null. */\nfunction outputJson(block: unknown): Record<string, unknown> | null {\n const text = resultText(block)\n if (text === '') return null\n try {\n const parsed: unknown = JSON.parse(text)\n return typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed) ? parsed as Record<string, unknown> : null\n } catch {\n return null\n }\n}\n\nfunction truncateInline(value: string, max: number): string {\n const normalized = value.replace(/\\s+/g, ' ').trim()\n return normalized.length <= max ? normalized : `${normalized.slice(0, max)}…`\n}\n\nfunction truncateBlock(value: string, max: number): string {\n const normalized = value.trim()\n return normalized.length <= max ? normalized : `${normalized.slice(0, max)}\\n…`\n}\n\nfunction countOf(value: unknown): number | undefined {\n return Array.isArray(value) ? value.length : undefined\n}\n\n/** Tool-specific one-line summary from the call args and the settled output. */\nfunction summaryFor(toolName: string, args: Record<string, unknown>, out: Record<string, unknown> | null, t: (key: MnemonKey, params?: Record<string, unknown>) => string): string {\n switch (toolName) {\n case 'mnemon_recall': {\n const query = typeof args.query === 'string' ? truncateInline(args.query, 56) : ''\n const hits = out === null ? undefined : countOf(out.results)\n return hits === undefined ? query : t('toolview.recallSummary', { query, count: hits })\n }\n case 'mnemon_related': {\n const id = typeof args.id === 'string' ? args.id : ''\n const hits = out === null ? undefined : countOf(out.results)\n return hits === undefined ? truncateInline(id, 56) : t('toolview.relatedSummary', { id: truncateInline(id, 28), count: hits })\n }\n case 'mnemon_document_search': {\n const query = typeof args.query === 'string' ? truncateInline(args.query, 56) : ''\n const hits = out === null ? undefined : countOf(out.results)\n return hits === undefined ? query : t('toolview.documentSearchSummary', { query, count: hits })\n }\n case 'mnemon_status':\n return out === null ? t('toolview.running') : out.healthy === true ? t('toolview.statusHealthy') : t('toolview.statusUnhealthy')\n case 'mnemon_memory_bodies':\n return out === null ? t('toolview.running') : t('toolview.bodiesSummary', { count: out.total ?? 0, active: out.activeCount ?? 0 })\n case 'mnemon_remember':\n return typeof args.content === 'string' ? truncateInline(args.content, 56) : t('toolview.genericSummary')\n case 'mnemon_runtime_memory': {\n const action = typeof args.action === 'string' ? args.action : ''\n const target = typeof args.target === 'string' ? args.target : ''\n const content = typeof args.content === 'string' ? truncateInline(args.content, 40) : ''\n return content === '' ? t('toolview.runtimeSummary', { action, target }) : t('toolview.runtimeSummaryWithContent', { action, target, content })\n }\n case 'mnemon_document_manage': {\n const action = typeof args.action === 'string' ? args.action : ''\n const title = typeof args.title === 'string' ? truncateInline(args.title, 40) : ''\n return title === '' ? t('toolview.documentManageSummary', { action }) : t('toolview.documentManageSummaryWithTitle', { action, title })\n }\n case 'mnemon_link': {\n const source = typeof args.sourceId === 'string' ? truncateInline(args.sourceId, 18) : '?'\n const target = typeof args.targetId === 'string' ? truncateInline(args.targetId, 18) : '?'\n return `${source} → ${target}`\n }\n case 'mnemon_forget':\n return typeof args.id === 'string' ? truncateInline(args.id, 56) : t('toolview.genericSummary')\n case 'mnemon_memory_body_create':\n return typeof args.name === 'string' ? truncateInline(args.name, 56) : t('toolview.genericSummary')\n case 'mnemon_memory_body_update': {\n const id = typeof args.memoryBodyId === 'string' ? truncateInline(args.memoryBodyId, 32) : ''\n return id === '' ? t('toolview.genericSummary') : t('toolview.bodyUpdateSummary', { id })\n }\n case 'mnemon_memory_body_merge': {\n const target = typeof args.targetMemoryBodyId === 'string' ? truncateInline(args.targetMemoryBodyId, 24) : '?'\n const sources = countOf(args.sourceMemoryBodyIds) ?? 0\n return t('toolview.bodyMergeSummary', { target, count: sources })\n }\n default:\n return t('toolview.genericSummary')\n }\n}\n\n/** Render one mnemon_* tool call as a memory-flavoured row with expandable evidence. */\nexport const MnemonToolView = memo(function MnemonToolView({ toolName, block, inspect, sessionId, t }: MnemonToolViewProps): JSX.Element {\n const [open, setOpen] = useState(false)\n const settled = isSettled(block)\n const record = block as { error?: { code?: unknown }; isError?: unknown } | null\n const state: 'running' | 'ok' | 'error' | 'stopped' = !settled\n ? 'running'\n : record?.error?.code === 'interrupted'\n ? 'stopped'\n : record?.isError === true\n ? 'error'\n : 'ok'\n const args = useMemo(() => argsOf(block), [block])\n const out = useMemo(() => outputJson(block), [block])\n const text = useMemo(() => resultText(block), [block])\n const title = READ_TOOLS.has(toolName) ? t('toolview.recallTitle') : t('toolview.writeTitle')\n const summary = summaryFor(toolName, args, out, t)\n const target = ANCHOR_TARGETS[toolName]\n const seed = target?.seed?.(args)\n\n const toggle = (): void => setOpen(value => !value)\n const openView = (event: ReactMouseEvent): void => {\n event.stopPropagation()\n if (target === undefined) return\n dispatchMnemonAnchor({ page: target.page, ...(seed === undefined ? {} : { seed }), ...(sessionId === undefined ? {} : { sessionId }) })\n }\n const inspectCall = (event: ReactMouseEvent): void => {\n event.stopPropagation()\n inspect?.()\n }\n\n const showArgs = Object.keys(args).length > 0\n const showResult = text !== ''\n\n return (\n <div className={css.root} data-state={state} data-open={open || undefined}>\n <div className={css.row} role=\"button\" tabIndex={0} aria-expanded={open} aria-label={`${title}:${summary}`} onClick={toggle} onKeyDown={event => { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); toggle() } }}>\n <span className={`${css.dot} ${state === 'running' ? css.dotRunning : state === 'error' ? css.dotError : state === 'stopped' ? css.dotStopped : css.dotOk}`} aria-hidden=\"true\" />\n <MnemonLogo className={css.leading} title={title} />\n <span className={css.title}>{title}</span>\n <span className={css.summary}>{summary}</span>\n {(inspect !== undefined || target !== undefined) && (\n <span className={css.actions} onClick={event => event.stopPropagation()}>\n {target !== undefined && <button type=\"button\" className={css.actionButton} onClick={openView} title={t('toolview.openView')}>{t('toolview.openView')}</button>}\n {settled && inspect !== undefined && <button type=\"button\" className={css.actionButton} onClick={inspectCall} title={t('toolview.inspect')}>{t('toolview.inspect')}</button>}\n </span>\n )}\n <span className={`${css.chevron} ${open ? css.chevronOpen : ''}`} aria-hidden=\"true\" />\n </div>\n {open && (\n <div className={css.details} onClick={event => event.stopPropagation()}>\n {showArgs && <div className={css.detailSection}><span className={css.detailLabel}>{t('toolview.args')}</span><pre className={css.detailCode}>{truncateBlock(JSON.stringify(args, null, 2), 2000)}</pre></div>}\n {showResult && <div className={css.detailSection}><span className={css.detailLabel}>{t('toolview.result')}</span><pre className={css.detailCode}>{truncateBlock(text, 4000)}</pre></div>}\n {!showArgs && !showResult && <div className={css.detailEmpty}>{state === 'running' ? t('toolview.running') : t('toolview.noResult')}</div>}\n </div>\n )}\n </div>\n )\n})\n\n/** Tool name → toolview component, registered as keyed `tool.call.toolview` entries. */\nexport const MNEMON_TOOLVIEW_NAMES = Object.keys(ANCHOR_TARGETS) as readonly string[]\n","import { memo, useEffect, useState, type JSX, type MouseEvent as ReactMouseEvent } from 'react'\nimport type { ClientConnectionHandle } from '../contracts.ts'\nimport type { TurnMemoryActivity } from '../lifecycle.ts'\nimport type { TurnTailOwnerProps } from '@deepseek-ai/dsh-client-ui-conversation/client'\nimport { MnemonClient } from './api.ts'\nimport { dispatchMnemonAnchor } from './anchor.ts'\nimport type { MnemonKey } from './locales.ts'\nimport css from './MnemonTurnTail.module.css'\n\nexport interface MnemonTurnTailProps {\n /** Engine-owned closing Turn boundary (TurnLocation on the wire). */\n turn: unknown\n seq: number\n openFile: (path: string) => void\n /** Injected by the slot host: the session this tail belongs to. */\n sessionId?: string\n connection: ClientConnectionHandle\n t: (key: MnemonKey, params?: Record<string, unknown>) => string\n}\n\nfunction turnNumber(turn: unknown): number | undefined {\n const value = (turn as { turn?: unknown } | null)?.turn\n return typeof value === 'number' ? value : undefined\n}\n\n/** Whether this entry renders for the owner; chain selectors decline quietly. */\nexport function selectMnemonTurnTail(owner: TurnTailOwnerProps): Record<string, never> | null {\n const turn = owner.turn as unknown as { status?: unknown }\n return turn.status === 'closed' ? {} : null\n}\n\n/** One-line memory-activity bar under a completed turn; hides when the turn touched no memory. */\nexport const MnemonTurnTail = memo(function MnemonTurnTail({ turn, seq, sessionId, connection, t }: MnemonTurnTailProps): JSX.Element | null {\n const [activity, setActivity] = useState<TurnMemoryActivity | null | undefined>(undefined)\n const [open, setOpen] = useState(false)\n const number = turnNumber(turn)\n\n useEffect(() => {\n if (number === undefined) {\n setActivity(null)\n return\n }\n let alive = true\n const client = new MnemonClient(connection, sessionId)\n client.turnActivity(number, seq)\n .then(result => { if (alive) setActivity(result) })\n .catch(() => { if (alive) setActivity(null) })\n return () => { alive = false }\n }, [connection, sessionId, number, seq])\n\n if (activity === undefined || activity === null) return null\n if (number === undefined) return null\n\n const openView = (event: ReactMouseEvent): void => {\n event.stopPropagation()\n dispatchMnemonAnchor({ page: 'status', ...(sessionId === undefined ? {} : { sessionId }) })\n }\n\n return (\n <div className={css.root} data-open={open || undefined}>\n <button type=\"button\" className={css.bar} aria-expanded={open} onClick={() => setOpen(value => !value)}>\n <span className={css.mark} aria-hidden=\"true\">◈</span>\n <span className={css.label}>{t('turnTail.label')}</span>\n <span className={css.metrics}>\n {activity.recalls > 0 && <span>{t('turnTail.recall', { count: activity.recalls })}</span>}\n {activity.writes > 0 && <span>{t('turnTail.write', { count: activity.writes })}</span>}\n {activity.documentSearches > 0 && <span>{t('turnTail.documents', { count: activity.documentSearches })}</span>}\n {activity.inspections > 0 && <span>{t('turnTail.inspect', { count: activity.inspections })}</span>}\n {activity.failures > 0 && <span className={css.failureMetric}>{t('turnTail.failed', { count: activity.failures })}</span>}\n </span>\n <span className={`${css.chevron} ${open ? css.chevronOpen : ''}`} aria-hidden=\"true\" />\n </button>\n {open && (\n <div className={css.details}>\n <span className={css.detailLabel}>{t('turnTail.toolList')}</span>\n <div className={css.tools}>\n {activity.names.map((name, index) => <code key={`${name}-${index}`} className={css.toolChip}>{name}</code>)}\n </div>\n <button type=\"button\" className={css.viewButton} onClick={openView}>{t('turnTail.openView')}</button>\n </div>\n )}\n </div>\n )\n})\n","import { memo, useEffect, useLayoutEffect, useRef, useState, type JSX } from 'react'\nimport type { ClientConnectionHandle } from '../contracts.ts'\nimport { MnemonClient } from './api.ts'\nimport type { MnemonKey } from './locales.ts'\nimport css from './MnemonSaveAction.module.css'\n\nexport interface MnemonSaveActionProps {\n /** Stable identity of the finalized assistant message this action addresses. */\n messageId: string\n /** Injected by the slot host: the session this message belongs to. */\n sessionId?: string\n connection: ClientConnectionHandle\n t: (key: MnemonKey, params?: Record<string, unknown>) => string\n}\n\ninterface SuperviseOutcome {\n summary: string\n action: string\n}\n\nconst PREVIEW_LIMIT = 8000\n\n/** Save-to-memory action on finalized assistant messages, routed through the supervised writeback gate. */\nexport const MnemonSaveAction = memo(function MnemonSaveAction({ messageId, sessionId, connection, t }: MnemonSaveActionProps): JSX.Element {\n const [open, setOpen] = useState(false)\n const [writeEnabled, setWriteEnabled] = useState<boolean | undefined>(undefined)\n const [candidate, setCandidate] = useState<string | undefined>(undefined)\n const [truncated, setTruncated] = useState(false)\n const [missing, setMissing] = useState(false)\n const [submitting, setSubmitting] = useState(false)\n const [outcome, setOutcome] = useState<SuperviseOutcome | null>(null)\n const [failure, setFailure] = useState<string | null>(null)\n const textareaRef = useRef<HTMLTextAreaElement | null>(null)\n const wrapRef = useRef<HTMLDivElement | null>(null)\n const buttonRef = useRef<HTMLButtonElement | null>(null)\n const panelRef = useRef<HTMLDivElement | null>(null)\n const openRef = useRef(false)\n const requestVersionRef = useRef(0)\n const submitActiveRef = useRef(false)\n\n const setPanelOpen = (next: boolean): void => {\n requestVersionRef.current += 1\n openRef.current = next\n setOpen(next)\n }\n\n useEffect(() => {\n if (!open) {\n setWriteEnabled(undefined)\n setCandidate(undefined)\n setTruncated(false)\n setMissing(false)\n setSubmitting(submitActiveRef.current)\n setOutcome(null)\n setFailure(null)\n return\n }\n const requestVersion = ++requestVersionRef.current\n let alive = true\n setSubmitting(submitActiveRef.current)\n const client = new MnemonClient(connection, sessionId)\n client.status()\n .then(status => { if (alive && requestVersionRef.current === requestVersion) setWriteEnabled(status.writeEnabled) })\n .catch(() => { if (alive && requestVersionRef.current === requestVersion) setWriteEnabled(false) })\n client.assistantMessageText(messageId)\n .then(result => {\n if (!alive || requestVersionRef.current !== requestVersion) return\n if (result === null || result.text === '') setMissing(true)\n else {\n setTruncated(result.text.length > PREVIEW_LIMIT)\n setCandidate(result.text.slice(0, PREVIEW_LIMIT))\n }\n })\n .catch(() => { if (alive && requestVersionRef.current === requestVersion) setMissing(true) })\n return () => { alive = false }\n }, [open, connection, sessionId, messageId])\n\n useEffect(() => {\n if (!open) return\n const closeOnEscape = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') setPanelOpen(false)\n }\n const closeOutside = (event: PointerEvent): void => {\n if (event.target instanceof Node && !wrapRef.current?.contains(event.target)) setPanelOpen(false)\n }\n document.addEventListener('keydown', closeOnEscape)\n document.addEventListener('pointerdown', closeOutside)\n return () => {\n document.removeEventListener('keydown', closeOnEscape)\n document.removeEventListener('pointerdown', closeOutside)\n }\n }, [open])\n\n useLayoutEffect(() => {\n if (!open) return\n const panel = panelRef.current\n const button = buttonRef.current\n if (panel === null || button === null || typeof panel.showPopover !== 'function') return\n\n const reposition = (): void => {\n const anchor = button.getBoundingClientRect()\n const padding = 16\n const width = Math.min(340, Math.max(240, window.innerWidth - padding * 2))\n panel.style.setProperty('--mn-save-panel-width', `${width}px`)\n const left = Math.min(Math.max(padding, anchor.right - width), Math.max(padding, window.innerWidth - width - padding))\n panel.style.setProperty('--mn-save-panel-left', `${left}px`)\n const below = anchor.bottom + 4\n const above = anchor.top - panel.getBoundingClientRect().height - 4\n const top = below + panel.getBoundingClientRect().height <= window.innerHeight - padding || above < padding ? below : above\n panel.style.setProperty('--mn-save-panel-top', `${Math.max(padding, top)}px`)\n }\n\n panel.setAttribute('popover', 'manual')\n panel.showPopover()\n reposition()\n window.addEventListener('resize', reposition)\n document.addEventListener('scroll', reposition, true)\n return () => {\n window.removeEventListener('resize', reposition)\n document.removeEventListener('scroll', reposition, true)\n if (panel.matches(':popover-open')) panel.hidePopover()\n }\n }, [open])\n\n const submit = (): void => {\n const content = textareaRef.current?.value.trim() ?? ''\n if (content === '' || writeEnabled !== true || submitActiveRef.current) return\n const requestVersion = requestVersionRef.current\n submitActiveRef.current = true\n setSubmitting(true)\n setFailure(null)\n setOutcome(null)\n const client = new MnemonClient(connection, sessionId)\n client.supervise(content, messageId)\n .then(result => {\n if (!openRef.current || requestVersionRef.current !== requestVersion) return\n setOutcome({ summary: result.summary, action: result.action })\n setCandidate(content)\n })\n .catch(reason => {\n if (openRef.current && requestVersionRef.current === requestVersion) setFailure(reason instanceof Error ? reason.message : String(reason))\n })\n .finally(() => {\n submitActiveRef.current = false\n if (openRef.current) setSubmitting(false)\n })\n }\n\n return (\n <div ref={wrapRef} className={css.wrap}>\n <button\n ref={buttonRef}\n type=\"button\"\n className={css.button}\n aria-expanded={open}\n title={t('saveAction.button')}\n onClick={() => setPanelOpen(!openRef.current)}\n >\n <span className={css.glyph} aria-hidden=\"true\">◈</span>\n <span className={css.label}>{t('saveAction.button')}</span>\n </button>\n {open && (\n <div ref={panelRef} className={css.panel} role=\"dialog\" aria-label={t('saveAction.title')}>\n <header className={css.panelHeader}>\n <strong>{t('saveAction.title')}</strong>\n <button type=\"button\" className={css.close} aria-label={t('saveAction.close')} onClick={() => setPanelOpen(false)}>×</button>\n </header>\n <p className={css.hint}>{t('saveAction.hint')}</p>\n {writeEnabled === false && <div className={css.readOnly} role=\"status\">{t('saveAction.readOnly')}</div>}\n {candidate === undefined && !missing && <div className={css.status}>{t('saveAction.fetching')}</div>}\n {missing && <div className={css.status} role=\"status\">{t('saveAction.missing')}</div>}\n {candidate !== undefined && (\n <label className={css.candidate}>\n <span>{t('saveAction.candidate')}</span>\n <textarea ref={textareaRef} rows={5} defaultValue={candidate} />\n {truncated && <small className={css.truncated}>{t('saveAction.truncated', { limit: PREVIEW_LIMIT })}</small>}\n </label>\n )}\n {outcome !== null && <div className={css.outcome} role=\"status\">{t('saveAction.result', { summary: outcome.summary })}</div>}\n {failure !== null && <div className={css.failure} role=\"alert\">{t('saveAction.failed', { error: failure })}</div>}\n {candidate !== undefined && (\n <button type=\"button\" className={css.submit} disabled={submitting || writeEnabled !== true} onClick={submit}>\n {submitting ? t('saveAction.submitting') : t('saveAction.submit')}\n </button>\n )}\n </div>\n )}\n </div>\n )\n})\n","import type { ClientConnectionHandle, ClientSettingsScope, ClientSettingsSnapshot, SettingsOperation } from '../contracts.ts'\nimport { MNEMON_SETTINGS_CHANNEL, MNEMON_SETTINGS_NAMESPACE } from '../settings.ts'\n\nexport class MnemonSettingsScope<T extends object> implements ClientSettingsScope<T> {\n private snapshot: ClientSettingsSnapshot<T> = { status: 'loading', writable: false, mode: 'host' }\n private readonly listeners = new Set<() => void>()\n private tail = Promise.resolve()\n\n constructor(private readonly connection: ClientConnectionHandle, private readonly namespace = MNEMON_SETTINGS_NAMESPACE) {\n void this.load()\n }\n\n getSnapshot = (): ClientSettingsSnapshot<T> => this.snapshot\n\n subscribe = (listener: () => void): (() => void) => {\n this.listeners.add(listener)\n return () => this.listeners.delete(listener)\n }\n\n set(field: string, value: unknown): Promise<void> {\n return this.mutate([{ op: 'set', path: [field], value }])\n }\n\n unset(field: string): Promise<void> {\n return this.mutate([{ op: 'unset', path: [field] }])\n }\n\n /** Set a nested field (e.g. ['conversationInteraction', 'toolviews']). */\n setPath(path: string[], value: unknown): Promise<void> {\n return this.mutate([{ op: 'set', path, value }])\n }\n\n /** Unset a nested field, falling back to its schema default. */\n unsetPath(path: string[]): Promise<void> {\n return this.mutate([{ op: 'unset', path }])\n }\n\n mutate(ops: SettingsOperation[]): Promise<void> {\n return this.write(ops)\n }\n\n private async load(): Promise<void> {\n try {\n const response = await this.connection.rpc.call(MNEMON_SETTINGS_CHANNEL, 'get', { namespace: this.namespace })\n if (!response.ok) {\n this.publish({ status: 'unavailable', writable: false, mode: 'host' })\n return\n }\n this.publish(response.value as ClientSettingsSnapshot<T>)\n } catch {\n this.publish({ status: 'unavailable', writable: false, mode: 'host' })\n }\n }\n\n private write(ops: SettingsOperation[]): Promise<void> {\n const task = this.tail.then(async () => {\n const response = await this.connection.rpc.call(MNEMON_SETTINGS_CHANNEL, 'mutate', {\n namespace: this.namespace,\n ops,\n ...(this.snapshot.revision === undefined ? {} : { expectedRevision: this.snapshot.revision }),\n })\n if (!response.ok) {\n await this.load()\n throw new Error(response.error.message)\n }\n this.publish(response.value as ClientSettingsSnapshot<T>)\n })\n this.tail = task.catch(() => {})\n return task\n }\n\n private publish(snapshot: ClientSettingsSnapshot<T>): void {\n this.snapshot = snapshot\n for (const listener of this.listeners) listener()\n }\n}\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","import type { MnemonTranslate } from './locales.ts'\nimport css from './MnemonWorkspace.module.css'\nimport type { MnemonWorkspaceController } from './workspace-controller.ts'\n\nexport const MNEMON_ENTRY_SELECTOR = '[data-dsh-mnemon-entry]'\n\nconst FAMILY_SELECTOR = '[data-dsh-taskboard-entry], [data-dsh-ssh-entry], [data-dsh-mnemon-entry]'\n\nfunction sidebarRoot(): HTMLElement | undefined {\n const column = document.querySelector<HTMLElement>('[data-pane=\"sidebar\"], [class*=\"sidebarCol\"]')\n if (column === null) return undefined\n return column.querySelector<HTMLElement>('[class*=\"logoRow\"]')?.parentElement\n ?? (column.firstElementChild as HTMLElement | undefined)\n}\n\nfunction newSessionButton(root: HTMLElement): HTMLButtonElement | undefined {\n const nested = root.querySelector<HTMLButtonElement>('button[class*=\"newSession\"]')\n if (nested !== null) return nested\n for (const child of root.children) {\n if (child.tagName === 'BUTTON') return child as HTMLButtonElement\n }\n return undefined\n}\n\nfunction createIcon(): SVGSVGElement {\n const namespace = 'http://www.w3.org/2000/svg'\n const icon = document.createElementNS(namespace, 'svg')\n icon.setAttribute('viewBox', '0 0 16 16')\n icon.setAttribute('width', '14')\n icon.setAttribute('height', '14')\n icon.setAttribute('fill', 'none')\n icon.setAttribute('stroke', 'currentColor')\n icon.setAttribute('stroke-width', '1.3')\n icon.setAttribute('stroke-linecap', 'round')\n icon.setAttribute('stroke-linejoin', 'round')\n icon.setAttribute('aria-hidden', 'true')\n const ellipse = document.createElementNS(namespace, 'ellipse')\n ellipse.setAttribute('cx', '8')\n ellipse.setAttribute('cy', '3.5')\n ellipse.setAttribute('rx', '5')\n ellipse.setAttribute('ry', '2')\n const path = document.createElementNS(namespace, 'path')\n path.setAttribute('d', 'M3 3.5v4c0 1.1 2.2 2 5 2s5-.9 5-2v-4M3 7.5v4c0 1.1 2.2 2 5 2s5-.9 5-2v-4')\n icon.append(ellipse, path)\n return icon\n}\n\nfunction createEntry(controller: MnemonWorkspaceController): { entry: HTMLButtonElement; label: HTMLSpanElement } {\n const entry = document.createElement('button')\n entry.type = 'button'\n entry.dataset.dshMnemonEntry = ''\n entry.className = css.entry ?? ''\n const icon = document.createElement('span')\n icon.className = css.entryIcon ?? ''\n icon.append(createIcon())\n const label = document.createElement('span')\n label.className = css.entryLabel ?? ''\n entry.append(icon, label)\n entry.addEventListener('click', () => { controller.toggle() })\n return { entry, label }\n}\n\nfunction placeEntry(root: HTMLElement, entry: HTMLButtonElement): boolean {\n const button = newSessionButton(root)\n if (button === undefined) return false\n if (entry.parentElement === root) return true\n const row = button.closest('[class*=\"logoRow\"]')\n const base = row !== null && row.parentElement === root ? row : button\n const family = Array.from(root.children).filter(\n (element): element is HTMLElement => element instanceof HTMLElement && element.matches(FAMILY_SELECTOR),\n )\n const anchor = family.at(-1)?.nextElementSibling ?? base.nextElementSibling\n root.insertBefore(entry, anchor)\n return true\n}\n\n/** Mount a self-healing official-style entry under the New Session row. */\nexport function mountMnemonSidebarEntry(controller: MnemonWorkspaceController, t: MnemonTranslate): () => void {\n const { entry, label } = createEntry(controller)\n let root: HTMLElement | undefined\n let placed = false\n\n const syncLabel = (): void => {\n const text = t('tab.label')\n if (entry.getAttribute('aria-label') !== text) entry.setAttribute('aria-label', text)\n if (entry.title !== text) entry.title = text\n if (label.textContent !== text) label.textContent = text\n }\n\n const rootObserver = new MutationObserver(() => {\n if (root === undefined || !root.isConnected) {\n placed = false\n tryPlace()\n return\n }\n if (!root.contains(entry)) placed = placeEntry(root, entry)\n })\n\n const tryPlace = (): void => {\n syncLabel()\n if (root !== undefined && !root.isConnected) {\n rootObserver.disconnect()\n root = undefined\n placed = false\n }\n if (placed && document.body.contains(entry)) return\n if (placed) {\n rootObserver.disconnect()\n root = undefined\n placed = false\n }\n root ??= sidebarRoot()\n if (root === undefined) return\n placed = placeEntry(root, entry)\n if (placed) rootObserver.observe(root, { childList: true, subtree: true })\n }\n\n const waitObserver = new MutationObserver(tryPlace)\n waitObserver.observe(document.body, { childList: true, subtree: true })\n\n const syncActive = (): void => {\n if (controller.getSnapshot().open) entry.dataset.active = 'true'\n else delete entry.dataset.active\n }\n const unsubscribe = controller.subscribe(syncActive)\n syncActive()\n tryPlace()\n\n return () => {\n waitObserver.disconnect()\n rootObserver.disconnect()\n unsubscribe()\n entry.remove()\n }\n}\n","export interface MnemonWorkspaceSnapshot {\n open: boolean\n}\n\n/** Small framework-neutral state holder shared by the sidebar row and panel. */\nexport class MnemonWorkspaceController {\n private snapshot: MnemonWorkspaceSnapshot = { open: false }\n private readonly listeners = new Set<() => void>()\n\n getSnapshot = (): MnemonWorkspaceSnapshot => this.snapshot\n\n subscribe = (listener: () => void): (() => void) => {\n this.listeners.add(listener)\n return () => { this.listeners.delete(listener) }\n }\n\n open(): void { this.setOpen(true) }\n close(): void { this.setOpen(false) }\n toggle(): void { this.setOpen(!this.snapshot.open) }\n\n private setOpen(open: boolean): void {\n if (this.snapshot.open === open) return\n this.snapshot = { open }\n for (const listener of this.listeners) listener()\n }\n}\n","import { useEffect, useMemo, useState, useSyncExternalStore } from 'react'\nimport { createRoot, type Root } from 'react-dom/client'\nimport type { Config } from '../config.ts'\nimport type { ClientSettingsScope } from '../contracts.ts'\nimport { MNEMON_ANCHOR_EVENT } from './anchor.ts'\nimport type { MnemonClientContext } from './dsh-compat.ts'\nimport type { MnemonTranslate } from './locales.ts'\nimport { MnemonView, type MnemonWorkspaceSelection } from './MnemonView.tsx'\nimport css from './MnemonWorkspace.module.css'\nimport { mountMnemonSidebarEntry } from './sidebar-entry.ts'\nimport { MnemonWorkspaceController } from './workspace-controller.ts'\n\nexport const MNEMON_VIEW_SELECTOR = '[data-dsh-mnemon-view]'\n\nconst CONVERSATION_COLUMN_SELECTOR = '[data-pane=\"conversation\"], [class*=\"centerCol\"]'\nconst ACTIVE_ATTR = 'data-dsh-mnemon-active'\nconst TASKBOARD_ACTIVE_ATTR = 'data-dsh-taskboard-active'\nconst SSH_ACTIVE_ATTR = 'data-dsh-ssh-active'\nconst ACTIVATE_EVENT = 'dsh-panel-activate'\nconst SIDEBAR_CONTEXT_SELECTOR = '[class*=\"sessionRow\"], [class*=\"projectRow\"], [class*=\"searchResultRow\"], [class*=\"searchResultWorkspace\"], [class*=\"newSession\"]'\n\ninterface MnemonPanelProps {\n ctx: MnemonClientContext\n settings: ClientSettingsScope<Config>\n t: MnemonTranslate\n}\n\nfunction MnemonPanel({ ctx, settings, t }: MnemonPanelProps): JSX.Element {\n const sessions = useSyncExternalStore(ctx.sessions.list.subscribe, ctx.sessions.list.getSnapshot, ctx.sessions.list.getSnapshot)\n const workspaces = useSyncExternalStore(ctx.workspaces.list.subscribe, ctx.workspaces.list.getSnapshot, ctx.workspaces.list.getSnapshot)\n const [selectedWorkspaceId, setSelectedWorkspaceId] = useState<string>()\n const currentCwd = sessions.current === undefined ? undefined : sessions.byId[sessions.current]?.cwd\n const normalizePath = (value: string): string => value.replace(/[\\\\/]+$/u, '')\n const effectiveWorkspace = currentCwd === undefined\n ? undefined\n : workspaces.items.find(workspace => normalizePath(workspace.path) === normalizePath(currentCwd))\n const fallbackWorkspace = effectiveWorkspace\n ?? workspaces.items.find(workspace => String(workspace.workspaceId) === String(workspaces.recentWorkspaceId))\n ?? workspaces.items[0]\n const selectedExists = selectedWorkspaceId !== undefined && workspaces.items.some(workspace => String(workspace.workspaceId) === selectedWorkspaceId)\n const resolvedSelectedId = selectedExists ? selectedWorkspaceId : fallbackWorkspace === undefined ? undefined : String(fallbackWorkspace.workspaceId)\n\n useEffect(() => {\n if (resolvedSelectedId !== selectedWorkspaceId) setSelectedWorkspaceId(resolvedSelectedId)\n }, [resolvedSelectedId, selectedWorkspaceId])\n\n const selection = useMemo<MnemonWorkspaceSelection>(() => ({\n options: workspaces.items.map(workspace => ({ id: String(workspace.workspaceId), title: workspace.title, path: workspace.path })),\n ...(resolvedSelectedId === undefined ? {} : { selectedWorkspaceId: resolvedSelectedId }),\n ...(effectiveWorkspace === undefined ? {} : { effectiveWorkspaceId: String(effectiveWorkspace.workspaceId) }),\n onSelect: setSelectedWorkspaceId,\n onAlign: () => {\n if (effectiveWorkspace !== undefined) setSelectedWorkspaceId(String(effectiveWorkspace.workspaceId))\n },\n }), [effectiveWorkspace, resolvedSelectedId, workspaces.items])\n\n return <MnemonView connection={ctx.connection} settingsScope={settings} {...(sessions.current === undefined ? {} : { sessionId: sessions.current })} {...(resolvedSelectedId === undefined ? {} : { workspaceId: resolvedSelectedId })} workspaceSelection={selection} t={t} />\n}\n\nfunction conversationColumn(): HTMLElement | undefined {\n return document.querySelector<HTMLElement>(CONVERSATION_COLUMN_SELECTOR) ?? undefined\n}\n\nfunction mountPanel(controller: MnemonWorkspaceController, ctx: MnemonClientContext, settings: ClientSettingsScope<Config>, t: MnemonTranslate): () => void {\n let root: Root | undefined\n let container: HTMLDivElement | undefined\n\n const ensure = (): void => {\n if (container !== undefined && container.isConnected) return\n if (container !== undefined) {\n root?.unmount()\n root = undefined\n container = undefined\n }\n const column = conversationColumn()\n if (column === undefined) return\n container = document.createElement('div')\n container.dataset.dshMnemonView = ''\n container.className = css.panelView ?? ''\n column.append(container)\n root = createRoot(container)\n root.render(<MnemonPanel ctx={ctx} settings={settings} t={t} />)\n }\n\n const waitObserver = new MutationObserver(ensure)\n waitObserver.observe(document.body, { childList: true, subtree: true })\n\n let suppressCompatibilityClose = false\n const applyActive = (): void => {\n if (!controller.getSnapshot().open) {\n document.documentElement.removeAttribute(ACTIVE_ATTR)\n return\n }\n\n // Current task-board and SSH releases only close for one another's event\n // names. Send both compatibility events before announcing Mnemon.\n suppressCompatibilityClose = true\n document.dispatchEvent(new CustomEvent(ACTIVATE_EVENT, { detail: 'ssh' }))\n document.dispatchEvent(new CustomEvent(ACTIVATE_EVENT, { detail: 'taskboard' }))\n suppressCompatibilityClose = false\n document.documentElement.removeAttribute(TASKBOARD_ACTIVE_ATTR)\n document.documentElement.removeAttribute(SSH_ACTIVE_ATTR)\n document.documentElement.setAttribute(ACTIVE_ATTR, '')\n document.dispatchEvent(new CustomEvent(ACTIVATE_EVENT, { detail: 'mnemon' }))\n }\n\n const onOtherPanelActivate = (event: Event): void => {\n if (suppressCompatibilityClose || !controller.getSnapshot().open) return\n const detail = (event as CustomEvent<unknown>).detail\n if (detail === 'taskboard' || detail === 'ssh') controller.close()\n }\n\n const onSidebarContextClick = (event: MouseEvent): void => {\n if (!controller.getSnapshot().open) return\n const target = event.target\n if (target instanceof Element && target.closest(SIDEBAR_CONTEXT_SELECTOR) !== null) controller.close()\n }\n\n const onAnchor = (): void => { controller.open() }\n document.addEventListener('click', onSidebarContextClick, true)\n document.addEventListener(ACTIVATE_EVENT, onOtherPanelActivate)\n window.addEventListener(MNEMON_ANCHOR_EVENT, onAnchor)\n const unsubscribe = controller.subscribe(applyActive)\n applyActive()\n ensure()\n\n return () => {\n document.removeEventListener('click', onSidebarContextClick, true)\n document.removeEventListener(ACTIVATE_EVENT, onOtherPanelActivate)\n window.removeEventListener(MNEMON_ANCHOR_EVENT, onAnchor)\n waitObserver.disconnect()\n unsubscribe()\n document.documentElement.removeAttribute(ACTIVE_ATTR)\n root?.unmount()\n root = undefined\n container?.remove()\n container = undefined\n }\n}\n\n/** Mount the sidebar row and its stateful center-column workspace as one unit. */\nexport function mountMnemonWorkspace(ctx: MnemonClientContext, settings: ClientSettingsScope<Config>, t: MnemonTranslate): () => void {\n if (typeof document === 'undefined' || typeof window === 'undefined') return () => {}\n const controller = new MnemonWorkspaceController()\n const disposeEntry = mountMnemonSidebarEntry(controller, t)\n const disposePanel = mountPanel(controller, ctx, settings, t)\n return () => {\n disposePanel()\n disposeEntry()\n }\n}\n","import type { ClientConnectionHandle } from '../contracts.ts'\nimport type { Config, InteractionConfig } from '../config.ts'\nimport { MNEMON_SETTINGS_NAMESPACE, MNEMON_UI_SETTINGS_NAMESPACE } from '../settings.ts'\nimport { MnemonSettingsCard } from './MnemonSettingsCard.tsx'\nimport { MnemonView } from './MnemonView.tsx'\nimport { MnemonToolView, MNEMON_TOOLVIEW_NAMES } from './MnemonToolviews.tsx'\nimport { MnemonTurnTail, selectMnemonTurnTail } from './MnemonTurnTail.tsx'\nimport { MnemonSaveAction } from './MnemonSaveAction.tsx'\nimport { en, zh, type MnemonKey } from './locales.ts'\nimport { MnemonSettingsScope } from './settings.ts'\nimport type { MnemonClientContext } from './dsh-compat.ts'\nimport { mountMnemonWorkspace } from './workspace-mount.tsx'\n\nexport const inject = ['slots', 'sessions', 'workspaces', 'connection', 'locale']\n\n/** Interaction surfaces: slot name, settings toggle, and the registrations it owns. */\ntype MnemonNamespace = 'mnemon'\ntype InteractionSlot = 'tool.call.toolview' | 'conversation.chat.turnTail' | 'conversation.chat.assistant-actions'\ntype InteractionRegister = (ctx: MnemonClientContext, namespace: MnemonNamespace, translate: (key: MnemonKey, params?: Record<string, unknown>) => string) => () => void\n\ninterface InteractionUnit {\n slot: InteractionSlot\n enabled: (value: unknown) => boolean\n register: InteractionRegister\n}\n\nconst INTERACTION_UNITS: Record<'toolviews' | 'turnBar' | 'saveAction', InteractionUnit> = {\n toolviews: {\n slot: 'tool.call.toolview',\n enabled: (value: unknown): boolean => enabledOf(value, 'toolviews'),\n register(ctx: MnemonClientContext, namespace: MnemonNamespace, translate: (key: MnemonKey, params?: Record<string, unknown>) => string): () => void {\n const disposers: Array<() => void> = []\n for (const toolName of MNEMON_TOOLVIEW_NAMES) {\n disposers.push(ctx.slots.register({\n name: 'tool.call.toolview',\n key: toolName,\n locale: namespace,\n inject: (sessionId: unknown): { sessionId?: string; t: (key: MnemonKey, params?: Record<string, unknown>) => string } => ({\n ...(typeof sessionId === 'string' && sessionId !== '' ? { sessionId } : {}),\n t: translate as (key: MnemonKey, params?: Record<string, unknown>) => string,\n }),\n }, MnemonToolView))\n }\n return () => { for (const dispose of disposers.reverse()) dispose() }\n },\n },\n turnBar: {\n slot: 'conversation.chat.turnTail',\n enabled: (value: unknown): boolean => enabledOf(value, 'turnBar'),\n register(ctx: MnemonClientContext, namespace: MnemonNamespace, translate: (key: MnemonKey, params?: Record<string, unknown>) => string): () => void {\n return ctx.slots.register({\n name: 'conversation.chat.turnTail',\n locale: namespace,\n select: selectMnemonTurnTail,\n inject: (sessionId: unknown): { sessionId?: string; connection: ClientConnectionHandle; t: (key: MnemonKey, params?: Record<string, unknown>) => string } => ({\n ...(typeof sessionId === 'string' && sessionId !== '' ? { sessionId } : {}),\n connection: ctx.connection,\n t: translate as (key: MnemonKey, params?: Record<string, unknown>) => string,\n }),\n }, MnemonTurnTail)\n },\n },\n saveAction: {\n slot: 'conversation.chat.assistant-actions',\n enabled: (value: unknown): boolean => enabledOf(value, 'saveAction'),\n register(ctx: MnemonClientContext, namespace: MnemonNamespace, translate: (key: MnemonKey, params?: Record<string, unknown>) => string): () => void {\n return ctx.slots.register({\n name: 'conversation.chat.assistant-actions',\n id: 'mnemon-save',\n order: 90,\n locale: namespace,\n inject: (sessionId: unknown): { sessionId?: string; connection: ClientConnectionHandle; t: (key: MnemonKey, params?: Record<string, unknown>) => string } => ({\n ...(typeof sessionId === 'string' && sessionId !== '' ? { sessionId } : {}),\n connection: ctx.connection,\n t: translate as (key: MnemonKey, params?: Record<string, unknown>) => string,\n }),\n }, MnemonSaveAction)\n },\n },\n}\n\ntype InteractionUnitKey = keyof typeof INTERACTION_UNITS\n\n/** Interaction surfaces are opt-in: an explicit `true` in settings enables one. */\nfunction enabledOf(value: unknown, key: 'toolviews' | 'turnBar' | 'saveAction'): boolean {\n return (value as Partial<Record<typeof key, boolean>> | undefined)?.[key] === true\n}\n\ntype DisplayMode = NonNullable<Config['displayMode']>\n\nfunction mountBuildinMemoryView(ctx: MnemonClientContext, settings: MnemonSettingsScope<Config>, namespace: MnemonNamespace, translate: (key: MnemonKey, params?: Record<string, unknown>) => string): () => void {\n return ctx.slots.inject('conversation.view', () => ctx.slots.register({\n name: 'conversation.view',\n id: 'mnemon',\n order: 30,\n label: () => translate('tab.label'),\n locale: namespace,\n inject: (): { connection: ClientConnectionHandle; settingsScope: MnemonSettingsScope<Config>; t: (key: MnemonKey, params?: Record<string, unknown>) => string } => ({\n connection: ctx.connection,\n settingsScope: settings,\n t: translate,\n }),\n }, MnemonView))\n}\n\n/** Mount the memory workspace plus the optional in-conversation interaction surfaces. */\nexport function apply(rawContext: unknown): void {\n const ctx = rawContext as MnemonClientContext\n const settings = new MnemonSettingsScope<Config>(ctx.connection, MNEMON_SETTINGS_NAMESPACE)\n const interactionSettings = new MnemonSettingsScope<InteractionConfig>(ctx.connection, MNEMON_UI_SETTINGS_NAMESPACE)\n const namespace: MnemonNamespace = 'mnemon'\n ctx.effect(() => ctx.locale.register(namespace, { zh, en }), 'dsh-mnemon: locale dictionaries')\n const translate = ctx.locale.bind(namespace)\n let activeMemoryWorkspace: { mode: DisplayMode; dispose: () => void } | undefined\n const reconcileMemoryWorkspace = (): void => {\n const snapshot = settings.getSnapshot()\n const value = snapshot.value\n // Avoid briefly mounting the default sidebar for users whose persisted\n // mode is buildin while the settings snapshot is still in flight.\n const mode = snapshot.status === 'loading'\n ? undefined\n : value?.tabEnabled === false ? undefined : value?.displayMode ?? 'sidebar'\n if (activeMemoryWorkspace?.mode === mode) return\n activeMemoryWorkspace?.dispose()\n activeMemoryWorkspace = mode === undefined\n ? undefined\n : {\n mode,\n dispose: mode === 'buildin'\n ? mountBuildinMemoryView(ctx, settings, namespace, translate)\n : mountMnemonWorkspace(ctx, settings, translate),\n }\n }\n ctx.effect(() => {\n const unsubscribe = settings.subscribe(reconcileMemoryWorkspace)\n reconcileMemoryWorkspace()\n return () => {\n unsubscribe()\n activeMemoryWorkspace?.dispose()\n activeMemoryWorkspace = undefined\n }\n }, 'dsh-mnemon: configurable memory workspace')\n ctx.slots.inject('settings.section', () => ctx.slots.register({\n name: 'settings.section',\n id: 'mnemon',\n order: 20,\n label: () => translate('tab.label'),\n locale: namespace,\n inject: (): { scope: MnemonSettingsScope<Config>; interactionScope: MnemonSettingsScope<InteractionConfig>; connection: ClientConnectionHandle; t: (key: MnemonKey, params?: Record<string, unknown>) => string } => ({\n scope: settings,\n interactionScope: interactionSettings,\n connection: ctx.connection,\n t: translate as (key: MnemonKey, params?: Record<string, unknown>) => string,\n }),\n }, MnemonSettingsCard))\n\n // In-conversation interaction surfaces are opt-in and bound live: each\n // settings change registers or disposes the slot contributions without a\n // reload. Until the snapshot loads, nothing registers (conservative default).\n const active = new Map<InteractionUnitKey, () => void>()\n const reconcile = (): void => {\n const value = interactionSettings.getSnapshot().value\n for (const key of Object.keys(INTERACTION_UNITS) as InteractionUnitKey[]) {\n const unit = INTERACTION_UNITS[key]\n const enabled = unit.enabled(value)\n if (enabled && !active.has(key)) {\n active.set(key, ctx.slots.inject(unit.slot, () => unit.register(ctx, namespace, translate)))\n } else if (!enabled && active.has(key)) {\n active.get(key)!()\n active.delete(key)\n }\n }\n }\n ctx.effect(() => {\n const unsubscribe = interactionSettings.subscribe(reconcile)\n reconcile()\n return () => {\n unsubscribe()\n for (const dispose of [...active.values()].reverse()) dispose()\n active.clear()\n }\n }, 'dsh-mnemon: interaction surfaces')\n}\n"],"x_google_ignoreList":[7,16],"mappings":"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"}