dsh-mnemon 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":["useMemo","useRef","useState","css","useMemo","useSyncExternalStore","useState","css","m","r","sidebarCss","createContext","useContext","createContext","useContext","css","useRef","useCallback","Fragment","Markdown","useState","useMemo","useSyncExternalStore","IconChevronLeftOutline14","memo","useState","css","memo","useState","useRef","css","Tooltip","IconDataOutline16","Modal","Button","css","useCallback","useSyncExternalStore","useState","useMemo","css","createRoot"],"sources":["../src/settings.ts","../src/client/locales.ts","../src/channels.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/service.ts","../src/client/MnemonLogo.tsx","../src/client/MnemonViewAppearance.tsx","../src/client/MnemonView.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', 'turnBar'],\n ['conversationInteraction', 'saveAction'],\n]\n\nconst UI_FIELDS = ['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.memory.aria': '记忆体页面',\n 'nav.overview': '概览',\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.rememberAction': '沉淀记忆',\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 'common.showing': '当前显示 {visible} / {total}',\n 'common.showMore': '再显示 {count} 条',\n 'header.backToConversation': '返回会话',\n 'header.checking': '检查中',\n 'header.connected': '已连接',\n 'header.connectedWithCount': '已连接 · {count} 个已激活',\n 'header.directoryPending': '已连接 · 目录待同步',\n 'header.unavailable': '不可用',\n 'header.notReady': 'Mnemon 尚未就绪',\n 'workspace.viewing': '查看工作区',\n 'workspace.selectorAria': '选择要查看的记忆工作区',\n 'workspace.storageMode': '存储位置',\n 'workspace.storageModeAria': '存储位置模式:{mode}',\n 'workspace.mismatchTitle': '查看目录与当前会话未对齐',\n 'workspace.mismatchShort': '非对话工作区',\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.pageDescription': '查看目录配置、存储状态以及所有已激活记忆体的实时关联图谱。',\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.createTitle': '创建记忆体',\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.deleteBody': '删除',\n 'overview.deleteBodyAria': '删除{name}',\n 'overview.deleteTitle': '删除“{name}”?',\n 'overview.deleteWarning': '该操作会永久删除这个记忆体及其中的全部记忆与关系,无法撤销。',\n 'overview.deleteAction': '确认删除',\n 'overview.deletingBody': '删除中…',\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.entriesAria': '运行时记忆列表',\n 'runtime.scopeAria': '运行时记忆范围',\n 'runtime.scopeAll': '全部',\n 'runtime.filterAria': '筛选运行时记忆',\n 'runtime.filterPlaceholder': '按内容筛选…',\n 'runtime.noMatch': '没有符合当前范围与查询条件的热记忆。',\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.addButton': '添加记忆',\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.removeTitle': '移除运行时记忆?',\n 'runtime.removeWarning': '移除后,这条内容将不再随每轮上下文加载。该操作无法撤销。',\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 '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.openTool': '打开 {tool} 对应的记忆页面',\n 'saveAction.button': '存入记忆',\n 'saveAction.tooltip': '将这条回复存入记忆',\n 'saveAction.title': '确认存入记忆',\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 引擎、三层存储和当前读写目录;连接配置由 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 'versions.checkAction': '检查版本',\n 'versions.title': '检查与更新版本',\n 'versions.description': '检查 Mnemon CLI 与 dsh-mnemon;只有识别到受支持的安装方式时才会提供更新操作。',\n 'versions.checking': '正在检查远程仓库中的新版本…',\n 'versions.checkingShort': '检查中…',\n 'versions.recheck': '重新检查',\n 'versions.failed': '版本操作失败',\n 'versions.timeout': '版本检查超时,请检查网络后重试。',\n 'versions.current': '已是最新',\n 'versions.available': '可更新',\n 'versions.unknown': '无法确认',\n 'versions.installed': '当前版本',\n 'versions.latest': '最新版本',\n 'versions.update': '更新',\n 'versions.updating': '更新中…',\n 'versions.updated': '{name} 已更新',\n 'versions.alreadyCurrent': '当前已经是最新版本',\n 'versions.restartRequired': '请重启 dsh web,以加载新的 dsh-mnemon 插件代码。',\n 'versions.checkedAt': '检查于 {time}',\n 'versions.latestUnavailable': '暂时无法读取远程最新版本;请检查网络后重试。',\n 'versions.modeHomebrew': 'Homebrew',\n 'versions.modeGo': 'Go 安装',\n 'versions.modeNpm': 'DSH Profile',\n 'versions.modeLink': '本地 Link',\n 'versions.modeManual': '手工安装',\n 'versions.modeMissing': '未安装',\n 'versions.hintHomebrew': '由 Homebrew 管理;发现新版本时可在此安全更新。',\n 'versions.hintBrewMissing': '检测到 Homebrew 安装,但当前找不到 brew 命令。',\n 'versions.hintGo': '由 go install 管理;发现新版本时可在此安全更新。',\n 'versions.hintPnpm': '由当前 DSH Profile 管理;更新后需要重启 dsh web。',\n 'versions.hintPnpmMissing': '检测到 DSH Profile 安装,但当前找不到 pnpm 命令。',\n 'versions.hintLink': '当前为本地 Link 开发版本;请在源码目录拉取并构建,避免覆盖本地修改。',\n 'versions.hintInstall': '未找到 Mnemon CLI;请先安装并确保 mnemon 位于 PATH,或配置 cliPath。',\n 'versions.hintManual': '无法安全识别安装来源;请沿用原安装方式手工更新。',\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.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 '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.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.memory.aria': 'Memory Space pages',\n 'nav.overview': 'Overview',\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.rememberAction': 'Remember',\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 'common.showing': 'Showing {visible} / {total}',\n 'common.showMore': 'Show {count} more',\n 'header.backToConversation': 'Back to chat',\n 'header.checking': 'Checking',\n 'header.connected': 'Connected',\n 'header.connectedWithCount': '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.storageMode': 'Storage',\n 'workspace.storageModeAria': 'Storage location mode: {mode}',\n 'workspace.mismatchTitle': 'The inspected directory is not aligned with this session',\n 'workspace.mismatchShort': 'Not conversation workspace',\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 to conversation',\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.pageDescription': 'Inspect directory settings, storage health, and the live relation graph for every active Memory Space.',\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.createTitle': 'Create 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.deleteBody': 'Delete',\n 'overview.deleteBodyAria': 'Delete {name}',\n 'overview.deleteTitle': 'Delete “{name}”?',\n 'overview.deleteWarning': 'This permanently deletes the Memory Space and every memory and relation it contains. This cannot be undone.',\n 'overview.deleteAction': 'Delete permanently',\n 'overview.deletingBody': 'Deleting…',\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.entriesAria': 'Runtime memory list',\n 'runtime.scopeAria': 'Runtime memory scope',\n 'runtime.scopeAll': 'All',\n 'runtime.filterAria': 'Filter runtime memory',\n 'runtime.filterPlaceholder': 'Filter by content…',\n 'runtime.noMatch': 'No hot memory matches the current scope and query.',\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.addButton': 'Add memory',\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.removeTitle': 'Remove runtime memory?',\n 'runtime.removeWarning': 'After removal, this content will no longer load with every turn. This action cannot be undone.',\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 '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.openTool': 'Open the Memory page for {tool}',\n 'saveAction.button': 'Save to memory',\n 'saveAction.tooltip': 'Save this reply to memory',\n 'saveAction.title': 'Confirm save to memory',\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': 'Confirm and 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': 'Close',\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, three-tier storage, and the current read/write root. 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 'versions.checkAction': 'Check versions',\n 'versions.title': 'Check and update versions',\n 'versions.description': 'Check Mnemon CLI and dsh-mnemon. Updates are offered only for a recognized, supported installation.',\n 'versions.checking': 'Checking remote repositories for new versions…',\n 'versions.checkingShort': 'Checking…',\n 'versions.recheck': 'Check again',\n 'versions.failed': 'Version operation failed',\n 'versions.timeout': 'The version check timed out. Check the network and try again.',\n 'versions.current': 'Up to date',\n 'versions.available': 'Update available',\n 'versions.unknown': 'Cannot verify',\n 'versions.installed': 'Installed',\n 'versions.latest': 'Latest',\n 'versions.update': 'Update',\n 'versions.updating': 'Updating…',\n 'versions.updated': '{name} updated',\n 'versions.alreadyCurrent': 'Already on the latest version',\n 'versions.restartRequired': 'Restart dsh web to load the new dsh-mnemon plugin code.',\n 'versions.checkedAt': 'Checked at {time}',\n 'versions.latestUnavailable': 'The remote latest version is unavailable. Check the network and try again.',\n 'versions.modeHomebrew': 'Homebrew',\n 'versions.modeGo': 'Go install',\n 'versions.modeNpm': 'DSH Profile',\n 'versions.modeLink': 'Local link',\n 'versions.modeManual': 'Manual',\n 'versions.modeMissing': 'Missing',\n 'versions.hintHomebrew': 'Managed by Homebrew; an available release can be safely updated here.',\n 'versions.hintBrewMissing': 'A Homebrew installation was detected, but the brew command is unavailable.',\n 'versions.hintGo': 'Managed by go install; an available release can be safely updated here.',\n 'versions.hintPnpm': 'Managed by the current DSH Profile; restart dsh web after updating.',\n 'versions.hintPnpmMissing': 'A DSH Profile installation was detected, but the pnpm command is unavailable.',\n 'versions.hintLink': 'This is a local linked development build. Pull and build in the source directory to preserve local changes.',\n 'versions.hintInstall': 'Mnemon CLI was not found. Install it and place mnemon on PATH, or configure cliPath.',\n 'versions.hintManual': 'The installation source cannot be identified safely. Update it using the original installation method.',\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.storageDomains': 'Storage Domains',\n 'status.storageDomainsText': 'The current selection is the shared directory boundary for runtime memory, Memory Spaces, and project Documents.',\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 '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.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","export const MNEMON_READ_CHANNEL = '/dsh-mnemon-read'\nexport const MNEMON_WRITE_CHANNEL = '/dsh-mnemon-write'\nexport const MNEMON_PACK_CHANNEL = '/dsh-mnemon-pack'\n","import type { ClientConnectionHandle } from '../contracts.ts'\nimport { MNEMON_PACK_CHANNEL, MNEMON_READ_CHANNEL, MNEMON_WRITE_CHANNEL } from '../channels.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'\nimport type { VersionComponentId, VersionStatus, VersionUpdateResult } from '../version-updates.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 versions(): Promise<VersionStatus> {\n return this.call(MNEMON_READ_CHANNEL, 'versions', {})\n }\n\n updateVersion(component: VersionComponentId): Promise<VersionUpdateResult> {\n return this.call(MNEMON_WRITE_CHANNEL, 'version-update', { component })\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 deleteBody(memoryBodyId: string): Promise<MemoryBody> {\n return this.call(MNEMON_WRITE_CHANNEL, 'body-delete', this.scoped({ memoryBodyId }))\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 = '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[] = ['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 turnBar: value?.turnBar !== false,\n saveAction: value?.saveAction !== false,\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-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 * (turnTail bar and 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","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 dshMnemonVersion?: 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 deleteBody(id: string, signal?: AbortSignal): Promise<MemoryBody> {\n this.assertWritable()\n return this.memoryBodies.remove(id, signal)\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, useContext } from 'react'\nimport type { MnemonTranslate } from './locales.ts'\nimport sidebarCss from './MnemonSidebarView.module.css'\n\nexport type MnemonViewSurface = 'buildin' | 'sidebar'\n\ntype AppearanceSlot =\n | 'shell'\n | 'masthead'\n | 'brand'\n | 'headerActions'\n | 'workspacePicker'\n | 'statusCluster'\n | 'workspaceMismatch'\n | 'topNavigation'\n | 'nav'\n | 'navGroup'\n | 'memoryWorkspace'\n | 'memoryNavigation'\n | 'memoryTabs'\n | 'memoryWriteButton'\n | 'bodyCardHeader'\n | 'bodyDirectoryActions'\n | 'bodyCardIdentity'\n | 'bodyCardMeta'\n | 'bodyCardFooter'\n | 'bodyCardStats'\n | 'itemActionButton'\n | 'itemEditAction'\n | 'itemDangerAction'\n | 'modalBackdrop'\n | 'modal'\n | 'canvas'\n | 'pageHeader'\n | 'inspectorGlyph'\n\nexport interface MnemonViewAppearance {\n surface: MnemonViewSurface\n title: string\n showLogo: boolean\n showTelemetry: boolean\n showNavigationGlyphs: boolean\n showNavigationDetails: boolean\n showNavigationDividers: boolean\n showSpaceSummary: boolean\n classes: Partial<Record<AppearanceSlot, string | undefined>>\n}\n\nconst buildinAppearance: MnemonViewAppearance = {\n surface: 'buildin',\n title: 'Mnemon',\n showLogo: true,\n showTelemetry: true,\n showNavigationGlyphs: true,\n showNavigationDetails: true,\n showNavigationDividers: true,\n showSpaceSummary: true,\n classes: {},\n}\n\n/** Appearance is a surface concern; every data flow and workspace action stays shared. */\nexport function resolveMnemonViewAppearance(surface: MnemonViewSurface, t: MnemonTranslate): MnemonViewAppearance {\n if (surface === 'buildin') return buildinAppearance\n return {\n surface: 'sidebar',\n title: t('tab.label'),\n showLogo: false,\n showTelemetry: false,\n showNavigationGlyphs: false,\n showNavigationDetails: false,\n showNavigationDividers: false,\n showSpaceSummary: false,\n classes: {\n shell: sidebarCss.shell,\n masthead: sidebarCss.masthead,\n brand: sidebarCss.brand,\n headerActions: sidebarCss.headerActions,\n workspacePicker: sidebarCss.workspacePicker,\n statusCluster: sidebarCss.statusCluster,\n workspaceMismatch: sidebarCss.workspaceMismatch,\n topNavigation: sidebarCss.topNavigation,\n nav: sidebarCss.nav,\n navGroup: sidebarCss.navGroup,\n memoryWorkspace: sidebarCss.memoryWorkspace,\n memoryNavigation: sidebarCss.memoryNavigation,\n memoryTabs: sidebarCss.memoryTabs,\n memoryWriteButton: sidebarCss.memoryWriteButton,\n bodyCardHeader: sidebarCss.bodyCardHeader,\n bodyDirectoryActions: sidebarCss.bodyDirectoryActions,\n bodyCardIdentity: sidebarCss.bodyCardIdentity,\n bodyCardMeta: sidebarCss.bodyCardMeta,\n bodyCardFooter: sidebarCss.bodyCardFooter,\n bodyCardStats: sidebarCss.bodyCardStats,\n itemActionButton: sidebarCss.itemActionButton,\n itemEditAction: sidebarCss.itemEditAction,\n itemDangerAction: sidebarCss.itemDangerAction,\n modalBackdrop: sidebarCss.modalBackdrop,\n modal: sidebarCss.modal,\n canvas: sidebarCss.canvas,\n pageHeader: sidebarCss.pageHeader,\n inspectorGlyph: sidebarCss.inspectorGlyph,\n },\n }\n}\n\nconst AppearanceContext = createContext<MnemonViewAppearance>(buildinAppearance)\n\nexport const MnemonViewAppearanceProvider = AppearanceContext.Provider\n\nexport function useMnemonViewAppearance(): MnemonViewAppearance {\n return useContext(AppearanceContext)\n}\n\nexport function appearanceClass(base: string | undefined, variant: string | undefined): string {\n return [base, variant].filter((value): value is string => value !== undefined && value !== '').join(' ')\n}\n","import { createContext, Fragment, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore, type FormEvent, type PointerEvent as ReactPointerEvent, type ReactNode } from 'react'\nimport { IconChevronLeftOutline14 } from '@deepseek-ai/dsh-client-ui-primitives'\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 type { RuntimeMemoryEntry, RuntimeMemoryImportance, RuntimeMemorySnapshot, RuntimeMemoryTarget } from '../runtime-memory.ts'\nimport type { StorageAreaInventory, StorageScopeInventory, StorageScopeKind } from '../storage-scope.ts'\nimport type { VersionComponentStatus, VersionInstallMode, VersionStatus, VersionUpdateResult } from '../version-updates.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 {\n appearanceClass,\n MnemonViewAppearanceProvider,\n resolveMnemonViewAppearance,\n useMnemonViewAppearance,\n type MnemonViewSurface,\n} from './MnemonViewAppearance.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 surface?: MnemonViewSurface\n t?: MnemonTranslate\n locale?: 'zh' | 'en'\n onClose?: () => void\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'\ntype SidebarMemoryPage = Extract<Page, 'overview' | 'explore' | 'list' | 'entities'>\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 SIDEBAR_PAGE_TABS: NavEntry[] = [\n { id: 'status', label: 'nav.status', detail: 'nav.status.detail', glyph: '⌘' },\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\nconst MEMORY_PAGE_TABS: Array<{ id: SidebarMemoryPage; label: MnemonKey }> = [\n { id: 'overview', label: 'nav.overview' },\n { id: 'explore', label: 'nav.search' },\n { id: 'list', label: 'nav.content' },\n { id: 'entities', label: 'nav.entities' },\n]\n\nconst MEMORY_PAGES = new Set<Page>(MEMORY_PAGE_TABS.map(item => item.id))\n\nfunction isMemoryPage(page: Page): page is SidebarMemoryPage {\n return MEMORY_PAGES.has(page)\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)\nconst LocaleContext = createContext<'zh' | 'en'>('zh')\nfunction useT(): MnemonTranslate { return useContext(I18nContext) }\nfunction useLocale(): string { return useContext(LocaleContext) === 'en' ? 'en-US' : 'zh-CN' }\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 const appearance = useMnemonViewAppearance()\n return (\n <div className={appearanceClass(css.pageHeader, appearance.classes.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 ProgressiveFooter(props: { visible: number; total: number; pageSize: number; compact?: boolean; onMore: () => void }): JSX.Element | null {\n const t = useT()\n if (props.total === 0) return null\n const remaining = Math.max(0, props.total - props.visible)\n return <div className={props.compact === true ? css.compactListProgress : css.listProgress}><span>{t('common.showing', { visible: props.visible, total: props.total })}</span>{remaining > 0 && <button type=\"button\" className={css.secondaryButton} onClick={props.onMore}>{t('common.showMore', { count: Math.min(props.pageSize, remaining) })}</button>}</div>\n}\n\n/** DSH-style action dialog shared by Sidebar add/write flows. */\nfunction SidebarModal(props: { title: string; description?: string; busy?: boolean; onClose: () => void; children: ReactNode }): JSX.Element {\n const t = useT()\n const appearance = useMnemonViewAppearance()\n const dialogRef = useRef<HTMLElement | null>(null)\n const returnFocusRef = useRef<HTMLElement | null>(null)\n const close = useCallback(() => { if (props.busy !== true) props.onClose() }, [props.busy, props.onClose])\n useLayoutEffect(() => {\n returnFocusRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null\n const firstControl = dialogRef.current?.querySelector<HTMLElement>('[data-autofocus]')\n ?? dialogRef.current?.querySelector<HTMLElement>('input:not(:disabled), textarea:not(:disabled), select:not(:disabled)')\n ?? dialogRef.current?.querySelector<HTMLElement>('div:last-child button:not(:disabled)')\n firstControl?.focus({ preventScroll: true })\n return () => { if (returnFocusRef.current?.isConnected === true) returnFocusRef.current.focus({ preventScroll: true }) }\n }, [])\n useEffect(() => {\n const onKey = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n event.preventDefault()\n close()\n return\n }\n if (event.key !== 'Tab') return\n const controls = Array.from(dialogRef.current?.querySelectorAll<HTMLElement>('button:not(:disabled), input:not(:disabled), textarea:not(:disabled), select:not(:disabled), a[href], [tabindex]:not([tabindex=\"-1\"])') ?? []).filter(control => control.getAttribute('aria-hidden') !== 'true')\n const first = controls[0]\n const last = controls.at(-1)\n if (first === undefined || last === undefined) {\n event.preventDefault()\n return\n }\n const active = document.activeElement\n if (event.shiftKey && (active === first || !dialogRef.current?.contains(active))) {\n event.preventDefault(); last.focus()\n } else if (!event.shiftKey && (active === last || !dialogRef.current?.contains(active))) {\n event.preventDefault(); first.focus()\n }\n }\n window.addEventListener('keydown', onKey)\n return () => window.removeEventListener('keydown', onKey)\n }, [close])\n return (\n <div className={appearanceClass(css.modalBackdrop, appearance.classes.modalBackdrop)} onPointerDown={event => { if (event.target === event.currentTarget) close() }}>\n <section ref={dialogRef} className={appearanceClass(css.modal, appearance.classes.modal)} role=\"dialog\" aria-modal=\"true\" aria-label={props.title}>\n <header><div><h2>{props.title}</h2>{props.description !== undefined && <p>{props.description}</p>}</div><button type=\"button\" className={css.iconButton} disabled={props.busy} onClick={close} aria-label={t('common.cancel')}>×</button></header>\n <div>{props.children}</div>\n </section>\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/** Sidebar mirrors the SSH panel's flat tab model; Buildin keeps the grouped navigation unchanged. */\nfunction WorkspaceNavigation(props: { page: Page; onSelect: (page: Page) => void; activeBodies: number; bodyCount: number; catalogKnown: boolean; writeEnabled: boolean }): JSX.Element {\n const t = useT()\n const appearance = useMnemonViewAppearance()\n return (\n <div className={appearanceClass(css.topNavigation, appearance.classes.topNavigation)}>\n {appearance.surface === 'sidebar'\n ? <div className={appearanceClass(css.nav, appearance.classes.nav)} role=\"tablist\" aria-label={t('nav.aria')}>\n {SIDEBAR_PAGE_TABS.map(item => {\n const active = item.id === 'overview' ? isMemoryPage(props.page) : props.page === item.id\n return <button key={item.id} type=\"button\" role=\"tab\" aria-selected={active} data-active={active ? '' : undefined} onClick={() => props.onSelect(item.id)}>{t(item.label)}</button>\n })}\n </div>\n : <nav className={appearanceClass(css.nav, appearance.classes.nav)} aria-label={t('nav.aria')}>\n {PAGE_NAV.map((group, groupIndex) => <Fragment key={group.aria}><div className={appearanceClass(css.navGroup, appearance.classes.navGroup)} role=\"group\" aria-label={t(group.aria)}>{group.entries.map(item => <button key={item.id} type=\"button\" aria-current={props.page === item.id ? 'page' : undefined} onClick={() => props.onSelect(item.id)}>{appearance.showNavigationGlyphs && <span className={css.navGlyph} aria-hidden=\"true\">{item.glyph}</span>}<span><strong>{t(item.label)}</strong>{appearance.showNavigationDetails && <small>{t(item.detail)}</small>}</span></button>)}</div>{appearance.showNavigationDividers && groupIndex < PAGE_NAV.length - 1 && <span className={css.navGroupDivider} aria-hidden=\"true\" />}</Fragment>)}\n </nav>}\n {appearance.showSpaceSummary && <div className={css.spaceSummary}><span>{t('sidebar.activeSpaces')}</span><code>{props.catalogKnown ? `${props.activeBodies} / ${props.bodyCount}` : '— / —'}</code><small>{props.writeEnabled ? t('common.agentSupervised') : t('common.readOnly')}</small></div>}\n </div>\n )\n}\n\n/** Memory tools become a focused second-level tab set on the Sidebar surface. */\nfunction MemoryNavigation(props: { page: Page; writeEnabled: boolean; onSelect: (page: SidebarMemoryPage) => void; onRemember: () => void }): JSX.Element | null {\n const t = useT()\n const appearance = useMnemonViewAppearance()\n if (appearance.surface !== 'sidebar' || !isMemoryPage(props.page)) return null\n return (\n <section className={appearance.classes.memoryWorkspace}>\n <PageHeader title={t('nav.bodies')} description={t('overview.description')} action={<button type=\"button\" className={appearanceClass(css.primaryButton, appearance.classes.memoryWriteButton)} disabled={!props.writeEnabled} onClick={props.onRemember}>{t('nav.rememberAction')}</button>} />\n <div className={appearance.classes.memoryNavigation}>\n <div className={appearance.classes.memoryTabs} role=\"tablist\" aria-label={t('nav.memory.aria')}>\n {MEMORY_PAGE_TABS.map(item => {\n const active = props.page === item.id\n return <button key={item.id} type=\"button\" role=\"tab\" aria-selected={active} data-active={active ? '' : undefined} onClick={() => props.onSelect(item.id)}>{t(item.label)}</button>\n })}\n </div>\n </div>\n </section>\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 appearance = useMnemonViewAppearance()\n const [confirming, setConfirming] = useState(false)\n const [forgetting, setForgetting] = useState(false)\n const { insight } = props\n const neutralActionClass = appearance.surface === 'sidebar'\n ? appearanceClass(css.ghostButton, appearance.classes.itemActionButton)\n : css.ghostButton\n const forgetActionClass = appearance.surface === 'sidebar'\n ? appearanceClass(css.dangerButton, appearanceClass(appearance.classes.itemActionButton, appearance.classes.itemDangerAction))\n : css.dangerButton\n const inlineConfirming = appearance.surface === 'buildin' && confirming\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 <>\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 {inlineConfirming ? (\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={neutralActionClass} onClick={() => props.onRelated?.(insight)}>{t('card.related')}</button>}\n {props.onClone !== undefined && <button type=\"button\" className={neutralActionClass} onClick={() => props.onClone?.(insight)}>{t('card.clone')}</button>}\n <button type=\"button\" className={neutralActionClass} onClick={() => void navigator.clipboard?.writeText(insight.id)}>{t('common.copyId')}</button>\n {props.writeEnabled && <button type=\"button\" className={forgetActionClass} onClick={() => setConfirming(true)}>{t('card.forget')}</button>}\n </>\n )}\n </div>\n </article>\n {appearance.surface === 'sidebar' && confirming && <SidebarModal title={t('card.confirmText')} description={`${insight.memoryBodyName ?? insight.memoryBodyId ?? ''}${insight.memoryBodyName === undefined && insight.memoryBodyId === undefined ? '' : ' · '}${insight.id}`} busy={forgetting} onClose={() => setConfirming(false)}><div className={css.bodyDeleteConfirm}><div className={css.bodyDeleteSummary}><p className={css.bodyDeleteContent}>{insight.content}</p><span>{meta.join(' · ')}</span></div><div className={css.bodyEditActions}><button type=\"button\" data-autofocus className={css.ghostButton} disabled={forgetting} onClick={() => setConfirming(false)}>{t('common.cancel')}</button><button type=\"button\" className={css.dangerSolidButton} disabled={forgetting} onClick={() => void forget()}>{forgetting ? t('card.processing') : t('card.confirmForget')}</button></div></div></SidebarModal>}\n </>\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 locale = useLocale()\n const appearance = useMnemonViewAppearance()\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 [creatingBodyOpen, setCreatingBodyOpen] = 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 [confirmingDeleteBody, setConfirmingDeleteBody] = useState<string | null>(null)\n const [deletingBody, setDeletingBody] = 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 if (appearance.surface === 'sidebar') setCreatingBodyOpen(false)\n await load(true)\n props.onMutate()\n } catch (reason) { setError(message(reason)) } finally { setCreating(false) }\n }\n\n const deleteBody = async (body: MemoryBodyView) => {\n setDeletingBody(body.id); setError(null)\n try {\n await props.client.deleteBody(body.id)\n setConfirmingDeleteBody(null)\n await load(true)\n props.onMutate()\n } catch (reason) { setError(message(reason)) } finally { setDeletingBody(null) }\n }\n\n const generated = graph === null ? t('overview.waitingSnapshot') : t('overview.updatedAt', { time: new Date(graph.generatedAt).toLocaleTimeString(locale, { 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 const editingBodyView = editingBody === null ? undefined : catalog?.items.find(body => body.id === editingBody)\n const deletingBodyView = confirmingDeleteBody === null ? undefined : catalog?.items.find(body => body.id === confirmingDeleteBody)\n const bodyEditForm = (body: MemoryBodyView) => <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={4} maxLength={1000} /></label>\n <div className={css.bodyEditActions}>{appearance.surface === 'sidebar' && <button type=\"button\" className={css.ghostButton} disabled={savingBody === body.id} onClick={() => setEditingBody(null)}>{t('common.cancel')}</button>}<button type=\"submit\" className={css.primaryButton} disabled={savingBody === body.id || editName.trim() === ''}>{savingBody === body.id ? t('overview.savingBody') : t('overview.saveBody')}</button>{appearance.surface === 'buildin' && <button type=\"button\" className={css.ghostButton} onClick={() => setEditingBody(null)}>{t('common.cancel')}</button>}</div>\n </form>\n const bodyCreateForm = <form className={css.bodyEdit} onSubmit={event => void create(event)}>\n <label>{t('overview.createName')}<input aria-label={t('overview.createName')} value={bodyName} onChange={event => setBodyName(event.target.value)} placeholder={t('overview.createNamePlaceholder')} maxLength={100} required /></label>\n <label>{t('overview.createDescription')}<textarea aria-label={t('overview.createDescription')} value={bodyDescription} onChange={event => setBodyDescription(event.target.value)} placeholder={t('overview.createDescriptionPlaceholder')} rows={5} maxLength={1000} required /></label>\n <div className={css.bodyEditActions}><button type=\"button\" className={css.ghostButton} disabled={creating} onClick={() => setCreatingBodyOpen(false)}>{t('common.cancel')}</button><button type=\"submit\" className={css.primaryButton} disabled={creating || bodyName.trim() === '' || bodyDescription.trim() === ''}>{creating ? t('overview.creating') : t('overview.createAction')}</button></div>\n </form>\n const bodyToggle = (body: MemoryBodyView) => <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 || deletingBody === 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>\n const bodyEditActionClass = appearanceClass(css.ghostButton, appearanceClass(appearance.classes.itemActionButton, appearance.classes.itemEditAction))\n const bodyDeleteActionClass = appearanceClass(css.dangerButton, appearanceClass(appearance.classes.itemActionButton, appearance.classes.itemDangerAction))\n return (\n <div className={css.page}>\n <PageHeader title={appearance.surface === 'sidebar' ? t('nav.overview') : t('overview.title')} description={t(appearance.surface === 'sidebar' ? 'overview.pageDescription' : '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 {appearance.surface === 'sidebar' ? <div className={appearance.classes.bodyDirectoryActions}><strong>{catalogUnavailable ? t('overview.directory.unsyncedBadge') : `${catalog?.activeCount ?? '—'} / ${catalog?.total ?? '—'} ${t('common.active')}`}</strong>{props.writeEnabled && !catalogUnavailable && <button type=\"button\" className={bodyEditActionClass} onClick={() => setCreatingBodyOpen(true)}>{t('overview.createTitle')}</button>}</div> : <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={(appearance.surface === 'buildin' && editingBody === body.id) || undefined} title={body.error}>\n {appearance.surface === 'buildin'\n ? editingBody === body.id\n ? bodyEditForm(body)\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}>{bodyToggle(body)}<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><p>{body.description || t('overview.noDescription')}</p><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 : <><div className={appearance.classes.bodyCardHeader}><div className={appearance.classes.bodyCardIdentity}><span className={css.bodySignal} /><div><strong>{body.name}</strong><div className={appearance.classes.bodyCardMeta}><code>{body.id}</code><small className={css.bodyHealth}>{body.healthy ? t('overview.storageHealthy') : t('overview.storageUnhealthy')}</small></div></div></div>{bodyToggle(body)}</div><p title={body.description || t('overview.noDescription')}>{body.description || t('overview.noDescription')}</p><footer className={appearance.classes.bodyCardFooter}><div className={appearance.classes.bodyCardStats}><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></div><div className={css.bodyCardActions}><button type=\"button\" className={bodyEditActionClass} aria-label={t('overview.editBodyAria', { name: body.name })} disabled={!props.writeEnabled || deletingBody === body.id} onClick={() => beginEdit(body)}>{t('overview.editBody')}</button><button type=\"button\" className={bodyDeleteActionClass} aria-label={t('overview.deleteBodyAria', { name: body.name })} disabled={!props.writeEnabled || deletingBody === body.id} onClick={() => setConfirmingDeleteBody(body.id)}>{t('overview.deleteBody')}</button></div></footer></>}\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 {appearance.surface === 'buildin' && 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 {appearance.surface === 'sidebar' && creatingBodyOpen && <SidebarModal title={t('overview.createTitle')} description={catalog?.directory || props.fallbackDirectory || t('overview.directory.waiting')} busy={creating} onClose={() => setCreatingBodyOpen(false)}>{bodyCreateForm}</SidebarModal>}\n {appearance.surface === 'sidebar' && editingBodyView !== undefined && <SidebarModal title={t('overview.editBodyAria', { name: editingBodyView.name })} description={editingBodyView.id} busy={savingBody === editingBodyView.id} onClose={() => setEditingBody(null)}>{bodyEditForm(editingBodyView)}</SidebarModal>}\n {appearance.surface === 'sidebar' && deletingBodyView !== undefined && <SidebarModal title={t('overview.deleteTitle', { name: deletingBodyView.name })} description={deletingBodyView.id} busy={deletingBody === deletingBodyView.id} onClose={() => setConfirmingDeleteBody(null)}><div className={css.bodyDeleteConfirm}><p>{t('overview.deleteWarning')}</p><div className={css.bodyDeleteSummary}><strong>{deletingBodyView.name}</strong><span>{t('common.memories', { count: deletingBodyView.stats?.totalInsights ?? 0 })} · {t('common.edges', { count: deletingBodyView.stats?.edgeCount ?? 0 })} · {humanBytes(deletingBodyView.stats?.dbSizeBytes ?? 0)}</span></div><div className={css.bodyEditActions}><button type=\"button\" data-autofocus className={css.ghostButton} disabled={deletingBody === deletingBodyView.id} onClick={() => setConfirmingDeleteBody(null)}>{t('common.cancel')}</button><button type=\"button\" className={css.dangerSolidButton} disabled={deletingBody === deletingBodyView.id} onClick={() => void deleteBody(deletingBodyView)}>{deletingBody === deletingBodyView.id ? t('overview.deletingBody') : t('overview.deleteAction')}</button></div></div></SidebarModal>}\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}>{appearance.showLogo ? <MnemonLogo className={css.inspectorLogo} title={t('overview.inspector')} /> : <span className={appearanceClass(css.inspectorLogo, appearance.classes.inspectorGlyph)} aria-hidden=\"true\">◇</span>}<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 appearance = useMnemonViewAppearance()\n const pageSize = appearance.surface === 'sidebar' ? 6 : Number.MAX_SAFE_INTEGER\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 const [visibleResultLimit, setVisibleResultLimit] = useState(pageSize)\n const [visibleRelatedLimit, setVisibleRelatedLimit] = useState(pageSize)\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); setVisibleResultLimit(pageSize); setVisibleRelatedLimit(pageSize)\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); setVisibleRelatedLimit(pageSize)\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 const visibleResults = results.slice(0, visibleResultLimit)\n const visibleRelated = related.slice(0, visibleRelatedLimit)\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>{visibleResults.map(insight => <InsightCard key={insightKey(insight)} insight={insight} writeEnabled={props.writeEnabled} onForget={forget} onRelated={item => void showRelated(item)} />)}{appearance.surface === 'sidebar' && <ProgressiveFooter visible={visibleResults.length} total={results.length} pageSize={pageSize} onMore={() => setVisibleResultLimit(value => value + pageSize)} />}</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>}{visibleRelated.map(insight => <InsightCard key={insightKey(insight)} insight={insight} writeEnabled={props.writeEnabled} onForget={forget} onRelated={item => void showRelated(item)} />)}{appearance.surface === 'sidebar' && !relatedLoading && <ProgressiveFooter visible={visibleRelated.length} total={related.length} pageSize={pageSize} onMore={() => setVisibleRelatedLimit(value => value + pageSize)} />}</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 appearance = useMnemonViewAppearance()\n const entityPageSize = appearance.surface === 'sidebar' ? 10 : Number.MAX_SAFE_INTEGER\n const insightPageSize = appearance.surface === 'sidebar' ? 6 : Number.MAX_SAFE_INTEGER\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 const [visibleEntityLimit, setVisibleEntityLimit] = useState(entityPageSize)\n const [visibleInsightLimit, setVisibleInsightLimit] = useState(insightPageSize)\n\n const load = useCallback(async (selected?: string) => {\n setLoading(true); setError(null); setVisibleInsightLimit(insightPageSize)\n if (selected === undefined) setVisibleEntityLimit(entityPageSize)\n try { setView(await props.client.entities(selected, 20)) } catch (reason) { setError(message(reason)) } finally { setLoading(false) }\n }, [entityPageSize, insightPageSize, props.client])\n\n useEffect(() => { void load() }, [load, props.revision])\n const submit = (event: FormEvent) => { event.preventDefault(); if (entity.trim() !== '') void load(entity) }\n const visibleEntities = view.items.slice(0, visibleEntityLimit)\n const visibleInsights = view.insights.slice(0, visibleInsightLimit)\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}>{visibleEntities.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 {appearance.surface === 'sidebar' && <ProgressiveFooter compact visible={visibleEntities.length} total={view.items.length} pageSize={entityPageSize} onMore={() => setVisibleEntityLimit(value => value + entityPageSize)} />}\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> : <>{visibleInsights.map(insight => <InsightCard key={insightKey(insight)} insight={insight} writeEnabled={props.writeEnabled} onForget={props.onForget} onRelated={() => props.onExplore(insight.content)} />)}{appearance.surface === 'sidebar' && <ProgressiveFooter visible={visibleInsights.length} total={view.insights.length} pageSize={insightPageSize} onMore={() => setVisibleInsightLimit(value => value + insightPageSize)} />}</>}</>}\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 locale = useLocale()\n const appearance = useMnemonViewAppearance()\n const pageSize = 10\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 const [adding, setAdding] = useState(false)\n const [filterTarget, setFilterTarget] = useState<'all' | RuntimeMemoryTarget>('all')\n const [filterQuery, setFilterQuery] = useState('')\n const [visibleLimit, setVisibleLimit] = useState(pageSize)\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 useEffect(() => { setVisibleLimit(pageSize) }, [filterQuery, filterTarget])\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 if (appearance.surface === 'sidebar') setAdding(false)\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 const runtimeEditActionClass = appearance.surface === 'sidebar'\n ? appearanceClass(css.ghostButton, appearanceClass(appearance.classes.itemActionButton, appearance.classes.itemEditAction))\n : css.ghostButton\n const runtimeRemoveActionClass = appearance.surface === 'sidebar'\n ? appearanceClass(css.dangerButton, appearanceClass(appearance.classes.itemActionButton, appearance.classes.itemDangerAction))\n : css.dangerButton\n\n const runtimeEntry = (entry: RuntimeMemoryEntry, showTarget = false) => {\n const key = entryKey(entry)\n const isEditing = editing === key\n const isInlineEditing = appearance.surface === 'buildin' && isEditing\n const isRemoving = removing === key\n const isInlineRemoving = appearance.surface === 'buildin' && isRemoving\n return <article key={key} className={css.runtimeEntry} data-importance={entry.importance} data-target={entry.target}>\n <div className={css.runtimeEntryMeta}>{showTarget ? <div className={css.runtimeEntryBadges}><span className={css.runtimeEntryTarget}>{entry.target === 'user' ? 'USER.md' : 'MEMORY.md'}</span><span>{t(`runtime.importance.${entry.importance}` as MnemonKey)}</span></div> : <span>{t(`runtime.importance.${entry.importance}` as MnemonKey)}</span>}<time dateTime={entry.updated_at}>{new Date(entry.updated_at).toLocaleString(locale)}</time></div>\n {isInlineEditing ? <textarea aria-label={t('runtime.editContent')} value={editContent} onChange={event => setEditContent(event.target.value)} rows={4} /> : <p>{entry.content}</p>}\n {isInlineEditing && <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 {isInlineRemoving ? <><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></> : isInlineEditing ? <><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={runtimeEditActionClass} disabled={saving && isRemoving} onClick={() => beginEdit(entry)}>{t('runtime.editAction')}</button><button type=\"button\" className={runtimeRemoveActionClass} disabled={saving && isRemoving} onClick={() => { setRemoving(key); setEditing(null) }}>{t('runtime.removeAction')}</button></> : null}\n </footer>\n </article>\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 => runtimeEntry(entry))}\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 const targetSummary = (value: RuntimeMemoryTarget) => {\n const view = snapshot?.targets[value]\n const percentage = view === undefined || view.limit === 0 ? 0 : Math.min(100, Math.round(view.used / view.limit * 100))\n return <section className={css.runtimeSummaryCard} aria-label={t(`runtime.target.${value}` as MnemonKey)}><header className={css.runtimeTargetHeader}><div><span>{value === 'user' ? 'USER.md' : 'MEMORY.md'}</span><h3>{t(`runtime.target.${value}` as MnemonKey)}</h3></div><strong>{view?.entryCount ?? 0}</strong></header><div className={css.capacityLine}><div><i style={{ width: `${percentage}%` }} /></div><span>{view === undefined ? '—' : `${humanBytes(view.used)} / ${humanBytes(view.limit)}`}</span></div><p className={css.runtimeTargetDescription}>{t(`runtime.target.${value}.description` as MnemonKey)}</p></section>\n }\n const normalizedQuery = filterQuery.trim().toLocaleLowerCase()\n const filteredEntries = (snapshot?.entries ?? []).filter(entry => (filterTarget === 'all' || entry.target === filterTarget) && (normalizedQuery === '' || entry.content.toLocaleLowerCase().includes(normalizedQuery)))\n const visibleEntries = filteredEntries.slice(0, visibleLimit)\n\n const closeComposer = () => {\n setContent('')\n setAdding(false)\n }\n const composer = <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>{appearance.surface === 'sidebar' && <button type=\"button\" className={css.ghostButton} disabled={saving} onClick={closeComposer}>{t('common.cancel')}</button>}<button type=\"submit\" className={css.primaryButton} disabled={saving || content.trim() === ''}>{saving ? t('runtime.saving') : t('runtime.addAction')}</button></div>\n </form>\n const editingEntry = editing === null ? undefined : snapshot?.entries.find(entry => entryKey(entry) === editing)\n const removingEntry = removing === null ? undefined : snapshot?.entries.find(entry => entryKey(entry) === removing)\n const editForm = editingEntry === undefined ? null : <form className={css.bodyEdit} onSubmit={event => { event.preventDefault(); void replace(editingEntry) }}>\n <label>{t('runtime.editContent')}<textarea aria-label={t('runtime.editContent')} value={editContent} onChange={event => setEditContent(event.target.value)} rows={7} /></label>\n <label>{t('runtime.importance')}<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></label>\n <div className={css.bodyEditActions}><button type=\"button\" className={css.ghostButton} disabled={saving} onClick={() => setEditing(null)}>{t('common.cancel')}</button><button type=\"submit\" className={css.primaryButton} disabled={saving || editContent.trim() === ''}>{t('runtime.saveEdit')}</button></div>\n </form>\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>{appearance.surface === 'sidebar' && props.writeEnabled && <button type=\"button\" className={css.primaryButton} onClick={() => setAdding(true)}>{t('runtime.addButton')}</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 && appearance.surface === 'buildin' && composer}\n {!props.writeEnabled && <div className={css.runtimeReadOnly}>{t('runtime.readOnly')}</div>}\n {appearance.surface === 'buildin' ? <div className={css.runtimeGrid}>{targetPanel('user')}{targetPanel('memory')}</div> : <>\n <div className={css.runtimeSummaryGrid}>{targetSummary('user')}{targetSummary('memory')}</div>\n <section className={css.runtimeBrowser} aria-label={t('runtime.entriesAria')}>\n <div className={css.runtimeBrowserToolbar}>\n <div className={css.runtimeScopeFilter} role=\"group\" aria-label={t('runtime.scopeAria')}><button type=\"button\" data-active={filterTarget === 'all' || undefined} onClick={() => setFilterTarget('all')}>{t('runtime.scopeAll')} <b>{snapshot?.entries.length ?? 0}</b></button><button type=\"button\" data-active={filterTarget === 'user' || undefined} onClick={() => setFilterTarget('user')}>{t('runtime.target.user')} <b>{snapshot?.targets.user.entryCount ?? 0}</b></button><button type=\"button\" data-active={filterTarget === 'memory' || undefined} onClick={() => setFilterTarget('memory')}>{t('runtime.target.memory')} <b>{snapshot?.targets.memory.entryCount ?? 0}</b></button></div>\n <div className={css.runtimeFilterQuery}><span aria-hidden=\"true\">⌕</span><input aria-label={t('runtime.filterAria')} value={filterQuery} onChange={event => setFilterQuery(event.target.value)} placeholder={t('runtime.filterPlaceholder')} /></div>\n </div>\n <div className={css.runtimeUnifiedList}>{visibleEntries.map(entry => runtimeEntry(entry, true))}{!loading && filteredEntries.length === 0 && <div className={css.runtimeEmpty}><span>○</span><p>{t('runtime.noMatch')}</p></div>}</div>\n {!loading && <ProgressiveFooter visible={visibleEntries.length} total={filteredEntries.length} pageSize={pageSize} onMore={() => setVisibleLimit(value => value + pageSize)} />}\n </section>\n </>}\n <p className={css.runtimeFootnote}>{t('runtime.footnote')}</p>\n {appearance.surface === 'sidebar' && adding && <SidebarModal title={t('runtime.addTitle')} description={t('runtime.addDescription')} busy={saving} onClose={closeComposer}>{composer}</SidebarModal>}\n {appearance.surface === 'sidebar' && editingEntry !== undefined && <SidebarModal title={t('runtime.editContent')} description={t(`runtime.target.${editingEntry.target}` as MnemonKey)} busy={saving} onClose={() => setEditing(null)}>{editForm}</SidebarModal>}\n {appearance.surface === 'sidebar' && removingEntry !== undefined && <SidebarModal title={t('runtime.removeTitle')} description={t(`runtime.target.${removingEntry.target}` as MnemonKey)} busy={saving} onClose={() => setRemoving(null)}><div className={css.bodyDeleteConfirm}><p>{t('runtime.removeWarning')}</p><div className={css.bodyDeleteSummary}><p className={css.bodyDeleteContent}>{removingEntry.content}</p><span>{t(`runtime.importance.${removingEntry.importance}` as MnemonKey)}</span></div><div className={css.bodyEditActions}><button type=\"button\" data-autofocus className={css.ghostButton} disabled={saving} onClick={() => setRemoving(null)}>{t('common.cancel')}</button><button type=\"button\" className={css.dangerSolidButton} disabled={saving} onClick={() => void remove(removingEntry)}>{t('runtime.removeAction')}</button></div></div></SidebarModal>}\n </div>\n )\n}\n\nfunction RememberPage(props: { client: MnemonClient; sessionId: string | undefined; memoryBodies: MemoryBodyView[]; writeEnabled: boolean; seed: string; onMutate: () => void; onClose?: () => void; onComplete?: () => 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 props.onMutate()\n if (response.action !== 'skipped') {\n setContent('')\n props.onComplete?.()\n }\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(); props.onComplete?.() }\n } catch (reason) { setResult(t('remember.saveFailed', { error: message(reason) })) } finally { setSaving(false) }\n }\n\n const composer = <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}>{props.onClose !== undefined && <button type=\"button\" className={css.ghostButton} disabled={supervising || saving} onClick={props.onClose}>{t('common.cancel')}</button>}<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\n if (props.onClose !== undefined) {\n return <SidebarModal title={t('remember.title')} description={t('remember.description')} busy={supervising || saving} onClose={props.onClose}>{props.writeEnabled ? composer : <EmptyState glyph=\"⊘\" title={t('remember.readOnlyTitle')}>{t('remember.readOnlyText')}</EmptyState>}</SidebarModal>\n }\n\n return <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> : <div className={css.writebackLayout}><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>{composer}</div>}\n </div>\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 t = useT()\n const appearance = useMnemonViewAppearance()\n const pageSize = appearance.surface === 'sidebar' ? 12 : 48\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(pageSize)\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(() => { setVisibleLimit(pageSize); void load() }, [pageSize, props.revision])\n const submit = (event: FormEvent) => { event.preventDefault(); setVisibleLimit(pageSize); 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\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 && <ProgressiveFooter visible={visibleItems.length} total={view.items.length} pageSize={pageSize} onMore={() => setVisibleLimit(value => value + pageSize)} />}\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 locale = useLocale()\n const appearance = useMnemonViewAppearance()\n const pageSize = appearance.surface === 'sidebar' ? 8 : Number.MAX_SAFE_INTEGER\n const readerRef = useRef<HTMLElement | null>(null)\n const [snapshot, setSnapshot] = useState<DocumentSnapshot | null>(null)\n const [items, setItems] = useState<DocumentListItem[]>([])\n const [visibleLimit, setVisibleLimit] = useState(pageSize)\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); setVisibleLimit(pageSize)\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 }, [pageSize, 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 useLayoutEffect(() => {\n if (appearance.surface === 'sidebar' && readerRef.current !== null) readerRef.current.scrollTop = 0\n }, [appearance.surface, selectedId])\n useEffect(() => {\n if (appearance.surface !== 'sidebar' || selectedId === null) return\n const index = items.findIndex(item => item.id === selectedId)\n if (index >= visibleLimit) setVisibleLimit(Math.ceil((index + 1) / pageSize) * pageSize)\n }, [appearance.surface, items, pageSize, selectedId, visibleLimit])\n\n const resetComposer = () => { setTitle(''); setDescription(''); setContent(''); setSources(''); setComposing(false) }\n const startComposer = () => { setTitle(''); setDescription(''); setContent(''); setSources(''); setEditing(false); setComposing(true) }\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 const composer = <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} disabled={saving} 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 const editComposer = selected === null ? null : <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} disabled={saving} 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>\n const documentEditActionClass = appearance.surface === 'sidebar'\n ? appearanceClass(css.ghostButton, appearanceClass(appearance.classes.itemActionButton, appearance.classes.itemEditAction))\n : css.secondaryButton\n const documentArchiveActionClass = appearance.surface === 'sidebar'\n ? appearanceClass(css.dangerButton, appearanceClass(appearance.classes.itemActionButton, appearance.classes.itemDangerAction))\n : css.dangerButton\n const visibleItems = items.slice(0, visibleLimit)\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>{appearance.surface === 'sidebar' && props.writeEnabled && props.sessionId !== undefined && <button type=\"button\" className={css.primaryButton} onClick={startComposer}>{t('documents.new')}</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 {appearance.surface === 'buildin' && props.writeEnabled && props.sessionId !== undefined && <button type=\"button\" className={css.primaryButton} onClick={() => { if (composing) resetComposer(); else startComposer() }}>{composing ? t('common.cancel') : t('documents.new')}</button>}\n </section>\n\n {composing && appearance.surface === 'buildin' && composer}\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 {visibleItems.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(locale)}</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 {appearance.surface === 'sidebar' && !loading && <ProgressiveFooter compact visible={visibleItems.length} total={items.length} pageSize={pageSize} onMore={() => setVisibleLimit(value => value + pageSize)} />}\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 ref={readerRef} className={css.documentReader} aria-label={t('documents.reader')} data-scroll-region={appearance.surface === 'sidebar' ? '' : undefined}>\n {selected === null ? <EmptyState glyph=\"▤\" title={t('documents.selectTitle')}>{t('documents.selectText')}</EmptyState> : editing && appearance.surface === 'buildin' ? editComposer : <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={documentEditActionClass} 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}>{appearance.surface === 'buildin' && 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={documentArchiveActionClass} onClick={() => setConfirmArchive(true)}>{t('documents.archive')}</button></>}</footer>}\n </article>}\n </section>\n </div>\n <p className={css.runtimeFootnote}>{t('documents.footnote')}</p>\n {composing && appearance.surface === 'sidebar' && <SidebarModal title={t('documents.newTitle')} description={t('documents.editorHint')} busy={saving} onClose={resetComposer}>{composer}</SidebarModal>}\n {editing && appearance.surface === 'sidebar' && selected !== null && <SidebarModal title={t('documents.editTitle')} description={selected.title} busy={saving} onClose={() => setEditing(false)}>{editComposer}</SidebarModal>}\n {confirmArchive && appearance.surface === 'sidebar' && selected !== null && <SidebarModal title={t('documents.archiveConfirm')} description={selected.title} busy={saving} onClose={() => setConfirmArchive(false)}><div className={css.bodyDeleteConfirm}><p>{t('documents.archiveDescription')}</p><div className={css.bodyDeleteSummary}><strong>{selected.title}</strong><span>{selected.relativePath} · {humanBytes(selected.sizeBytes)}</span></div><div className={css.bodyEditActions}><button type=\"button\" data-autofocus className={css.ghostButton} disabled={saving} onClick={() => setConfirmArchive(false)}>{t('common.cancel')}</button><button type=\"button\" className={css.dangerSolidButton} disabled={saving} onClick={() => void archive()}>{saving ? t('documents.archiving') : t('documents.archiveNow')}</button></div></div></SidebarModal>}\n </div>\n )\n}\n\nfunction versionModeLabel(t: MnemonTranslate, mode: VersionInstallMode): string {\n if (mode === 'homebrew') return t('versions.modeHomebrew')\n if (mode === 'go') return t('versions.modeGo')\n if (mode === 'npm') return t('versions.modeNpm')\n if (mode === 'link') return t('versions.modeLink')\n if (mode === 'missing') return t('versions.modeMissing')\n return t('versions.modeManual')\n}\n\nfunction versionHint(t: MnemonTranslate, component: VersionComponentStatus): string {\n if (component.checkError !== undefined) return t('versions.latestUnavailable')\n if (component.updateHint === 'brew') return t('versions.hintHomebrew')\n if (component.updateHint === 'brew-missing') return t('versions.hintBrewMissing')\n if (component.updateHint === 'go') return t('versions.hintGo')\n if (component.updateHint === 'pnpm') return t('versions.hintPnpm')\n if (component.updateHint === 'pnpm-missing') return t('versions.hintPnpmMissing')\n if (component.updateHint === 'link') return t('versions.hintLink')\n if (component.updateHint === 'install') return t('versions.hintInstall')\n return t('versions.hintManual')\n}\n\nfunction VersionDialog(props: { client: MnemonClient; onClose: () => void; onRefreshStatus: () => void }): JSX.Element {\n const t = useT()\n const [snapshot, setSnapshot] = useState<VersionStatus | null>(null)\n const [checking, setChecking] = useState(true)\n const [updating, setUpdating] = useState<VersionComponentStatus['id'] | null>(null)\n const [error, setError] = useState<string | null>(null)\n const [result, setResult] = useState<VersionUpdateResult | null>(null)\n const check = useCallback(async () => {\n setChecking(true)\n setError(null)\n let timeout: ReturnType<typeof setTimeout> | undefined\n try {\n const deadline = new Promise<never>((_resolve, reject) => { timeout = setTimeout(() => reject(new Error(t('versions.timeout'))), 15_000) })\n setSnapshot(await Promise.race([props.client.versions(), deadline]))\n }\n catch (reason) { setError(message(reason)) }\n finally { if (timeout !== undefined) clearTimeout(timeout); setChecking(false) }\n }, [props.client, t])\n useEffect(() => { void check() }, [check])\n const update = async (component: VersionComponentStatus) => {\n setUpdating(component.id)\n setError(null)\n setResult(null)\n try {\n const next = await props.client.updateVersion(component.id)\n setResult(next)\n await check()\n props.onRefreshStatus()\n } catch (reason) {\n setError(message(reason))\n } finally {\n setUpdating(null)\n }\n }\n const busy = checking || updating !== null\n return <SidebarModal title={t('versions.title')} description={t('versions.description')} busy={busy} onClose={props.onClose}>\n <div className={css.versionDialogBody}>\n {checking && snapshot === null && <div className={css.versionChecking} role=\"status\"><span />{t('versions.checking')}</div>}\n {error !== null && <div className={css.versionError} role=\"alert\"><strong>{t('versions.failed')}</strong><p>{error}</p></div>}\n {result !== null && <div className={css.versionResult} role=\"status\"><strong>{result.updated ? t('versions.updated', { name: result.component === 'mnemon' ? 'Mnemon CLI' : 'dsh-mnemon' }) : t('versions.alreadyCurrent')}</strong>{result.restartRequired && <p>{t('versions.restartRequired')}</p>}</div>}\n {snapshot !== null && <div className={css.versionList}>{snapshot.components.map(component => {\n const canUpdate = component.outdated && component.updateSupported && component.checkError === undefined\n const state = component.checkError !== undefined ? t('versions.unknown') : component.outdated ? t('versions.available') : t('versions.current')\n return <article key={component.id} data-outdated={component.outdated || undefined}>\n <header><div><strong>{component.name}</strong><span>{versionModeLabel(t, component.installMode)}</span></div><em>{state}</em></header>\n <div className={css.versionNumbers}><div><small>{t('versions.installed')}</small><code>{component.current ?? '—'}</code></div><span>→</span><div><small>{t('versions.latest')}</small><code>{component.latest ?? '—'}</code></div></div>\n <footer><p>{versionHint(t, component)}</p>{canUpdate && <button type=\"button\" className={css.primaryButton} disabled={busy} onClick={() => void update(component)}>{updating === component.id ? t('versions.updating') : t('versions.update')}</button>}</footer>\n </article>\n })}</div>}\n <div className={css.versionDialogActions}><span>{snapshot === null ? '' : t('versions.checkedAt', { time: new Date(snapshot.checkedAt).toLocaleTimeString() })}</span><div><button type=\"button\" className={css.ghostButton} disabled={busy} onClick={props.onClose}>{t('common.cancel')}</button><button type=\"button\" data-autofocus className={css.secondaryButton} disabled={busy} onClick={() => void check()}>{checking ? t('versions.checkingShort') : t('versions.recheck')}</button></div></div>\n </div>\n </SidebarModal>\n}\n\nfunction StatusPage(props: { client: MnemonClient; status: StatusView | null; loading: boolean; onRefresh: () => void }): JSX.Element {\n const t = useT()\n const [versionsOpen, setVersionsOpen] = useState(false)\n const status = props.status\n const documents = status?.documents\n const catalogKnown = status?.memoryBodies !== undefined\n const memoryBodies = useMemo(() => status?.memoryBodies ?? [], [status])\n const activeBodies = memoryBodies.filter(body => body.active).length\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 ? t('status.nominal') : t('status.checkRequired')} action={<div className={css.statusHeaderActions}><button type=\"button\" className={css.ghostButton} disabled={props.loading} onClick={props.onRefresh}>{props.loading ? t('status.rechecking') : t('status.recheck')}</button><button type=\"button\" className={css.secondaryButton} onClick={() => setVersionsOpen(true)}>{t('versions.checkAction')}</button></div>} />\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 ? status.version === undefined ? t('status.engineConnected') : `Mnemon ${status.version}` : t('status.engineUnavailable')}</strong><p>{status?.dshMnemonVersion === undefined ? t('status.versionWaiting') : `dsh-mnemon ${status.dshMnemonVersion}`}</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 </section>\n\n <StorageDomains catalog={storage} selected={selectedScope} selectedKind={selectedScopeKind} />\n {versionsOpen && <VersionDialog client={props.client} onClose={() => setVersionsOpen(false)} onRefreshStatus={props.onRefresh} />}\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\n/** Resolve the configured scope before the first status round-trip to keep the Sidebar header stable. */\nfunction configuredStorageScope(config: Config | undefined): StorageScopeKind {\n return config?.storageScope ?? (config?.dataDir?.trim() ? 'custom' : 'global')\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.filter(area => area.kind !== 'state').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\nexport function MnemonView(props: MnemonViewProps): JSX.Element {\n const t = props.t ?? translateZh\n const appearance = resolveMnemonViewAppearance(props.surface ?? 'buildin', t)\n return <I18nContext.Provider value={t}><LocaleContext.Provider value={props.locale ?? 'zh'}><MnemonViewAppearanceProvider value={appearance}><MnemonWorkspace {...props} /></MnemonViewAppearanceProvider></LocaleContext.Provider></I18nContext.Provider>\n}\n\nfunction MnemonWorkspace({ connection, settingsScope, sessionId, workspaceId, workspaceSelection, onClose }: MnemonViewProps): JSX.Element {\n const t = useT()\n const appearance = useMnemonViewAppearance()\n const settingsSnapshot = useSyncExternalStore(settingsScope.subscribe, settingsScope.getSnapshot, settingsScope.getSnapshot)\n const client = useMemo(() => new MnemonClient(connection, sessionId, workspaceId), [connection, sessionId, workspaceId])\n const clientContextKey = `${sessionId ?? ''}\\u0000${workspaceId ?? ''}`\n const viewContextKey = `${clientContextKey}\\u0000${settingsSnapshot.revision ?? 'loading'}`\n const [page, setPage] = useState<Page>('status')\n const lastMemoryPage = useRef<SidebarMemoryPage>('overview')\n const canvasRef = useRef<HTMLElement | null>(null)\n\n const selectPage = useCallback((next: Page) => {\n if (isMemoryPage(next)) lastMemoryPage.current = next\n setPage(next)\n }, [])\n const selectPrimaryPage = useCallback((next: Page) => {\n selectPage(appearance.surface === 'sidebar' && next === 'overview' ? lastMemoryPage.current : next)\n }, [appearance.surface, selectPage])\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 // Reset before paint so a newly selected page never flashes at the previous\n // page's scroll offset for one frame. The host still owns every ancestor.\n useLayoutEffect(() => { resetViewportScroll() }, [viewContextKey, page, resetViewportScroll])\n const [statusState, setStatusState] = useState<{ contextKey: string; value: StatusView | null; loading: boolean; error: string | null }>(() => ({ contextKey: viewContextKey, value: null, loading: true, error: null }))\n const currentStatusState = statusState.contextKey === viewContextKey\n ? statusState\n : { contextKey: viewContextKey, value: null, loading: true, error: null }\n const status = currentStatusState.value\n const statusLoading = currentStatusState.loading\n const statusError = currentStatusState.error\n const statusRequest = useRef(0)\n const [revision, setRevision] = useState(0)\n const [searchSeed, setSearchSeed] = useState('')\n const [rememberSeed, setRememberSeed] = useState('')\n const [rememberOpen, setRememberOpen] = useState(false)\n\n // A newly inspected workspace must never inherit visible cards, open editors,\n // search seeds, or scroll position from the previous workspace.\n useLayoutEffect(() => {\n setRememberOpen(false)\n setRememberSeed('')\n setSearchSeed('')\n }, [viewContextKey])\n\n const openRemember = useCallback((seed = '') => {\n setRememberSeed(seed)\n setRememberOpen(true)\n }, [])\n\n /** Conversation surfaces ask this view to open a page (optionally with a seed). */\n const applyAnchor = useCallback((anchor: MnemonAnchor) => {\n if (anchor.page === 'remember' && appearance.surface === 'sidebar') {\n openRemember(anchor.seed ?? '')\n selectPage(lastMemoryPage.current)\n return\n }\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 selectPage(anchor.page)\n }, [appearance.surface, openRemember, selectPage])\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 setStatusState(current => ({ contextKey: viewContextKey, value: current.contextKey === viewContextKey ? current.value : null, loading: true, error: null }))\n try {\n const next = await client.status()\n if (request === statusRequest.current) setStatusState({ contextKey: viewContextKey, value: next, loading: false, error: null })\n } catch (reason) {\n if (request === statusRequest.current) setStatusState({ contextKey: viewContextKey, value: null, loading: false, error: message(reason) })\n }\n }, [client, viewContextKey])\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); selectPage('explore') }, [selectPage])\n const clone = useCallback((insight: Insight) => {\n if (appearance.surface === 'sidebar') openRemember(insight.content)\n else { setRememberSeed(insight.content); selectPage('remember') }\n }, [appearance.surface, openRemember, selectPage])\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 storageMode = workspaceContext?.mode ?? status?.storage?.activeKind ?? configuredStorageScope(settingsSnapshot.value)\n const storageModeText = storageScopeLabel(t, storageMode)\n const showWorkspacePicker = storageMode === 'workspace' && workspaceSelection !== undefined && workspaceSelection.options.length > 0\n const workspaceDiverged = workspaceContext?.mode === 'workspace' && !workspaceContext.aligned\n const canAlignWorkspace = workspaceDiverged && workspaceSelection?.effectiveWorkspaceId !== undefined\n const workspaceDifference = workspaceContext === undefined\n ? ''\n : `${t('workspace.selectedRoot', { root: workspaceContext.selectedRoot })}; ${t('workspace.effectiveRoot', { root: workspaceContext.effectiveRoot })}`\n const workspacePicker = showWorkspacePicker && <label className={appearanceClass(css.workspacePicker, appearance.classes.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>\n const connectionLabel = statusLoading\n ? t('header.checking')\n : status?.healthy !== true\n ? t('header.unavailable')\n : appearance.surface === 'sidebar'\n ? t('header.connected')\n : catalogKnown\n ? t('header.connectedWithCount', { count: activeBodies })\n : t('header.directoryPending')\n\n return (\n <main className={appearanceClass(css.shell, appearance.classes.shell)} data-mnemon-surface={appearance.surface}>\n <header className={appearanceClass(css.masthead, appearance.classes.masthead)}>\n {appearance.surface === 'sidebar' && onClose !== undefined && <button type=\"button\" className={appearanceClass(css.ghostButton, css.backButton)} onClick={onClose} aria-label={t('header.backToConversation')}><IconChevronLeftOutline14 size={14} /><span>{t('header.backToConversation')}</span></button>}\n <div className={appearanceClass(css.brand, appearance.classes.brand)}>\n {appearance.showLogo && <MnemonLogo className={css.brandLogo} />}\n <h1>{appearance.title}</h1>\n {appearance.surface === 'sidebar' && <span className={css.storageMode} aria-label={t('workspace.storageModeAria', { mode: storageModeText })}><span>{t('workspace.storageMode')}</span><strong>{storageModeText}</strong></span>}\n {appearance.surface === 'sidebar' && workspacePicker}\n {appearance.surface === 'sidebar' && canAlignWorkspace && <div className={appearanceClass(css.workspaceMismatch, appearance.classes.workspaceMismatch)} role=\"status\" aria-label={`${t('workspace.mismatchTitle')}. ${workspaceDifference}`} title={workspaceDifference}><span>{t('workspace.mismatchShort')}</span><button type=\"button\" onClick={workspaceSelection.onAlign}>{t('workspace.align')}</button></div>}\n </div>\n {appearance.showTelemetry && <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={appearanceClass(css.headerActions, appearance.classes.headerActions)}>{appearance.surface === 'buildin' && workspacePicker}<div className={appearanceClass(css.statusCluster, appearance.classes.statusCluster)}><span className={`${css.statusDot} ${statusLoading && status === null ? css.checking : status?.healthy === true ? css.online : css.offline}`} /><span>{connectionLabel}</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 {appearance.surface === 'buildin' && workspaceDiverged && <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>{canAlignWorkspace && <button type=\"button\" className={css.secondaryButton} onClick={workspaceSelection.onAlign}>{t('workspace.align')}</button>}</div>}\n <div className={css.workspace}>\n <WorkspaceNavigation page={page} onSelect={selectPrimaryPage} activeBodies={activeBodies} bodyCount={memoryBodies.length} catalogKnown={catalogKnown} writeEnabled={writeEnabled} />\n <MemoryNavigation page={page} writeEnabled={writeEnabled} onSelect={selectPage} onRemember={() => openRemember()} />\n <section key={viewContextKey} className={appearanceClass(css.canvas, appearance.classes.canvas)} ref={canvasRef} data-testid=\"mnemon-canvas\" data-lock-page-header={!isMemoryPage(page) ? '' : undefined}>\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' && appearance.surface === 'buildin' && <RememberPage client={client} sessionId={sessionId} memoryBodies={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 client={client} status={status} loading={statusLoading} onRefresh={() => void loadStatus()} />}\n </section>\n {appearance.surface === 'sidebar' && rememberOpen && <RememberPage client={client} sessionId={sessionId} memoryBodies={memoryBodies} writeEnabled={writeEnabled} seed={rememberSeed} onMutate={mutate} onClose={() => setRememberOpen(false)} onComplete={() => setRememberOpen(false)} />}\n </div>\n </main>\n )\n}\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, type MnemonAnchorPage } 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/** Route a settled tool name to the workbench page that explains its effect. */\nexport function memoryPageForTool(name: string): MnemonAnchorPage {\n if (name === 'mnemon_document_search' || name === 'mnemon_document_manage') return 'documents'\n if (name === 'mnemon_runtime_memory') return 'runtime'\n if (name === 'mnemon_recall' || name === 'mnemon_related') return 'explore'\n if (name === 'mnemon_status') return 'status'\n return 'overview'\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 openTool = (name: string, event: ReactMouseEvent): void => {\n event.stopPropagation()\n dispatchMnemonAnchor({ page: memoryPageForTool(name), ...(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) => (\n <button\n key={`${name}-${index}`}\n type=\"button\"\n className={css.toolChip}\n aria-label={t('turnTail.openTool', { tool: name })}\n onClick={event => openTool(name, event)}\n >\n {name}\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n})\n","import { memo, useEffect, useRef, useState, type JSX } from 'react'\nimport { Button, IconDataOutline16, Modal, Tooltip } from '@deepseek-ai/dsh-client-ui-primitives'\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 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 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 className={css.wrap}>\n <Tooltip label={t('saveAction.tooltip')} side=\"bottom\" disabled={open}>\n <button\n type=\"button\"\n className={css.button}\n aria-label={t('saveAction.button')}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n onClick={() => setPanelOpen(!openRef.current)}\n >\n <IconDataOutline16 size={16} className={css.icon} />\n </button>\n </Tooltip>\n <Modal\n open={open}\n onClose={() => setPanelOpen(false)}\n title={t('saveAction.title')}\n closeLabel={t('saveAction.close')}\n description={t('saveAction.hint')}\n className={css.modal as string}\n contentClassName={css.modalContent as string}\n footer={(\n <>\n <Button variant=\"outline\" className={css.modalAction} disabled={submitting} onClick={() => setPanelOpen(false)}>\n {t('common.cancel')}\n </Button>\n <Button\n variant=\"primary\"\n className={css.modalAction}\n disabled={candidate === undefined || submitting || writeEnabled !== true}\n onClick={submit}\n >\n {submitting ? t('saveAction.submitting') : t('saveAction.submit')}\n </Button>\n </>\n )}\n >\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={12} defaultValue={candidate} autoFocus />\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 </Modal>\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. */\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(\n controller: MnemonWorkspaceController,\n t: MnemonTranslate,\n subscribeLocale?: (listener: () => void) => () => void,\n): () => 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 const unsubscribeLocale = subscribeLocale?.(syncLabel) ?? (() => {})\n syncActive()\n tryPlace()\n\n return () => {\n waitObserver.disconnect()\n rootObserver.disconnect()\n unsubscribe()\n unsubscribeLocale()\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 { useCallback, 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 onClose: () => void\n}\n\nfunction MnemonPanel({ ctx, settings, t, onClose }: MnemonPanelProps): JSX.Element {\n const subscribeLocale = useCallback((listener: () => void) => ctx.locale.subscribe(listener), [ctx.locale])\n const getLocaleSnapshot = useCallback(() => ctx.locale.getSnapshot(), [ctx.locale])\n const locale = useSyncExternalStore(subscribeLocale, getLocaleSnapshot, getLocaleSnapshot)\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} surface=\"sidebar\" t={t} locale={locale.active} onClose={onClose} />\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} onClose={() => { controller.close() }} />)\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, listener => ctx.locale.subscribe(listener))\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 { MnemonTurnTail, selectMnemonTurnTail } from './MnemonTurnTail.tsx'\nimport { MnemonSaveAction } from './MnemonSaveAction.tsx'\nimport { MNEMON_ANCHOR_EVENT } from './anchor.ts'\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 = '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<'turnBar' | 'saveAction', InteractionUnit> = {\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/** Ready snapshots default each interaction on; loading has no value and mounts nothing. */\nfunction enabledOf(value: unknown, key: 'turnBar' | 'saveAction'): boolean {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return false\n return (value as Partial<Record<typeof key, boolean>>)[key] !== false\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 const disposeView = 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>; surface: 'buildin'; t: (key: MnemonKey, params?: Record<string, unknown>) => string; locale: 'zh' | 'en' } => ({\n connection: ctx.connection,\n settingsScope: settings,\n surface: 'buildin',\n t: translate,\n locale: ctx.locale.getSnapshot().active,\n }),\n }, MnemonView))\n if (typeof window === 'undefined' || typeof document === 'undefined') return disposeView\n const openBuildinView = (): void => {\n const label = translate('tab.label').trim()\n const tab = [...document.querySelectorAll<HTMLElement>('[role=\"tab\"]')]\n .find(candidate => candidate.textContent?.trim() === label)\n tab?.click()\n }\n window.addEventListener(MNEMON_ANCHOR_EVENT, openBuildinView)\n return () => {\n window.removeEventListener(MNEMON_ANCHOR_EVENT, openBuildinView)\n disposeView()\n }\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 default on and are 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,15],"mappings":"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"}
1
+ {"version":3,"file":"client.js","names":["useMemo","useRef","useState","css","useMemo","useSyncExternalStore","useState","css","m","r","sidebarCss","createContext","useContext","createContext","useContext","css","useRef","useCallback","Fragment","Markdown","useState","useMemo","useSyncExternalStore","IconChevronLeftOutline14","memo","useState","css","memo","useState","useRef","css","Tooltip","IconDataOutline16","Modal","Button","css","useCallback","useSyncExternalStore","useState","useMemo","css","createRoot"],"sources":["../src/settings.ts","../src/client/locales.ts","../src/channels.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/service.ts","../src/client/MnemonLogo.tsx","../src/client/MnemonViewAppearance.tsx","../src/client/MnemonView.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', 'turnBar'],\n ['conversationInteraction', 'saveAction'],\n]\n\nconst UI_FIELDS = ['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.memory.aria': '记忆体页面',\n 'nav.overview': '概览',\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.rememberAction': '沉淀记忆',\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 'common.showing': '当前显示 {visible} / {total}',\n 'common.showMore': '再显示 {count} 条',\n 'header.backToConversation': '返回会话',\n 'header.checking': '检查中',\n 'header.connected': '已连接',\n 'header.connectedWithCount': '已连接 · {count} 个已激活',\n 'header.directoryPending': '已连接 · 目录待同步',\n 'header.unavailable': '不可用',\n 'header.notReady': 'Mnemon 尚未就绪',\n 'workspace.viewing': '查看工作区',\n 'workspace.selectorAria': '选择要查看的记忆工作区',\n 'workspace.storageMode': '存储位置',\n 'workspace.storageModeAria': '存储位置模式:{mode}',\n 'workspace.mismatchTitle': '查看目录与当前会话未对齐',\n 'workspace.mismatchShort': '非对话工作区',\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.pageDescription': '查看目录配置、存储状态以及所有已激活记忆体的实时关联图谱。',\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.createTitle': '创建记忆体',\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.deleteBody': '删除',\n 'overview.deleteBodyAria': '删除{name}',\n 'overview.deleteTitle': '删除“{name}”?',\n 'overview.deleteWarning': '该操作会永久删除这个记忆体及其中的全部记忆与关系,无法撤销。',\n 'overview.deleteAction': '确认删除',\n 'overview.deletingBody': '删除中…',\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.entriesAria': '运行时记忆列表',\n 'runtime.scopeAria': '运行时记忆范围',\n 'runtime.scopeAll': '全部',\n 'runtime.filterAria': '筛选运行时记忆',\n 'runtime.filterPlaceholder': '按内容筛选…',\n 'runtime.noMatch': '没有符合当前范围与查询条件的热记忆。',\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.addButton': '添加记忆',\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.removeTitle': '移除运行时记忆?',\n 'runtime.removeWarning': '移除后,这条内容将不再随每轮上下文加载。该操作无法撤销。',\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 '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.openTool': '打开 {tool} 对应的记忆页面',\n 'saveAction.button': '存入记忆',\n 'saveAction.tooltip': '将这条回复存入记忆',\n 'saveAction.title': '确认存入记忆',\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 引擎、三层存储和当前读写目录;连接配置由 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 'versions.checkAction': '检查版本',\n 'versions.title': '检查与更新版本',\n 'versions.description': '检查 Mnemon CLI 与 dsh-mnemon;只有识别到受支持的安装方式时才会提供更新操作。',\n 'versions.checking': '正在检查远程仓库中的新版本…',\n 'versions.checkingShort': '检查中…',\n 'versions.recheck': '重新检查',\n 'versions.failed': '版本操作失败',\n 'versions.timeout': '版本检查超时,请检查网络后重试。',\n 'versions.current': '已是最新',\n 'versions.available': '可更新',\n 'versions.unknown': '无法确认',\n 'versions.installed': '当前版本',\n 'versions.latest': '最新版本',\n 'versions.executable': '可执行文件',\n 'versions.profileLocation': 'Profile · {name}',\n 'versions.sourceLocation': '源码',\n 'versions.linkSourceLocation': '源码 · Profile {name}',\n 'versions.packageLocation': '包目录',\n 'versions.update': '更新',\n 'versions.updating': '更新中…',\n 'versions.updated': '{name} 已更新',\n 'versions.alreadyCurrent': '当前已经是最新版本',\n 'versions.restartRequired': '请重启 dsh web,以加载新的 dsh-mnemon 插件代码。',\n 'versions.checkedAt': '检查于 {time}',\n 'versions.latestUnavailable': '暂时无法读取远程最新版本;请检查网络后重试。',\n 'versions.modeHomebrew': 'Homebrew',\n 'versions.modeGo': 'Go 安装',\n 'versions.modeNpm': 'DSH Profile',\n 'versions.modeLink': '本地 Link',\n 'versions.modeManual': '手工安装',\n 'versions.modeMissing': '未安装',\n 'versions.hintHomebrew': '由 Homebrew 管理;发现新版本时可在此安全更新。',\n 'versions.hintBrewMissing': '检测到 Homebrew 安装,但当前找不到 brew 命令。',\n 'versions.hintGo': '由 go install 管理;发现新版本时可在此安全更新。',\n 'versions.hintPnpm': '由当前 DSH Profile 管理;更新后需要重启 dsh web。',\n 'versions.hintPnpmMissing': '检测到 DSH Profile 安装,但当前找不到 pnpm 命令。',\n 'versions.hintLink': '当前为本地 Link 开发版本;请在源码目录拉取并构建,避免覆盖本地修改。',\n 'versions.hintInstall': '未找到 Mnemon CLI;请先安装并确保 mnemon 位于 PATH,或设置 MNEMON_CLI_PATH / mnemon.cliPath。',\n 'versions.hintManual': '无法安全识别安装来源;请沿用原安装方式手工更新。',\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.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 '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.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.memory.aria': 'Memory Space pages',\n 'nav.overview': 'Overview',\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.rememberAction': 'Remember',\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 'common.showing': 'Showing {visible} / {total}',\n 'common.showMore': 'Show {count} more',\n 'header.backToConversation': 'Back to chat',\n 'header.checking': 'Checking',\n 'header.connected': 'Connected',\n 'header.connectedWithCount': '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.storageMode': 'Storage',\n 'workspace.storageModeAria': 'Storage location mode: {mode}',\n 'workspace.mismatchTitle': 'The inspected directory is not aligned with this session',\n 'workspace.mismatchShort': 'Not conversation workspace',\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 to conversation',\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.pageDescription': 'Inspect directory settings, storage health, and the live relation graph for every active Memory Space.',\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.createTitle': 'Create 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.deleteBody': 'Delete',\n 'overview.deleteBodyAria': 'Delete {name}',\n 'overview.deleteTitle': 'Delete “{name}”?',\n 'overview.deleteWarning': 'This permanently deletes the Memory Space and every memory and relation it contains. This cannot be undone.',\n 'overview.deleteAction': 'Delete permanently',\n 'overview.deletingBody': 'Deleting…',\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.entriesAria': 'Runtime memory list',\n 'runtime.scopeAria': 'Runtime memory scope',\n 'runtime.scopeAll': 'All',\n 'runtime.filterAria': 'Filter runtime memory',\n 'runtime.filterPlaceholder': 'Filter by content…',\n 'runtime.noMatch': 'No hot memory matches the current scope and query.',\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.addButton': 'Add memory',\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.removeTitle': 'Remove runtime memory?',\n 'runtime.removeWarning': 'After removal, this content will no longer load with every turn. This action cannot be undone.',\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 '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.openTool': 'Open the Memory page for {tool}',\n 'saveAction.button': 'Save to memory',\n 'saveAction.tooltip': 'Save this reply to memory',\n 'saveAction.title': 'Confirm save to memory',\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': 'Confirm and 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': 'Close',\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, three-tier storage, and the current read/write root. 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 'versions.checkAction': 'Check versions',\n 'versions.title': 'Check and update versions',\n 'versions.description': 'Check Mnemon CLI and dsh-mnemon. Updates are offered only for a recognized, supported installation.',\n 'versions.checking': 'Checking remote repositories for new versions…',\n 'versions.checkingShort': 'Checking…',\n 'versions.recheck': 'Check again',\n 'versions.failed': 'Version operation failed',\n 'versions.timeout': 'The version check timed out. Check the network and try again.',\n 'versions.current': 'Up to date',\n 'versions.available': 'Update available',\n 'versions.unknown': 'Cannot verify',\n 'versions.installed': 'Installed',\n 'versions.latest': 'Latest',\n 'versions.executable': 'Executable',\n 'versions.profileLocation': 'Profile · {name}',\n 'versions.sourceLocation': 'Source',\n 'versions.linkSourceLocation': 'Source · Profile {name}',\n 'versions.packageLocation': 'Package directory',\n 'versions.update': 'Update',\n 'versions.updating': 'Updating…',\n 'versions.updated': '{name} updated',\n 'versions.alreadyCurrent': 'Already on the latest version',\n 'versions.restartRequired': 'Restart dsh web to load the new dsh-mnemon plugin code.',\n 'versions.checkedAt': 'Checked at {time}',\n 'versions.latestUnavailable': 'The remote latest version is unavailable. Check the network and try again.',\n 'versions.modeHomebrew': 'Homebrew',\n 'versions.modeGo': 'Go install',\n 'versions.modeNpm': 'DSH Profile',\n 'versions.modeLink': 'Local link',\n 'versions.modeManual': 'Manual',\n 'versions.modeMissing': 'Missing',\n 'versions.hintHomebrew': 'Managed by Homebrew; an available release can be safely updated here.',\n 'versions.hintBrewMissing': 'A Homebrew installation was detected, but the brew command is unavailable.',\n 'versions.hintGo': 'Managed by go install; an available release can be safely updated here.',\n 'versions.hintPnpm': 'Managed by the current DSH Profile; restart dsh web after updating.',\n 'versions.hintPnpmMissing': 'A DSH Profile installation was detected, but the pnpm command is unavailable.',\n 'versions.hintLink': 'This is a local linked development build. Pull and build in the source directory to preserve local changes.',\n 'versions.hintInstall': 'Mnemon CLI was not found. Install it and place mnemon on PATH, or set MNEMON_CLI_PATH / mnemon.cliPath.',\n 'versions.hintManual': 'The installation source cannot be identified safely. Update it using the original installation method.',\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.storageDomains': 'Storage Domains',\n 'status.storageDomainsText': 'The current selection is the shared directory boundary for runtime memory, Memory Spaces, and project Documents.',\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 '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.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","export const MNEMON_READ_CHANNEL = '/dsh-mnemon-read'\nexport const MNEMON_WRITE_CHANNEL = '/dsh-mnemon-write'\nexport const MNEMON_PACK_CHANNEL = '/dsh-mnemon-pack'\n","import type { ClientConnectionHandle } from '../contracts.ts'\nimport { MNEMON_PACK_CHANNEL, MNEMON_READ_CHANNEL, MNEMON_WRITE_CHANNEL } from '../channels.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'\nimport type { VersionComponentId, VersionStatus, VersionUpdateResult } from '../version-updates.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 versions(): Promise<VersionStatus> {\n return this.call(MNEMON_READ_CHANNEL, 'versions', {})\n }\n\n updateVersion(component: VersionComponentId): Promise<VersionUpdateResult> {\n return this.call(MNEMON_WRITE_CHANNEL, 'version-update', { component })\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 deleteBody(memoryBodyId: string): Promise<MemoryBody> {\n return this.call(MNEMON_WRITE_CHANNEL, 'body-delete', this.scoped({ memoryBodyId }))\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 = '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[] = ['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 turnBar: value?.turnBar !== false,\n saveAction: value?.saveAction !== false,\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-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 * (turnTail bar and 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","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 dshMnemonVersion?: 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 deleteBody(id: string, signal?: AbortSignal): Promise<MemoryBody> {\n this.assertWritable()\n return this.memoryBodies.remove(id, signal)\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, useContext } from 'react'\nimport type { MnemonTranslate } from './locales.ts'\nimport sidebarCss from './MnemonSidebarView.module.css'\n\nexport type MnemonViewSurface = 'buildin' | 'sidebar'\n\ntype AppearanceSlot =\n | 'shell'\n | 'masthead'\n | 'brand'\n | 'headerActions'\n | 'workspacePicker'\n | 'statusCluster'\n | 'workspaceMismatch'\n | 'topNavigation'\n | 'nav'\n | 'navGroup'\n | 'memoryWorkspace'\n | 'memoryNavigation'\n | 'memoryTabs'\n | 'memoryWriteButton'\n | 'bodyCardHeader'\n | 'bodyDirectoryActions'\n | 'bodyCardIdentity'\n | 'bodyCardMeta'\n | 'bodyCardFooter'\n | 'bodyCardStats'\n | 'itemActionButton'\n | 'itemEditAction'\n | 'itemDangerAction'\n | 'modalBackdrop'\n | 'modal'\n | 'canvas'\n | 'pageHeader'\n | 'inspectorGlyph'\n\nexport interface MnemonViewAppearance {\n surface: MnemonViewSurface\n title: string\n showLogo: boolean\n showTelemetry: boolean\n showNavigationGlyphs: boolean\n showNavigationDetails: boolean\n showNavigationDividers: boolean\n showSpaceSummary: boolean\n classes: Partial<Record<AppearanceSlot, string | undefined>>\n}\n\nconst buildinAppearance: MnemonViewAppearance = {\n surface: 'buildin',\n title: 'Mnemon',\n showLogo: true,\n showTelemetry: true,\n showNavigationGlyphs: true,\n showNavigationDetails: true,\n showNavigationDividers: true,\n showSpaceSummary: true,\n classes: {},\n}\n\n/** Appearance is a surface concern; every data flow and workspace action stays shared. */\nexport function resolveMnemonViewAppearance(surface: MnemonViewSurface, t: MnemonTranslate): MnemonViewAppearance {\n if (surface === 'buildin') return buildinAppearance\n return {\n surface: 'sidebar',\n title: t('tab.label'),\n showLogo: false,\n showTelemetry: false,\n showNavigationGlyphs: false,\n showNavigationDetails: false,\n showNavigationDividers: false,\n showSpaceSummary: false,\n classes: {\n shell: sidebarCss.shell,\n masthead: sidebarCss.masthead,\n brand: sidebarCss.brand,\n headerActions: sidebarCss.headerActions,\n workspacePicker: sidebarCss.workspacePicker,\n statusCluster: sidebarCss.statusCluster,\n workspaceMismatch: sidebarCss.workspaceMismatch,\n topNavigation: sidebarCss.topNavigation,\n nav: sidebarCss.nav,\n navGroup: sidebarCss.navGroup,\n memoryWorkspace: sidebarCss.memoryWorkspace,\n memoryNavigation: sidebarCss.memoryNavigation,\n memoryTabs: sidebarCss.memoryTabs,\n memoryWriteButton: sidebarCss.memoryWriteButton,\n bodyCardHeader: sidebarCss.bodyCardHeader,\n bodyDirectoryActions: sidebarCss.bodyDirectoryActions,\n bodyCardIdentity: sidebarCss.bodyCardIdentity,\n bodyCardMeta: sidebarCss.bodyCardMeta,\n bodyCardFooter: sidebarCss.bodyCardFooter,\n bodyCardStats: sidebarCss.bodyCardStats,\n itemActionButton: sidebarCss.itemActionButton,\n itemEditAction: sidebarCss.itemEditAction,\n itemDangerAction: sidebarCss.itemDangerAction,\n modalBackdrop: sidebarCss.modalBackdrop,\n modal: sidebarCss.modal,\n canvas: sidebarCss.canvas,\n pageHeader: sidebarCss.pageHeader,\n inspectorGlyph: sidebarCss.inspectorGlyph,\n },\n }\n}\n\nconst AppearanceContext = createContext<MnemonViewAppearance>(buildinAppearance)\n\nexport const MnemonViewAppearanceProvider = AppearanceContext.Provider\n\nexport function useMnemonViewAppearance(): MnemonViewAppearance {\n return useContext(AppearanceContext)\n}\n\nexport function appearanceClass(base: string | undefined, variant: string | undefined): string {\n return [base, variant].filter((value): value is string => value !== undefined && value !== '').join(' ')\n}\n","import { createContext, Fragment, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore, type FormEvent, type PointerEvent as ReactPointerEvent, type ReactNode } from 'react'\nimport { IconChevronLeftOutline14 } from '@deepseek-ai/dsh-client-ui-primitives'\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 type { RuntimeMemoryEntry, RuntimeMemoryImportance, RuntimeMemorySnapshot, RuntimeMemoryTarget } from '../runtime-memory.ts'\nimport type { StorageAreaInventory, StorageScopeInventory, StorageScopeKind } from '../storage-scope.ts'\nimport type { VersionComponentStatus, VersionInstallMode, VersionStatus, VersionUpdateResult } from '../version-updates.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 {\n appearanceClass,\n MnemonViewAppearanceProvider,\n resolveMnemonViewAppearance,\n useMnemonViewAppearance,\n type MnemonViewSurface,\n} from './MnemonViewAppearance.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 surface?: MnemonViewSurface\n t?: MnemonTranslate\n locale?: 'zh' | 'en'\n onClose?: () => void\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'\ntype SidebarMemoryPage = Extract<Page, 'overview' | 'explore' | 'list' | 'entities'>\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 SIDEBAR_PAGE_TABS: NavEntry[] = [\n { id: 'status', label: 'nav.status', detail: 'nav.status.detail', glyph: '⌘' },\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\nconst MEMORY_PAGE_TABS: Array<{ id: SidebarMemoryPage; label: MnemonKey }> = [\n { id: 'overview', label: 'nav.overview' },\n { id: 'explore', label: 'nav.search' },\n { id: 'list', label: 'nav.content' },\n { id: 'entities', label: 'nav.entities' },\n]\n\nconst MEMORY_PAGES = new Set<Page>(MEMORY_PAGE_TABS.map(item => item.id))\n\nfunction isMemoryPage(page: Page): page is SidebarMemoryPage {\n return MEMORY_PAGES.has(page)\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)\nconst LocaleContext = createContext<'zh' | 'en'>('zh')\nfunction useT(): MnemonTranslate { return useContext(I18nContext) }\nfunction useLocale(): string { return useContext(LocaleContext) === 'en' ? 'en-US' : 'zh-CN' }\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 const appearance = useMnemonViewAppearance()\n return (\n <div className={appearanceClass(css.pageHeader, appearance.classes.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 ProgressiveFooter(props: { visible: number; total: number; pageSize: number; compact?: boolean; onMore: () => void }): JSX.Element | null {\n const t = useT()\n if (props.total === 0) return null\n const remaining = Math.max(0, props.total - props.visible)\n return <div className={props.compact === true ? css.compactListProgress : css.listProgress}><span>{t('common.showing', { visible: props.visible, total: props.total })}</span>{remaining > 0 && <button type=\"button\" className={css.secondaryButton} onClick={props.onMore}>{t('common.showMore', { count: Math.min(props.pageSize, remaining) })}</button>}</div>\n}\n\n/** DSH-style action dialog shared by Sidebar add/write flows. */\nfunction SidebarModal(props: { title: string; description?: string; busy?: boolean; onClose: () => void; children: ReactNode }): JSX.Element {\n const t = useT()\n const appearance = useMnemonViewAppearance()\n const dialogRef = useRef<HTMLElement | null>(null)\n const returnFocusRef = useRef<HTMLElement | null>(null)\n const close = useCallback(() => { if (props.busy !== true) props.onClose() }, [props.busy, props.onClose])\n useLayoutEffect(() => {\n returnFocusRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null\n const firstControl = dialogRef.current?.querySelector<HTMLElement>('[data-autofocus]')\n ?? dialogRef.current?.querySelector<HTMLElement>('input:not(:disabled), textarea:not(:disabled), select:not(:disabled)')\n ?? dialogRef.current?.querySelector<HTMLElement>('div:last-child button:not(:disabled)')\n firstControl?.focus({ preventScroll: true })\n return () => { if (returnFocusRef.current?.isConnected === true) returnFocusRef.current.focus({ preventScroll: true }) }\n }, [])\n useEffect(() => {\n const onKey = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n event.preventDefault()\n close()\n return\n }\n if (event.key !== 'Tab') return\n const controls = Array.from(dialogRef.current?.querySelectorAll<HTMLElement>('button:not(:disabled), input:not(:disabled), textarea:not(:disabled), select:not(:disabled), a[href], [tabindex]:not([tabindex=\"-1\"])') ?? []).filter(control => control.getAttribute('aria-hidden') !== 'true')\n const first = controls[0]\n const last = controls.at(-1)\n if (first === undefined || last === undefined) {\n event.preventDefault()\n return\n }\n const active = document.activeElement\n if (event.shiftKey && (active === first || !dialogRef.current?.contains(active))) {\n event.preventDefault(); last.focus()\n } else if (!event.shiftKey && (active === last || !dialogRef.current?.contains(active))) {\n event.preventDefault(); first.focus()\n }\n }\n window.addEventListener('keydown', onKey)\n return () => window.removeEventListener('keydown', onKey)\n }, [close])\n return (\n <div className={appearanceClass(css.modalBackdrop, appearance.classes.modalBackdrop)} onPointerDown={event => { if (event.target === event.currentTarget) close() }}>\n <section ref={dialogRef} className={appearanceClass(css.modal, appearance.classes.modal)} role=\"dialog\" aria-modal=\"true\" aria-label={props.title}>\n <header><div><h2>{props.title}</h2>{props.description !== undefined && <p>{props.description}</p>}</div><button type=\"button\" className={css.iconButton} disabled={props.busy} onClick={close} aria-label={t('common.cancel')}>×</button></header>\n <div>{props.children}</div>\n </section>\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/** Sidebar mirrors the SSH panel's flat tab model; Buildin keeps the grouped navigation unchanged. */\nfunction WorkspaceNavigation(props: { page: Page; onSelect: (page: Page) => void; activeBodies: number; bodyCount: number; catalogKnown: boolean; writeEnabled: boolean }): JSX.Element {\n const t = useT()\n const appearance = useMnemonViewAppearance()\n return (\n <div className={appearanceClass(css.topNavigation, appearance.classes.topNavigation)}>\n {appearance.surface === 'sidebar'\n ? <div className={appearanceClass(css.nav, appearance.classes.nav)} role=\"tablist\" aria-label={t('nav.aria')}>\n {SIDEBAR_PAGE_TABS.map(item => {\n const active = item.id === 'overview' ? isMemoryPage(props.page) : props.page === item.id\n return <button key={item.id} type=\"button\" role=\"tab\" aria-selected={active} data-active={active ? '' : undefined} onClick={() => props.onSelect(item.id)}>{t(item.label)}</button>\n })}\n </div>\n : <nav className={appearanceClass(css.nav, appearance.classes.nav)} aria-label={t('nav.aria')}>\n {PAGE_NAV.map((group, groupIndex) => <Fragment key={group.aria}><div className={appearanceClass(css.navGroup, appearance.classes.navGroup)} role=\"group\" aria-label={t(group.aria)}>{group.entries.map(item => <button key={item.id} type=\"button\" aria-current={props.page === item.id ? 'page' : undefined} onClick={() => props.onSelect(item.id)}>{appearance.showNavigationGlyphs && <span className={css.navGlyph} aria-hidden=\"true\">{item.glyph}</span>}<span><strong>{t(item.label)}</strong>{appearance.showNavigationDetails && <small>{t(item.detail)}</small>}</span></button>)}</div>{appearance.showNavigationDividers && groupIndex < PAGE_NAV.length - 1 && <span className={css.navGroupDivider} aria-hidden=\"true\" />}</Fragment>)}\n </nav>}\n {appearance.showSpaceSummary && <div className={css.spaceSummary}><span>{t('sidebar.activeSpaces')}</span><code>{props.catalogKnown ? `${props.activeBodies} / ${props.bodyCount}` : '— / —'}</code><small>{props.writeEnabled ? t('common.agentSupervised') : t('common.readOnly')}</small></div>}\n </div>\n )\n}\n\n/** Memory tools become a focused second-level tab set on the Sidebar surface. */\nfunction MemoryNavigation(props: { page: Page; writeEnabled: boolean; onSelect: (page: SidebarMemoryPage) => void; onRemember: () => void }): JSX.Element | null {\n const t = useT()\n const appearance = useMnemonViewAppearance()\n if (appearance.surface !== 'sidebar' || !isMemoryPage(props.page)) return null\n return (\n <section className={appearance.classes.memoryWorkspace}>\n <PageHeader title={t('nav.bodies')} description={t('overview.description')} action={<button type=\"button\" className={appearanceClass(css.primaryButton, appearance.classes.memoryWriteButton)} disabled={!props.writeEnabled} onClick={props.onRemember}>{t('nav.rememberAction')}</button>} />\n <div className={appearance.classes.memoryNavigation}>\n <div className={appearance.classes.memoryTabs} role=\"tablist\" aria-label={t('nav.memory.aria')}>\n {MEMORY_PAGE_TABS.map(item => {\n const active = props.page === item.id\n return <button key={item.id} type=\"button\" role=\"tab\" aria-selected={active} data-active={active ? '' : undefined} onClick={() => props.onSelect(item.id)}>{t(item.label)}</button>\n })}\n </div>\n </div>\n </section>\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 appearance = useMnemonViewAppearance()\n const [confirming, setConfirming] = useState(false)\n const [forgetting, setForgetting] = useState(false)\n const { insight } = props\n const neutralActionClass = appearance.surface === 'sidebar'\n ? appearanceClass(css.ghostButton, appearance.classes.itemActionButton)\n : css.ghostButton\n const forgetActionClass = appearance.surface === 'sidebar'\n ? appearanceClass(css.dangerButton, appearanceClass(appearance.classes.itemActionButton, appearance.classes.itemDangerAction))\n : css.dangerButton\n const inlineConfirming = appearance.surface === 'buildin' && confirming\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 <>\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 {inlineConfirming ? (\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={neutralActionClass} onClick={() => props.onRelated?.(insight)}>{t('card.related')}</button>}\n {props.onClone !== undefined && <button type=\"button\" className={neutralActionClass} onClick={() => props.onClone?.(insight)}>{t('card.clone')}</button>}\n <button type=\"button\" className={neutralActionClass} onClick={() => void navigator.clipboard?.writeText(insight.id)}>{t('common.copyId')}</button>\n {props.writeEnabled && <button type=\"button\" className={forgetActionClass} onClick={() => setConfirming(true)}>{t('card.forget')}</button>}\n </>\n )}\n </div>\n </article>\n {appearance.surface === 'sidebar' && confirming && <SidebarModal title={t('card.confirmText')} description={`${insight.memoryBodyName ?? insight.memoryBodyId ?? ''}${insight.memoryBodyName === undefined && insight.memoryBodyId === undefined ? '' : ' · '}${insight.id}`} busy={forgetting} onClose={() => setConfirming(false)}><div className={css.bodyDeleteConfirm}><div className={css.bodyDeleteSummary}><p className={css.bodyDeleteContent}>{insight.content}</p><span>{meta.join(' · ')}</span></div><div className={css.bodyEditActions}><button type=\"button\" data-autofocus className={css.ghostButton} disabled={forgetting} onClick={() => setConfirming(false)}>{t('common.cancel')}</button><button type=\"button\" className={css.dangerSolidButton} disabled={forgetting} onClick={() => void forget()}>{forgetting ? t('card.processing') : t('card.confirmForget')}</button></div></div></SidebarModal>}\n </>\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 locale = useLocale()\n const appearance = useMnemonViewAppearance()\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 [creatingBodyOpen, setCreatingBodyOpen] = 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 [confirmingDeleteBody, setConfirmingDeleteBody] = useState<string | null>(null)\n const [deletingBody, setDeletingBody] = 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 if (appearance.surface === 'sidebar') setCreatingBodyOpen(false)\n await load(true)\n props.onMutate()\n } catch (reason) { setError(message(reason)) } finally { setCreating(false) }\n }\n\n const deleteBody = async (body: MemoryBodyView) => {\n setDeletingBody(body.id); setError(null)\n try {\n await props.client.deleteBody(body.id)\n setConfirmingDeleteBody(null)\n await load(true)\n props.onMutate()\n } catch (reason) { setError(message(reason)) } finally { setDeletingBody(null) }\n }\n\n const generated = graph === null ? t('overview.waitingSnapshot') : t('overview.updatedAt', { time: new Date(graph.generatedAt).toLocaleTimeString(locale, { 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 const editingBodyView = editingBody === null ? undefined : catalog?.items.find(body => body.id === editingBody)\n const deletingBodyView = confirmingDeleteBody === null ? undefined : catalog?.items.find(body => body.id === confirmingDeleteBody)\n const bodyEditForm = (body: MemoryBodyView) => <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={4} maxLength={1000} /></label>\n <div className={css.bodyEditActions}>{appearance.surface === 'sidebar' && <button type=\"button\" className={css.ghostButton} disabled={savingBody === body.id} onClick={() => setEditingBody(null)}>{t('common.cancel')}</button>}<button type=\"submit\" className={css.primaryButton} disabled={savingBody === body.id || editName.trim() === ''}>{savingBody === body.id ? t('overview.savingBody') : t('overview.saveBody')}</button>{appearance.surface === 'buildin' && <button type=\"button\" className={css.ghostButton} onClick={() => setEditingBody(null)}>{t('common.cancel')}</button>}</div>\n </form>\n const bodyCreateForm = <form className={css.bodyEdit} onSubmit={event => void create(event)}>\n <label>{t('overview.createName')}<input aria-label={t('overview.createName')} value={bodyName} onChange={event => setBodyName(event.target.value)} placeholder={t('overview.createNamePlaceholder')} maxLength={100} required /></label>\n <label>{t('overview.createDescription')}<textarea aria-label={t('overview.createDescription')} value={bodyDescription} onChange={event => setBodyDescription(event.target.value)} placeholder={t('overview.createDescriptionPlaceholder')} rows={5} maxLength={1000} required /></label>\n <div className={css.bodyEditActions}><button type=\"button\" className={css.ghostButton} disabled={creating} onClick={() => setCreatingBodyOpen(false)}>{t('common.cancel')}</button><button type=\"submit\" className={css.primaryButton} disabled={creating || bodyName.trim() === '' || bodyDescription.trim() === ''}>{creating ? t('overview.creating') : t('overview.createAction')}</button></div>\n </form>\n const bodyToggle = (body: MemoryBodyView) => <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 || deletingBody === 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>\n const bodyEditActionClass = appearanceClass(css.ghostButton, appearanceClass(appearance.classes.itemActionButton, appearance.classes.itemEditAction))\n const bodyDeleteActionClass = appearanceClass(css.dangerButton, appearanceClass(appearance.classes.itemActionButton, appearance.classes.itemDangerAction))\n return (\n <div className={css.page}>\n <PageHeader title={appearance.surface === 'sidebar' ? t('nav.overview') : t('overview.title')} description={t(appearance.surface === 'sidebar' ? 'overview.pageDescription' : '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 {appearance.surface === 'sidebar' ? <div className={appearance.classes.bodyDirectoryActions}><strong>{catalogUnavailable ? t('overview.directory.unsyncedBadge') : `${catalog?.activeCount ?? '—'} / ${catalog?.total ?? '—'} ${t('common.active')}`}</strong>{props.writeEnabled && !catalogUnavailable && <button type=\"button\" className={bodyEditActionClass} onClick={() => setCreatingBodyOpen(true)}>{t('overview.createTitle')}</button>}</div> : <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={(appearance.surface === 'buildin' && editingBody === body.id) || undefined} title={body.error}>\n {appearance.surface === 'buildin'\n ? editingBody === body.id\n ? bodyEditForm(body)\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}>{bodyToggle(body)}<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><p>{body.description || t('overview.noDescription')}</p><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 : <><div className={appearance.classes.bodyCardHeader}><div className={appearance.classes.bodyCardIdentity}><span className={css.bodySignal} /><div><strong>{body.name}</strong><div className={appearance.classes.bodyCardMeta}><code>{body.id}</code><small className={css.bodyHealth}>{body.healthy ? t('overview.storageHealthy') : t('overview.storageUnhealthy')}</small></div></div></div>{bodyToggle(body)}</div><p title={body.description || t('overview.noDescription')}>{body.description || t('overview.noDescription')}</p><footer className={appearance.classes.bodyCardFooter}><div className={appearance.classes.bodyCardStats}><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></div><div className={css.bodyCardActions}><button type=\"button\" className={bodyEditActionClass} aria-label={t('overview.editBodyAria', { name: body.name })} disabled={!props.writeEnabled || deletingBody === body.id} onClick={() => beginEdit(body)}>{t('overview.editBody')}</button><button type=\"button\" className={bodyDeleteActionClass} aria-label={t('overview.deleteBodyAria', { name: body.name })} disabled={!props.writeEnabled || deletingBody === body.id} onClick={() => setConfirmingDeleteBody(body.id)}>{t('overview.deleteBody')}</button></div></footer></>}\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 {appearance.surface === 'buildin' && 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 {appearance.surface === 'sidebar' && creatingBodyOpen && <SidebarModal title={t('overview.createTitle')} description={catalog?.directory || props.fallbackDirectory || t('overview.directory.waiting')} busy={creating} onClose={() => setCreatingBodyOpen(false)}>{bodyCreateForm}</SidebarModal>}\n {appearance.surface === 'sidebar' && editingBodyView !== undefined && <SidebarModal title={t('overview.editBodyAria', { name: editingBodyView.name })} description={editingBodyView.id} busy={savingBody === editingBodyView.id} onClose={() => setEditingBody(null)}>{bodyEditForm(editingBodyView)}</SidebarModal>}\n {appearance.surface === 'sidebar' && deletingBodyView !== undefined && <SidebarModal title={t('overview.deleteTitle', { name: deletingBodyView.name })} description={deletingBodyView.id} busy={deletingBody === deletingBodyView.id} onClose={() => setConfirmingDeleteBody(null)}><div className={css.bodyDeleteConfirm}><p>{t('overview.deleteWarning')}</p><div className={css.bodyDeleteSummary}><strong>{deletingBodyView.name}</strong><span>{t('common.memories', { count: deletingBodyView.stats?.totalInsights ?? 0 })} · {t('common.edges', { count: deletingBodyView.stats?.edgeCount ?? 0 })} · {humanBytes(deletingBodyView.stats?.dbSizeBytes ?? 0)}</span></div><div className={css.bodyEditActions}><button type=\"button\" data-autofocus className={css.ghostButton} disabled={deletingBody === deletingBodyView.id} onClick={() => setConfirmingDeleteBody(null)}>{t('common.cancel')}</button><button type=\"button\" className={css.dangerSolidButton} disabled={deletingBody === deletingBodyView.id} onClick={() => void deleteBody(deletingBodyView)}>{deletingBody === deletingBodyView.id ? t('overview.deletingBody') : t('overview.deleteAction')}</button></div></div></SidebarModal>}\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}>{appearance.showLogo ? <MnemonLogo className={css.inspectorLogo} title={t('overview.inspector')} /> : <span className={appearanceClass(css.inspectorLogo, appearance.classes.inspectorGlyph)} aria-hidden=\"true\">◇</span>}<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 appearance = useMnemonViewAppearance()\n const pageSize = appearance.surface === 'sidebar' ? 6 : Number.MAX_SAFE_INTEGER\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 const [visibleResultLimit, setVisibleResultLimit] = useState(pageSize)\n const [visibleRelatedLimit, setVisibleRelatedLimit] = useState(pageSize)\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); setVisibleResultLimit(pageSize); setVisibleRelatedLimit(pageSize)\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); setVisibleRelatedLimit(pageSize)\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 const visibleResults = results.slice(0, visibleResultLimit)\n const visibleRelated = related.slice(0, visibleRelatedLimit)\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>{visibleResults.map(insight => <InsightCard key={insightKey(insight)} insight={insight} writeEnabled={props.writeEnabled} onForget={forget} onRelated={item => void showRelated(item)} />)}{appearance.surface === 'sidebar' && <ProgressiveFooter visible={visibleResults.length} total={results.length} pageSize={pageSize} onMore={() => setVisibleResultLimit(value => value + pageSize)} />}</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>}{visibleRelated.map(insight => <InsightCard key={insightKey(insight)} insight={insight} writeEnabled={props.writeEnabled} onForget={forget} onRelated={item => void showRelated(item)} />)}{appearance.surface === 'sidebar' && !relatedLoading && <ProgressiveFooter visible={visibleRelated.length} total={related.length} pageSize={pageSize} onMore={() => setVisibleRelatedLimit(value => value + pageSize)} />}</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 appearance = useMnemonViewAppearance()\n const entityPageSize = appearance.surface === 'sidebar' ? 10 : Number.MAX_SAFE_INTEGER\n const insightPageSize = appearance.surface === 'sidebar' ? 6 : Number.MAX_SAFE_INTEGER\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 const [visibleEntityLimit, setVisibleEntityLimit] = useState(entityPageSize)\n const [visibleInsightLimit, setVisibleInsightLimit] = useState(insightPageSize)\n\n const load = useCallback(async (selected?: string) => {\n setLoading(true); setError(null); setVisibleInsightLimit(insightPageSize)\n if (selected === undefined) setVisibleEntityLimit(entityPageSize)\n try { setView(await props.client.entities(selected, 20)) } catch (reason) { setError(message(reason)) } finally { setLoading(false) }\n }, [entityPageSize, insightPageSize, props.client])\n\n useEffect(() => { void load() }, [load, props.revision])\n const submit = (event: FormEvent) => { event.preventDefault(); if (entity.trim() !== '') void load(entity) }\n const visibleEntities = view.items.slice(0, visibleEntityLimit)\n const visibleInsights = view.insights.slice(0, visibleInsightLimit)\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}>{visibleEntities.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 {appearance.surface === 'sidebar' && <ProgressiveFooter compact visible={visibleEntities.length} total={view.items.length} pageSize={entityPageSize} onMore={() => setVisibleEntityLimit(value => value + entityPageSize)} />}\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> : <>{visibleInsights.map(insight => <InsightCard key={insightKey(insight)} insight={insight} writeEnabled={props.writeEnabled} onForget={props.onForget} onRelated={() => props.onExplore(insight.content)} />)}{appearance.surface === 'sidebar' && <ProgressiveFooter visible={visibleInsights.length} total={view.insights.length} pageSize={insightPageSize} onMore={() => setVisibleInsightLimit(value => value + insightPageSize)} />}</>}</>}\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 locale = useLocale()\n const appearance = useMnemonViewAppearance()\n const pageSize = 10\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 const [adding, setAdding] = useState(false)\n const [filterTarget, setFilterTarget] = useState<'all' | RuntimeMemoryTarget>('all')\n const [filterQuery, setFilterQuery] = useState('')\n const [visibleLimit, setVisibleLimit] = useState(pageSize)\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 useEffect(() => { setVisibleLimit(pageSize) }, [filterQuery, filterTarget])\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 if (appearance.surface === 'sidebar') setAdding(false)\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 const runtimeEditActionClass = appearance.surface === 'sidebar'\n ? appearanceClass(css.ghostButton, appearanceClass(appearance.classes.itemActionButton, appearance.classes.itemEditAction))\n : css.ghostButton\n const runtimeRemoveActionClass = appearance.surface === 'sidebar'\n ? appearanceClass(css.dangerButton, appearanceClass(appearance.classes.itemActionButton, appearance.classes.itemDangerAction))\n : css.dangerButton\n\n const runtimeEntry = (entry: RuntimeMemoryEntry, showTarget = false) => {\n const key = entryKey(entry)\n const isEditing = editing === key\n const isInlineEditing = appearance.surface === 'buildin' && isEditing\n const isRemoving = removing === key\n const isInlineRemoving = appearance.surface === 'buildin' && isRemoving\n return <article key={key} className={css.runtimeEntry} data-importance={entry.importance} data-target={entry.target}>\n <div className={css.runtimeEntryMeta}>{showTarget ? <div className={css.runtimeEntryBadges}><span className={css.runtimeEntryTarget}>{entry.target === 'user' ? 'USER.md' : 'MEMORY.md'}</span><span>{t(`runtime.importance.${entry.importance}` as MnemonKey)}</span></div> : <span>{t(`runtime.importance.${entry.importance}` as MnemonKey)}</span>}<time dateTime={entry.updated_at}>{new Date(entry.updated_at).toLocaleString(locale)}</time></div>\n {isInlineEditing ? <textarea aria-label={t('runtime.editContent')} value={editContent} onChange={event => setEditContent(event.target.value)} rows={4} /> : <p>{entry.content}</p>}\n {isInlineEditing && <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 {isInlineRemoving ? <><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></> : isInlineEditing ? <><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={runtimeEditActionClass} disabled={saving && isRemoving} onClick={() => beginEdit(entry)}>{t('runtime.editAction')}</button><button type=\"button\" className={runtimeRemoveActionClass} disabled={saving && isRemoving} onClick={() => { setRemoving(key); setEditing(null) }}>{t('runtime.removeAction')}</button></> : null}\n </footer>\n </article>\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 => runtimeEntry(entry))}\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 const targetSummary = (value: RuntimeMemoryTarget) => {\n const view = snapshot?.targets[value]\n const percentage = view === undefined || view.limit === 0 ? 0 : Math.min(100, Math.round(view.used / view.limit * 100))\n return <section className={css.runtimeSummaryCard} aria-label={t(`runtime.target.${value}` as MnemonKey)}><header className={css.runtimeTargetHeader}><div><span>{value === 'user' ? 'USER.md' : 'MEMORY.md'}</span><h3>{t(`runtime.target.${value}` as MnemonKey)}</h3></div><strong>{view?.entryCount ?? 0}</strong></header><div className={css.capacityLine}><div><i style={{ width: `${percentage}%` }} /></div><span>{view === undefined ? '—' : `${humanBytes(view.used)} / ${humanBytes(view.limit)}`}</span></div><p className={css.runtimeTargetDescription}>{t(`runtime.target.${value}.description` as MnemonKey)}</p></section>\n }\n const normalizedQuery = filterQuery.trim().toLocaleLowerCase()\n const filteredEntries = (snapshot?.entries ?? []).filter(entry => (filterTarget === 'all' || entry.target === filterTarget) && (normalizedQuery === '' || entry.content.toLocaleLowerCase().includes(normalizedQuery)))\n const visibleEntries = filteredEntries.slice(0, visibleLimit)\n\n const closeComposer = () => {\n setContent('')\n setAdding(false)\n }\n const composer = <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>{appearance.surface === 'sidebar' && <button type=\"button\" className={css.ghostButton} disabled={saving} onClick={closeComposer}>{t('common.cancel')}</button>}<button type=\"submit\" className={css.primaryButton} disabled={saving || content.trim() === ''}>{saving ? t('runtime.saving') : t('runtime.addAction')}</button></div>\n </form>\n const editingEntry = editing === null ? undefined : snapshot?.entries.find(entry => entryKey(entry) === editing)\n const removingEntry = removing === null ? undefined : snapshot?.entries.find(entry => entryKey(entry) === removing)\n const editForm = editingEntry === undefined ? null : <form className={css.bodyEdit} onSubmit={event => { event.preventDefault(); void replace(editingEntry) }}>\n <label>{t('runtime.editContent')}<textarea aria-label={t('runtime.editContent')} value={editContent} onChange={event => setEditContent(event.target.value)} rows={7} /></label>\n <label>{t('runtime.importance')}<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></label>\n <div className={css.bodyEditActions}><button type=\"button\" className={css.ghostButton} disabled={saving} onClick={() => setEditing(null)}>{t('common.cancel')}</button><button type=\"submit\" className={css.primaryButton} disabled={saving || editContent.trim() === ''}>{t('runtime.saveEdit')}</button></div>\n </form>\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>{appearance.surface === 'sidebar' && props.writeEnabled && <button type=\"button\" className={css.primaryButton} onClick={() => setAdding(true)}>{t('runtime.addButton')}</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 && appearance.surface === 'buildin' && composer}\n {!props.writeEnabled && <div className={css.runtimeReadOnly}>{t('runtime.readOnly')}</div>}\n {appearance.surface === 'buildin' ? <div className={css.runtimeGrid}>{targetPanel('user')}{targetPanel('memory')}</div> : <>\n <div className={css.runtimeSummaryGrid}>{targetSummary('user')}{targetSummary('memory')}</div>\n <section className={css.runtimeBrowser} aria-label={t('runtime.entriesAria')}>\n <div className={css.runtimeBrowserToolbar}>\n <div className={css.runtimeScopeFilter} role=\"group\" aria-label={t('runtime.scopeAria')}><button type=\"button\" data-active={filterTarget === 'all' || undefined} onClick={() => setFilterTarget('all')}>{t('runtime.scopeAll')} <b>{snapshot?.entries.length ?? 0}</b></button><button type=\"button\" data-active={filterTarget === 'user' || undefined} onClick={() => setFilterTarget('user')}>{t('runtime.target.user')} <b>{snapshot?.targets.user.entryCount ?? 0}</b></button><button type=\"button\" data-active={filterTarget === 'memory' || undefined} onClick={() => setFilterTarget('memory')}>{t('runtime.target.memory')} <b>{snapshot?.targets.memory.entryCount ?? 0}</b></button></div>\n <div className={css.runtimeFilterQuery}><span aria-hidden=\"true\">⌕</span><input aria-label={t('runtime.filterAria')} value={filterQuery} onChange={event => setFilterQuery(event.target.value)} placeholder={t('runtime.filterPlaceholder')} /></div>\n </div>\n <div className={css.runtimeUnifiedList}>{visibleEntries.map(entry => runtimeEntry(entry, true))}{!loading && filteredEntries.length === 0 && <div className={css.runtimeEmpty}><span>○</span><p>{t('runtime.noMatch')}</p></div>}</div>\n {!loading && <ProgressiveFooter visible={visibleEntries.length} total={filteredEntries.length} pageSize={pageSize} onMore={() => setVisibleLimit(value => value + pageSize)} />}\n </section>\n </>}\n <p className={css.runtimeFootnote}>{t('runtime.footnote')}</p>\n {appearance.surface === 'sidebar' && adding && <SidebarModal title={t('runtime.addTitle')} description={t('runtime.addDescription')} busy={saving} onClose={closeComposer}>{composer}</SidebarModal>}\n {appearance.surface === 'sidebar' && editingEntry !== undefined && <SidebarModal title={t('runtime.editContent')} description={t(`runtime.target.${editingEntry.target}` as MnemonKey)} busy={saving} onClose={() => setEditing(null)}>{editForm}</SidebarModal>}\n {appearance.surface === 'sidebar' && removingEntry !== undefined && <SidebarModal title={t('runtime.removeTitle')} description={t(`runtime.target.${removingEntry.target}` as MnemonKey)} busy={saving} onClose={() => setRemoving(null)}><div className={css.bodyDeleteConfirm}><p>{t('runtime.removeWarning')}</p><div className={css.bodyDeleteSummary}><p className={css.bodyDeleteContent}>{removingEntry.content}</p><span>{t(`runtime.importance.${removingEntry.importance}` as MnemonKey)}</span></div><div className={css.bodyEditActions}><button type=\"button\" data-autofocus className={css.ghostButton} disabled={saving} onClick={() => setRemoving(null)}>{t('common.cancel')}</button><button type=\"button\" className={css.dangerSolidButton} disabled={saving} onClick={() => void remove(removingEntry)}>{t('runtime.removeAction')}</button></div></div></SidebarModal>}\n </div>\n )\n}\n\nfunction RememberPage(props: { client: MnemonClient; sessionId: string | undefined; memoryBodies: MemoryBodyView[]; writeEnabled: boolean; seed: string; onMutate: () => void; onClose?: () => void; onComplete?: () => 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 props.onMutate()\n if (response.action !== 'skipped') {\n setContent('')\n props.onComplete?.()\n }\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(); props.onComplete?.() }\n } catch (reason) { setResult(t('remember.saveFailed', { error: message(reason) })) } finally { setSaving(false) }\n }\n\n const composer = <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}>{props.onClose !== undefined && <button type=\"button\" className={css.ghostButton} disabled={supervising || saving} onClick={props.onClose}>{t('common.cancel')}</button>}<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\n if (props.onClose !== undefined) {\n return <SidebarModal title={t('remember.title')} description={t('remember.description')} busy={supervising || saving} onClose={props.onClose}>{props.writeEnabled ? composer : <EmptyState glyph=\"⊘\" title={t('remember.readOnlyTitle')}>{t('remember.readOnlyText')}</EmptyState>}</SidebarModal>\n }\n\n return <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> : <div className={css.writebackLayout}><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>{composer}</div>}\n </div>\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 t = useT()\n const appearance = useMnemonViewAppearance()\n const pageSize = appearance.surface === 'sidebar' ? 12 : 48\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(pageSize)\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(() => { setVisibleLimit(pageSize); void load() }, [pageSize, props.revision])\n const submit = (event: FormEvent) => { event.preventDefault(); setVisibleLimit(pageSize); 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\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 && <ProgressiveFooter visible={visibleItems.length} total={view.items.length} pageSize={pageSize} onMore={() => setVisibleLimit(value => value + pageSize)} />}\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 locale = useLocale()\n const appearance = useMnemonViewAppearance()\n const pageSize = appearance.surface === 'sidebar' ? 8 : Number.MAX_SAFE_INTEGER\n const readerRef = useRef<HTMLElement | null>(null)\n const [snapshot, setSnapshot] = useState<DocumentSnapshot | null>(null)\n const [items, setItems] = useState<DocumentListItem[]>([])\n const [visibleLimit, setVisibleLimit] = useState(pageSize)\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); setVisibleLimit(pageSize)\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 }, [pageSize, 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 useLayoutEffect(() => {\n if (appearance.surface === 'sidebar' && readerRef.current !== null) readerRef.current.scrollTop = 0\n }, [appearance.surface, selectedId])\n useEffect(() => {\n if (appearance.surface !== 'sidebar' || selectedId === null) return\n const index = items.findIndex(item => item.id === selectedId)\n if (index >= visibleLimit) setVisibleLimit(Math.ceil((index + 1) / pageSize) * pageSize)\n }, [appearance.surface, items, pageSize, selectedId, visibleLimit])\n\n const resetComposer = () => { setTitle(''); setDescription(''); setContent(''); setSources(''); setComposing(false) }\n const startComposer = () => { setTitle(''); setDescription(''); setContent(''); setSources(''); setEditing(false); setComposing(true) }\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 const composer = <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} disabled={saving} 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 const editComposer = selected === null ? null : <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} disabled={saving} 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>\n const documentEditActionClass = appearance.surface === 'sidebar'\n ? appearanceClass(css.ghostButton, appearanceClass(appearance.classes.itemActionButton, appearance.classes.itemEditAction))\n : css.secondaryButton\n const documentArchiveActionClass = appearance.surface === 'sidebar'\n ? appearanceClass(css.dangerButton, appearanceClass(appearance.classes.itemActionButton, appearance.classes.itemDangerAction))\n : css.dangerButton\n const visibleItems = items.slice(0, visibleLimit)\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>{appearance.surface === 'sidebar' && props.writeEnabled && props.sessionId !== undefined && <button type=\"button\" className={css.primaryButton} onClick={startComposer}>{t('documents.new')}</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 {appearance.surface === 'buildin' && props.writeEnabled && props.sessionId !== undefined && <button type=\"button\" className={css.primaryButton} onClick={() => { if (composing) resetComposer(); else startComposer() }}>{composing ? t('common.cancel') : t('documents.new')}</button>}\n </section>\n\n {composing && appearance.surface === 'buildin' && composer}\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 {visibleItems.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(locale)}</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 {appearance.surface === 'sidebar' && !loading && <ProgressiveFooter compact visible={visibleItems.length} total={items.length} pageSize={pageSize} onMore={() => setVisibleLimit(value => value + pageSize)} />}\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 ref={readerRef} className={css.documentReader} aria-label={t('documents.reader')} data-scroll-region={appearance.surface === 'sidebar' ? '' : undefined}>\n {selected === null ? <EmptyState glyph=\"▤\" title={t('documents.selectTitle')}>{t('documents.selectText')}</EmptyState> : editing && appearance.surface === 'buildin' ? editComposer : <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={documentEditActionClass} 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}>{appearance.surface === 'buildin' && 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={documentArchiveActionClass} onClick={() => setConfirmArchive(true)}>{t('documents.archive')}</button></>}</footer>}\n </article>}\n </section>\n </div>\n <p className={css.runtimeFootnote}>{t('documents.footnote')}</p>\n {composing && appearance.surface === 'sidebar' && <SidebarModal title={t('documents.newTitle')} description={t('documents.editorHint')} busy={saving} onClose={resetComposer}>{composer}</SidebarModal>}\n {editing && appearance.surface === 'sidebar' && selected !== null && <SidebarModal title={t('documents.editTitle')} description={selected.title} busy={saving} onClose={() => setEditing(false)}>{editComposer}</SidebarModal>}\n {confirmArchive && appearance.surface === 'sidebar' && selected !== null && <SidebarModal title={t('documents.archiveConfirm')} description={selected.title} busy={saving} onClose={() => setConfirmArchive(false)}><div className={css.bodyDeleteConfirm}><p>{t('documents.archiveDescription')}</p><div className={css.bodyDeleteSummary}><strong>{selected.title}</strong><span>{selected.relativePath} · {humanBytes(selected.sizeBytes)}</span></div><div className={css.bodyEditActions}><button type=\"button\" data-autofocus className={css.ghostButton} disabled={saving} onClick={() => setConfirmArchive(false)}>{t('common.cancel')}</button><button type=\"button\" className={css.dangerSolidButton} disabled={saving} onClick={() => void archive()}>{saving ? t('documents.archiving') : t('documents.archiveNow')}</button></div></div></SidebarModal>}\n </div>\n )\n}\n\nfunction versionModeLabel(t: MnemonTranslate, mode: VersionInstallMode): string {\n if (mode === 'homebrew') return t('versions.modeHomebrew')\n if (mode === 'go') return t('versions.modeGo')\n if (mode === 'npm') return t('versions.modeNpm')\n if (mode === 'link') return t('versions.modeLink')\n if (mode === 'missing') return t('versions.modeMissing')\n return t('versions.modeManual')\n}\n\nfunction versionHint(t: MnemonTranslate, component: VersionComponentStatus): string {\n if (component.checkError !== undefined) return t('versions.latestUnavailable')\n if (component.updateHint === 'brew') return t('versions.hintHomebrew')\n if (component.updateHint === 'brew-missing') return t('versions.hintBrewMissing')\n if (component.updateHint === 'go') return t('versions.hintGo')\n if (component.updateHint === 'pnpm') return t('versions.hintPnpm')\n if (component.updateHint === 'pnpm-missing') return t('versions.hintPnpmMissing')\n if (component.updateHint === 'link') return t('versions.hintLink')\n if (component.updateHint === 'install') return t('versions.hintInstall')\n return t('versions.hintManual')\n}\n\nfunction dshInstallLabel(t: MnemonTranslate, component: VersionComponentStatus): string {\n if (component.installMode === 'npm') return t('versions.profileLocation', { name: component.installProfile ?? '—' })\n if (component.installMode === 'link') return component.installProfile === undefined\n ? t('versions.sourceLocation')\n : t('versions.linkSourceLocation', { name: component.installProfile })\n return t('versions.packageLocation')\n}\n\nfunction VersionDialog(props: { client: MnemonClient; onClose: () => void; onRefreshStatus: () => void }): JSX.Element {\n const t = useT()\n const [snapshot, setSnapshot] = useState<VersionStatus | null>(null)\n const [checking, setChecking] = useState(true)\n const [updating, setUpdating] = useState<VersionComponentStatus['id'] | null>(null)\n const [error, setError] = useState<string | null>(null)\n const [result, setResult] = useState<VersionUpdateResult | null>(null)\n const check = useCallback(async () => {\n setChecking(true)\n setError(null)\n let timeout: ReturnType<typeof setTimeout> | undefined\n try {\n const deadline = new Promise<never>((_resolve, reject) => { timeout = setTimeout(() => reject(new Error(t('versions.timeout'))), 15_000) })\n setSnapshot(await Promise.race([props.client.versions(), deadline]))\n }\n catch (reason) { setError(message(reason)) }\n finally { if (timeout !== undefined) clearTimeout(timeout); setChecking(false) }\n }, [props.client, t])\n useEffect(() => { void check() }, [check])\n const update = async (component: VersionComponentStatus) => {\n setUpdating(component.id)\n setError(null)\n setResult(null)\n try {\n const next = await props.client.updateVersion(component.id)\n setResult(next)\n await check()\n props.onRefreshStatus()\n } catch (reason) {\n setError(message(reason))\n } finally {\n setUpdating(null)\n }\n }\n const busy = checking || updating !== null\n return <SidebarModal title={t('versions.title')} description={t('versions.description')} busy={busy} onClose={props.onClose}>\n <div className={css.versionDialogBody}>\n {checking && snapshot === null && <div className={css.versionChecking} role=\"status\"><span />{t('versions.checking')}</div>}\n {error !== null && <div className={css.versionError} role=\"alert\"><strong>{t('versions.failed')}</strong><p>{error}</p></div>}\n {result !== null && <div className={css.versionResult} role=\"status\"><strong>{result.updated ? t('versions.updated', { name: result.component === 'mnemon' ? 'Mnemon CLI' : 'dsh-mnemon' }) : t('versions.alreadyCurrent')}</strong>{result.restartRequired && <p>{t('versions.restartRequired')}</p>}</div>}\n {snapshot !== null && <div className={css.versionList}>{snapshot.components.map(component => {\n const canUpdate = component.outdated && component.updateSupported && component.checkError === undefined\n const state = component.checkError !== undefined ? t('versions.unknown') : component.outdated ? t('versions.available') : t('versions.current')\n return <article key={component.id} data-outdated={component.outdated || undefined}>\n <header><div><strong>{component.name}</strong><span>{versionModeLabel(t, component.installMode)}</span></div><em>{state}</em></header>\n <div className={css.versionNumbers}><div><small>{t('versions.installed')}</small><code>{component.current ?? '—'}</code></div><span>→</span><div><small>{t('versions.latest')}</small><code>{component.latest ?? '—'}</code></div></div>\n {component.id === 'mnemon' && component.executablePath !== undefined && <small className={css.versionLocation} title={component.executablePath}><span>{t('versions.executable')}</span><code>{component.executablePath}</code></small>}\n {component.id === 'dsh-mnemon' && component.installPath !== undefined && <small className={css.versionLocation} title={component.installPath}><span>{dshInstallLabel(t, component)}</span><code>{component.installPath}</code></small>}\n <footer><p>{versionHint(t, component)}</p>{canUpdate && <button type=\"button\" className={css.primaryButton} disabled={busy} onClick={() => void update(component)}>{updating === component.id ? t('versions.updating') : t('versions.update')}</button>}</footer>\n </article>\n })}</div>}\n <div className={css.versionDialogActions}><span>{snapshot === null ? '' : t('versions.checkedAt', { time: new Date(snapshot.checkedAt).toLocaleTimeString() })}</span><div><button type=\"button\" className={css.ghostButton} disabled={busy} onClick={props.onClose}>{t('common.cancel')}</button><button type=\"button\" data-autofocus className={css.secondaryButton} disabled={busy} onClick={() => void check()}>{checking ? t('versions.checkingShort') : t('versions.recheck')}</button></div></div>\n </div>\n </SidebarModal>\n}\n\nfunction StatusPage(props: { client: MnemonClient; status: StatusView | null; loading: boolean; onRefresh: () => void }): JSX.Element {\n const t = useT()\n const [versionsOpen, setVersionsOpen] = useState(false)\n const status = props.status\n const documents = status?.documents\n const catalogKnown = status?.memoryBodies !== undefined\n const memoryBodies = useMemo(() => status?.memoryBodies ?? [], [status])\n const activeBodies = memoryBodies.filter(body => body.active).length\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 ? t('status.nominal') : t('status.checkRequired')} action={<div className={css.statusHeaderActions}><button type=\"button\" className={css.ghostButton} disabled={props.loading} onClick={props.onRefresh}>{props.loading ? t('status.rechecking') : t('status.recheck')}</button><button type=\"button\" className={css.secondaryButton} onClick={() => setVersionsOpen(true)}>{t('versions.checkAction')}</button></div>} />\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 ? status.version === undefined ? t('status.engineConnected') : `Mnemon ${status.version}` : t('status.engineUnavailable')}</strong><p>{status?.dshMnemonVersion === undefined ? t('status.versionWaiting') : `dsh-mnemon ${status.dshMnemonVersion}`}</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 </section>\n\n <StorageDomains catalog={storage} selected={selectedScope} selectedKind={selectedScopeKind} />\n {versionsOpen && <VersionDialog client={props.client} onClose={() => setVersionsOpen(false)} onRefreshStatus={props.onRefresh} />}\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\n/** Resolve the configured scope before the first status round-trip to keep the Sidebar header stable. */\nfunction configuredStorageScope(config: Config | undefined): StorageScopeKind {\n return config?.storageScope ?? (config?.dataDir?.trim() ? 'custom' : 'global')\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.filter(area => area.kind !== 'state').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\nexport function MnemonView(props: MnemonViewProps): JSX.Element {\n const t = props.t ?? translateZh\n const appearance = resolveMnemonViewAppearance(props.surface ?? 'buildin', t)\n return <I18nContext.Provider value={t}><LocaleContext.Provider value={props.locale ?? 'zh'}><MnemonViewAppearanceProvider value={appearance}><MnemonWorkspace {...props} /></MnemonViewAppearanceProvider></LocaleContext.Provider></I18nContext.Provider>\n}\n\nfunction MnemonWorkspace({ connection, settingsScope, sessionId, workspaceId, workspaceSelection, onClose }: MnemonViewProps): JSX.Element {\n const t = useT()\n const appearance = useMnemonViewAppearance()\n const settingsSnapshot = useSyncExternalStore(settingsScope.subscribe, settingsScope.getSnapshot, settingsScope.getSnapshot)\n const client = useMemo(() => new MnemonClient(connection, sessionId, workspaceId), [connection, sessionId, workspaceId])\n const clientContextKey = `${sessionId ?? ''}\\u0000${workspaceId ?? ''}`\n const viewContextKey = `${clientContextKey}\\u0000${settingsSnapshot.revision ?? 'loading'}`\n const [page, setPage] = useState<Page>('status')\n const lastMemoryPage = useRef<SidebarMemoryPage>('overview')\n const canvasRef = useRef<HTMLElement | null>(null)\n\n const selectPage = useCallback((next: Page) => {\n if (isMemoryPage(next)) lastMemoryPage.current = next\n setPage(next)\n }, [])\n const selectPrimaryPage = useCallback((next: Page) => {\n selectPage(appearance.surface === 'sidebar' && next === 'overview' ? lastMemoryPage.current : next)\n }, [appearance.surface, selectPage])\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 // Reset before paint so a newly selected page never flashes at the previous\n // page's scroll offset for one frame. The host still owns every ancestor.\n useLayoutEffect(() => { resetViewportScroll() }, [viewContextKey, page, resetViewportScroll])\n const [statusState, setStatusState] = useState<{ contextKey: string; value: StatusView | null; loading: boolean; error: string | null }>(() => ({ contextKey: viewContextKey, value: null, loading: true, error: null }))\n const currentStatusState = statusState.contextKey === viewContextKey\n ? statusState\n : { contextKey: viewContextKey, value: null, loading: true, error: null }\n const status = currentStatusState.value\n const statusLoading = currentStatusState.loading\n const statusError = currentStatusState.error\n const statusRequest = useRef(0)\n const [revision, setRevision] = useState(0)\n const [searchSeed, setSearchSeed] = useState('')\n const [rememberSeed, setRememberSeed] = useState('')\n const [rememberOpen, setRememberOpen] = useState(false)\n\n // A newly inspected workspace must never inherit visible cards, open editors,\n // search seeds, or scroll position from the previous workspace.\n useLayoutEffect(() => {\n setRememberOpen(false)\n setRememberSeed('')\n setSearchSeed('')\n }, [viewContextKey])\n\n const openRemember = useCallback((seed = '') => {\n setRememberSeed(seed)\n setRememberOpen(true)\n }, [])\n\n /** Conversation surfaces ask this view to open a page (optionally with a seed). */\n const applyAnchor = useCallback((anchor: MnemonAnchor) => {\n if (anchor.page === 'remember' && appearance.surface === 'sidebar') {\n openRemember(anchor.seed ?? '')\n selectPage(lastMemoryPage.current)\n return\n }\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 selectPage(anchor.page)\n }, [appearance.surface, openRemember, selectPage])\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 setStatusState(current => ({ contextKey: viewContextKey, value: current.contextKey === viewContextKey ? current.value : null, loading: true, error: null }))\n try {\n const next = await client.status()\n if (request === statusRequest.current) setStatusState({ contextKey: viewContextKey, value: next, loading: false, error: null })\n } catch (reason) {\n if (request === statusRequest.current) setStatusState({ contextKey: viewContextKey, value: null, loading: false, error: message(reason) })\n }\n }, [client, viewContextKey])\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); selectPage('explore') }, [selectPage])\n const clone = useCallback((insight: Insight) => {\n if (appearance.surface === 'sidebar') openRemember(insight.content)\n else { setRememberSeed(insight.content); selectPage('remember') }\n }, [appearance.surface, openRemember, selectPage])\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 storageMode = workspaceContext?.mode ?? status?.storage?.activeKind ?? configuredStorageScope(settingsSnapshot.value)\n const storageModeText = storageScopeLabel(t, storageMode)\n const showWorkspacePicker = storageMode === 'workspace' && workspaceSelection !== undefined && workspaceSelection.options.length > 0\n const workspaceDiverged = workspaceContext?.mode === 'workspace' && !workspaceContext.aligned\n const canAlignWorkspace = workspaceDiverged && workspaceSelection?.effectiveWorkspaceId !== undefined\n const workspaceDifference = workspaceContext === undefined\n ? ''\n : `${t('workspace.selectedRoot', { root: workspaceContext.selectedRoot })}; ${t('workspace.effectiveRoot', { root: workspaceContext.effectiveRoot })}`\n const workspacePicker = showWorkspacePicker && <label className={appearanceClass(css.workspacePicker, appearance.classes.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>\n const connectionLabel = statusLoading\n ? t('header.checking')\n : status?.healthy !== true\n ? t('header.unavailable')\n : appearance.surface === 'sidebar'\n ? t('header.connected')\n : catalogKnown\n ? t('header.connectedWithCount', { count: activeBodies })\n : t('header.directoryPending')\n\n return (\n <main className={appearanceClass(css.shell, appearance.classes.shell)} data-mnemon-surface={appearance.surface}>\n <header className={appearanceClass(css.masthead, appearance.classes.masthead)}>\n {appearance.surface === 'sidebar' && onClose !== undefined && <button type=\"button\" className={appearanceClass(css.ghostButton, css.backButton)} onClick={onClose} aria-label={t('header.backToConversation')}><IconChevronLeftOutline14 size={14} /><span>{t('header.backToConversation')}</span></button>}\n <div className={appearanceClass(css.brand, appearance.classes.brand)}>\n {appearance.showLogo && <MnemonLogo className={css.brandLogo} />}\n <h1>{appearance.title}</h1>\n {appearance.surface === 'sidebar' && <span className={css.storageMode} aria-label={t('workspace.storageModeAria', { mode: storageModeText })}><span>{t('workspace.storageMode')}</span><strong>{storageModeText}</strong></span>}\n {appearance.surface === 'sidebar' && workspacePicker}\n {appearance.surface === 'sidebar' && canAlignWorkspace && <div className={appearanceClass(css.workspaceMismatch, appearance.classes.workspaceMismatch)} role=\"status\" aria-label={`${t('workspace.mismatchTitle')}. ${workspaceDifference}`} title={workspaceDifference}><span>{t('workspace.mismatchShort')}</span><button type=\"button\" onClick={workspaceSelection.onAlign}>{t('workspace.align')}</button></div>}\n </div>\n {appearance.showTelemetry && <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={appearanceClass(css.headerActions, appearance.classes.headerActions)}>{appearance.surface === 'buildin' && workspacePicker}<div className={appearanceClass(css.statusCluster, appearance.classes.statusCluster)}><span className={`${css.statusDot} ${statusLoading && status === null ? css.checking : status?.healthy === true ? css.online : css.offline}`} /><span>{connectionLabel}</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 {appearance.surface === 'buildin' && workspaceDiverged && <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>{canAlignWorkspace && <button type=\"button\" className={css.secondaryButton} onClick={workspaceSelection.onAlign}>{t('workspace.align')}</button>}</div>}\n <div className={css.workspace}>\n <WorkspaceNavigation page={page} onSelect={selectPrimaryPage} activeBodies={activeBodies} bodyCount={memoryBodies.length} catalogKnown={catalogKnown} writeEnabled={writeEnabled} />\n <MemoryNavigation page={page} writeEnabled={writeEnabled} onSelect={selectPage} onRemember={() => openRemember()} />\n <section key={viewContextKey} className={appearanceClass(css.canvas, appearance.classes.canvas)} ref={canvasRef} data-testid=\"mnemon-canvas\" data-lock-page-header={!isMemoryPage(page) ? '' : undefined}>\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' && appearance.surface === 'buildin' && <RememberPage client={client} sessionId={sessionId} memoryBodies={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 client={client} status={status} loading={statusLoading} onRefresh={() => void loadStatus()} />}\n </section>\n {appearance.surface === 'sidebar' && rememberOpen && <RememberPage client={client} sessionId={sessionId} memoryBodies={memoryBodies} writeEnabled={writeEnabled} seed={rememberSeed} onMutate={mutate} onClose={() => setRememberOpen(false)} onComplete={() => setRememberOpen(false)} />}\n </div>\n </main>\n )\n}\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, type MnemonAnchorPage } 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/** Route a settled tool name to the workbench page that explains its effect. */\nexport function memoryPageForTool(name: string): MnemonAnchorPage {\n if (name === 'mnemon_document_search' || name === 'mnemon_document_manage') return 'documents'\n if (name === 'mnemon_runtime_memory') return 'runtime'\n if (name === 'mnemon_recall' || name === 'mnemon_related') return 'explore'\n if (name === 'mnemon_status') return 'status'\n return 'overview'\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 openTool = (name: string, event: ReactMouseEvent): void => {\n event.stopPropagation()\n dispatchMnemonAnchor({ page: memoryPageForTool(name), ...(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) => (\n <button\n key={`${name}-${index}`}\n type=\"button\"\n className={css.toolChip}\n aria-label={t('turnTail.openTool', { tool: name })}\n onClick={event => openTool(name, event)}\n >\n {name}\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n})\n","import { memo, useEffect, useRef, useState, type JSX } from 'react'\nimport { Button, IconDataOutline16, Modal, Tooltip } from '@deepseek-ai/dsh-client-ui-primitives'\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 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 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 className={css.wrap}>\n <Tooltip label={t('saveAction.tooltip')} side=\"bottom\" disabled={open}>\n <button\n type=\"button\"\n className={css.button}\n aria-label={t('saveAction.button')}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n onClick={() => setPanelOpen(!openRef.current)}\n >\n <IconDataOutline16 size={16} className={css.icon} />\n </button>\n </Tooltip>\n <Modal\n open={open}\n onClose={() => setPanelOpen(false)}\n title={t('saveAction.title')}\n closeLabel={t('saveAction.close')}\n description={t('saveAction.hint')}\n className={css.modal as string}\n contentClassName={css.modalContent as string}\n footer={(\n <>\n <Button variant=\"outline\" className={css.modalAction} disabled={submitting} onClick={() => setPanelOpen(false)}>\n {t('common.cancel')}\n </Button>\n <Button\n variant=\"primary\"\n className={css.modalAction}\n disabled={candidate === undefined || submitting || writeEnabled !== true}\n onClick={submit}\n >\n {submitting ? t('saveAction.submitting') : t('saveAction.submit')}\n </Button>\n </>\n )}\n >\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={12} defaultValue={candidate} autoFocus />\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 </Modal>\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. */\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(\n controller: MnemonWorkspaceController,\n t: MnemonTranslate,\n subscribeLocale?: (listener: () => void) => () => void,\n): () => 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 const unsubscribeLocale = subscribeLocale?.(syncLabel) ?? (() => {})\n syncActive()\n tryPlace()\n\n return () => {\n waitObserver.disconnect()\n rootObserver.disconnect()\n unsubscribe()\n unsubscribeLocale()\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 { useCallback, 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 onClose: () => void\n}\n\nfunction MnemonPanel({ ctx, settings, t, onClose }: MnemonPanelProps): JSX.Element {\n const subscribeLocale = useCallback((listener: () => void) => ctx.locale.subscribe(listener), [ctx.locale])\n const getLocaleSnapshot = useCallback(() => ctx.locale.getSnapshot(), [ctx.locale])\n const locale = useSyncExternalStore(subscribeLocale, getLocaleSnapshot, getLocaleSnapshot)\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} surface=\"sidebar\" t={t} locale={locale.active} onClose={onClose} />\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} onClose={() => { controller.close() }} />)\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, listener => ctx.locale.subscribe(listener))\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 { MnemonTurnTail, selectMnemonTurnTail } from './MnemonTurnTail.tsx'\nimport { MnemonSaveAction } from './MnemonSaveAction.tsx'\nimport { MNEMON_ANCHOR_EVENT } from './anchor.ts'\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 = '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<'turnBar' | 'saveAction', InteractionUnit> = {\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/** Ready snapshots default each interaction on; loading has no value and mounts nothing. */\nfunction enabledOf(value: unknown, key: 'turnBar' | 'saveAction'): boolean {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return false\n return (value as Partial<Record<typeof key, boolean>>)[key] !== false\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 const disposeView = 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>; surface: 'buildin'; t: (key: MnemonKey, params?: Record<string, unknown>) => string; locale: 'zh' | 'en' } => ({\n connection: ctx.connection,\n settingsScope: settings,\n surface: 'buildin',\n t: translate,\n locale: ctx.locale.getSnapshot().active,\n }),\n }, MnemonView))\n if (typeof window === 'undefined' || typeof document === 'undefined') return disposeView\n const openBuildinView = (): void => {\n const label = translate('tab.label').trim()\n const tab = [...document.querySelectorAll<HTMLElement>('[role=\"tab\"]')]\n .find(candidate => candidate.textContent?.trim() === label)\n tab?.click()\n }\n window.addEventListener(MNEMON_ANCHOR_EVENT, openBuildinView)\n return () => {\n window.removeEventListener(MNEMON_ANCHOR_EVENT, openBuildinView)\n disposeView()\n }\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 default on and are 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,15],"mappings":"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"}