dsh-mnemon-source-memory-spaces 0.5.2 → 0.5.4

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 CHANGED
@@ -7,6 +7,919 @@ window.__ModuleLoader__.load({
7
7
  let react = require("react");
8
8
  let dsh_mnemon_client = require("dsh-mnemon/client");
9
9
  let react_jsx_runtime = require("react/jsx-runtime");
10
+ //#region presentation/locales.json
11
+ var zh = {
12
+ "term.space": "记忆空间",
13
+ "term.spaces": "记忆空间",
14
+ "category.decision": "决策",
15
+ "category.preference": "偏好",
16
+ "category.fact": "事实",
17
+ "category.insight": "洞察",
18
+ "category.context": "上下文",
19
+ "category.general": "通用",
20
+ "nav.memory.aria": "记忆空间页面",
21
+ "nav.overview": "概览",
22
+ "nav.bodies": "记忆空间",
23
+ "nav.search": "检索",
24
+ "nav.entities": "实体",
25
+ "nav.rememberAction": "沉淀记忆",
26
+ "nav.content": "内容",
27
+ "overview.title": "记忆空间",
28
+ "overview.description": "统一管理由 Mnemon Native 或第三方 Provider 承载的记忆空间;已激活的空间共同参与读取、路由与实时快照。",
29
+ "overview.pageDescription": "创建和启停记忆空间,查看每个 Provider 的存储状态与实时关联快照。",
30
+ "overview.interval": "进入时全量同步 · 点击卡片按需同步",
31
+ "overview.fullSyncPending": "等待首次全量同步",
32
+ "overview.fullSyncJustNow": "上次全量同步:刚刚",
33
+ "overview.fullSyncSeconds": "上次全量同步:{count} 秒前",
34
+ "overview.fullSyncMinutes": "上次全量同步:{count} 分钟前",
35
+ "overview.fullSyncHours": "上次全量同步:{count} 小时前",
36
+ "overview.fullSyncDays": "上次全量同步:{count} 天前",
37
+ "overview.syncing": "同步中…",
38
+ "overview.syncNow": "立即同步",
39
+ "overview.directory": "记忆空间目录",
40
+ "overview.directory.description": "每张卡片对应一个记忆空间。第三方 Provider 首次接入时建立映射,之后点击卡片只检测该空间;本地维护的标题与说明不会被重连覆盖。",
41
+ "overview.directory.waiting": "等待目录",
42
+ "overview.directory.unsynced": "目录尚未同步",
43
+ "overview.directory.unsyncedBadge": "目录待同步",
44
+ "overview.directoryLoading": "正在加载记忆空间目录",
45
+ "overview.healthLoading": "正在检测各记忆空间状态",
46
+ "overview.storageHealthy": "存储正常",
47
+ "overview.storageUnhealthy": "存储异常",
48
+ "overview.storageChecking": "检测中",
49
+ "overview.reconnecting": "重连中",
50
+ "overview.reconnectHint": "点击卡片重新检测并同步这个记忆空间",
51
+ "overview.reconnectAria": "重新连接{name}",
52
+ "overview.snapshotLoading": "正在加载多记忆空间实时快照",
53
+ "overview.metadataAction": "AI 维护元信息",
54
+ "overview.metadataTitle": "AI 维护记忆空间元信息",
55
+ "overview.metadataDescription": "选择一个或多个已激活记忆空间。系统会分别通过各 Provider 最快的原生查询路径读取少量样本,再由独立任务 Agent 生成标题与说明。",
56
+ "overview.metadataUnavailable": "暂时无法运行:未找到与当前记忆范围匹配的活跃 Agent",
57
+ "overview.metadataLoading": "正在载入可维护的记忆空间…",
58
+ "overview.metadataEmpty": "当前没有可由 AI 维护元信息的已激活记忆空间。",
59
+ "overview.metadataSelected": "已选择 {count} 个记忆空间",
60
+ "overview.metadataSelectAll": "全选",
61
+ "overview.metadataClear": "清空",
62
+ "overview.metadataSafety": "仅更新本地标题与说明,不会修改、移动或删除记忆内容。Provider 关闭后,这些本地元数据会随映射一起清理。",
63
+ "overview.metadataGenerate": "AI 生成({count})",
64
+ "overview.metadataGenerating": "AI 正在生成…",
65
+ "overview.metadataRunningCount": "{count} 个生成中",
66
+ "overview.metadataTaskRunning": "生成中…",
67
+ "overview.metadataTaskSuccess": "已更新",
68
+ "overview.metadataTaskError": "失败:{error}",
69
+ "overview.metadataTaskUnknown": "未知错误",
70
+ "overview.metadataCompleted": "已更新 {count} 个记忆空间的元信息。",
71
+ "overview.mnemonDefault": "Mnemon 默认",
72
+ "overview.toggleAria": "{name}读取开关",
73
+ "overview.toggling": "切换中",
74
+ "overview.noDescription": "尚未提供路由说明。",
75
+ "overview.unsyncedTitle": "记忆空间目录尚未同步",
76
+ "overview.unsyncedShort": "当前 Web 客户端与 DSH Host 状态不一致;重启 Host 后会重新登记既有 Store。",
77
+ "overview.unsyncedLong": "当前 Host 仍在使用旧插件契约;重启 DSH 后会重新发现既有 Store,期间不会删除任何 .db。",
78
+ "overview.emptyTitle": "还没有记忆空间",
79
+ "overview.emptyShort": "创建第一个记忆空间并写入稳定上下文后,它会出现在这里。",
80
+ "overview.emptyLong": "创建一个 Mnemon 记忆空间,或在“设置 → 记忆系统”启用第三方 Provider 以同步其已有记忆空间。",
81
+ "overview.noActiveTitle": "没有激活的记忆空间",
82
+ "overview.noActiveText": "开启至少一个记忆空间的读取开关,即可在这里聚合它的实时图谱。",
83
+ "overview.noContentTitle": "已激活记忆空间尚无内容",
84
+ "overview.noContentText": "向任意记忆空间沉淀稳定上下文后,这里会聚合呈现节点与关系。",
85
+ "overview.createTitle": "创建记忆空间",
86
+ "overview.createDialogHint": "这里定义记忆空间用途并选择底层 Provider;服务、凭据和全局数据位置沿用“设置 → 记忆系统”的配置。",
87
+ "overview.createIdentityTitle": "记忆空间信息",
88
+ "overview.createIdentityHint": "名称用于识别;描述会帮助 Agent 判断什么内容应写入和召回。",
89
+ "overview.createPlacementTitle": "记忆空间 Provider",
90
+ "overview.createPlacementHint": "这是一次明确的手动创建;选择一个已启用 Provider。自动选择由“沉淀策略”统一管理。",
91
+ "overview.createName": "新记忆空间名称",
92
+ "overview.createNamePlaceholder": "名称",
93
+ "overview.createDescription": "新记忆空间描述",
94
+ "overview.createDescriptionPlaceholder": "说明哪些内容属于它,以及何时应被召回",
95
+ "overview.placementMode": "底层选择方式",
96
+ "overview.placementManual": "手动指定",
97
+ "overview.placementManualHint": "直接选择一个已启用 Provider",
98
+ "overview.placementAutomatic": "智能选择",
99
+ "overview.placementAutomaticHint": "先应用数据边界与能力规则,再由 Agent 在合格候选中选择",
100
+ "overview.placementUnavailable": "需要一个已连接且与当前工作区对齐的对话",
101
+ "overview.recommended": "推荐",
102
+ "overview.placementPolicy": "选择策略",
103
+ "overview.placementPolicyHint": "规则由系统强制执行,Prompt 只影响合格候选之间的判断。",
104
+ "overview.agentDecision": "Agent 决策",
105
+ "overview.placementPrompt": "策略 Prompt(可选)",
106
+ "overview.placementPromptPlaceholder": "例如:这是团队协作知识;在满足精确写入要求时优先本地,否则优先共享。",
107
+ "overview.dataBoundary": "数据边界",
108
+ "overview.dataBoundaryRemote": "允许远程服务",
109
+ "overview.dataBoundaryLocal": "仅限本地",
110
+ "overview.preference": "软偏好",
111
+ "overview.preferenceBalanced": "综合平衡",
112
+ "overview.preferenceLocal": "本地优先",
113
+ "overview.preferenceShared": "共享优先",
114
+ "overview.requiredCapabilities": "必须具备(可多选)",
115
+ "overview.capability.graph": "关系图谱",
116
+ "overview.capability.exact-write": "精确写入",
117
+ "overview.capability.forget": "安全遗忘",
118
+ "overview.candidateNativeReady": "官方原生 · 跟随当前记忆范围",
119
+ "overview.providerServiceRequired": "尚未启用;请先前往“设置 → 记忆系统”完成服务配置",
120
+ "overview.workspaceBinding.automatic": "跟随当前记忆范围",
121
+ "overview.workspaceBinding.optional-override": "跟随当前范围;全局可自定义位置",
122
+ "overview.workspaceBinding.provider-global": "始终使用全局范围",
123
+ "overview.candidateOpenViking": "纳入远程候选并提供连接",
124
+ "overview.candidateLocal": "本地 Provider · 跟随当前记忆范围",
125
+ "overview.candidateRemote": "远程 Provider · 使用全局服务配置",
126
+ "overview.placementByLlm": "Agent 智能选择",
127
+ "overview.placementByRules": "规则自动确定",
128
+ "overview.placementConfidence": "置信度:{confidence}",
129
+ "overview.confidence.high": "高",
130
+ "overview.confidence.medium": "中",
131
+ "overview.confidence.low": "低",
132
+ "overview.providerLabel": "记忆引擎",
133
+ "overview.nativeOfficial": "官方原生",
134
+ "overview.providerNativeHint": "官方原生、本地优先,保留完整图谱与软删除能力",
135
+ "strategy.action": "沉淀策略",
136
+ "strategy.title": "沉淀策略",
137
+ "strategy.description": "定义 Agent 在沉淀过程中需要新建记忆空间时,如何选择底层 Provider。已有记忆空间仍会优先按名称、描述与能力路由。",
138
+ "strategy.loading": "正在读取 Provider 目录…",
139
+ "strategy.modeTitle": "Provider 选择方式",
140
+ "strategy.modeHint": "该策略只影响 Agent 沉淀时的新记忆空间创建;手动点击“创建记忆空间”始终由你指定。",
141
+ "strategy.manualHint": "固定使用一个 Provider,Agent 无法改选",
142
+ "strategy.automaticHint": "先执行硬规则,再由任务 Agent 选择合格 Provider",
143
+ "strategy.manualTitle": "固定 Provider",
144
+ "strategy.manualDescription": "当现有记忆空间都不适合时,新记忆空间固定创建在这个 Provider 中。",
145
+ "strategy.automaticTitle": "智能选择规则",
146
+ "strategy.automaticDescription": "数据边界与能力要求由主机强制执行,Prompt 只影响合格候选之间的判断。",
147
+ "strategy.taskAgentReady": "任务 Agent 就绪",
148
+ "strategy.taskAgentUnavailable": "等待任务 Agent",
149
+ "strategy.save": "保存策略",
150
+ "strategy.saving": "保存中…",
151
+ "overview.providerOpenVikingHint": "连接已有 OpenViking 服务,由记忆空间工作流统一调度",
152
+ "overview.providerSummary.mnemon-native": "官方原生、本地优先,保留完整图谱与软删除能力",
153
+ "overview.providerSummary.openviking": "文件系统形态的共享记忆,支持分层读取与自动语义提炼",
154
+ "overview.providerSummary.honcho": "跨会话用户建模、Peer 档案、辩证推理与持久结论",
155
+ "overview.providerSummary.mem0": "自动事实提取、语义召回、重排与去重",
156
+ "overview.providerSummary.hindsight": "知识图谱记忆,具备实体解析、多策略召回与反思",
157
+ "overview.providerSummary.holographic": "本地结构化事实记忆,支持可信度、实体解析与组合召回",
158
+ "overview.providerSummary.retaindb": "云端混合向量/BM25 召回、用户画像与类型化事实",
159
+ "overview.providerSummary.byterover": "通过 brv CLI 使用的本地优先分层知识树",
160
+ "overview.providerSummary.supermemory": "语义记忆、持久画像、会话摄取与多容器召回",
161
+ "overview.providerEndpoint": "服务地址",
162
+ "overview.providerEndpointPlaceholder": "例如:http://127.0.0.1:1933",
163
+ "overview.providerTargetUri": "记忆范围 URI",
164
+ "overview.providerTargetPlaceholder": "例如:viking://user/memories",
165
+ "overview.providerAdvanced": "身份与凭据(可选)",
166
+ "overview.providerApiKey": "API Key",
167
+ "overview.providerApiKeyOptional": "未启用鉴权时可留空",
168
+ "overview.providerApiKeyKeep": "已保存;留空表示保持不变",
169
+ "overview.providerAccount": "Account",
170
+ "overview.providerUser": "User",
171
+ "overview.providerActorPeer": "Actor Peer",
172
+ "overview.providerField.workspace": "工作区",
173
+ "overview.providerField.userId": "用户 ID",
174
+ "overview.providerField.agentId": "Agent ID",
175
+ "overview.providerField.mode": "接入模式",
176
+ "overview.providerField.rerank": "重排检索结果",
177
+ "overview.providerField.bankId": "记忆库",
178
+ "overview.providerField.budget": "召回预算",
179
+ "overview.providerField.dataPath": "事实存储路径",
180
+ "overview.providerField.defaultDirectory": "默认知识目录",
181
+ "overview.providerField.defaultTrust": "默认可信度",
182
+ "overview.providerField.minTrust": "最低召回可信度",
183
+ "overview.providerField.project": "项目标识",
184
+ "overview.providerField.cliPath": "brv 可执行文件",
185
+ "overview.providerField.workingDirectory": "知识目录",
186
+ "overview.providerField.containerTag": "容器标签",
187
+ "overview.providerField.searchMode": "检索模式",
188
+ "overview.providerOption.platform": "Mem0 Platform",
189
+ "overview.providerOption.self-hosted": "自托管服务",
190
+ "overview.providerOption.low": "低",
191
+ "overview.providerOption.mid": "中",
192
+ "overview.providerOption.high": "高",
193
+ "overview.providerOption.hybrid": "混合检索",
194
+ "overview.providerOption.memories": "仅记忆",
195
+ "overview.providerOption.documents": "仅文档",
196
+ "overview.providerKindLocal": "本地引擎",
197
+ "overview.providerKindRemote": "远程服务",
198
+ "overview.providerSecretClear": "清除已保存的凭据",
199
+ "overview.providerWriteExact": "精确写入",
200
+ "overview.providerWriteAsync": "异步语义提炼",
201
+ "overview.providerGraphReady": "支持关系图谱",
202
+ "overview.providerSearchReady": "支持统一检索",
203
+ "overview.providerRemote": "三方远程记忆",
204
+ "overview.providerLocal": "三方本地记忆",
205
+ "overview.creating": "创建中…",
206
+ "overview.createAction": "创建",
207
+ "overview.editBody": "编辑",
208
+ "overview.editBodyAria": "编辑{name}",
209
+ "overview.editName": "名称",
210
+ "overview.editDescription": "路由说明",
211
+ "overview.saveBody": "保存",
212
+ "overview.savingBody": "保存中…",
213
+ "overview.deleteBody": "删除",
214
+ "overview.deleteBodyAria": "删除{name}",
215
+ "overview.deleteTitle": "删除“{name}”?",
216
+ "overview.deleteWarning": "该操作会永久删除这个记忆空间及其中的全部记忆与关系,无法撤销。",
217
+ "overview.lastStoreDeleteHint": "Mnemon 需要保留至少一个原生 Store;可将最后一个记忆空间设为未激活,但不能删除。",
218
+ "overview.deleteAction": "确认删除",
219
+ "overview.disconnectBody": "断开",
220
+ "overview.disconnectBodyAria": "断开{name}",
221
+ "overview.disconnectTitle": "断开“{name}”?",
222
+ "overview.disconnectWarning": "这里只会从 DSH 记忆空间目录移除 {provider} 连接;底层引擎中的记忆不会被删除。",
223
+ "overview.disconnectAction": "确认断开",
224
+ "overview.deletingBody": "删除中…",
225
+ "overview.snapshot": "多记忆空间实时快照",
226
+ "overview.snapshotSources": "快照可观察范围",
227
+ "overview.snapshotSourcesHint": "真实关系图、无边内容投影和查询型记忆空间分别呈现,不伪造 Provider 不具备的关系。",
228
+ "overview.noVisualTitle": "当前记忆空间只支持按需查询",
229
+ "overview.noVisualText": "这些 Provider 不提供可枚举内容或图谱;请前往“检索”输入明确问题。",
230
+ "overview.waitingSnapshot": "等待首个快照",
231
+ "overview.updatedAt": "更新于 {time}",
232
+ "overview.edgeScope": "空间归属",
233
+ "overview.edgeTemporal": "时间",
234
+ "overview.edgeSemantic": "语义",
235
+ "overview.edgeCausal": "因果",
236
+ "overview.edgeEntity": "实体关联",
237
+ "overview.graphComposition": "{spaces} 个空间 · {memories} 条记忆 · {entities} 个实体",
238
+ "overview.graphCount": "展示 {visible} / {total} 个元素",
239
+ "overview.graphEdges": "{count} 条图谱连接",
240
+ "overview.inspector": "记忆详情",
241
+ "overview.inspectorSpace": "记忆空间详情",
242
+ "overview.inspectorEntity": "实体详情",
243
+ "overview.selectNode": "选择一个图谱元素",
244
+ "overview.selectNodeText": "查看记忆空间、实体或记忆的精确上下文。",
245
+ "overview.closeInspector": "关闭节点详情",
246
+ "overview.memoryId": "记忆 ID",
247
+ "overview.spaceId": "记忆空间 ID",
248
+ "overview.containedMemories": "包含记忆",
249
+ "overview.entityMentions": "索引次数",
250
+ "overview.exploreNode": "围绕它检索",
251
+ "overview.previewAria": "查看全文",
252
+ "overview.previewTitle": "内容全文",
253
+ "overview.loading": "正在同步多记忆空间实时快照…",
254
+ "graph.layoutAria": "图谱布局",
255
+ "graph.layoutNatural": "自然布局",
256
+ "graph.layoutUniform": "均匀布局",
257
+ "graph.layoutCustom": "自定义布局",
258
+ "graph.layoutStatus": "布局状态:{layout}",
259
+ "graph.draggable": "{layout} · 可拖拽",
260
+ "graph.naturalAction": "自然铺开",
261
+ "graph.uniformAction": "均匀重置",
262
+ "graph.aria": "Mnemon 实时记忆图谱,{nodes} 个元素,{edges} 条连接",
263
+ "graph.kindSpace": "记忆空间",
264
+ "graph.kindEntity": "实体",
265
+ "search.title": "检索记忆",
266
+ "search.description": "跨已激活记忆空间检索原始证据;每个 Provider 使用自己的原生召回方式并保留来源。",
267
+ "search.maxResults": "最多 {count} 条",
268
+ "search.placeholder": "为什么选用 SQLite?这个项目有哪些发布约定?",
269
+ "search.queryAria": "记忆查询",
270
+ "search.categoryAria": "记忆分类",
271
+ "search.strategy": "策略",
272
+ "search.modeAria": "检索模式",
273
+ "search.modeSmart": "智能召回",
274
+ "search.modeKeyword": "关键词检索",
275
+ "search.modeBasic": "基础匹配",
276
+ "search.searching": "检索中…",
277
+ "search.action": "直接检索",
278
+ "search.agentAction": "Agent 查询",
279
+ "search.agentSearching": "Agent 分析中…",
280
+ "search.agentAnswer": "Agent 查询结果",
281
+ "search.agentAnswerHint": "基于下方召回证据",
282
+ "search.startTitle": "从一个明确问题开始",
283
+ "search.startText": "聚焦实体、决策或时间线,比批量加载整库更可靠。",
284
+ "search.emptyTitle": "没有命中",
285
+ "search.emptyText": "换一个更具体的实体、决策或时间线关键词试试。",
286
+ "search.results": "原始召回内容",
287
+ "search.related": "关联记忆",
288
+ "search.closeRelated": "关闭关联记忆",
289
+ "search.traversing": "正在遍历图谱…",
290
+ "search.noRelated": "没有找到两跳内的关联节点。",
291
+ "search.sourcesTitle": "本次检索范围",
292
+ "entities.title": "实体查阅",
293
+ "entities.description": "只在真正提供实体索引的记忆空间中,查阅实体跨越事实、决策与上下文的关系。",
294
+ "entities.sourcesTitle": "实体能力范围",
295
+ "entities.unsupportedTitle": "没有支持实体索引的记忆空间",
296
+ "entities.unsupportedText": "当前激活 Provider 仍可通过“检索”召回,但不会在这里伪装成实体图谱。",
297
+ "entities.count": "{count} 个活跃实体",
298
+ "entities.nameAria": "实体名称",
299
+ "entities.placeholder": "输入任意实体…",
300
+ "entities.action": "查阅",
301
+ "entities.top": "高频实体",
302
+ "entities.frequency": "按出现频率",
303
+ "entities.filterHint": "输入时即时过滤左侧列表(按 Esc 清空)",
304
+ "entities.emptyRail": "写入带实体的记忆后,这里会形成入口。",
305
+ "entities.filterEmpty": "本地无匹配。点“查阅”向宿主发起查询。",
306
+ "entities.loading": "正在沿实体关系召回…",
307
+ "entities.selectTitle": "选择或输入一个实体",
308
+ "entities.selectText": "实体视图会聚合与它相关的记忆,而不是只做字面匹配。",
309
+ "entities.emptyTitle": "没有关联记忆",
310
+ "entities.emptyText": "尝试更完整的名称或另一个实体别名。",
311
+ "remember.title": "沉淀记忆",
312
+ "remember.description": "候选内容会进入无会话历史的独立任务 Agent,由它选择记忆空间、查重、提炼并执行写入,不占用主对话上下文。",
313
+ "remember.readOnlyTitle": "当前为只读模式",
314
+ "remember.readOnlyText": "当前部署禁止记忆写入;如需调整,请修改 DSH 的 Mnemon 配置并保存。",
315
+ "remember.delegateTitle": "交给独立任务 Agent",
316
+ "remember.noSession": "无可用会话",
317
+ "remember.ready": "独立任务 Agent 就绪",
318
+ "remember.noTaskAgent": "任务 Agent 不可用",
319
+ "remember.taskAgentReady": "任务 Agent 就绪",
320
+ "remember.candidate": "候选内容",
321
+ "remember.candidateAria": "待沉淀内容",
322
+ "remember.placeholder": "输入希望跨任务保留的背景、偏好、决策或洞察。模型会先判断它是否真的值得沉淀。",
323
+ "remember.sessionHint": "当前视图没有可用的模型路由,无法创建独立任务 Agent。",
324
+ "remember.taskAgentHint": "当前 Host 暂时无法创建独立任务 Agent,请刷新状态后重试。",
325
+ "remember.processing": "独立任务 Agent 处理中…",
326
+ "remember.action": "调度独立任务 Agent 判断并沉淀",
327
+ "remember.advanced": "人工高级选项",
328
+ "remember.advancedHint": "为独立任务 Agent 指定目标记忆空间与元数据约束",
329
+ "remember.expand": "展开",
330
+ "remember.target": "目标记忆空间",
331
+ "remember.asyncProviderHint": "该记忆空间会等待远程提炼任务完成后再返回真实写入回执。",
332
+ "remember.entities": "实体(逗号分隔)",
333
+ "remember.tags": "标签(逗号分隔)",
334
+ "remember.advancedText": "高级选项是约束而不是绕过监督;独立任务 Agent 仍会查重并返回结构化回执。",
335
+ "remember.saving": "独立任务 Agent 写入中…",
336
+ "remember.advancedAction": "按高级约束沉淀",
337
+ "remember.skipped": "独立任务 Agent 判断无需写入",
338
+ "remember.completed": "独立任务 Agent 已完成处理",
339
+ "remember.processed": "独立任务 Agent 已处理:{action}",
340
+ "remember.dispatchFailed": "调度失败:{error}",
341
+ "remember.saveFailed": "保存失败:{error}",
342
+ "content.title": "记忆内容",
343
+ "content.description": "按 Provider 的真实浏览契约检查可观察内容;列表型、查询型与不可浏览引擎会明确区分。",
344
+ "content.sourcesTitle": "Provider 内容模型",
345
+ "content.count": "{count} 条记忆",
346
+ "content.filterAria": "筛选记忆内容",
347
+ "content.filterPlaceholder": "按内容或精确 ID 筛选…",
348
+ "content.categoryAria": "记忆分类",
349
+ "content.apply": "应用筛选",
350
+ "content.notice": "内容页直接调用 Provider 的只读浏览契约;查询型引擎仅在输入查询后执行检索。",
351
+ "content.queryRequiredTitle": "查询型记忆空间等待问题",
352
+ "content.queryRequiredText": "输入一个明确查询即可读取 ByteRover 等不提供全量列表的 Provider。",
353
+ "content.showing": "当前显示 {visible} / {total}",
354
+ "content.showMore": "再显示 {count} 条",
355
+ "content.emptyTitle": "没有符合条件的记忆",
356
+ "content.emptyText": "清空筛选,或前往“沉淀”写入第一条稳定上下文。",
357
+ "nav.spaces": "记忆空间",
358
+ "overview.editSpace": "编辑",
359
+ "overview.editSpaceAria": "编辑{name}",
360
+ "overview.saveSpace": "保存",
361
+ "overview.savingSpace": "保存中…",
362
+ "overview.deleteSpace": "删除",
363
+ "overview.deleteSpaceAria": "删除{name}",
364
+ "overview.disconnectSpace": "断开",
365
+ "overview.disconnectSpaceAria": "断开{name}",
366
+ "overview.deletingSpace": "删除中…"
367
+ };
368
+ var en = {
369
+ "term.space": "Memory Space",
370
+ "term.spaces": "Memory Spaces",
371
+ "category.decision": "Decision",
372
+ "category.preference": "Preference",
373
+ "category.fact": "Fact",
374
+ "category.insight": "Insight",
375
+ "category.context": "Context",
376
+ "category.general": "General",
377
+ "nav.memory.aria": "Memory Space pages",
378
+ "nav.overview": "Overview",
379
+ "nav.bodies": "Memory Spaces",
380
+ "nav.search": "Recall",
381
+ "nav.entities": "Entities",
382
+ "nav.rememberAction": "Remember",
383
+ "nav.content": "Content",
384
+ "overview.title": "Memory Spaces",
385
+ "overview.description": "Manage memory spaces backed by Mnemon Native or third-party Providers. Active spaces participate in reads, routing, and live snapshots.",
386
+ "overview.pageDescription": "Create and activate Memory Spaces, then inspect storage health and live relation snapshots across providers.",
387
+ "overview.interval": "Full sync on entry · Click a card to sync on demand",
388
+ "overview.fullSyncPending": "Waiting for the first full sync",
389
+ "overview.fullSyncJustNow": "Last full sync: just now",
390
+ "overview.fullSyncSeconds": "Last full sync: {count}s ago",
391
+ "overview.fullSyncMinutes": "Last full sync: {count}m ago",
392
+ "overview.fullSyncHours": "Last full sync: {count}h ago",
393
+ "overview.fullSyncDays": "Last full sync: {count}d ago",
394
+ "overview.syncing": "Syncing…",
395
+ "overview.syncNow": "Sync now",
396
+ "overview.directory": "Memory Space Directory",
397
+ "overview.directory.description": "Each card represents a memory space. A third-party Provider creates its mapping on first connection; later card clicks check only that space, without overwriting locally maintained titles or descriptions.",
398
+ "overview.directory.waiting": "Waiting for directory",
399
+ "overview.directory.unsynced": "Directory not synchronized",
400
+ "overview.directory.unsyncedBadge": "Directory pending",
401
+ "overview.directoryLoading": "Loading the Memory Space directory",
402
+ "overview.healthLoading": "Checking Memory Space health",
403
+ "overview.storageHealthy": "Storage healthy",
404
+ "overview.storageUnhealthy": "Storage unavailable",
405
+ "overview.storageChecking": "Checking",
406
+ "overview.reconnecting": "Reconnecting",
407
+ "overview.reconnectHint": "Click the card to reconnect and synchronize this Memory Space",
408
+ "overview.reconnectAria": "Reconnect {name}",
409
+ "overview.snapshotLoading": "Loading the multi-space live snapshot",
410
+ "overview.metadataAction": "AI metadata",
411
+ "overview.metadataTitle": "Maintain Memory Space metadata with AI",
412
+ "overview.metadataDescription": "Select one or more active Memory Spaces. The system reads a small sample through each Provider’s fastest native path, then gives each space to an independent task Agent for its title and description.",
413
+ "overview.metadataUnavailable": "Temporarily unavailable: no active Agent matches the current memory scope",
414
+ "overview.metadataLoading": "Loading maintainable Memory Spaces…",
415
+ "overview.metadataEmpty": "There are no active Memory Spaces whose metadata can be maintained by AI.",
416
+ "overview.metadataSelected": "{count} Memory Spaces selected",
417
+ "overview.metadataSelectAll": "Select all",
418
+ "overview.metadataClear": "Clear",
419
+ "overview.metadataSafety": "Only local titles and descriptions are updated. Memory content is never changed, moved, or deleted. Disabling a Provider removes this local metadata with its projection.",
420
+ "overview.metadataGenerate": "Generate with AI ({count})",
421
+ "overview.metadataGenerating": "AI is generating…",
422
+ "overview.metadataRunningCount": "{count} running",
423
+ "overview.metadataTaskRunning": "Generating…",
424
+ "overview.metadataTaskSuccess": "Updated",
425
+ "overview.metadataTaskError": "Failed: {error}",
426
+ "overview.metadataTaskUnknown": "Unknown error",
427
+ "overview.metadataCompleted": "Updated metadata for {count} Memory Spaces.",
428
+ "overview.mnemonDefault": "Mnemon default",
429
+ "overview.toggleAria": "{name} read toggle",
430
+ "overview.toggling": "Switching",
431
+ "overview.noDescription": "No routing description yet.",
432
+ "overview.unsyncedTitle": "Memory Space directory is not synchronized",
433
+ "overview.unsyncedShort": "The Web client and DSH Host are using different contracts. Restart the Host to register existing Stores.",
434
+ "overview.unsyncedLong": "The Host is still using the previous plugin contract. Restart DSH to rediscover existing Stores; no .db file will be deleted.",
435
+ "overview.emptyTitle": "No Memory Spaces yet",
436
+ "overview.emptyShort": "Create the first space and distill durable context into it.",
437
+ "overview.emptyLong": "Create a Mnemon Memory Space, or enable a third-party provider in Settings → Memory System to synchronize its existing namespaces.",
438
+ "overview.noActiveTitle": "No active Memory Spaces",
439
+ "overview.noActiveText": "Enable read access for at least one space to aggregate its live graph here.",
440
+ "overview.noContentTitle": "Active spaces have no content yet",
441
+ "overview.noContentText": "Distill durable context into a space to populate nodes and relations.",
442
+ "overview.createTitle": "Create Memory Space",
443
+ "overview.createDialogHint": "Define this Memory Space and choose its provider here. It reuses services, credentials, and global data locations from Settings → Memory System.",
444
+ "overview.createIdentityTitle": "Memory Space details",
445
+ "overview.createIdentityHint": "The name identifies the space; the description guides when the agent writes and recalls it.",
446
+ "overview.createPlacementTitle": "Memory Space provider",
447
+ "overview.createPlacementHint": "This is an explicit manual creation. Choose one enabled Provider; automatic selection is managed by Distillation Strategy.",
448
+ "overview.createName": "New Memory Space name",
449
+ "overview.createNamePlaceholder": "Name",
450
+ "overview.createDescription": "New Memory Space description",
451
+ "overview.createDescriptionPlaceholder": "Describe what belongs here and when it should be recalled",
452
+ "overview.placementMode": "Engine selection",
453
+ "overview.placementManual": "Choose manually",
454
+ "overview.placementManualHint": "Choose one enabled provider directly",
455
+ "overview.placementAutomatic": "Smart selection",
456
+ "overview.placementAutomaticHint": "Apply data-boundary and capability rules first, then let the agent choose among eligible providers",
457
+ "overview.placementUnavailable": "Requires a connected conversation aligned with this workspace",
458
+ "overview.recommended": "Recommended",
459
+ "overview.placementPolicy": "Selection policy",
460
+ "overview.placementPolicyHint": "The host enforces rules. The prompt only guides judgment among eligible candidates.",
461
+ "overview.agentDecision": "Agent decision",
462
+ "overview.placementPrompt": "Strategy prompt (optional)",
463
+ "overview.placementPromptPlaceholder": "For example: This is collaborative knowledge. Prefer local storage when exact writes are required; otherwise prefer sharing.",
464
+ "overview.dataBoundary": "Data boundary",
465
+ "overview.dataBoundaryRemote": "Remote services allowed",
466
+ "overview.dataBoundaryLocal": "Local only",
467
+ "overview.preference": "Soft preference",
468
+ "overview.preferenceBalanced": "Balanced",
469
+ "overview.preferenceLocal": "Local first",
470
+ "overview.preferenceShared": "Shared first",
471
+ "overview.requiredCapabilities": "Required capabilities (select any)",
472
+ "overview.capability.graph": "Relation graph",
473
+ "overview.capability.exact-write": "Exact writes",
474
+ "overview.capability.forget": "Safe forget",
475
+ "overview.candidateNativeReady": "Official native · follows the active memory scope",
476
+ "overview.providerServiceRequired": "Not enabled; configure the service in Settings → Memory System first",
477
+ "overview.workspaceBinding.automatic": "Follows the active memory scope",
478
+ "overview.workspaceBinding.optional-override": "Follows the active scope; global location can be customized",
479
+ "overview.workspaceBinding.provider-global": "Always uses the global scope",
480
+ "overview.candidateOpenViking": "Include the remote candidate and provide its connection",
481
+ "overview.candidateLocal": "Local provider · follows the active memory scope",
482
+ "overview.candidateRemote": "Remote provider · uses the global service configuration",
483
+ "overview.placementByLlm": "Agent selected",
484
+ "overview.placementByRules": "Rule selected",
485
+ "overview.placementConfidence": "Confidence: {confidence}",
486
+ "overview.confidence.high": "High",
487
+ "overview.confidence.medium": "Medium",
488
+ "overview.confidence.low": "Low",
489
+ "overview.providerLabel": "Memory engine",
490
+ "overview.nativeOfficial": "Official native",
491
+ "overview.providerNativeHint": "Official native, local-first storage with the full graph and soft-delete semantics",
492
+ "strategy.action": "Distillation strategy",
493
+ "strategy.title": "Distillation strategy",
494
+ "strategy.description": "Choose how the Agent selects a Provider when it must create a new Memory Space during distillation. Existing spaces are still routed by name, description, and capabilities first.",
495
+ "strategy.loading": "Loading Provider directory…",
496
+ "strategy.modeTitle": "Provider selection",
497
+ "strategy.modeHint": "This policy applies only to Agent-created spaces during distillation. Manual Create Memory Space always asks you to choose.",
498
+ "strategy.manualHint": "Fix one Provider; the Agent cannot override it",
499
+ "strategy.automaticHint": "Apply hard rules first, then let the task Agent choose an eligible Provider",
500
+ "strategy.manualTitle": "Fixed Provider",
501
+ "strategy.manualDescription": "When no existing space fits, create the new space on this Provider.",
502
+ "strategy.automaticTitle": "Smart selection rules",
503
+ "strategy.automaticDescription": "The host enforces data and capability rules. The prompt only guides judgment among eligible candidates.",
504
+ "strategy.taskAgentReady": "Task Agent ready",
505
+ "strategy.taskAgentUnavailable": "Waiting for task Agent",
506
+ "strategy.save": "Save strategy",
507
+ "strategy.saving": "Saving…",
508
+ "overview.providerOpenVikingHint": "Connect an existing OpenViking service under the same Memory Space workflow",
509
+ "overview.providerSummary.mnemon-native": "Official native, local-first storage with the full graph and soft-delete semantics",
510
+ "overview.providerSummary.openviking": "Filesystem-shaped shared memory with tiered reads and automatic semantic extraction",
511
+ "overview.providerSummary.honcho": "Cross-session user modelling, peer profiles, dialectic reasoning, and persistent conclusions",
512
+ "overview.providerSummary.mem0": "Automatic fact extraction, semantic retrieval, reranking, and deduplication",
513
+ "overview.providerSummary.hindsight": "Knowledge-graph memory with entity resolution, multi-strategy recall, and reflection",
514
+ "overview.providerSummary.holographic": "Local structured fact memory with trust scoring, entity resolution, and compositional retrieval",
515
+ "overview.providerSummary.retaindb": "Cloud hybrid vector/BM25 retrieval, user profiles, and typed durable facts",
516
+ "overview.providerSummary.byterover": "Local-first hierarchical knowledge tree accessed through the brv CLI",
517
+ "overview.providerSummary.supermemory": "Semantic memory, persistent profiles, conversation ingest, and multi-container recall",
518
+ "overview.providerEndpoint": "Service endpoint",
519
+ "overview.providerEndpointPlaceholder": "For example: http://127.0.0.1:1933",
520
+ "overview.providerTargetUri": "Memory scope URI",
521
+ "overview.providerTargetPlaceholder": "For example: viking://user/memories",
522
+ "overview.providerAdvanced": "Identity and credentials (optional)",
523
+ "overview.providerApiKey": "API Key",
524
+ "overview.providerApiKeyOptional": "Leave blank when authentication is disabled",
525
+ "overview.providerApiKeyKeep": "Saved; leave blank to keep unchanged",
526
+ "overview.providerAccount": "Account",
527
+ "overview.providerUser": "User",
528
+ "overview.providerActorPeer": "Actor Peer",
529
+ "overview.providerField.workspace": "Workspace",
530
+ "overview.providerField.userId": "User ID",
531
+ "overview.providerField.agentId": "Agent ID",
532
+ "overview.providerField.mode": "Mode",
533
+ "overview.providerField.rerank": "Rerank search results",
534
+ "overview.providerField.bankId": "Memory bank",
535
+ "overview.providerField.budget": "Recall budget",
536
+ "overview.providerField.dataPath": "Fact store path",
537
+ "overview.providerField.defaultDirectory": "Default knowledge directory",
538
+ "overview.providerField.defaultTrust": "Default trust",
539
+ "overview.providerField.minTrust": "Minimum recall trust",
540
+ "overview.providerField.project": "Project",
541
+ "overview.providerField.cliPath": "brv executable",
542
+ "overview.providerField.workingDirectory": "Knowledge directory",
543
+ "overview.providerField.containerTag": "Container tag",
544
+ "overview.providerField.searchMode": "Search mode",
545
+ "overview.providerOption.platform": "Mem0 Platform",
546
+ "overview.providerOption.self-hosted": "Self-hosted server",
547
+ "overview.providerOption.low": "Low",
548
+ "overview.providerOption.mid": "Medium",
549
+ "overview.providerOption.high": "High",
550
+ "overview.providerOption.hybrid": "Hybrid",
551
+ "overview.providerOption.memories": "Memories",
552
+ "overview.providerOption.documents": "Documents",
553
+ "overview.providerKindLocal": "Local engine",
554
+ "overview.providerKindRemote": "Remote service",
555
+ "overview.providerSecretClear": "Clear the saved credential",
556
+ "overview.providerWriteExact": "Exact writes",
557
+ "overview.providerWriteAsync": "Asynchronous semantic extraction",
558
+ "overview.providerGraphReady": "Relation graph available",
559
+ "overview.providerSearchReady": "Unified search available",
560
+ "overview.providerRemote": "Third-party remote memory",
561
+ "overview.providerLocal": "Third-party local memory",
562
+ "overview.creating": "Creating…",
563
+ "overview.createAction": "Create",
564
+ "overview.editBody": "Edit",
565
+ "overview.editBodyAria": "Edit {name}",
566
+ "overview.editName": "Name",
567
+ "overview.editDescription": "Routing description",
568
+ "overview.saveBody": "Save",
569
+ "overview.savingBody": "Saving…",
570
+ "overview.deleteBody": "Delete",
571
+ "overview.deleteBodyAria": "Delete {name}",
572
+ "overview.deleteTitle": "Delete “{name}”?",
573
+ "overview.deleteWarning": "This permanently deletes the Memory Space and every memory and relation it contains. This cannot be undone.",
574
+ "overview.lastStoreDeleteHint": "Mnemon must retain at least one native Store. The last Memory Space may be inactive, but it cannot be deleted.",
575
+ "overview.deleteAction": "Delete permanently",
576
+ "overview.disconnectBody": "Disconnect",
577
+ "overview.disconnectBodyAria": "Disconnect {name}",
578
+ "overview.disconnectTitle": "Disconnect “{name}”?",
579
+ "overview.disconnectWarning": "This only removes the {provider} connection from the DSH Memory Space directory. Memories in the underlying engine remain untouched.",
580
+ "overview.disconnectAction": "Disconnect",
581
+ "overview.deletingBody": "Deleting…",
582
+ "overview.snapshot": "Live multi-space snapshot",
583
+ "overview.snapshotSources": "Snapshot observability",
584
+ "overview.snapshotSourcesHint": "True relation graphs, edge-free content projections, and query-only spaces remain distinct; missing provider relations are never invented.",
585
+ "overview.noVisualTitle": "Active spaces are query-only",
586
+ "overview.noVisualText": "These providers expose neither enumerable content nor a graph. Open Recall and ask a focused question.",
587
+ "overview.waitingSnapshot": "Waiting for the first snapshot",
588
+ "overview.updatedAt": "Updated at {time}",
589
+ "overview.edgeScope": "Space scope",
590
+ "overview.edgeTemporal": "Temporal",
591
+ "overview.edgeSemantic": "Semantic",
592
+ "overview.edgeCausal": "Causal",
593
+ "overview.edgeEntity": "Entity relation",
594
+ "overview.graphComposition": "{spaces} spaces · {memories} memories · {entities} entities",
595
+ "overview.graphCount": "Showing {visible} / {total} elements",
596
+ "overview.graphEdges": "{count} graph edges",
597
+ "overview.inspector": "Memory details",
598
+ "overview.inspectorSpace": "Memory Space details",
599
+ "overview.inspectorEntity": "Entity details",
600
+ "overview.selectNode": "Select a graph element",
601
+ "overview.selectNodeText": "Inspect the exact context for a Memory Space, entity, or memory.",
602
+ "overview.closeInspector": "Close node details",
603
+ "overview.memoryId": "Memory ID",
604
+ "overview.spaceId": "Memory Space ID",
605
+ "overview.containedMemories": "Contained memories",
606
+ "overview.entityMentions": "Indexed mentions",
607
+ "overview.exploreNode": "Recall around this",
608
+ "overview.previewAria": "View full content",
609
+ "overview.previewTitle": "Full content",
610
+ "overview.loading": "Synchronizing the multi-space live snapshot…",
611
+ "graph.layoutAria": "Graph layout",
612
+ "graph.layoutNatural": "Natural layout",
613
+ "graph.layoutUniform": "Uniform layout",
614
+ "graph.layoutCustom": "Custom layout",
615
+ "graph.layoutStatus": "Layout: {layout}",
616
+ "graph.draggable": "{layout} · draggable",
617
+ "graph.naturalAction": "Natural spread",
618
+ "graph.uniformAction": "Uniform reset",
619
+ "graph.aria": "Mnemon live memory graph with {nodes} elements and {edges} edges",
620
+ "graph.kindSpace": "Memory Space",
621
+ "graph.kindEntity": "Entity",
622
+ "search.title": "Recall Memory",
623
+ "search.description": "Retrieve raw evidence across active Memory Spaces; every provider uses its native recall method and keeps provenance.",
624
+ "search.maxResults": "Up to {count} results",
625
+ "search.placeholder": "Why did we choose SQLite? What release conventions apply?",
626
+ "search.queryAria": "Memory query",
627
+ "search.categoryAria": "Memory category",
628
+ "search.strategy": "Strategy",
629
+ "search.modeAria": "Recall mode",
630
+ "search.modeSmart": "Smart recall",
631
+ "search.modeKeyword": "Keyword search",
632
+ "search.modeBasic": "Basic match",
633
+ "search.searching": "Recalling…",
634
+ "search.action": "Direct search",
635
+ "search.agentAction": "Ask Agent",
636
+ "search.agentSearching": "Agent analyzing…",
637
+ "search.agentAnswer": "Agent answer",
638
+ "search.agentAnswerHint": "Grounded in the recalled evidence below",
639
+ "search.startTitle": "Start with a focused question",
640
+ "search.startText": "A focused entity, decision, or timeline is more reliable than loading the whole database.",
641
+ "search.emptyTitle": "No matches",
642
+ "search.emptyText": "Try a more specific entity, decision, or timeline keyword.",
643
+ "search.results": "Raw recalled evidence",
644
+ "search.related": "Related memories",
645
+ "search.closeRelated": "Close related memories",
646
+ "search.traversing": "Traversing the graph…",
647
+ "search.noRelated": "No related nodes found within two hops.",
648
+ "search.sourcesTitle": "Search coverage",
649
+ "entities.title": "Entity Explorer",
650
+ "entities.description": "Inspect entity connections only in Memory Spaces that expose a real entity index.",
651
+ "entities.sourcesTitle": "Entity capability coverage",
652
+ "entities.unsupportedTitle": "No active space exposes an entity index",
653
+ "entities.unsupportedText": "The active providers remain searchable through Recall, but are not presented here as a fabricated entity graph.",
654
+ "entities.count": "{count} active entities",
655
+ "entities.nameAria": "Entity name",
656
+ "entities.placeholder": "Enter any entity…",
657
+ "entities.action": "Explore",
658
+ "entities.top": "Top entities",
659
+ "entities.frequency": "By frequency",
660
+ "entities.filterHint": "Type to filter the rail locally (Esc to clear).",
661
+ "entities.emptyRail": "Entities appear here after memories with entity metadata are stored.",
662
+ "entities.filterEmpty": "No local match. Press Explore to query the host.",
663
+ "entities.loading": "Recalling entity relations…",
664
+ "entities.selectTitle": "Select or enter an entity",
665
+ "entities.selectText": "The entity view aggregates related memories instead of relying on literal matching.",
666
+ "entities.emptyTitle": "No related memories",
667
+ "entities.emptyText": "Try the full name or another entity alias.",
668
+ "remember.title": "Distill Memory",
669
+ "remember.description": "An independent task Agent with no conversation history selects a Memory Space, checks duplicates, distills the candidate, and completes the write without filling the main conversation context.",
670
+ "remember.readOnlyTitle": "Read-only mode",
671
+ "remember.readOnlyText": "This deployment disables memory writes. Change and save the DSH Mnemon configuration to enable them.",
672
+ "remember.delegateTitle": "Send to independent task Agent",
673
+ "remember.noSession": "No live session",
674
+ "remember.ready": "Independent task Agent ready",
675
+ "remember.noTaskAgent": "Task Agent unavailable",
676
+ "remember.taskAgentReady": "Task Agent ready",
677
+ "remember.candidate": "Candidate",
678
+ "remember.candidateAria": "Memory candidate",
679
+ "remember.placeholder": "Enter background, preferences, decisions, or insights worth retaining across tasks. The model decides whether they qualify.",
680
+ "remember.sessionHint": "No usable model route is available for an independent task Agent.",
681
+ "remember.taskAgentHint": "The Host cannot currently create an isolated task Agent. Refresh status and try again.",
682
+ "remember.processing": "Independent task Agent is working…",
683
+ "remember.action": "Evaluate and distill",
684
+ "remember.advanced": "Advanced human constraints",
685
+ "remember.advancedHint": "Constrain the target Memory Space and metadata",
686
+ "remember.expand": "Expand",
687
+ "remember.target": "Target Memory Space",
688
+ "remember.asyncProviderHint": "This Memory Space waits for remote extraction to settle before returning a truthful write receipt.",
689
+ "remember.entities": "Entities (comma-separated)",
690
+ "remember.tags": "Tags (comma-separated)",
691
+ "remember.advancedText": "Advanced options constrain the independent task Agent; they do not bypass supervision or duplicate checks.",
692
+ "remember.saving": "Independent task Agent is writing…",
693
+ "remember.advancedAction": "Distill with constraints",
694
+ "remember.skipped": "The independent task Agent decided not to write",
695
+ "remember.completed": "The independent task Agent completed processing",
696
+ "remember.processed": "Independent task Agent processed: {action}",
697
+ "remember.dispatchFailed": "Dispatch failed: {error}",
698
+ "remember.saveFailed": "Save failed: {error}",
699
+ "content.title": "Memory Content",
700
+ "content.description": "Inspect observable content through each provider’s real browse contract, with enumerable, query-only, and unavailable engines kept distinct.",
701
+ "content.sourcesTitle": "Provider content models",
702
+ "content.count": "{count} memories",
703
+ "content.filterAria": "Filter memory content",
704
+ "content.filterPlaceholder": "Filter by content or exact ID…",
705
+ "content.categoryAria": "Memory category",
706
+ "content.apply": "Apply filters",
707
+ "content.notice": "Content calls each provider’s read-only browse contract directly; query-only engines run only after you enter a query.",
708
+ "content.queryRequiredTitle": "Query-only spaces are waiting",
709
+ "content.queryRequiredText": "Enter a focused query to inspect providers such as ByteRover that do not expose a complete list.",
710
+ "content.showing": "Showing {visible} / {total}",
711
+ "content.showMore": "Show {count} more",
712
+ "content.emptyTitle": "No matching memories",
713
+ "content.emptyText": "Clear the filters or distill the first durable memory.",
714
+ "nav.spaces": "Memory Spaces",
715
+ "overview.editSpace": "Edit",
716
+ "overview.editSpaceAria": "Edit {name}",
717
+ "overview.saveSpace": "Save",
718
+ "overview.savingSpace": "Saving…",
719
+ "overview.deleteSpace": "Delete",
720
+ "overview.deleteSpaceAria": "Delete {name}",
721
+ "overview.disconnectSpace": "Disconnect",
722
+ "overview.disconnectSpaceAria": "Disconnect {name}",
723
+ "overview.deletingSpace": "Deleting…"
724
+ };
725
+ //#endregion
726
+ //#region \0source-css:/home/runner/work/dsh-mnemon/dsh-mnemon/plugins/dsh-mnemon-source-memory-spaces/presentation/page.module.css.mjs
727
+ const css$2 = ".IIa07q_entityHeading>span,.IIa07q_inspectorHeading>span{color:var(--mn-faint);font:650 9px/1.2 var(--mn-code);letter-spacing:.12em;text-transform:uppercase}.IIa07q_memoryHeaderActions{align-items:center;gap:7px;display:flex}.IIa07q_memoryHeaderActions>button{white-space:nowrap}.IIa07q_asyncRegion{min-width:0;position:relative}.IIa07q_asyncResults{min-width:0;min-height:120px;position:relative}.IIa07q_asyncPlaceholder{border:1px solid var(--mn-line);min-height:220px;color:var(--mn-muted);background:var(--mn-layer-1);border-radius:13px;place-items:center;display:grid;position:relative}.IIa07q_muted{color:var(--mn-faint);padding:16px 0;font-size:12px}.IIa07q_readSources{border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-1) 72%, transparent);border-radius:11px;gap:8px;margin:0 0 14px;padding:11px 12px;display:grid}.IIa07q_readSources>header{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.IIa07q_readSources>header>div{gap:2px;display:grid}.IIa07q_readSources>header strong{font-size:11px}.IIa07q_readSources>header p{max-width:92ch;color:var(--mn-muted);margin:0;font-size:9.5px;line-height:1.45}.IIa07q_readSources>header>button{border:1px solid var(--mn-line);min-height:26px;color:var(--mn-muted);background:var(--mn-layer-2);cursor:pointer;border-radius:7px;flex:none;padding:0 8px;font-size:9px}.IIa07q_readSources>header>button[data-selected]{border-color:color-mix(in srgb, var(--mn-accent) 42%, var(--mn-line));color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 7%, var(--mn-layer-2))}.IIa07q_readSources>div{grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:6px;display:grid}.IIa07q_readSourceCard,.IIa07q_bodyCard,.IIa07q_metadataList>label{border:1px solid var(--mn-line);color:var(--mn-text);background:linear-gradient(90deg, color-mix(in srgb, var(--mn-provider-color) 5%, var(--mn-layer-1)), var(--mn-layer-1) 34%);box-shadow:inset 3px 0 0 color-mix(in srgb, var(--mn-provider-color) 68%, transparent);border-radius:8px}.IIa07q_readSourceCard{text-align:left;grid-template-columns:7px minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0;min-height:58px;padding:7px 8px 7px 11px;display:grid}button.IIa07q_readSourceCard{cursor:pointer}button.IIa07q_readSourceCard:hover{border-color:color-mix(in srgb, var(--mn-provider-color) 32%, var(--mn-line-strong));background:linear-gradient(90deg, color-mix(in srgb, var(--mn-provider-color) 8%, var(--mn-hover)), var(--mn-hover) 40%)}.IIa07q_readSourceCard[data-selected]{border-color:color-mix(in srgb, var(--mn-accent) 48%, var(--mn-line));box-shadow:inset 3px 0 0 var(--mn-provider-color), inset 0 0 0 1px color-mix(in srgb, var(--mn-accent) 10%, transparent)}.IIa07q_readSourceSignal{background:var(--mn-success);width:7px;height:7px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-success) 12%, transparent);border-radius:50%}.IIa07q_readSourceCard[data-mode=projection] .IIa07q_readSourceSignal,.IIa07q_readSourceCard[data-mode=enumerable] .IIa07q_readSourceSignal{background:#6574d9;box-shadow:0 0 0 3px #6574d924}.IIa07q_readSourceCard[data-mode=query-only] .IIa07q_readSourceSignal{background:#c38a32;box-shadow:0 0 0 3px #c38a3224}.IIa07q_readSourceCard[data-status=unavailable] .IIa07q_readSourceSignal,.IIa07q_readSourceCard[data-status=unsupported] .IIa07q_readSourceSignal{background:var(--mn-danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-danger) 12%, transparent)}.IIa07q_readSourceCard[data-status=empty] .IIa07q_readSourceSignal{background:var(--mn-faint);box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-faint) 12%, transparent)}.IIa07q_readSourceIdentity,.IIa07q_readSourceState{gap:1px;min-width:0;display:grid}.IIa07q_readSourceIdentity strong{text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;overflow:hidden}.IIa07q_readSourceMeta{align-items:center;gap:5px;min-width:0;margin-top:3px;display:flex}.IIa07q_readSourceMeta>small{color:var(--mn-faint);text-overflow:ellipsis;white-space:nowrap;font-size:8px;overflow:hidden}.IIa07q_readSourceState{text-align:right;justify-items:end}.IIa07q_readSourceState em{width:fit-content;color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 9%, transparent);font:650 8px var(--mn-code);white-space:nowrap;border-radius:999px;padding:2px 5px;font-style:normal}.IIa07q_readSourceState small{color:var(--mn-faint);white-space:nowrap;font-size:8px}.IIa07q_bodyDirectory{border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-1) 72%, var(--mn-bg));border-radius:11px;margin-bottom:12px;padding:12px 14px;position:relative}.IIa07q_bodyDirectoryHeader{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:10px;display:flex}.IIa07q_bodyDirectoryHeader h3{margin:1px 0;font-size:13px}.IIa07q_bodyDirectoryHeader p{color:var(--mn-muted);margin:0;font-size:10px}.IIa07q_bodyDirectoryPath{max-width:min(62vw,720px);color:var(--mn-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:9px;display:block;overflow:hidden}.IIa07q_bodyDirectoryControls{flex:none;justify-content:flex-end;align-items:center;gap:6px;padding-right:28px;display:flex}.IIa07q_bodyDirectoryControls>strong{color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 9%, transparent);font:650 9px var(--mn-code);border-radius:999px;flex:none;padding:5px 8px}.IIa07q_bodyGrid{grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:7px;display:grid}.IIa07q_bodyDirectoryEmpty{border:1px dashed color-mix(in srgb, var(--mn-line) 84%, transparent);min-height:92px;color:var(--mn-muted);border-radius:12px;grid-column:1/-1;justify-content:center;align-items:center;gap:14px;display:flex}.IIa07q_bodyDirectoryEmpty>span{opacity:.6;font-size:28px}.IIa07q_bodyDirectoryEmpty strong{color:var(--mn-text);display:block}.IIa07q_bodyDirectoryEmpty p{margin:3px 0 0;font-size:10px}.IIa07q_bodyCard{--mn-body-accent:var(--mn-success);opacity:.72;min-width:0;padding:9px 10px 9px 13px;transition:opacity .18s,border-color .18s,background-color .18s}.IIa07q_bodyCard[data-active]{opacity:1;box-shadow:inset 3px 0 0 color-mix(in srgb, var(--mn-provider-color) 78%, transparent)}.IIa07q_bodyCard[data-reconnectable]{cursor:pointer}.IIa07q_bodyCard[data-reconnectable]:hover{border-color:color-mix(in srgb, var(--mn-provider-color) 46%, var(--mn-line))}.IIa07q_bodyCard[data-reconnectable]:focus-visible{outline:2px solid color-mix(in srgb, var(--mn-accent) 58%, transparent);outline-offset:2px}.IIa07q_bodySignal{background:var(--mn-faint);border-radius:50%;width:7px;height:7px}.IIa07q_bodyCard[data-active] .IIa07q_bodySignal{background:var(--mn-body-accent);box-shadow:0 0 0 4px color-mix(in srgb, var(--mn-body-accent) 14%, transparent)}.IIa07q_bodyCard:not([data-healthy]) .IIa07q_bodySignal{background:var(--mn-danger);box-shadow:0 0 0 4px color-mix(in srgb, var(--mn-danger) 12%, transparent)}.IIa07q_bodyCard[data-status-loading] .IIa07q_bodySignal{background:var(--mn-faint);box-shadow:0 0 0 4px color-mix(in srgb, var(--mn-faint) 12%, transparent)}.IIa07q_bodyCard[data-reconnecting] .IIa07q_bodySignal{box-sizing:border-box;border:1.5px solid color-mix(in srgb, var(--mn-provider-color) 24%, transparent);border-top-color:var(--mn-provider-color);width:7px;height:7px;box-shadow:none;background:0 0;animation:.72s linear infinite IIa07q_mnemon-spin}.IIa07q_bodyHealth{color:var(--mn-success);font:650 8px var(--mn-code);letter-spacing:.07em;text-transform:uppercase}.IIa07q_bodyCard:not([data-healthy]) .IIa07q_bodyHealth{color:var(--mn-danger)}.IIa07q_bodyCard[data-status-loading] .IIa07q_bodyHealth{color:var(--mn-faint)}.IIa07q_mnemonDefaultBadge{border:1px solid color-mix(in srgb, var(--mn-accent) 24%, var(--mn-line));width:fit-content;color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 7%, transparent);font:650 8px var(--mn-code);white-space:nowrap;border-radius:999px;padding:2px 5px}.IIa07q_providerBadge{border:1px solid color-mix(in srgb, var(--mn-provider-color) 34%, var(--mn-line));width:fit-content;max-width:100%;min-height:17px;color:color-mix(in srgb, var(--mn-provider-color) 78%, var(--mn-text));background:color-mix(in srgb, var(--mn-provider-color) 10%, var(--mn-layer-1));font:650 8px/11px var(--mn-code);text-align:center;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap;border-radius:999px;flex:none;justify-content:center;align-items:center;padding:2px 6px;display:inline-flex;overflow:hidden}.IIa07q_providerBadge,.IIa07q_readSourceCard,.IIa07q_bodyCard,.IIa07q_metadataList>label,.IIa07q_graphNode,.IIa07q_providerBadge[data-provider=mnemon-native],.IIa07q_readSourceCard[data-provider=mnemon-native],.IIa07q_bodyCard[data-provider=mnemon-native],.IIa07q_metadataList>label[data-provider=mnemon-native],.IIa07q_graphNode[data-provider=mnemon-native]{--mn-provider-color:#64748b}.IIa07q_providerBadge[data-provider=openviking],.IIa07q_readSourceCard[data-provider=openviking],.IIa07q_bodyCard[data-provider=openviking],.IIa07q_metadataList>label[data-provider=openviking],.IIa07q_graphNode[data-provider=openviking]{--mn-provider-color:#3b82d0}.IIa07q_providerBadge[data-provider=honcho],.IIa07q_readSourceCard[data-provider=honcho],.IIa07q_bodyCard[data-provider=honcho],.IIa07q_metadataList>label[data-provider=honcho],.IIa07q_graphNode[data-provider=honcho]{--mn-provider-color:#c44fcf}.IIa07q_providerBadge[data-provider=mem0],.IIa07q_readSourceCard[data-provider=mem0],.IIa07q_bodyCard[data-provider=mem0],.IIa07q_metadataList>label[data-provider=mem0],.IIa07q_graphNode[data-provider=mem0]{--mn-provider-color:#8b5cf6}.IIa07q_providerBadge[data-provider=hindsight],.IIa07q_readSourceCard[data-provider=hindsight],.IIa07q_bodyCard[data-provider=hindsight],.IIa07q_metadataList>label[data-provider=hindsight],.IIa07q_graphNode[data-provider=hindsight]{--mn-provider-color:#0891b2}.IIa07q_providerBadge[data-provider=holographic],.IIa07q_readSourceCard[data-provider=holographic],.IIa07q_bodyCard[data-provider=holographic],.IIa07q_metadataList>label[data-provider=holographic],.IIa07q_graphNode[data-provider=holographic]{--mn-provider-color:#6366d9}.IIa07q_providerBadge[data-provider=retaindb],.IIa07q_readSourceCard[data-provider=retaindb],.IIa07q_bodyCard[data-provider=retaindb],.IIa07q_metadataList>label[data-provider=retaindb],.IIa07q_graphNode[data-provider=retaindb]{--mn-provider-color:#d08a28}.IIa07q_providerBadge[data-provider=byterover],.IIa07q_readSourceCard[data-provider=byterover],.IIa07q_bodyCard[data-provider=byterover],.IIa07q_metadataList>label[data-provider=byterover],.IIa07q_graphNode[data-provider=byterover]{--mn-provider-color:#0f9a83}.IIa07q_providerBadge[data-provider=supermemory],.IIa07q_readSourceCard[data-provider=supermemory],.IIa07q_bodyCard[data-provider=supermemory],.IIa07q_metadataList>label[data-provider=supermemory],.IIa07q_graphNode[data-provider=supermemory]{--mn-provider-color:#df4d72}.IIa07q_bodySwitch{min-height:32px;color:var(--mn-faint);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0 1px;font-size:9.5px;display:flex}.IIa07q_bodySwitchTrack{border:1px solid var(--mn-line-strong);background:var(--mn-layer-2);border-radius:999px;flex:none;width:29px;height:17px;transition:border-color .18s,background-color .18s;position:relative}.IIa07q_bodySwitchTrack i{background:var(--mn-faint);border-radius:50%;width:11px;height:11px;transition:transform .2s cubic-bezier(.2,.8,.2,1),background-color .18s;position:absolute;top:2px;left:2px}.IIa07q_bodySwitch:hover{color:var(--mn-text)}.IIa07q_bodySwitch:hover .IIa07q_bodySwitchTrack{border-color:var(--mn-body-accent)}.IIa07q_bodySwitch[aria-checked=true]{color:var(--mn-text)}.IIa07q_bodySwitch[aria-checked=true] .IIa07q_bodySwitchTrack{border-color:color-mix(in srgb, var(--mn-body-accent) 65%, var(--mn-line));background:color-mix(in srgb, var(--mn-body-accent) 25%, var(--mn-layer-2))}.IIa07q_bodySwitch[aria-checked=true] .IIa07q_bodySwitchTrack i{background:var(--mn-body-accent);transform:translate(12px)}.IIa07q_bodyCardActions{align-items:center;gap:6px;display:flex}.IIa07q_bodyCreateForm{gap:14px;padding-top:0}.IIa07q_createSection{border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-2) 42%, var(--mn-layer-1));border-radius:11px;gap:11px;padding:13px;display:grid}.IIa07q_createSectionHeading{align-items:flex-start;gap:9px;display:flex}.IIa07q_createSectionHeading>span{width:25px;height:19px;color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 9%, transparent);font:650 8px var(--mn-code);border-radius:6px;flex:none;place-items:center;display:grid}.IIa07q_createSectionHeading>div{gap:2px;min-width:0;display:grid}.IIa07q_createSectionHeading strong{color:var(--mn-text);font-size:11.5px;line-height:17px}.IIa07q_createSectionHeading small{color:var(--mn-muted);font-size:9px;line-height:1.45}.IIa07q_createIdentityGrid{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:10px;display:grid}.IIa07q_createIdentityGrid>label{align-content:start}.IIa07q_createIdentityGrid textarea{min-height:70px}.IIa07q_strategyForm{gap:14px;padding-top:0}.IIa07q_strategyLoading{border:1px dashed var(--mn-line);min-height:88px;color:var(--mn-muted);border-radius:10px;justify-content:center;align-items:center;font-size:10px;display:flex;position:relative}.IIa07q_strategyLoading .IIa07q_sectionSpinner{top:9px;right:9px}.IIa07q_placementMode{border:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:0;padding:0;display:grid}.IIa07q_placementMode legend{color:var(--mn-muted);margin-bottom:5px;font-size:10px}.IIa07q_placementMode label{border:1px solid var(--mn-line);cursor:pointer;background:color-mix(in srgb, var(--mn-layer-2) 62%, transparent);border-radius:9px;grid-template-columns:16px minmax(0,1fr);align-items:center;gap:8px;min-width:0;padding:10px;display:grid;position:relative}.IIa07q_placementMode label[data-selected]{border-color:color-mix(in srgb, var(--mn-accent) 52%, var(--mn-line));background:color-mix(in srgb, var(--mn-accent) 5%, var(--mn-layer-2));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--mn-accent) 12%, transparent)}.IIa07q_placementMode label[data-disabled]{cursor:not-allowed;opacity:.58}.IIa07q_placementMode input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.IIa07q_placementMode span{gap:3px;display:grid}.IIa07q_placementMode strong{color:var(--mn-text);font-size:11px}.IIa07q_placementMode strong em{color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 10%, transparent);font:650 8px var(--mn-code);border-radius:999px;margin-left:4px;padding:2px 5px;font-style:normal}.IIa07q_placementMode small{color:var(--mn-muted);font-size:9px;line-height:1.45}.IIa07q_placementPolicy{border:1px solid color-mix(in srgb, var(--mn-accent) 26%, var(--mn-line));background:color-mix(in srgb, var(--mn-accent) 4%, var(--mn-layer-1));border-radius:10px;gap:9px;margin:0;padding:11px;display:grid}.IIa07q_placementPolicyHeading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.IIa07q_placementPolicyHeading>div{gap:2px;display:grid}.IIa07q_placementPolicyHeading strong{font-size:11px}.IIa07q_placementPolicyHeading small{color:var(--mn-muted);font-size:9px;line-height:1.45}.IIa07q_placementPolicyHeading>span{border:1px solid color-mix(in srgb, var(--mn-accent) 22%, var(--mn-line));color:var(--mn-accent);font:650 8px var(--mn-code);border-radius:999px;flex:none;padding:3px 6px}.IIa07q_placementRuleGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.IIa07q_capabilityRules{border:0;flex-wrap:wrap;gap:6px;margin:0;padding:0;display:flex}.IIa07q_capabilityRules legend{width:100%;color:var(--mn-faint);margin-bottom:1px;font-size:9px}.IIa07q_capabilityRules label{border:1px solid var(--mn-line);width:fit-content;color:var(--mn-muted);background:var(--mn-input);cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:6px 8px;display:flex;position:relative}.IIa07q_capabilityRules label[data-selected]{border-color:color-mix(in srgb, var(--mn-accent) 42%, var(--mn-line));color:var(--mn-text);background:color-mix(in srgb, var(--mn-accent) 7%, var(--mn-input))}.IIa07q_capabilityRules input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.IIa07q_placementCandidates{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;display:grid}.IIa07q_placementCandidates>span,.IIa07q_placementCandidates>label{border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-2) 70%, transparent);border-radius:8px;grid-template-columns:28px minmax(0,1fr) 16px;align-items:center;gap:8px;min-width:0;padding:8px 9px;display:grid;position:relative}.IIa07q_placementCandidates>label{cursor:pointer}.IIa07q_placementCandidates>[data-selected]{border-color:color-mix(in srgb, var(--mn-accent) 38%, var(--mn-line));background:color-mix(in srgb, var(--mn-accent) 7%, transparent)}.IIa07q_placementCandidates>label[data-disabled]{cursor:not-allowed;opacity:.48}.IIa07q_placementCandidates input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.IIa07q_placementCandidates>span>span:not(.IIa07q_candidateIcon),.IIa07q_placementCandidates>label>span:not(.IIa07q_candidateIcon){gap:2px;min-width:0;display:grid}.IIa07q_placementCandidates strong{color:var(--mn-text);font-size:10px}.IIa07q_placementCandidates small{color:var(--mn-muted);font-size:8.5px;line-height:1.4}.IIa07q_providerChoice{border:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;padding:0;display:grid}.IIa07q_providerChoice legend{color:var(--mn-muted);margin-bottom:5px;font-size:10px}.IIa07q_providerChoice label{border:1px solid var(--mn-line);cursor:pointer;background:color-mix(in srgb, var(--mn-layer-2) 72%, transparent);border-radius:9px;grid-template-columns:32px minmax(0,1fr) 16px;align-items:center;gap:9px;min-width:0;padding:10px;display:grid;position:relative}.IIa07q_providerChoice label[data-native]{border-color:color-mix(in srgb, var(--mn-accent) 20%, var(--mn-line));grid-column:1/-1}.IIa07q_providerChoice label[data-selected]{border-color:color-mix(in srgb, var(--mn-accent) 48%, var(--mn-line));background:color-mix(in srgb, var(--mn-accent) 5%, var(--mn-layer-2));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--mn-accent) 12%, transparent)}.IIa07q_providerChoice label[data-disabled]{cursor:not-allowed;opacity:.5}.IIa07q_providerChoice input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.IIa07q_providerChoice span{gap:3px;display:grid}.IIa07q_providerChoice strong{color:var(--mn-text);font-size:11px}.IIa07q_providerChoice strong em{color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 10%, transparent);font:650 8px var(--mn-code);border-radius:999px;margin-left:5px;padding:2px 5px;font-style:normal}.IIa07q_providerChoice small{color:var(--mn-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:9px;line-height:1.45;display:-webkit-box;overflow:hidden}.IIa07q_providerChoiceIcon,.IIa07q_candidateIcon,.IIa07q_providerFieldIcon{box-sizing:border-box;border:1px solid var(--mn-line);background:var(--mn-layer-1);place-items:center;display:grid;overflow:hidden}.IIa07q_providerChoiceIcon{border-radius:8px;width:32px;height:32px;padding:3px}.IIa07q_candidateIcon{border-radius:7px;width:28px;height:28px;padding:3px}.IIa07q_providerFieldIcon{border-radius:8px;flex:none;width:30px;height:30px;padding:3px}.IIa07q_providerChoiceIcon>img,.IIa07q_providerChoiceIcon>svg,.IIa07q_candidateIcon>img,.IIa07q_candidateIcon>svg,.IIa07q_providerFieldIcon>img,.IIa07q_providerFieldIcon>svg{object-fit:contain;border-radius:5px;width:100%;height:100%;display:block}.IIa07q_choiceControl{box-sizing:border-box;border:1px solid color-mix(in srgb, var(--mn-muted) 52%, var(--mn-line));background:var(--mn-layer-1);border-radius:5px;flex:none;place-items:center;width:16px;height:16px;display:grid;position:relative}.IIa07q_choiceControl[data-kind=radio]{border-radius:50%}[data-selected]>.IIa07q_choiceControl{border-color:var(--mn-accent);background:var(--mn-accent)}[data-selected]>.IIa07q_choiceControl[data-kind=check]:after{content:\"\";border-bottom:1.5px solid #fff;border-left:1.5px solid #fff;width:7px;height:4px;transform:translateY(-1px)rotate(-45deg)}[data-selected]>.IIa07q_choiceControl[data-kind=radio]:after{content:\"\";background:#fff;border-radius:50%;width:6px;height:6px}.IIa07q_placementMode label:focus-within,.IIa07q_providerChoice label:focus-within,.IIa07q_capabilityRules label:focus-within,.IIa07q_placementCandidates label:focus-within{outline:2px solid color-mix(in srgb, var(--mn-accent) 28%, transparent);outline-offset:1px}.IIa07q_providerFields{border:1px solid color-mix(in srgb, #6574d9 25%, var(--mn-line));background:#6574d90d;border-radius:9px;gap:8px;padding:10px;display:grid}.IIa07q_providerFieldHeading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.IIa07q_providerFieldIdentity{align-items:center;gap:8px;min-width:0;display:flex}.IIa07q_providerFieldIdentity>div{gap:2px;min-width:0;display:grid}.IIa07q_providerFieldHeading strong{color:var(--mn-text);font-size:11px}.IIa07q_providerFieldHeading small{color:var(--mn-muted);font-size:9px;line-height:1.45}.IIa07q_providerFieldHeading>span{border:1px solid color-mix(in srgb, #6574d9 24%, var(--mn-line));color:color-mix(in srgb, #8793ef 80%, var(--mn-text));font:650 8px var(--mn-code);border-radius:999px;flex:none;padding:3px 6px}.IIa07q_providerFields details{min-width:0}.IIa07q_providerFields summary{width:fit-content;color:var(--mn-accent);cursor:pointer;font-size:9px}.IIa07q_providerAdvancedGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px;display:grid}.IIa07q_providerFieldControl .IIa07q_providerSecretClear{color:var(--mn-muted);cursor:pointer;align-items:center;gap:5px;font-size:8.5px;display:flex}.IIa07q_providerWriteHint{color:color-mix(in srgb, #8793ef 72%, var(--mn-muted));margin-top:4px;font-size:9px;line-height:1.45;display:block}.IIa07q_placementReceipt{border:1px solid color-mix(in srgb, var(--mn-accent) 20%, var(--mn-line));min-width:0;color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 4%, transparent);border-radius:8px;align-items:flex-start;gap:7px;margin:7px 0;padding:7px 8px;display:flex}.IIa07q_placementReceipt>span{flex:none;font-size:10px}.IIa07q_placementReceipt>div{grid-template-columns:minmax(0,1fr) auto;gap:2px 8px;min-width:0;display:grid}.IIa07q_placementReceipt strong,.IIa07q_placementReceipt small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.IIa07q_placementReceipt strong{font-size:9px}.IIa07q_placementReceipt small{color:var(--mn-muted);font-size:8px}.IIa07q_placementReceipt p{color:var(--mn-muted);text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;margin:0;font-size:8.5px;line-height:1.4;overflow:hidden}.IIa07q_bodyCard>p{min-height:15px;color:var(--mn-muted);margin:7px 0;font-size:10px;line-height:1.45}.IIa07q_bodyCard footer{border-top:1px solid var(--mn-line);min-width:0;color:var(--mn-faint);flex-wrap:nowrap;gap:5px 11px;padding-top:6px;font-size:9px;display:flex;overflow:hidden}.IIa07q_bodyFooterBlock{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;display:block;overflow:hidden}.IIa07q_bodyFooterGrow{flex:auto}.IIa07q_graphLayout{grid-template-columns:minmax(0,1fr) minmax(240px,270px);gap:10px;display:grid}.IIa07q_graphPanel,.IIa07q_graphInspector{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:11px}.IIa07q_graphPanel{min-width:0;position:relative;overflow:hidden}.IIa07q_graphToolbar,.IIa07q_graphFooter{min-height:43px;color:var(--mn-muted);justify-content:space-between;align-items:center;gap:14px;padding:0 13px;font-size:10px;display:flex}.IIa07q_graphToolbar{border-bottom:1px solid var(--mn-line)}.IIa07q_graphToolbar>div:first-child{align-items:center;gap:7px;display:flex}.IIa07q_graphToolbar small{color:var(--mn-faint)}.IIa07q_liveDot{background:var(--mn-success);width:6px;height:6px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-success) 15%, transparent);border-radius:50%}.IIa07q_graphLegend{flex-wrap:wrap;justify-content:flex-end;gap:5px 10px;display:flex}.IIa07q_graphLegend span{align-items:center;gap:4px;display:flex}.IIa07q_graphLegend span:before{content:\"\";background:var(--edge-color);border-radius:2px;width:13px;height:2px}.IIa07q_graphLegend [data-edge=temporal]{--edge-color:#87909f}.IIa07q_graphLegend [data-edge=scope]{--edge-color:#708199}.IIa07q_graphLegend [data-edge=scope]:before{background:repeating-linear-gradient(90deg, var(--edge-color) 0 4px, transparent 4px 7px)}.IIa07q_graphLegend [data-edge=semantic]{--edge-color:#4d7cfe}.IIa07q_graphLegend [data-edge=causal]{--edge-color:#ef6b5b}.IIa07q_graphLegend [data-edge=entity]{--edge-color:#22a879}.IIa07q_graphViewport{background:radial-gradient(circle at 50% 48%, color-mix(in srgb, var(--mn-accent) 6%, transparent), transparent 47%);min-height:clamp(390px,42vw,560px);position:relative;overflow:hidden}.IIa07q_graphCanvasControls{z-index:2;border:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-1) 88%, transparent);box-shadow:0 6px 18px color-mix(in srgb, var(--mn-text) 7%, transparent);backdrop-filter:blur(10px);border-radius:9px;align-items:center;gap:5px;padding:4px;display:flex;position:absolute;top:10px;right:10px}.IIa07q_graphCanvasControls span{color:var(--mn-faint);font:9px var(--mn-code);align-items:center;gap:5px;padding:0 6px;display:flex}.IIa07q_graphCanvasControls span i{background:var(--mn-accent);width:5px;height:5px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mn-accent) 12%, transparent);border-radius:50%}.IIa07q_graphCanvasControls button{min-height:30px;color:var(--mn-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;padding:0 9px;font-size:9.5px}.IIa07q_graphCanvasControls button:hover,.IIa07q_graphCanvasControls button[data-active]{border-color:var(--mn-line);color:var(--mn-text);background:var(--mn-hover)}.IIa07q_graphCanvasControls button[data-active]{color:var(--mn-accent)}.IIa07q_graphSvg{touch-action:pan-y pinch-zoom;user-select:none;width:100%;height:clamp(390px,42vw,560px);display:block}.IIa07q_graphBackdrop{fill:var(--mn-layer-1)}.IIa07q_graphGridLine{stroke:var(--mn-line);stroke-width:.6px;opacity:.5}.IIa07q_graphEdge{fill:none;stroke:#87909f;stroke-width:1px;opacity:.32;vector-effect:non-scaling-stroke}.IIa07q_graphEdge[data-edge=scope]{stroke:#708199;stroke-dasharray:4 5;opacity:.28}.IIa07q_graphEdge[data-edge=semantic]{stroke:#4d7cfe;opacity:.48}.IIa07q_graphEdge[data-edge=causal]{stroke:#ef6b5b;opacity:.52}.IIa07q_graphEdge[data-edge=entity]{stroke:#22a879;stroke-width:1.45px;opacity:.78}.IIa07q_graphNode{--node:#8290a8;cursor:grab;touch-action:none;outline:none}.IIa07q_graphNode[data-dragging]{cursor:grabbing}.IIa07q_graphNode[data-category=decision]{--node:#ef8354}.IIa07q_graphNode[data-category=preference]{--node:#a879e1}.IIa07q_graphNode[data-category=fact]{--node:#4d7cfe}.IIa07q_graphNode[data-category=insight]{--node:#19a77d}.IIa07q_graphNode[data-category=context]{--node:#d8a624}.IIa07q_graphNode[data-kind=space]{--node:var(--mn-provider-color)}.IIa07q_graphNode[data-kind=entity]{--node:#2b9db9}.IIa07q_nodeHalo{fill:color-mix(in srgb, var(--node) 18%, var(--mn-layer-1));stroke:color-mix(in srgb, var(--node) 60%, var(--mn-layer-1));stroke-width:1.5px;transition:r .16s}.IIa07q_nodeCore{fill:var(--node)}.IIa07q_nodeLabel{fill:var(--mn-muted);font:10px var(--mn-code);pointer-events:auto}.IIa07q_nodeBodyLabel{fill:var(--mn-faint);font:650 8px var(--mn-code);letter-spacing:.04em;pointer-events:auto}.IIa07q_graphSvg[data-density=sparse] .IIa07q_nodeLabel{font-size:12px}.IIa07q_graphNode:hover .IIa07q_nodeHalo,.IIa07q_graphNode:focus .IIa07q_nodeHalo,.IIa07q_graphNode[data-selected] .IIa07q_nodeHalo{fill:color-mix(in srgb, var(--node) 28%, var(--mn-layer-1));stroke:var(--node)}.IIa07q_graphNode[data-selected] .IIa07q_nodeLabel{fill:var(--mn-text);font-weight:650}.IIa07q_graphFooter{border-top:1px solid var(--mn-line);min-height:38px;color:var(--mn-faint)}.IIa07q_graphInspector{min-width:0;min-height:calc(clamp(390px,42vw,560px) + 83px);padding:15px;overflow:hidden}.IIa07q_inspectorEmpty{text-align:center;flex-direction:column;justify-content:center;align-items:center;height:100%;display:flex}.IIa07q_inspectorLogo{opacity:.72;border-radius:11px;width:54px;height:54px;margin-bottom:15px}.IIa07q_inspectorEmpty h3{margin:7px 0 3px;font-size:14px}.IIa07q_inspectorEmpty p{color:var(--mn-faint);margin:0;font-size:11px}.IIa07q_inspectorHeading{justify-content:space-between;align-items:center;display:flex}.IIa07q_inspectorHeading button{width:32px;height:32px;color:var(--mn-muted);cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;display:grid}.IIa07q_inspectorHeading button:hover{background:var(--mn-hover)}.IIa07q_inspectorChips{flex-wrap:wrap;align-items:center;gap:6px;margin-top:24px;display:flex}.IIa07q_categoryChip{color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 10%, transparent);border-radius:999px;padding:3px 8px;font-size:10px;display:inline-flex}.IIa07q_inspectorTitleRow{align-items:flex-start;gap:8px;min-width:0;margin:12px 0 20px;display:flex}.IIa07q_inspectorTitle{overflow-wrap:anywhere;white-space:pre-wrap;-webkit-line-clamp:6;-webkit-box-orient:vertical;flex:1;min-width:0;margin:0;font-size:14px;line-height:1.6;display:-webkit-box;overflow:hidden}.IIa07q_inspectorEye{border:1px solid var(--mn-line);width:27px;height:27px;color:var(--mn-muted);background:var(--mn-layer-1);cursor:pointer;border-radius:7px;flex:none;place-items:center;transition:color .15s,border-color .15s,background-color .15s;display:grid}.IIa07q_inspectorEye:hover{color:var(--mn-accent);border-color:var(--mn-line-strong);background:var(--mn-hover)}.IIa07q_inspectorMeta{margin:0}.IIa07q_inspectorMeta>div{border-top:1px solid var(--mn-line);gap:3px;padding:11px 0;display:grid}.IIa07q_inspectorMeta dt{color:var(--mn-faint);font:9px var(--mn-code);text-transform:uppercase}.IIa07q_inspectorMeta dd{overflow-wrap:anywhere;color:var(--mn-muted);margin:0;font-size:11px}.IIa07q_inspectorActions{gap:8px;margin-top:20px;display:grid}.IIa07q_previewContent{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--mn-text);margin:0;font-size:13px;line-height:1.7}.IIa07q_searchBar{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:13px;margin-bottom:18px;padding:13px}.IIa07q_queryField{border:1px solid var(--mn-line-strong);background:var(--mn-input);border-radius:9px;grid-template-columns:24px minmax(0,1fr) 24px;align-items:center;gap:5px;padding:0 10px;display:grid}.IIa07q_queryField>span{color:var(--mn-accent);font:18px var(--mn-code)}.IIa07q_queryField input{background:0 0;border:0;outline:0;width:100%;height:42px}.IIa07q_queryField kbd{color:var(--mn-faint);font:11px var(--mn-code)}.IIa07q_searchControls{justify-content:flex-end;align-items:flex-end;gap:10px;padding-top:10px;display:flex}.IIa07q_searchActions{align-items:center;gap:7px;display:flex}.IIa07q_agentAnswer{border:1px solid color-mix(in srgb, var(--mn-accent) 30%, var(--mn-line));background:linear-gradient(135deg, color-mix(in srgb, var(--mn-accent) 7%, var(--mn-layer-1)), var(--mn-layer-1) 60%);border-radius:11px;margin-bottom:16px;padding:16px 18px}.IIa07q_agentAnswerHeading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.IIa07q_agentAnswerHeading span{color:var(--mn-accent);font:650 9px/1.2 var(--mn-code);letter-spacing:.08em}.IIa07q_agentAnswerHeading h3{margin:4px 0 0;font-size:15px}.IIa07q_agentAnswerHeading>code{color:var(--mn-faint);font-size:9px}.IIa07q_agentAnswer>p{white-space:pre-wrap;color:var(--mn-text);margin:12px 0;font-size:13px;line-height:1.7}.IIa07q_agentCitations{border-top:1px solid var(--mn-line);flex-wrap:wrap;gap:5px;padding-top:10px;display:flex}.IIa07q_agentCitations code{color:var(--mn-muted);background:var(--mn-layer-2);border-radius:5px;padding:3px 6px;font-size:9px}.IIa07q_searchControls label,.IIa07q_fieldWide{color:var(--mn-muted);gap:5px;font-size:11px;display:grid}.IIa07q_searchControls select,.IIa07q_listToolbar input,.IIa07q_listToolbar select,.IIa07q_entitySearch input{border:1px solid var(--mn-line);background:var(--mn-input);border-radius:8px;outline:0;min-width:140px;height:34px;padding:0 9px}.IIa07q_searchControls select:focus,.IIa07q_listToolbar input:focus,.IIa07q_listToolbar select:focus,.IIa07q_entitySearch input:focus,.IIa07q_supervisedForm textarea:focus{border-color:var(--mn-accent)}.IIa07q_singleColumn{max-width:830px}.IIa07q_resultLayout{grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);align-items:start;gap:14px;display:grid}.IIa07q_results,.IIa07q_relatedPane,.IIa07q_entityResults{min-width:0}.IIa07q_relatedPane{border:1px solid var(--mn-line);background:var(--mn-layer-1);-webkit-overflow-scrolling:touch;border-radius:12px;max-height:calc(100dvh - 230px);padding:13px;scroll-margin-top:14px;position:sticky;top:12px;overflow:auto}.IIa07q_relatedSource{color:var(--mn-muted);background:var(--mn-layer-2);border-radius:8px;margin:0 0 13px;padding:10px;font-size:11px}.IIa07q_insightCard{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:11px;min-width:0;margin-bottom:9px;padding:14px;transition:border-color .15s,transform .15s,box-shadow .15s}.IIa07q_insightCard:hover{border-color:var(--mn-line-strong);transform:translateY(-1px)}.IIa07q_cardTop{justify-content:space-between;align-items:center;gap:10px;display:flex}.IIa07q_badges,.IIa07q_tags,.IIa07q_entities{flex-wrap:wrap;gap:5px;display:flex}.IIa07q_badge{color:var(--mn-muted);background:var(--mn-layer-2);border-radius:999px;padding:2px 6px;font-size:9px}.IIa07q_id{color:var(--mn-faint);font:9px var(--mn-code)}.IIa07q_content{white-space:pre-wrap;overflow-wrap:anywhere;margin:10px 0;line-height:1.65}.IIa07q_tags{color:var(--mn-accent);font-size:10px}.IIa07q_entities{margin-top:7px}.IIa07q_entities span{border:1px solid var(--mn-line);color:var(--mn-muted);border-radius:5px;padding:2px 6px;font-size:9px}.IIa07q_cardActions{border-top:1px solid var(--mn-line);justify-content:flex-end;align-items:center;gap:3px;min-height:30px;margin-top:10px;padding-top:8px;display:flex}.IIa07q_entityLayout{grid-template-columns:265px minmax(0,1fr);align-items:start;gap:16px;display:grid}.IIa07q_entityRail{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:12px;padding:13px;position:sticky;top:0}.IIa07q_entitySearch{grid-template-columns:minmax(0,1fr) auto;gap:7px;display:grid}.IIa07q_entitySearch input{min-width:0}.IIa07q_entityHeading{justify-content:space-between;align-items:center;margin:18px 2px 7px;display:flex}.IIa07q_entityHeading small{color:var(--mn-faint);font-size:9px}.IIa07q_entityList{gap:3px;display:grid}.IIa07q_entityList button{min-height:34px;color:var(--mn-muted);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:7px;justify-content:space-between;align-items:center;gap:10px;padding:0 9px;display:flex}.IIa07q_entityList button:hover,.IIa07q_entityList button[aria-pressed=true]{color:var(--mn-text);background:var(--mn-hover)}.IIa07q_entityList button>span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.IIa07q_entityList strong{color:var(--mn-faint);font:10px var(--mn-code);flex:none}.IIa07q_entityResults>.IIa07q_emptyState{min-height:360px}.IIa07q_supervisedComposer{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:12px;overflow:hidden}.IIa07q_supervisedForm{padding:18px}.IIa07q_supervisedHeading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.IIa07q_supervisedHeading h3{margin:4px 0 0;font-size:17px}.IIa07q_sessionReady,.IIa07q_sessionMissing{font:650 9px var(--mn-code);border-radius:999px;padding:4px 8px}.IIa07q_sessionReady{color:var(--mn-success);background:color-mix(in srgb, var(--mn-success) 10%, transparent)}.IIa07q_sessionMissing{color:var(--mn-danger);background:color-mix(in srgb, var(--mn-danger) 10%, transparent)}.IIa07q_supervisedForm textarea{resize:vertical;border:1px solid var(--mn-line);width:100%;color:var(--mn-text);background:var(--mn-input);border-radius:9px;outline:0;padding:12px;line-height:1.65}.IIa07q_sessionHint{color:var(--mn-danger);margin:9px 0 0;font-size:11px}.IIa07q_fieldWide{grid-column:1/-1}.IIa07q_advancedWrite{border-top:1px solid var(--mn-line);background:color-mix(in srgb, var(--mn-layer-2) 45%, var(--mn-layer-1))}.IIa07q_advancedWrite summary{cursor:pointer;justify-content:space-between;align-items:center;gap:16px;min-height:58px;padding:10px 18px;list-style:none;display:flex}.IIa07q_advancedWrite summary::-webkit-details-marker{display:none}.IIa07q_advancedWrite summary>span:first-child{gap:2px;display:grid}.IIa07q_advancedWrite summary strong{font-size:12px}.IIa07q_advancedWrite summary small{color:var(--mn-faint);font-size:10px}.IIa07q_advancedWrite summary>span:last-child{color:var(--mn-accent);font:10px var(--mn-code)}.IIa07q_advancedWrite[open] summary{border-bottom:1px solid var(--mn-line)}.IIa07q_advancedWrite[open] summary>span:last-child{font-size:0}.IIa07q_advancedWrite[open] summary>span:last-child:after{content:\"−\";font-size:13px}.IIa07q_manualForm{padding:3px 18px 18px}.IIa07q_manualActions{justify-content:space-between;align-items:center;gap:14px;margin-top:15px;display:flex}.IIa07q_manualActions p{max-width:520px;color:var(--mn-faint);margin:0;font-size:10px}.IIa07q_listToolbar{border:1px solid var(--mn-line);background:var(--mn-layer-1);border-radius:11px;grid-template-columns:minmax(0,1fr) 170px auto;gap:9px;padding:12px;display:grid}.IIa07q_listToolbar input,.IIa07q_listToolbar select{width:100%;min-width:0}.IIa07q_listNotice{color:var(--mn-faint);margin:10px 0 16px;font-size:10px}.IIa07q_listNotice span{color:var(--mn-success);font:650 9px var(--mn-code);letter-spacing:.08em;margin-right:7px}.IIa07q_memoryList{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:9px;display:grid}.IIa07q_memoryList .IIa07q_insightCard{height:100%;margin:0}.IIa07q_modalFooterNote{max-width:54ch;color:var(--mn-muted);margin:0 auto 0 0;font-size:9px;line-height:1.5}.IIa07q_modalInlineStatus{color:var(--mn-muted);overflow-wrap:anywhere;margin:12px 0 0;font-size:11px;line-height:1.5}.IIa07q_metadataDialog{gap:12px;display:grid}.IIa07q_metadataToolbar{color:var(--mn-muted);justify-content:space-between;align-items:center;gap:12px;font-size:10px;display:flex}.IIa07q_metadataToolbar>span{align-items:center;gap:7px;min-width:0;display:flex}.IIa07q_metadataToolbar em{color:var(--mn-accent);background:color-mix(in srgb, var(--mn-accent) 9%, transparent);font:650 8px var(--mn-code);border-radius:999px;padding:2px 5px;font-style:normal}.IIa07q_metadataList{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.IIa07q_metadataEmpty{border:1px dashed var(--mn-line);color:var(--mn-muted);background:color-mix(in srgb, var(--mn-layer-2) 76%, transparent);text-align:center;border-radius:8px;grid-column:1/-1;padding:18px;font-size:10px}.IIa07q_metadataList>label{cursor:pointer;grid-template-columns:16px minmax(0,1fr);align-items:start;gap:9px;min-width:0;min-height:76px;padding:10px 10px 10px 13px;display:grid;position:relative}.IIa07q_metadataList>label[data-selected]{border-color:color-mix(in srgb, var(--mn-accent) 48%, var(--mn-line));box-shadow:inset 3px 0 0 var(--mn-provider-color), inset 0 0 0 1px color-mix(in srgb, var(--mn-accent) 10%, transparent)}.IIa07q_metadataList>label[data-refreshing]{overflow:hidden}.IIa07q_metadataList>label[data-refreshing]:after{content:\"\";background:linear-gradient(105deg, transparent 20%, color-mix(in srgb, var(--mn-provider-color) 16%, transparent) 45%, transparent 70%);pointer-events:none;animation:.9s ease-in-out infinite IIa07q_mnemon-metadata-sweep;position:absolute;inset:0;transform:translate(-120%)}.IIa07q_metadataList>label[data-refreshed]{animation:.9s ease-out IIa07q_mnemon-metadata-refreshed}.IIa07q_metadataList>label[data-failed]{border-color:color-mix(in srgb, var(--mn-danger) 42%, var(--mn-line))}.IIa07q_metadataList>label>input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.IIa07q_metadataList>label>span{gap:4px;min-width:0;display:grid}.IIa07q_metadataList strong{text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.IIa07q_metadataList small{color:var(--mn-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:9px;line-height:1.45;display:-webkit-box;overflow:hidden}.IIa07q_metadataList>label>span>span{align-items:center;gap:6px;min-width:0;display:flex}.IIa07q_metadataList code{color:var(--mn-faint);font:8px var(--mn-code);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.IIa07q_metadataTaskStatus{min-width:0;font:650 8px var(--mn-code);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.IIa07q_metadataTaskStatus[data-status=running]{color:var(--mn-provider-color)}.IIa07q_metadataTaskStatus[data-status=success]{color:var(--mn-success)}.IIa07q_metadataTaskStatus[data-status=error]{color:var(--mn-danger)}@media (prefers-reduced-motion:reduce){.IIa07q_metadataList>label[data-refreshing]:after,.IIa07q_metadataList>label[data-refreshed]{animation:none}}@media (width<=1000px){.IIa07q_graphLayout{display:block;position:relative}.IIa07q_graphInspector{width:auto;min-height:0;box-shadow:none;margin-top:10px;position:static;overflow:visible}.IIa07q_graphInspector[data-empty]{display:none}.IIa07q_resultLayout{grid-template-columns:1fr}.IIa07q_relatedPane{grid-row:1;max-height:none;position:static}.IIa07q_memoryList{grid-template-columns:1fr}}@media (width<=760px){.IIa07q_metadataList{grid-template-columns:1fr}.IIa07q_modalFooterNote{max-width:none;margin:0;font-size:10px}.IIa07q_modal .IIa07q_supervisedForm textarea{min-height:clamp(130px,30vh,210px)}.IIa07q_entityLayout{grid-template-columns:1fr}.IIa07q_manualActions{flex-direction:column;align-items:stretch}.IIa07q_entityRail{position:static}.IIa07q_searchControls{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.IIa07q_searchActions{grid-column:1/-1}.IIa07q_searchActions>button{flex:1}.IIa07q_searchControls select{width:100%;min-width:0}.IIa07q_listToolbar{grid-template-columns:1fr}.IIa07q_bodyDirectoryHeader{grid-template-columns:minmax(0,1fr);display:grid}.IIa07q_bodyDirectoryHeader>div{min-width:0}.IIa07q_bodyDirectoryPath{max-width:100%}.IIa07q_bodyDirectoryControls{flex-wrap:wrap;justify-content:flex-start;padding-right:0}.IIa07q_createIdentityGrid,.IIa07q_placementMode,.IIa07q_placementRuleGrid,.IIa07q_placementCandidates,.IIa07q_providerChoice,.IIa07q_providerAdvancedGrid{grid-template-columns:1fr}.IIa07q_graphViewport{min-height:360px}.IIa07q_graphSvg{height:390px}.IIa07q_graphCanvasControls{top:7px;right:7px}.IIa07q_graphCanvasControls span{display:none}}@media (width<=520px){.IIa07q_memoryHeaderActions{width:100%}.IIa07q_memoryHeaderActions>button{flex:1}.IIa07q_supervisedHeading,.IIa07q_cardTop{flex-direction:column;align-items:flex-start}.IIa07q_cardActions{flex-wrap:wrap;align-items:stretch}.IIa07q_cardActions button{flex:1}.IIa07q_searchControls{grid-template-columns:1fr}}@supports (height:100dvh){@media (width<=760px){.IIa07q_modal .IIa07q_supervisedForm textarea{min-height:clamp(130px,30dvh,210px)}}}@media (width<=1000px) and (height<=760px){.IIa07q_graphViewport{min-height:300px}.IIa07q_graphSvg{height:300px}}@media (prefers-reduced-motion:reduce){.IIa07q_insightCard:hover{transform:none}}";
728
+ const id$1 = "dsh-mnemon-source-memory-spaces/presentation/page.module.css";
729
+ if (typeof document !== "undefined") {
730
+ let tag = document.querySelector("style[data-plugin-css=" + JSON.stringify(id$1) + "]");
731
+ if (!tag) {
732
+ tag = document.createElement("style");
733
+ tag.dataset.pluginCss = id$1;
734
+ document.head.appendChild(tag);
735
+ }
736
+ if (tag.textContent !== css$2) tag.textContent = css$2;
737
+ }
738
+ var page_module_css_default = {
739
+ "advancedWrite": "IIa07q_advancedWrite",
740
+ "agentAnswer": "IIa07q_agentAnswer",
741
+ "agentAnswerHeading": "IIa07q_agentAnswerHeading",
742
+ "agentCitations": "IIa07q_agentCitations",
743
+ "asyncPlaceholder": "IIa07q_asyncPlaceholder",
744
+ "asyncRegion": "IIa07q_asyncRegion",
745
+ "asyncResults": "IIa07q_asyncResults",
746
+ "badge": "IIa07q_badge",
747
+ "badges": "IIa07q_badges",
748
+ "bodyCard": "IIa07q_bodyCard",
749
+ "bodyCardActions": "IIa07q_bodyCardActions",
750
+ "bodyCreateForm": "IIa07q_bodyCreateForm",
751
+ "bodyDirectory": "IIa07q_bodyDirectory",
752
+ "bodyDirectoryControls": "IIa07q_bodyDirectoryControls",
753
+ "bodyDirectoryEmpty": "IIa07q_bodyDirectoryEmpty",
754
+ "bodyDirectoryHeader": "IIa07q_bodyDirectoryHeader",
755
+ "bodyDirectoryPath": "IIa07q_bodyDirectoryPath",
756
+ "bodyFooterBlock": "IIa07q_bodyFooterBlock",
757
+ "bodyFooterGrow": "IIa07q_bodyFooterGrow",
758
+ "bodyGrid": "IIa07q_bodyGrid",
759
+ "bodyHealth": "IIa07q_bodyHealth",
760
+ "bodySignal": "IIa07q_bodySignal",
761
+ "bodySwitch": "IIa07q_bodySwitch",
762
+ "bodySwitchTrack": "IIa07q_bodySwitchTrack",
763
+ "candidateIcon": "IIa07q_candidateIcon",
764
+ "capabilityRules": "IIa07q_capabilityRules",
765
+ "cardActions": "IIa07q_cardActions",
766
+ "cardTop": "IIa07q_cardTop",
767
+ "categoryChip": "IIa07q_categoryChip",
768
+ "choiceControl": "IIa07q_choiceControl",
769
+ "content": "IIa07q_content",
770
+ "createIdentityGrid": "IIa07q_createIdentityGrid",
771
+ "createSection": "IIa07q_createSection",
772
+ "createSectionHeading": "IIa07q_createSectionHeading",
773
+ "emptyState": "IIa07q_emptyState",
774
+ "entities": "IIa07q_entities",
775
+ "entityHeading": "IIa07q_entityHeading",
776
+ "entityLayout": "IIa07q_entityLayout",
777
+ "entityList": "IIa07q_entityList",
778
+ "entityRail": "IIa07q_entityRail",
779
+ "entityResults": "IIa07q_entityResults",
780
+ "entitySearch": "IIa07q_entitySearch",
781
+ "fieldWide": "IIa07q_fieldWide",
782
+ "graphBackdrop": "IIa07q_graphBackdrop",
783
+ "graphCanvasControls": "IIa07q_graphCanvasControls",
784
+ "graphEdge": "IIa07q_graphEdge",
785
+ "graphFooter": "IIa07q_graphFooter",
786
+ "graphGridLine": "IIa07q_graphGridLine",
787
+ "graphInspector": "IIa07q_graphInspector",
788
+ "graphLayout": "IIa07q_graphLayout",
789
+ "graphLegend": "IIa07q_graphLegend",
790
+ "graphNode": "IIa07q_graphNode",
791
+ "graphPanel": "IIa07q_graphPanel",
792
+ "graphSvg": "IIa07q_graphSvg",
793
+ "graphToolbar": "IIa07q_graphToolbar",
794
+ "graphViewport": "IIa07q_graphViewport",
795
+ "id": "IIa07q_id",
796
+ "insightCard": "IIa07q_insightCard",
797
+ "inspectorActions": "IIa07q_inspectorActions",
798
+ "inspectorChips": "IIa07q_inspectorChips",
799
+ "inspectorEmpty": "IIa07q_inspectorEmpty",
800
+ "inspectorEye": "IIa07q_inspectorEye",
801
+ "inspectorHeading": "IIa07q_inspectorHeading",
802
+ "inspectorLogo": "IIa07q_inspectorLogo",
803
+ "inspectorMeta": "IIa07q_inspectorMeta",
804
+ "inspectorTitle": "IIa07q_inspectorTitle",
805
+ "inspectorTitleRow": "IIa07q_inspectorTitleRow",
806
+ "listNotice": "IIa07q_listNotice",
807
+ "listToolbar": "IIa07q_listToolbar",
808
+ "liveDot": "IIa07q_liveDot",
809
+ "manualActions": "IIa07q_manualActions",
810
+ "manualForm": "IIa07q_manualForm",
811
+ "memoryHeaderActions": "IIa07q_memoryHeaderActions",
812
+ "memoryList": "IIa07q_memoryList",
813
+ "metadataDialog": "IIa07q_metadataDialog",
814
+ "metadataEmpty": "IIa07q_metadataEmpty",
815
+ "metadataList": "IIa07q_metadataList",
816
+ "metadataTaskStatus": "IIa07q_metadataTaskStatus",
817
+ "metadataToolbar": "IIa07q_metadataToolbar",
818
+ "mnemon-metadata-refreshed": "IIa07q_mnemon-metadata-refreshed",
819
+ "mnemon-metadata-sweep": "IIa07q_mnemon-metadata-sweep",
820
+ "mnemon-spin": "IIa07q_mnemon-spin",
821
+ "mnemonDefaultBadge": "IIa07q_mnemonDefaultBadge",
822
+ "modal": "IIa07q_modal",
823
+ "modalFooterNote": "IIa07q_modalFooterNote",
824
+ "modalInlineStatus": "IIa07q_modalInlineStatus",
825
+ "muted": "IIa07q_muted",
826
+ "nodeBodyLabel": "IIa07q_nodeBodyLabel",
827
+ "nodeCore": "IIa07q_nodeCore",
828
+ "nodeHalo": "IIa07q_nodeHalo",
829
+ "nodeLabel": "IIa07q_nodeLabel",
830
+ "placementCandidates": "IIa07q_placementCandidates",
831
+ "placementMode": "IIa07q_placementMode",
832
+ "placementPolicy": "IIa07q_placementPolicy",
833
+ "placementPolicyHeading": "IIa07q_placementPolicyHeading",
834
+ "placementReceipt": "IIa07q_placementReceipt",
835
+ "placementRuleGrid": "IIa07q_placementRuleGrid",
836
+ "previewContent": "IIa07q_previewContent",
837
+ "providerAdvancedGrid": "IIa07q_providerAdvancedGrid",
838
+ "providerBadge": "IIa07q_providerBadge",
839
+ "providerChoice": "IIa07q_providerChoice",
840
+ "providerChoiceIcon": "IIa07q_providerChoiceIcon",
841
+ "providerFieldControl": "IIa07q_providerFieldControl",
842
+ "providerFieldHeading": "IIa07q_providerFieldHeading",
843
+ "providerFieldIcon": "IIa07q_providerFieldIcon",
844
+ "providerFieldIdentity": "IIa07q_providerFieldIdentity",
845
+ "providerFields": "IIa07q_providerFields",
846
+ "providerSecretClear": "IIa07q_providerSecretClear",
847
+ "providerWriteHint": "IIa07q_providerWriteHint",
848
+ "queryField": "IIa07q_queryField",
849
+ "readSourceCard": "IIa07q_readSourceCard",
850
+ "readSourceIdentity": "IIa07q_readSourceIdentity",
851
+ "readSourceMeta": "IIa07q_readSourceMeta",
852
+ "readSourceSignal": "IIa07q_readSourceSignal",
853
+ "readSourceState": "IIa07q_readSourceState",
854
+ "readSources": "IIa07q_readSources",
855
+ "relatedPane": "IIa07q_relatedPane",
856
+ "relatedSource": "IIa07q_relatedSource",
857
+ "resultLayout": "IIa07q_resultLayout",
858
+ "results": "IIa07q_results",
859
+ "searchActions": "IIa07q_searchActions",
860
+ "searchBar": "IIa07q_searchBar",
861
+ "searchControls": "IIa07q_searchControls",
862
+ "sectionSpinner": "IIa07q_sectionSpinner",
863
+ "sessionHint": "IIa07q_sessionHint",
864
+ "sessionMissing": "IIa07q_sessionMissing",
865
+ "sessionReady": "IIa07q_sessionReady",
866
+ "singleColumn": "IIa07q_singleColumn",
867
+ "strategyForm": "IIa07q_strategyForm",
868
+ "strategyLoading": "IIa07q_strategyLoading",
869
+ "supervisedComposer": "IIa07q_supervisedComposer",
870
+ "supervisedForm": "IIa07q_supervisedForm",
871
+ "supervisedHeading": "IIa07q_supervisedHeading",
872
+ "tags": "IIa07q_tags"
873
+ };
874
+ //#endregion
875
+ //#region \0source-css:/home/runner/work/dsh-mnemon/dsh-mnemon/plugins/dsh-mnemon-source-memory-spaces/presentation/sidebar.module.css.mjs
876
+ const css$1 = "._Bh55G_shell ._Bh55G_memoryWorkspace{border-bottom:1px solid var(--dsw-alias-border-l1);background:var(--mn-surface);flex:none;padding:12px 16px 0}._Bh55G_shell ._Bh55G_memoryWorkspace>[class*=pageHeader]{margin-bottom:8px}._Bh55G_shell ._Bh55G_memoryNavigation{flex:none;align-items:flex-end;gap:12px;min-width:0;padding:0;display:flex}._Bh55G_shell ._Bh55G_memoryTabs{scrollbar-width:none;flex:1;gap:2px;min-width:0;display:flex;overflow-x:auto}._Bh55G_shell ._Bh55G_memoryTabs::-webkit-scrollbar{display:none}._Bh55G_shell ._Bh55G_memoryTabs button{min-width:max-content;min-height:0;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;border-radius:6px 6px 0 0;padding:6px 12px;font-size:13px}._Bh55G_shell ._Bh55G_memoryTabs button:hover{background:var(--dsw-alias-interactive-bg-hover)}._Bh55G_shell ._Bh55G_memoryTabs button[data-active]{border-bottom-color:var(--dsw-alias-state-business-primary);color:var(--dsw-alias-label-primary);font-weight:600}._Bh55G_shell ._Bh55G_memoryWriteButton{flex:none}._Bh55G_shell ._Bh55G_modal section[class*=supervisedComposer]{overflow:visible}._Bh55G_shell ._Bh55G_modal form[class*=supervisedForm]{padding:0}._Bh55G_shell ._Bh55G_modal [class*=supervisedHeading]{margin-bottom:10px}._Bh55G_shell ._Bh55G_modal [class*=supervisedHeading] h3{display:none}._Bh55G_shell ._Bh55G_modal details[class*=advancedWrite]{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:10px;margin-top:14px;overflow:hidden}._Bh55G_shell [class*=inspectorEye],._Bh55G_shell [class*=inspectorHeading] button{width:26px;height:26px;min-height:0;color:var(--dsw-alias-label-secondary);background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:0;font-size:13px;display:inline-flex}._Bh55G_shell [class*=inspectorEye]:hover:not(:disabled),._Bh55G_shell [class*=inspectorHeading] button:hover:not(:disabled){color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover);border:0}._Bh55G_shell [class*=inspectorEye],._Bh55G_shell [class*=inspectorHeading] button{cursor:pointer;transition:background-color .12s,color .12s,border-color .12s,outline-color .12s,box-shadow .12s,transform .12s}._Bh55G_shell [class*=inspectorEye]:active:not(:disabled),._Bh55G_shell [class*=inspectorHeading] button:active:not(:disabled){transform:translateY(1px)}._Bh55G_shell [class*=inspectorEye]:disabled{cursor:default;opacity:.45}._Bh55G_shell [class*=searchControls] label,._Bh55G_shell [class*=fieldWide]{color:var(--dsw-alias-label-secondary);gap:5px;font-size:12px;font-weight:500}._Bh55G_shell [class*=searchControls] select,._Bh55G_shell [class*=listToolbar] input,._Bh55G_shell [class*=listToolbar] select,._Bh55G_shell [class*=entitySearch] input{border:1px solid var(--dsw-alias-border-l2);min-height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border-radius:8px;padding:7px 10px;font-size:13px;font-weight:400}._Bh55G_shell [class*=entityHeading]>span,._Bh55G_shell [class*=inspectorHeading]>span{letter-spacing:.06em;font-size:11px}._Bh55G_shell [class*=bodyDirectoryHeader] p,._Bh55G_shell [class*=bodyCard]>p,._Bh55G_shell [class*=graphToolbar],._Bh55G_shell [class*=graphFooter],._Bh55G_shell [class*=manualActions] p{font-size:12px}._Bh55G_shell [class*=bodyDirectoryPath],._Bh55G_shell [class*=bodyCard] footer,._Bh55G_shell [class*=bodyHealth],._Bh55G_shell [class*=badge],._Bh55G_shell [class*=entities] span{font-size:11px}._Bh55G_shell [class*=bodySwitch],._Bh55G_shell [class*=graphCanvasControls] button,._Bh55G_shell [class*=advancedWrite] summary small{font-size:12px}._Bh55G_shell [class*=inspectorMeta] dd{font-size:13px}._Bh55G_shell [class*=bodyGrid]{grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr))}._Bh55G_shell article[class*=bodyCard]{border-color:var(--mn-line);background:linear-gradient(90deg, color-mix(in srgb, var(--mn-provider-color) 5%, var(--mn-layer-1)), var(--mn-layer-1) 34%);height:100%;box-shadow:inset 3px 0 0 color-mix(in srgb, var(--mn-provider-color) 68%, transparent);border-radius:8px;flex-direction:column;padding:11px 11px 11px 14px;display:flex}._Bh55G_shell article[class*=bodyCard][data-active]{border-color:var(--mn-line);box-shadow:inset 3px 0 0 color-mix(in srgb, var(--mn-provider-color) 78%, transparent)}._Bh55G_shell ._Bh55G_bodyCardHeader{justify-content:space-between;align-items:flex-start;gap:12px;min-width:0;display:flex}._Bh55G_shell ._Bh55G_bodyDirectoryActions{flex:none;align-items:center;gap:8px;display:flex}._Bh55G_shell ._Bh55G_bodyDirectoryActions>strong{color:var(--dsw-alias-state-business-primary);background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 8%, transparent);white-space:nowrap;border-radius:999px;padding:5px 8px;font-size:11px;font-weight:600}._Bh55G_shell ._Bh55G_bodyCardIdentity{flex:1;align-items:flex-start;gap:8px;min-width:0;display:flex}._Bh55G_shell ._Bh55G_bodyCardIdentity>[class*=bodySignal]{flex:none;width:6px;height:6px;margin-top:7px}._Bh55G_shell article[class*=bodyCard][data-reconnecting] ._Bh55G_bodyCardIdentity>[class*=bodySignal]{width:6px;height:6px}._Bh55G_shell ._Bh55G_bodyCardIdentity>div{flex:1;gap:2px;min-width:0;display:grid}._Bh55G_shell ._Bh55G_bodyCardIdentity strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:20px;overflow:hidden}._Bh55G_shell ._Bh55G_bodyCardMeta{flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0;display:flex}._Bh55G_shell ._Bh55G_bodyCardMeta code{min-width:0;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}._Bh55G_shell ._Bh55G_bodyCardMeta [class*=bodyHealth]{letter-spacing:0;flex:none;font-size:11px}._Bh55G_shell ._Bh55G_bodyCardHeader>[class*=bodySwitch]{flex:none;min-height:24px}._Bh55G_shell article[class*=bodyCard]>p{-webkit-line-clamp:4;-webkit-box-orient:vertical;min-height:6.2em;max-height:6.2em;margin:12px 0;line-height:1.55;display:-webkit-box;overflow:hidden}._Bh55G_shell ._Bh55G_bodyCardFooter{white-space:nowrap;grid-template-columns:minmax(0,1fr) max-content;align-items:center;gap:10px;min-width:0;margin-top:auto;padding-top:9px;display:grid}._Bh55G_shell ._Bh55G_bodyCardStats{flex-wrap:nowrap;align-items:center;gap:10px;min-width:0;display:flex;overflow:hidden}._Bh55G_shell ._Bh55G_bodyCardFooter [class*=bodyCardActions]{flex-wrap:nowrap;flex:none;align-items:center;gap:6px;display:flex}._Bh55G_shell [class*=cardActions]{gap:6px}._Bh55G_shell ._Bh55G_inspectorGlyph{border:1px solid var(--dsw-alias-border-l1);width:44px;height:44px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-1);font:20px/1 var(--mn-code);opacity:1;border-radius:10px;place-items:center;margin-bottom:10px;display:grid}@media (width<=760px){._Bh55G_shell ._Bh55G_memoryNavigation{padding-inline:12px}._Bh55G_shell ._Bh55G_memoryTabs button{padding-inline:10px}}@media (width<=520px){._Bh55G_shell ._Bh55G_memoryTabs button{padding-inline:8px;font-size:12px}}@media (prefers-reduced-motion:reduce){._Bh55G_shell [class*=inspectorEye],._Bh55G_shell [class*=inspectorHeading] button{transition:none}}";
877
+ const id = "dsh-mnemon-source-memory-spaces/presentation/sidebar.module.css";
878
+ if (typeof document !== "undefined") {
879
+ let tag = document.querySelector("style[data-plugin-css=" + JSON.stringify(id) + "]");
880
+ if (!tag) {
881
+ tag = document.createElement("style");
882
+ tag.dataset.pluginCss = id;
883
+ document.head.appendChild(tag);
884
+ }
885
+ if (tag.textContent !== css$1) tag.textContent = css$1;
886
+ }
887
+ var sidebar_module_css_default = {
888
+ "bodyCardFooter": "_Bh55G_bodyCardFooter",
889
+ "bodyCardHeader": "_Bh55G_bodyCardHeader",
890
+ "bodyCardIdentity": "_Bh55G_bodyCardIdentity",
891
+ "bodyCardMeta": "_Bh55G_bodyCardMeta",
892
+ "bodyCardStats": "_Bh55G_bodyCardStats",
893
+ "bodyDirectoryActions": "_Bh55G_bodyDirectoryActions",
894
+ "inspectorGlyph": "_Bh55G_inspectorGlyph",
895
+ "memoryNavigation": "_Bh55G_memoryNavigation",
896
+ "memoryTabs": "_Bh55G_memoryTabs",
897
+ "memoryWorkspace": "_Bh55G_memoryWorkspace",
898
+ "memoryWriteButton": "_Bh55G_memoryWriteButton",
899
+ "modal": "_Bh55G_modal",
900
+ "shell": "_Bh55G_shell"
901
+ };
902
+ //#endregion
903
+ //#region src/client/presentation.ts
904
+ const css = {
905
+ ...dsh_mnemon_client.memoryPageStyles,
906
+ ...page_module_css_default
907
+ };
908
+ const sidebarCss = {
909
+ ...dsh_mnemon_client.memorySidebarStyles,
910
+ ...sidebar_module_css_default
911
+ };
912
+ function useT() {
913
+ const fallback = (0, dsh_mnemon_client.useT)();
914
+ const locale = (0, dsh_mnemon_client.useLocale)();
915
+ return (0, react.useMemo)(() => (key, params) => {
916
+ const dictionary = locale.startsWith("en") ? en : zh;
917
+ if (!Object.hasOwn(dictionary, key)) return fallback(key, params);
918
+ const text = dictionary[key];
919
+ return params === void 0 ? text : text.replace(/\{(\w+)\}/g, (match, name) => name in params ? String(params[name]) : match);
920
+ }, [locale, fallback]);
921
+ }
922
+ //#endregion
10
923
  //#region src/contracts.ts
11
924
  const CATEGORIES = [
12
925
  "preference",
@@ -101,24 +1014,24 @@ window.__ModuleLoader__.load({
101
1014
  if (provider === void 0 || provider.origin === "native") return true;
102
1015
  return provider.serviceConfigured !== false && memoryProviderFields(provider).every((field) => !field.required || String(connection?.[field.key] ?? "").trim() !== "");
103
1016
  }
104
- function nativeBodyProvider(provider) {
1017
+ function nativeSpaceProvider(provider) {
105
1018
  return provider.origin === "native";
106
1019
  }
107
1020
  /** Shared memory-level Provider form used by manual creation, editing, and distillation policy. */
108
1021
  function ProviderMemoryFields(props) {
109
- const t = (0, dsh_mnemon_client.useT)();
1022
+ const t = useT();
110
1023
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
111
- className: dsh_mnemon_client.memoryPageStyles.providerFields,
1024
+ className: css.providerFields,
112
1025
  "data-provider": props.provider.id,
113
1026
  children: [
114
1027
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
115
- className: dsh_mnemon_client.memoryPageStyles.providerFieldHeading,
1028
+ className: css.providerFieldHeading,
116
1029
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
117
- className: dsh_mnemon_client.memoryPageStyles.providerFieldIdentity,
1030
+ className: css.providerFieldIdentity,
118
1031
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProviderIcon, {
119
1032
  providerId: props.provider.id,
120
1033
  icon: props.provider.icon,
121
- className: dsh_mnemon_client.memoryPageStyles.providerFieldIcon
1034
+ className: css.providerFieldIcon
122
1035
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: props.provider.label }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: providerSummary(t, props.provider) })] })]
123
1036
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [
124
1037
  props.provider.kind === "local" ? t("overview.providerKindLocal") : t("overview.providerKindRemote"),
@@ -127,7 +1040,7 @@ window.__ModuleLoader__.load({
127
1040
  ] })]
128
1041
  }),
129
1042
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
130
- className: dsh_mnemon_client.memoryPageStyles.providerAdvancedGrid,
1043
+ className: css.providerAdvancedGrid,
131
1044
  children: memoryProviderFields(props.provider).map((field) => {
132
1045
  const label = providerFieldLabel(t, field);
133
1046
  const value = props.connection[field.key] ?? "";
@@ -163,9 +1076,9 @@ window.__ModuleLoader__.load({
163
1076
  onChange: (event) => props.onChange(field.key, event.target.value)
164
1077
  });
165
1078
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
166
- className: dsh_mnemon_client.memoryPageStyles.providerFieldControl,
1079
+ className: css.providerFieldControl,
167
1080
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", { children: [label, input] }), props.body !== void 0 && field.input === "secret" && savedSecret && props.onClearSecretsChange !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
168
- className: dsh_mnemon_client.memoryPageStyles.providerSecretClear,
1081
+ className: css.providerSecretClear,
169
1082
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
170
1083
  type: "checkbox",
171
1084
  checked: clearingSecret,
@@ -176,7 +1089,7 @@ window.__ModuleLoader__.load({
176
1089
  })
177
1090
  }),
178
1091
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("small", {
179
- className: dsh_mnemon_client.memoryPageStyles.providerWriteHint,
1092
+ className: css.providerWriteHint,
180
1093
  children: [
181
1094
  props.provider.capabilities.writeMode === "exact" ? t("overview.providerWriteExact") : t("overview.providerWriteAsync"),
182
1095
  " · ",
@@ -203,24 +1116,24 @@ window.__ModuleLoader__.load({
203
1116
  function MemoryProviderBadge(props) {
204
1117
  const label = providerDisplayLabel(props.providerId, props.label);
205
1118
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
206
- className: dsh_mnemon_client.memoryPageStyles.providerBadge,
1119
+ className: css.providerBadge,
207
1120
  "data-provider": props.providerId,
208
1121
  title: label,
209
1122
  children: label
210
1123
  });
211
1124
  }
212
1125
  function ReadSourcePanel(props) {
213
- const t = (0, dsh_mnemon_client.useT)();
1126
+ const t = useT();
214
1127
  if (props.sources.length === 0) return null;
215
1128
  const content = (source) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
216
1129
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
217
- className: dsh_mnemon_client.memoryPageStyles.readSourceSignal,
1130
+ className: css.readSourceSignal,
218
1131
  "aria-hidden": "true"
219
1132
  }),
220
1133
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
221
- className: dsh_mnemon_client.memoryPageStyles.readSourceIdentity,
1134
+ className: css.readSourceIdentity,
222
1135
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: source.memoryBodyName }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
223
- className: dsh_mnemon_client.memoryPageStyles.readSourceMeta,
1136
+ className: css.readSourceMeta,
224
1137
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(MemoryProviderBadge, {
225
1138
  providerId: source.providerId,
226
1139
  label: source.providerLabel
@@ -228,12 +1141,12 @@ window.__ModuleLoader__.load({
228
1141
  })]
229
1142
  }),
230
1143
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
231
- className: dsh_mnemon_client.memoryPageStyles.readSourceState,
1144
+ className: css.readSourceState,
232
1145
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("em", { children: t(`readSources.mode.${source.mode}`) }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("small", { children: [t(`readSources.status.${source.status}`, { count: source.itemCount }), source.edgeCount === void 0 || source.edgeCount === 0 ? "" : ` · ${t("readSources.edges", { count: source.edgeCount })}`] })]
233
1146
  })
234
1147
  ] });
235
1148
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
236
- className: dsh_mnemon_client.memoryPageStyles.readSources,
1149
+ className: css.readSources,
237
1150
  "aria-label": props.title,
238
1151
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("header", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: props.title }), props.hint !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: props.hint })] }), props.onSelect !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
239
1152
  type: "button",
@@ -242,7 +1155,7 @@ window.__ModuleLoader__.load({
242
1155
  onClick: () => props.onSelect?.(void 0),
243
1156
  children: t("readSources.all")
244
1157
  })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: props.sources.map((source) => props.onSelect === void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("article", {
245
- className: dsh_mnemon_client.memoryPageStyles.readSourceCard,
1158
+ className: css.readSourceCard,
246
1159
  "data-provider": source.providerId,
247
1160
  "data-mode": source.mode,
248
1161
  "data-status": source.status,
@@ -250,7 +1163,7 @@ window.__ModuleLoader__.load({
250
1163
  children: content(source)
251
1164
  }, source.memoryBodyId) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
252
1165
  type: "button",
253
- className: dsh_mnemon_client.memoryPageStyles.readSourceCard,
1166
+ className: css.readSourceCard,
254
1167
  "data-provider": source.providerId,
255
1168
  "data-mode": source.mode,
256
1169
  "data-status": source.status,
@@ -264,7 +1177,7 @@ window.__ModuleLoader__.load({
264
1177
  }
265
1178
  /** Full-text popup for a selected graph node whose inspector preview is clamped. */
266
1179
  function ContentPreview(props) {
267
- const t = (0, dsh_mnemon_client.useT)();
1180
+ const t = useT();
268
1181
  const meta = [
269
1182
  props.kind,
270
1183
  props.node.id,
@@ -275,18 +1188,18 @@ window.__ModuleLoader__.load({
275
1188
  description: meta,
276
1189
  onClose: props.onClose,
277
1190
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
278
- className: dsh_mnemon_client.memoryPageStyles.previewContent,
1191
+ className: css.previewContent,
279
1192
  children: props.node.content
280
1193
  })
281
1194
  });
282
1195
  }
283
1196
  function InsightCard(props) {
284
- const t = (0, dsh_mnemon_client.useT)();
1197
+ const t = useT();
285
1198
  const [confirming, setConfirming] = (0, react.useState)(false);
286
1199
  const [forgetting, setForgetting] = (0, react.useState)(false);
287
1200
  const { insight } = props;
288
- const neutralActionClass = (0, dsh_mnemon_client.appearanceClass)(dsh_mnemon_client.memoryPageStyles.ghostButton, dsh_mnemon_client.memorySidebarStyles.itemActionButton);
289
- const forgetActionClass = (0, dsh_mnemon_client.appearanceClass)(dsh_mnemon_client.memoryPageStyles.dangerButton, (0, dsh_mnemon_client.appearanceClass)(dsh_mnemon_client.memorySidebarStyles.itemActionButton, dsh_mnemon_client.memorySidebarStyles.itemDangerAction));
1201
+ const neutralActionClass = (0, dsh_mnemon_client.appearanceClass)(css.ghostButton, sidebarCss.itemActionButton);
1202
+ const forgetActionClass = (0, dsh_mnemon_client.appearanceClass)(css.dangerButton, (0, dsh_mnemon_client.appearanceClass)(sidebarCss.itemActionButton, sidebarCss.itemDangerAction));
290
1203
  const providerLabel = insight.memoryProviderLabel ?? insight.memoryProviderId;
291
1204
  const supportsRelated = insight.memoryCapabilities?.related === true;
292
1205
  const supportsForget = insight.memoryCapabilities?.forget === true;
@@ -308,36 +1221,36 @@ window.__ModuleLoader__.load({
308
1221
  }
309
1222
  };
310
1223
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("article", {
311
- className: dsh_mnemon_client.memoryPageStyles.insightCard,
1224
+ className: css.insightCard,
312
1225
  children: [
313
1226
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
314
- className: dsh_mnemon_client.memoryPageStyles.cardTop,
1227
+ className: css.cardTop,
315
1228
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
316
- className: dsh_mnemon_client.memoryPageStyles.badges,
1229
+ className: css.badges,
317
1230
  children: meta.map((entry) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
318
- className: dsh_mnemon_client.memoryPageStyles.badge,
1231
+ className: css.badge,
319
1232
  children: entry
320
1233
  }, entry))
321
1234
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", {
322
- className: dsh_mnemon_client.memoryPageStyles.id,
1235
+ className: css.id,
323
1236
  title: insight.id,
324
1237
  children: insight.id.slice(0, 8)
325
1238
  })]
326
1239
  }),
327
1240
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
328
- className: dsh_mnemon_client.memoryPageStyles.content,
1241
+ className: css.content,
329
1242
  children: insight.content
330
1243
  }),
331
1244
  (insight.tags?.length ?? 0) > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
332
- className: dsh_mnemon_client.memoryPageStyles.tags,
1245
+ className: css.tags,
333
1246
  children: insight.tags.map((tag) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: ["#", tag] }, tag))
334
1247
  }),
335
1248
  (insight.entities?.length ?? 0) > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
336
- className: dsh_mnemon_client.memoryPageStyles.entities,
1249
+ className: css.entities,
337
1250
  children: insight.entities.map((entity) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: entity }, entity))
338
1251
  }),
339
1252
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
340
- className: dsh_mnemon_client.memoryPageStyles.cardActions,
1253
+ className: css.cardActions,
341
1254
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
342
1255
  props.onRelated !== void 0 && supportsRelated && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
343
1256
  type: "button",
@@ -372,29 +1285,29 @@ window.__ModuleLoader__.load({
372
1285
  busy: forgetting,
373
1286
  onClose: () => setConfirming(false),
374
1287
  footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
375
- className: dsh_mnemon_client.memoryPageStyles.modalFooterActions,
1288
+ className: css.modalFooterActions,
376
1289
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
377
1290
  type: "button",
378
1291
  "data-dialog-close": true,
379
1292
  "data-autofocus": true,
380
- className: dsh_mnemon_client.memoryPageStyles.ghostButton,
1293
+ className: css.ghostButton,
381
1294
  disabled: forgetting,
382
1295
  onClick: () => setConfirming(false),
383
1296
  children: t("common.cancel")
384
1297
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
385
1298
  type: "button",
386
- className: dsh_mnemon_client.memoryPageStyles.dangerSolidButton,
1299
+ className: css.dangerSolidButton,
387
1300
  disabled: forgetting,
388
1301
  onClick: () => void forget(),
389
1302
  children: forgetting ? t("card.processing") : t("card.confirmForget")
390
1303
  })]
391
1304
  }),
392
1305
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
393
- className: dsh_mnemon_client.memoryPageStyles.bodyDeleteConfirm,
1306
+ className: css.bodyDeleteConfirm,
394
1307
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
395
- className: dsh_mnemon_client.memoryPageStyles.bodyDeleteSummary,
1308
+ className: css.bodyDeleteSummary,
396
1309
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
397
- className: dsh_mnemon_client.memoryPageStyles.bodyDeleteContent,
1310
+ className: css.bodyDeleteContent,
398
1311
  children: insight.content
399
1312
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: meta.join(" · ") })]
400
1313
  })
@@ -442,13 +1355,13 @@ window.__ModuleLoader__.load({
442
1355
  ...node,
443
1356
  kind: "memory"
444
1357
  }));
445
- const memoriesByBody = /* @__PURE__ */ new Map();
1358
+ const memoriesBySpace = /* @__PURE__ */ new Map();
446
1359
  for (const node of memories) {
447
1360
  if (node.memoryBodyId === void 0) continue;
448
- memoriesByBody.set(node.memoryBodyId, [...memoriesByBody.get(node.memoryBodyId) ?? [], node]);
1361
+ memoriesBySpace.set(node.memoryBodyId, [...memoriesBySpace.get(node.memoryBodyId) ?? [], node]);
449
1362
  }
450
- const activeBodies = bodies.filter((body) => body.active && ((memoriesByBody.get(body.id)?.length ?? 0) > 0 || (body.stats?.topEntities.length ?? 0) > 0));
451
- const spaceNodes = activeBodies.map((body) => ({
1363
+ const activeSpaces = bodies.filter((body) => body.active && ((memoriesBySpace.get(body.id)?.length ?? 0) > 0 || (body.stats?.topEntities.length ?? 0) > 0));
1364
+ const spaceNodes = activeSpaces.map((body) => ({
452
1365
  id: body.id,
453
1366
  graphId: spaceGraphId(body.id),
454
1367
  kind: "space",
@@ -458,20 +1371,20 @@ window.__ModuleLoader__.load({
458
1371
  memoryBodyId: body.id,
459
1372
  memoryBodyName: body.name,
460
1373
  memoryProviderId: body.provider.id,
461
- occurrenceCount: body.stats?.totalInsights ?? memoriesByBody.get(body.id)?.length ?? 0
1374
+ occurrenceCount: body.stats?.totalInsights ?? memoriesBySpace.get(body.id)?.length ?? 0
462
1375
  }));
463
1376
  const edges = graph.edges.filter((edge) => edge.type !== "entity");
464
- for (const body of activeBodies) for (const memory of memoriesByBody.get(body.id) ?? []) edges.push({
1377
+ for (const body of activeSpaces) for (const memory of memoriesBySpace.get(body.id) ?? []) edges.push({
465
1378
  sourceId: spaceGraphId(body.id),
466
1379
  targetId: graphNodeKey(memory),
467
1380
  label: "scope",
468
1381
  color: "#708199",
469
1382
  type: "scope"
470
1383
  });
471
- const bodiesById = new Map(activeBodies.map((body) => [body.id, body]));
1384
+ const spacesById = new Map(activeSpaces.map((body) => [body.id, body]));
472
1385
  const indexedEntities = /* @__PURE__ */ new Map();
473
1386
  for (const memory of memories) {
474
- const body = memory.memoryBodyId === void 0 ? void 0 : bodiesById.get(memory.memoryBodyId);
1387
+ const body = memory.memoryBodyId === void 0 ? void 0 : spacesById.get(memory.memoryBodyId);
475
1388
  if (body === void 0) continue;
476
1389
  const seen = /* @__PURE__ */ new Set();
477
1390
  for (const rawEntity of memory.entities ?? []) {
@@ -688,7 +1601,7 @@ window.__ModuleLoader__.load({
688
1601
  });
689
1602
  }
690
1603
  function MemoryGraph(props) {
691
- const t = (0, dsh_mnemon_client.useT)();
1604
+ const t = useT();
692
1605
  const visibleNodes = (0, react.useMemo)(() => {
693
1606
  const spaces = props.graph.nodes.filter((node) => graphNodeKind(node) === "space");
694
1607
  const entities = props.graph.nodes.filter((node) => graphNodeKind(node) === "entity").slice(0, 20);
@@ -833,7 +1746,7 @@ window.__ModuleLoader__.load({
833
1746
  };
834
1747
  const layoutLabel = t(layoutMode === "natural" ? "graph.layoutNatural" : layoutMode === "uniform" ? "graph.layoutUniform" : "graph.layoutCustom");
835
1748
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
836
- className: dsh_mnemon_client.memoryPageStyles.graphCanvasControls,
1749
+ className: css.graphCanvasControls,
837
1750
  role: "toolbar",
838
1751
  "aria-label": t("graph.layoutAria"),
839
1752
  children: [
@@ -856,7 +1769,7 @@ window.__ModuleLoader__.load({
856
1769
  })
857
1770
  ]
858
1771
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
859
- className: dsh_mnemon_client.memoryPageStyles.graphSvg,
1772
+ className: css.graphSvg,
860
1773
  viewBox: `0 0 ${GRAPH_WIDTH} ${GRAPH_HEIGHT}`,
861
1774
  role: "img",
862
1775
  "data-layout": layoutMode,
@@ -873,7 +1786,7 @@ window.__ModuleLoader__.load({
873
1786
  patternUnits: "userSpaceOnUse",
874
1787
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
875
1788
  d: "M 26 0 L 0 0 0 26",
876
- className: dsh_mnemon_client.memoryPageStyles.graphGridLine,
1789
+ className: css.graphGridLine,
877
1790
  fill: "none"
878
1791
  })
879
1792
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("filter", {
@@ -890,7 +1803,7 @@ window.__ModuleLoader__.load({
890
1803
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
891
1804
  width: GRAPH_WIDTH,
892
1805
  height: GRAPH_HEIGHT,
893
- className: dsh_mnemon_client.memoryPageStyles.graphBackdrop
1806
+ className: css.graphBackdrop
894
1807
  }),
895
1808
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
896
1809
  width: GRAPH_WIDTH,
@@ -914,7 +1827,7 @@ window.__ModuleLoader__.load({
914
1827
  const controlY = (source.y + target.y) / 2 + dx / distance * offset * direction;
915
1828
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
916
1829
  d: `M ${source.x} ${source.y} Q ${controlX} ${controlY} ${target.x} ${target.y}`,
917
- className: dsh_mnemon_client.memoryPageStyles.graphEdge,
1830
+ className: css.graphEdge,
918
1831
  "data-edge": edge.type ?? "temporal",
919
1832
  "data-source-id": edge.sourceId,
920
1833
  "data-target-id": edge.targetId,
@@ -931,7 +1844,7 @@ window.__ModuleLoader__.load({
931
1844
  const selected = props.selectedId === nodeKey;
932
1845
  const showLabel = selected || visibleNodes.length < 22 || index % 3 === 0;
933
1846
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("g", {
934
- className: dsh_mnemon_client.memoryPageStyles.graphNode,
1847
+ className: css.graphNode,
935
1848
  "data-node-id": nodeKey,
936
1849
  "data-provider": node.memoryProviderId,
937
1850
  "data-category": node.category ?? "general",
@@ -971,37 +1884,37 @@ window.__ModuleLoader__.load({
971
1884
  width: selected ? 40 : 34,
972
1885
  height: selected ? 30 : 26,
973
1886
  rx: "9",
974
- className: dsh_mnemon_client.memoryPageStyles.nodeHalo,
1887
+ className: css.nodeHalo,
975
1888
  filter: selected ? "url(#mnemon-glow)" : void 0
976
1889
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
977
1890
  r: selected ? 6 : 5,
978
- className: dsh_mnemon_client.memoryPageStyles.nodeCore
1891
+ className: css.nodeCore
979
1892
  })] }) : graphNodeKind(node) === "entity" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
980
1893
  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",
981
- className: dsh_mnemon_client.memoryPageStyles.nodeHalo,
1894
+ className: css.nodeHalo,
982
1895
  filter: selected ? "url(#mnemon-glow)" : void 0
983
1896
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
984
1897
  r: selected ? 5 : 4,
985
- className: dsh_mnemon_client.memoryPageStyles.nodeCore
1898
+ className: css.nodeCore
986
1899
  })] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
987
1900
  r: selected ? 17 : visibleNodes.length <= 12 ? 14 : 11,
988
- className: dsh_mnemon_client.memoryPageStyles.nodeHalo,
1901
+ className: css.nodeHalo,
989
1902
  filter: selected ? "url(#mnemon-glow)" : void 0
990
1903
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
991
1904
  r: selected ? 7 : visibleNodes.length <= 12 ? 6 : 4.5,
992
- className: dsh_mnemon_client.memoryPageStyles.nodeCore
1905
+ className: css.nodeCore
993
1906
  })] }),
994
1907
  (selected || visibleNodes.length <= 12) && graphNodeKind(node) === "memory" && node.memoryBodyName !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("text", {
995
1908
  x: "0",
996
1909
  y: "-18",
997
1910
  textAnchor: "middle",
998
- className: dsh_mnemon_client.memoryPageStyles.nodeBodyLabel,
1911
+ className: css.nodeBodyLabel,
999
1912
  children: (0, dsh_mnemon_client.short)(node.memoryBodyName, 12)
1000
1913
  }),
1001
1914
  showLabel && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("text", {
1002
1915
  x: visibleNodes.length <= 12 ? 19 : 15,
1003
1916
  y: "4",
1004
- className: dsh_mnemon_client.memoryPageStyles.nodeLabel,
1917
+ className: css.nodeLabel,
1005
1918
  children: (0, dsh_mnemon_client.short)(node.content.replace(/\s+/gu, " "), selected ? 34 : visibleNodes.length <= 12 ? 26 : 19)
1006
1919
  })
1007
1920
  ]
@@ -1011,10 +1924,10 @@ window.__ModuleLoader__.load({
1011
1924
  })] });
1012
1925
  }
1013
1926
  function OverviewPage(props) {
1014
- const t = (0, dsh_mnemon_client.useT)();
1927
+ const t = useT();
1015
1928
  const locale = (0, dsh_mnemon_client.useLocale)();
1016
- const bodyCreateFormId = (0, react.useId)();
1017
- const bodyEditFormId = (0, react.useId)();
1929
+ const spaceCreateFormId = (0, react.useId)();
1930
+ const spaceEditFormId = (0, react.useId)();
1018
1931
  const [graph, setGraph] = (0, react.useState)(null);
1019
1932
  const [catalog, setCatalog] = (0, react.useState)(null);
1020
1933
  const [selected, setSelected] = (0, react.useState)(null);
@@ -1023,22 +1936,22 @@ window.__ModuleLoader__.load({
1023
1936
  const [graphLoading, setGraphLoading] = (0, react.useState)(true);
1024
1937
  const [error, setError] = (0, react.useState)(null);
1025
1938
  const [changing, setChanging] = (0, react.useState)(null);
1026
- const [reconnectingBody, setReconnectingBody] = (0, react.useState)(null);
1939
+ const [reconnectingSpace, setReconnectingSpace] = (0, react.useState)(null);
1027
1940
  const [creating, setCreating] = (0, react.useState)(false);
1028
- const [creatingBodyOpen, setCreatingBodyOpen] = (0, react.useState)(false);
1029
- const [bodyName, setBodyName] = (0, react.useState)("");
1030
- const [bodyDescription, setBodyDescription] = (0, react.useState)("");
1031
- const [bodyProviderId, setBodyProviderId] = (0, react.useState)("mnemon-native");
1941
+ const [creatingSpaceOpen, setCreatingSpaceOpen] = (0, react.useState)(false);
1942
+ const [spaceName, setSpaceName] = (0, react.useState)("");
1943
+ const [spaceDescription, setSpaceDescription] = (0, react.useState)("");
1944
+ const [spaceProviderId, setSpaceProviderId] = (0, react.useState)("mnemon-native");
1032
1945
  const [providerDrafts, setProviderDrafts] = (0, react.useState)({});
1033
1946
  const [catalogUnavailable, setCatalogUnavailable] = (0, react.useState)(false);
1034
- const [editingBody, setEditingBody] = (0, react.useState)(null);
1947
+ const [editingSpace, setEditingSpace] = (0, react.useState)(null);
1035
1948
  const [editName, setEditName] = (0, react.useState)("");
1036
1949
  const [editDescription, setEditDescription] = (0, react.useState)("");
1037
1950
  const [editConnection, setEditConnection] = (0, react.useState)({});
1038
1951
  const [editClearSecrets, setEditClearSecrets] = (0, react.useState)([]);
1039
- const [savingBody, setSavingBody] = (0, react.useState)(null);
1040
- const [confirmingDeleteBody, setConfirmingDeleteBody] = (0, react.useState)(null);
1041
- const [deletingBody, setDeletingBody] = (0, react.useState)(null);
1952
+ const [savingSpace, setSavingSpace] = (0, react.useState)(null);
1953
+ const [confirmingDeleteSpace, setConfirmingDeleteSpace] = (0, react.useState)(null);
1954
+ const [deletingSpace, setDeletingSpace] = (0, react.useState)(null);
1042
1955
  const [preview, setPreview] = (0, react.useState)(null);
1043
1956
  const [metadataOpen, setMetadataOpen] = (0, react.useState)(false);
1044
1957
  const [metadataSelection, setMetadataSelection] = (0, react.useState)([]);
@@ -1151,8 +2064,8 @@ window.__ModuleLoader__.load({
1151
2064
  }
1152
2065
  };
1153
2066
  const reconnect = async (body) => {
1154
- if (reconnectingBody !== null || editingBody !== null || deletingBody !== null) return;
1155
- setReconnectingBody(body.id);
2067
+ if (reconnectingSpace !== null || editingSpace !== null || deletingSpace !== null) return;
2068
+ setReconnectingSpace(body.id);
1156
2069
  setError(null);
1157
2070
  setCatalog((current) => current === null ? current : {
1158
2071
  ...current,
@@ -1181,21 +2094,21 @@ window.__ModuleLoader__.load({
1181
2094
  });
1182
2095
  setError(failure);
1183
2096
  } finally {
1184
- setReconnectingBody(null);
2097
+ setReconnectingSpace(null);
1185
2098
  }
1186
2099
  };
1187
2100
  const beginEdit = (body) => {
1188
- setEditingBody(body.id);
2101
+ setEditingSpace(body.id);
1189
2102
  setEditName(body.name);
1190
2103
  setEditDescription(body.description ?? "");
1191
2104
  setError(null);
1192
- setEditConnection(nativeBodyProvider(body.provider) ? {} : { ...body.provider.settings });
2105
+ setEditConnection(nativeSpaceProvider(body.provider) ? {} : { ...body.provider.settings });
1193
2106
  setEditClearSecrets([]);
1194
2107
  };
1195
2108
  const saveEdit = async (event, body) => {
1196
2109
  event.preventDefault();
1197
2110
  if (editName.trim() === "") return;
1198
- setSavingBody(body.id);
2111
+ setSavingSpace(body.id);
1199
2112
  setError(null);
1200
2113
  try {
1201
2114
  const descriptor = catalog?.providers.find((provider) => provider.id === body.provider.id);
@@ -1205,39 +2118,39 @@ window.__ModuleLoader__.load({
1205
2118
  await props.client.updateBody(body.id, {
1206
2119
  name: editName,
1207
2120
  description: editDescription,
1208
- ...nativeBodyProvider(body.provider) ? {} : {
2121
+ ...nativeSpaceProvider(body.provider) ? {} : {
1209
2122
  connection,
1210
2123
  ...editClearSecrets.length === 0 ? {} : { clearSecrets: editClearSecrets }
1211
2124
  }
1212
2125
  });
1213
- setEditingBody(null);
2126
+ setEditingSpace(null);
1214
2127
  await load(true);
1215
2128
  props.onMutate();
1216
2129
  } catch (reason) {
1217
2130
  setError((0, dsh_mnemon_client.message)(reason));
1218
2131
  } finally {
1219
- setSavingBody(null);
2132
+ setSavingSpace(null);
1220
2133
  }
1221
2134
  };
1222
2135
  const create = async (event) => {
1223
2136
  event.preventDefault();
1224
2137
  const providers = catalog?.providers ?? [];
1225
- const manualProvider = providers.find((provider) => provider.id === bodyProviderId);
1226
- if (bodyName.trim() === "" || bodyDescription.trim() === "" || !providerDraftComplete(manualProvider, providerDrafts[bodyProviderId])) return;
2138
+ const manualProvider = providers.find((provider) => provider.id === spaceProviderId);
2139
+ if (spaceName.trim() === "" || spaceDescription.trim() === "" || !providerDraftComplete(manualProvider, providerDrafts[spaceProviderId])) return;
1227
2140
  setCreating(true);
1228
2141
  setError(null);
1229
2142
  try {
1230
2143
  await props.client.createBody({
1231
- name: bodyName,
1232
- description: bodyDescription,
1233
- providerId: bodyProviderId,
1234
- ...manualProvider?.origin === "native" ? {} : { connection: providerDrafts[bodyProviderId] ?? {} }
2144
+ name: spaceName,
2145
+ description: spaceDescription,
2146
+ providerId: spaceProviderId,
2147
+ ...manualProvider?.origin === "native" ? {} : { connection: providerDrafts[spaceProviderId] ?? {} }
1235
2148
  });
1236
- setBodyName("");
1237
- setBodyDescription("");
1238
- setBodyProviderId(providers.find((provider) => provider.origin === "native")?.id ?? providers[0]?.id ?? "mnemon-native");
2149
+ setSpaceName("");
2150
+ setSpaceDescription("");
2151
+ setSpaceProviderId(providers.find((provider) => provider.origin === "native")?.id ?? providers[0]?.id ?? "mnemon-native");
1239
2152
  setProviderDrafts((current) => Object.fromEntries(providers.map((provider) => [provider.id, Object.fromEntries(Object.entries(current[provider.id] ?? {}).map(([key, value]) => [key, provider.fields.some((field) => field.key === key && field.input === "secret") ? "" : value]))])));
1240
- setCreatingBodyOpen(false);
2153
+ setCreatingSpaceOpen(false);
1241
2154
  await load(true);
1242
2155
  props.onMutate();
1243
2156
  } catch (reason) {
@@ -1247,17 +2160,17 @@ window.__ModuleLoader__.load({
1247
2160
  }
1248
2161
  };
1249
2162
  const deleteBody = async (body) => {
1250
- setDeletingBody(body.id);
2163
+ setDeletingSpace(body.id);
1251
2164
  setError(null);
1252
2165
  try {
1253
2166
  await props.client.deleteBody(body.id);
1254
- setConfirmingDeleteBody(null);
2167
+ setConfirmingDeleteSpace(null);
1255
2168
  await load(true);
1256
2169
  props.onMutate();
1257
2170
  } catch (reason) {
1258
2171
  setError((0, dsh_mnemon_client.message)(reason));
1259
2172
  } finally {
1260
- setDeletingBody(null);
2173
+ setDeletingSpace(null);
1261
2174
  }
1262
2175
  };
1263
2176
  const maintainMetadata = () => {
@@ -1307,8 +2220,8 @@ window.__ModuleLoader__.load({
1307
2220
  const graphSources = graph?.sources ?? [];
1308
2221
  const onlyQueryOrUnsupported = graphSources.length > 0 && graphSources.every((source) => source.mode === "query-only" || source.mode === "unsupported" || source.status === "unavailable");
1309
2222
  const selectedKind = selected === null ? null : graphNodeKind(selected);
1310
- const editingBodyView = editingBody === null ? void 0 : catalog?.items.find((body) => body.id === editingBody);
1311
- const deletingBodyView = confirmingDeleteBody === null ? void 0 : catalog?.items.find((body) => body.id === confirmingDeleteBody);
2223
+ const editingSpaceView = editingSpace === null ? void 0 : catalog?.items.find((body) => body.id === editingSpace);
2224
+ const deletingSpaceView = confirmingDeleteSpace === null ? void 0 : catalog?.items.find((body) => body.id === confirmingDeleteSpace);
1312
2225
  const providers = catalog?.providers ?? [];
1313
2226
  const metadataCandidates = (catalog?.items ?? props.fallbackBodies).filter((body) => body.active && body.providerEnabled !== false);
1314
2227
  const metadataRunningCount = Object.values(metadataTasks).filter((task) => task.status === "running").length;
@@ -1338,9 +2251,9 @@ window.__ModuleLoader__.load({
1338
2251
  if (hours < 24) return t("overview.fullSyncHours", { count: hours });
1339
2252
  return t("overview.fullSyncDays", { count: Math.floor(hours / 24) });
1340
2253
  })();
1341
- const selectedProvider = providers.find((provider) => provider.id === bodyProviderId);
1342
- const nativeBodyCount = catalog?.items.filter((body) => nativeBodyProvider(body.provider)).length ?? 0;
1343
- const canDeleteBody = (body) => !nativeBodyProvider(body.provider) || nativeBodyCount > 1;
2254
+ const selectedProvider = providers.find((provider) => provider.id === spaceProviderId);
2255
+ const nativeSpaceCount = catalog?.items.filter((body) => nativeSpaceProvider(body.provider)).length ?? 0;
2256
+ const canDeleteSpace = (body) => !nativeSpaceProvider(body.provider) || nativeSpaceCount > 1;
1344
2257
  const updateProviderDraft = (providerId, key, value) => setProviderDrafts((current) => ({
1345
2258
  ...current,
1346
2259
  [providerId]: {
@@ -1349,7 +2262,7 @@ window.__ModuleLoader__.load({
1349
2262
  }
1350
2263
  }));
1351
2264
  const placementReceipt = (body) => body.placement === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1352
- className: dsh_mnemon_client.memoryPageStyles.placementReceipt,
2265
+ className: css.placementReceipt,
1353
2266
  title: body.placement.reason,
1354
2267
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1355
2268
  "aria-hidden": "true",
@@ -1360,9 +2273,9 @@ window.__ModuleLoader__.load({
1360
2273
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: body.placement.reason })
1361
2274
  ] })]
1362
2275
  });
1363
- const bodyEditForm = (body) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
1364
- id: bodyEditFormId,
1365
- className: dsh_mnemon_client.memoryPageStyles.bodyEdit,
2276
+ const spaceEditForm = (body) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
2277
+ id: spaceEditFormId,
2278
+ className: css.bodyEdit,
1366
2279
  onSubmit: (event) => void saveEdit(event, body),
1367
2280
  children: [
1368
2281
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", { children: [t("overview.editName"), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
@@ -1379,7 +2292,7 @@ window.__ModuleLoader__.load({
1379
2292
  rows: 4,
1380
2293
  maxLength: 1e3
1381
2294
  })] }),
1382
- !nativeBodyProvider(body.provider) && (() => {
2295
+ !nativeSpaceProvider(body.provider) && (() => {
1383
2296
  const descriptor = providers.find((provider) => provider.id === body.provider.id);
1384
2297
  return descriptor === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProviderMemoryFields, {
1385
2298
  provider: descriptor,
@@ -1395,29 +2308,29 @@ window.__ModuleLoader__.load({
1395
2308
  })()
1396
2309
  ]
1397
2310
  });
1398
- const bodyCreateForm = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
1399
- id: bodyCreateFormId,
1400
- className: (0, dsh_mnemon_client.appearanceClass)(dsh_mnemon_client.memoryPageStyles.bodyEdit, dsh_mnemon_client.memoryPageStyles.bodyCreateForm),
2311
+ const spaceCreateForm = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
2312
+ id: spaceCreateFormId,
2313
+ className: (0, dsh_mnemon_client.appearanceClass)(css.bodyEdit, css.spaceCreateForm),
1401
2314
  onSubmit: (event) => void create(event),
1402
2315
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
1403
- className: dsh_mnemon_client.memoryPageStyles.createSection,
2316
+ className: css.createSection,
1404
2317
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1405
- className: dsh_mnemon_client.memoryPageStyles.createSectionHeading,
2318
+ className: css.createSectionHeading,
1406
2319
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "01" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: t("overview.createIdentityTitle") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: t("overview.createIdentityHint") })] })]
1407
2320
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1408
- className: dsh_mnemon_client.memoryPageStyles.createIdentityGrid,
2321
+ className: css.createIdentityGrid,
1409
2322
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", { children: [t("overview.createName"), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
1410
2323
  "data-autofocus": true,
1411
2324
  "aria-label": t("overview.createName"),
1412
- value: bodyName,
1413
- onChange: (event) => setBodyName(event.target.value),
2325
+ value: spaceName,
2326
+ onChange: (event) => setSpaceName(event.target.value),
1414
2327
  placeholder: t("overview.createNamePlaceholder"),
1415
2328
  maxLength: 100,
1416
2329
  required: true
1417
2330
  })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", { children: [t("overview.createDescription"), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
1418
2331
  "aria-label": t("overview.createDescription"),
1419
- value: bodyDescription,
1420
- onChange: (event) => setBodyDescription(event.target.value),
2332
+ value: spaceDescription,
2333
+ onChange: (event) => setSpaceDescription(event.target.value),
1421
2334
  placeholder: t("overview.createDescriptionPlaceholder"),
1422
2335
  rows: 3,
1423
2336
  maxLength: 1e3,
@@ -1425,18 +2338,18 @@ window.__ModuleLoader__.load({
1425
2338
  })] })]
1426
2339
  })]
1427
2340
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
1428
- className: dsh_mnemon_client.memoryPageStyles.createSection,
2341
+ className: css.createSection,
1429
2342
  children: [
1430
2343
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1431
- className: dsh_mnemon_client.memoryPageStyles.createSectionHeading,
2344
+ className: css.createSectionHeading,
1432
2345
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "02" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: t("overview.createPlacementTitle") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: t("overview.createPlacementHint") })] })]
1433
2346
  }),
1434
2347
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("fieldset", {
1435
- className: dsh_mnemon_client.memoryPageStyles.providerChoice,
2348
+ className: css.providerChoice,
1436
2349
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("legend", { children: t("overview.providerLabel") }), providers.map((provider) => {
1437
2350
  const serviceMissing = provider.origin !== "native" && provider.serviceConfigured === false;
1438
2351
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
1439
- "data-selected": bodyProviderId === provider.id || void 0,
2352
+ "data-selected": spaceProviderId === provider.id || void 0,
1440
2353
  "data-native": provider.origin === "native" || void 0,
1441
2354
  "data-disabled": serviceMissing || void 0,
1442
2355
  children: [
@@ -1444,18 +2357,18 @@ window.__ModuleLoader__.load({
1444
2357
  type: "radio",
1445
2358
  name: "memory-provider",
1446
2359
  value: provider.id,
1447
- checked: bodyProviderId === provider.id,
2360
+ checked: spaceProviderId === provider.id,
1448
2361
  disabled: serviceMissing,
1449
- onChange: () => setBodyProviderId(provider.id)
2362
+ onChange: () => setSpaceProviderId(provider.id)
1450
2363
  }),
1451
2364
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProviderIcon, {
1452
2365
  providerId: provider.id,
1453
2366
  icon: provider.icon,
1454
- className: dsh_mnemon_client.memoryPageStyles.providerChoiceIcon
2367
+ className: css.providerChoiceIcon
1455
2368
  }),
1456
2369
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("strong", { children: [provider.label, provider.origin === "native" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("em", { children: t("overview.nativeOfficial") })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: serviceMissing ? t("overview.providerServiceRequired") : `${t(`overview.workspaceBinding.${provider.workspaceBinding}`)} · ${providerSummary(t, provider)}` })] }),
1457
2370
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("i", {
1458
- className: dsh_mnemon_client.memoryPageStyles.choiceControl,
2371
+ className: css.choiceControl,
1459
2372
  "data-kind": "radio",
1460
2373
  "aria-hidden": "true"
1461
2374
  })
@@ -1471,24 +2384,24 @@ window.__ModuleLoader__.load({
1471
2384
  ]
1472
2385
  })]
1473
2386
  });
1474
- const bodyToggle = (body) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
2387
+ const spaceToggle = (body) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
1475
2388
  type: "button",
1476
- className: dsh_mnemon_client.memoryPageStyles.bodySwitch,
2389
+ className: css.bodySwitch,
1477
2390
  role: "switch",
1478
2391
  "aria-checked": body.active,
1479
2392
  "aria-label": t("overview.toggleAria", { name: body.name }),
1480
- disabled: !props.activationEnabled || changing === body.id || deletingBody === body.id,
2393
+ disabled: !props.activationEnabled || changing === body.id || deletingSpace === body.id,
1481
2394
  onClick: () => void toggle(body),
1482
2395
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1483
- className: dsh_mnemon_client.memoryPageStyles.bodySwitchTrack,
2396
+ className: css.bodySwitchTrack,
1484
2397
  "aria-hidden": "true",
1485
2398
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("i", {})
1486
2399
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: changing === body.id ? t("overview.toggling") : body.active ? t("common.active") : t("common.inactive") })]
1487
2400
  });
1488
- const bodyEditActionClass = (0, dsh_mnemon_client.appearanceClass)(dsh_mnemon_client.memoryPageStyles.ghostButton, (0, dsh_mnemon_client.appearanceClass)(dsh_mnemon_client.memorySidebarStyles.itemActionButton, dsh_mnemon_client.memorySidebarStyles.itemEditAction));
1489
- const bodyDeleteActionClass = (0, dsh_mnemon_client.appearanceClass)(dsh_mnemon_client.memoryPageStyles.dangerButton, (0, dsh_mnemon_client.appearanceClass)(dsh_mnemon_client.memorySidebarStyles.itemActionButton, dsh_mnemon_client.memorySidebarStyles.itemDangerAction));
2401
+ const spaceEditActionClass = (0, dsh_mnemon_client.appearanceClass)(css.ghostButton, (0, dsh_mnemon_client.appearanceClass)(sidebarCss.itemActionButton, sidebarCss.itemEditAction));
2402
+ const spaceDeleteActionClass = (0, dsh_mnemon_client.appearanceClass)(css.dangerButton, (0, dsh_mnemon_client.appearanceClass)(sidebarCss.itemActionButton, sidebarCss.itemDangerAction));
1490
2403
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1491
- className: dsh_mnemon_client.memoryPageStyles.page,
2404
+ className: css.page,
1492
2405
  children: [
1493
2406
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.PageHeader, {
1494
2407
  title: t("nav.overview"),
@@ -1497,36 +2410,36 @@ window.__ModuleLoader__.load({
1497
2410
  ...loading ? { loadingLabel: catalogLoading ? t("overview.directoryLoading") : graphLoading ? t("overview.snapshotLoading") : t("overview.healthLoading") } : {},
1498
2411
  action: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1499
2412
  type: "button",
1500
- className: dsh_mnemon_client.memoryPageStyles.secondaryButton,
2413
+ className: css.secondaryButton,
1501
2414
  disabled: loading,
1502
2415
  onClick: () => void load(),
1503
2416
  children: loading ? t("overview.syncing") : t("overview.syncNow")
1504
2417
  })
1505
2418
  }),
1506
2419
  error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1507
- className: dsh_mnemon_client.memoryPageStyles.inlineError,
2420
+ className: css.inlineError,
1508
2421
  role: "alert",
1509
2422
  children: error
1510
2423
  }),
1511
2424
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
1512
- className: dsh_mnemon_client.memoryPageStyles.bodyDirectory,
2425
+ className: css.bodyDirectory,
1513
2426
  "aria-label": t("overview.directory"),
1514
2427
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1515
- className: dsh_mnemon_client.memoryPageStyles.bodyDirectoryHeader,
2428
+ className: css.bodyDirectoryHeader,
1516
2429
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [
1517
2430
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", { children: t("overview.directory") }),
1518
2431
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: t("overview.directory.description") }),
1519
2432
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", {
1520
- className: dsh_mnemon_client.memoryPageStyles.bodyDirectoryPath,
2433
+ className: css.bodyDirectoryPath,
1521
2434
  children: catalogUnavailable ? t("overview.directory.unsynced") : catalog?.directory || props.fallbackDirectory || t("overview.directory.waiting")
1522
2435
  })
1523
2436
  ] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1524
- className: (0, dsh_mnemon_client.appearanceClass)(dsh_mnemon_client.memoryPageStyles.bodyDirectoryControls, dsh_mnemon_client.memorySidebarStyles.bodyDirectoryActions),
2437
+ className: (0, dsh_mnemon_client.appearanceClass)(css.bodyDirectoryControls, sidebarCss.bodyDirectoryActions),
1525
2438
  children: [
1526
2439
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: catalogUnavailable ? t("overview.directory.unsyncedBadge") : `${catalog?.activeCount ?? "—"} / ${catalog?.total ?? "—"} ${t("common.active")}` }),
1527
2440
  props.writeEnabled && !catalogUnavailable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1528
2441
  type: "button",
1529
- className: bodyEditActionClass,
2442
+ className: spaceEditActionClass,
1530
2443
  title: !props.agentAvailable ? t("overview.metadataUnavailable") : void 0,
1531
2444
  onClick: () => {
1532
2445
  setMetadataSelection([]);
@@ -1538,27 +2451,27 @@ window.__ModuleLoader__.load({
1538
2451
  }),
1539
2452
  props.writeEnabled && !catalogUnavailable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1540
2453
  type: "button",
1541
- className: bodyEditActionClass,
1542
- onClick: () => setCreatingBodyOpen(true),
2454
+ className: spaceEditActionClass,
2455
+ onClick: () => setCreatingSpaceOpen(true),
1543
2456
  children: t("overview.createTitle")
1544
2457
  })
1545
2458
  ]
1546
2459
  })]
1547
2460
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1548
- className: dsh_mnemon_client.memoryPageStyles.bodyGrid,
2461
+ className: css.bodyGrid,
1549
2462
  children: [catalog?.items.map((body) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("article", {
1550
- className: dsh_mnemon_client.memoryPageStyles.bodyCard,
2463
+ className: css.bodyCard,
1551
2464
  "data-provider": body.provider.id,
1552
2465
  "data-active": body.active || void 0,
1553
2466
  "data-healthy": !body.statusLoading && body.healthy || void 0,
1554
2467
  "data-status-loading": body.statusLoading || void 0,
1555
2468
  "data-reconnectable": "",
1556
- "data-reconnecting": reconnectingBody === body.id || void 0,
2469
+ "data-reconnecting": reconnectingSpace === body.id || void 0,
1557
2470
  "data-mnemon-default": body.mnemonDefault || void 0,
1558
2471
  "data-editing": void 0,
1559
2472
  tabIndex: 0,
1560
2473
  "aria-label": t("overview.reconnectAria", { name: body.name }),
1561
- title: reconnectingBody === body.id ? t("overview.reconnecting") : body.error ?? t("overview.reconnectHint"),
2474
+ title: reconnectingSpace === body.id ? t("overview.reconnecting") : body.error ?? t("overview.reconnectHint"),
1562
2475
  onClick: (event) => {
1563
2476
  if (event.target instanceof Element && event.target.closest("button, input, textarea, select, label, a, [role=\"switch\"]") !== null) return;
1564
2477
  reconnect(body);
@@ -1570,11 +2483,11 @@ window.__ModuleLoader__.load({
1570
2483
  },
1571
2484
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
1572
2485
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1573
- className: dsh_mnemon_client.memorySidebarStyles.bodyCardHeader,
2486
+ className: sidebarCss.bodyCardHeader,
1574
2487
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1575
- className: dsh_mnemon_client.memorySidebarStyles.bodyCardIdentity,
1576
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: dsh_mnemon_client.memoryPageStyles.bodySignal }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: body.name }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1577
- className: dsh_mnemon_client.memorySidebarStyles.bodyCardMeta,
2488
+ className: sidebarCss.bodyCardIdentity,
2489
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: css.bodySignal }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: body.name }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2490
+ className: sidebarCss.bodyCardMeta,
1578
2491
  children: [
1579
2492
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", { children: body.id }),
1580
2493
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MemoryProviderBadge, {
@@ -1582,16 +2495,16 @@ window.__ModuleLoader__.load({
1582
2495
  label: body.provider.label
1583
2496
  }),
1584
2497
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
1585
- className: dsh_mnemon_client.memoryPageStyles.bodyHealth,
1586
- children: reconnectingBody === body.id ? t("overview.reconnecting") : body.statusLoading ? t("overview.storageChecking") : body.healthy ? t("overview.storageHealthy") : t("overview.storageUnhealthy")
2498
+ className: css.bodyHealth,
2499
+ children: reconnectingSpace === body.id ? t("overview.reconnecting") : body.statusLoading ? t("overview.storageChecking") : body.healthy ? t("overview.storageHealthy") : t("overview.storageUnhealthy")
1587
2500
  }),
1588
2501
  body.mnemonDefault && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
1589
- className: dsh_mnemon_client.memoryPageStyles.mnemonDefaultBadge,
2502
+ className: css.mnemonDefaultBadge,
1590
2503
  children: t("overview.mnemonDefault")
1591
2504
  })
1592
2505
  ]
1593
2506
  })] })]
1594
- }), bodyToggle(body)]
2507
+ }), spaceToggle(body)]
1595
2508
  }),
1596
2509
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1597
2510
  title: body.description || t("overview.noDescription"),
@@ -1599,93 +2512,93 @@ window.__ModuleLoader__.load({
1599
2512
  }),
1600
2513
  placementReceipt(body),
1601
2514
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("footer", {
1602
- className: dsh_mnemon_client.memorySidebarStyles.bodyCardFooter,
2515
+ className: sidebarCss.bodyCardFooter,
1603
2516
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1604
- className: dsh_mnemon_client.memorySidebarStyles.bodyCardStats,
1605
- children: !nativeBodyProvider(body.provider) ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1606
- className: dsh_mnemon_client.memoryPageStyles.bodyFooterBlock,
2517
+ className: sidebarCss.bodyCardStats,
2518
+ children: !nativeSpaceProvider(body.provider) ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2519
+ className: css.bodyFooterBlock,
1607
2520
  title: t(body.provider.kind === "remote" ? "overview.providerRemote" : "overview.providerLocal"),
1608
2521
  children: t(body.provider.kind === "remote" ? "overview.providerRemote" : "overview.providerLocal")
1609
2522
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1610
- className: `${dsh_mnemon_client.memoryPageStyles.bodyFooterBlock} ${dsh_mnemon_client.memoryPageStyles.bodyFooterGrow}`,
2523
+ className: `${css.bodyFooterBlock} ${css.bodyFooterGrow}`,
1611
2524
  title: body.provider.location || body.provider.label,
1612
2525
  children: body.provider.location || body.provider.label
1613
2526
  })] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
1614
2527
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1615
- className: dsh_mnemon_client.memoryPageStyles.bodyFooterBlock,
2528
+ className: css.bodyFooterBlock,
1616
2529
  title: t("common.memories", { count: body.stats?.totalInsights ?? 0 }),
1617
2530
  children: t("common.memories", { count: body.stats?.totalInsights ?? 0 })
1618
2531
  }),
1619
2532
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1620
- className: dsh_mnemon_client.memoryPageStyles.bodyFooterBlock,
2533
+ className: css.bodyFooterBlock,
1621
2534
  title: t("common.edges", { count: body.stats?.edgeCount ?? 0 }),
1622
2535
  children: t("common.edges", { count: body.stats?.edgeCount ?? 0 })
1623
2536
  }),
1624
2537
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1625
- className: dsh_mnemon_client.memoryPageStyles.bodyFooterBlock,
2538
+ className: css.bodyFooterBlock,
1626
2539
  title: (0, dsh_mnemon_client.humanBytes)(body.stats?.dbSizeBytes ?? 0),
1627
2540
  children: (0, dsh_mnemon_client.humanBytes)(body.stats?.dbSizeBytes ?? 0)
1628
2541
  })
1629
2542
  ] })
1630
2543
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1631
- className: dsh_mnemon_client.memoryPageStyles.bodyCardActions,
2544
+ className: css.bodyCardActions,
1632
2545
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1633
2546
  type: "button",
1634
- className: bodyEditActionClass,
1635
- "aria-label": t("overview.editBodyAria", { name: body.name }),
1636
- disabled: !props.writeEnabled || deletingBody === body.id,
2547
+ className: spaceEditActionClass,
2548
+ "aria-label": t("overview.editSpaceAria", { name: body.name }),
2549
+ disabled: !props.writeEnabled || deletingSpace === body.id,
1637
2550
  onClick: () => beginEdit(body),
1638
- children: t("overview.editBody")
2551
+ children: t("overview.editSpace")
1639
2552
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1640
2553
  type: "button",
1641
- className: bodyDeleteActionClass,
1642
- "aria-label": t(!nativeBodyProvider(body.provider) ? "overview.disconnectBodyAria" : "overview.deleteBodyAria", { name: body.name }),
1643
- title: canDeleteBody(body) ? void 0 : t("overview.lastStoreDeleteHint"),
1644
- disabled: !props.writeEnabled || deletingBody === body.id || !canDeleteBody(body),
1645
- onClick: () => setConfirmingDeleteBody(body.id),
1646
- children: !nativeBodyProvider(body.provider) ? t("overview.disconnectBody") : t("overview.deleteBody")
2554
+ className: spaceDeleteActionClass,
2555
+ "aria-label": t(!nativeSpaceProvider(body.provider) ? "overview.disconnectSpaceAria" : "overview.deleteSpaceAria", { name: body.name }),
2556
+ title: canDeleteSpace(body) ? void 0 : t("overview.lastStoreDeleteHint"),
2557
+ disabled: !props.writeEnabled || deletingSpace === body.id || !canDeleteSpace(body),
2558
+ onClick: () => setConfirmingDeleteSpace(body.id),
2559
+ children: !nativeSpaceProvider(body.provider) ? t("overview.disconnectSpace") : t("overview.deleteSpace")
1647
2560
  })]
1648
2561
  })]
1649
2562
  })
1650
2563
  ] })
1651
2564
  }, body.id)), catalog?.total === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1652
- className: dsh_mnemon_client.memoryPageStyles.bodyDirectoryEmpty,
2565
+ className: css.bodyDirectoryEmpty,
1653
2566
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "◇" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: catalogUnavailable ? t("overview.unsyncedTitle") : t("overview.emptyTitle") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: catalogUnavailable ? t("overview.unsyncedShort") : t("overview.emptyShort") })] })]
1654
2567
  })]
1655
2568
  })]
1656
2569
  }),
1657
2570
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1658
- className: dsh_mnemon_client.memoryPageStyles.asyncRegion,
2571
+ className: css.asyncRegion,
1659
2572
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ReadSourcePanel, {
1660
2573
  title: t("overview.snapshotSources"),
1661
2574
  hint: t("overview.snapshotSourcesHint"),
1662
2575
  sources: graphSources
1663
2576
  })
1664
2577
  }),
1665
- creatingBodyOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.SidebarModal, {
2578
+ creatingSpaceOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.SidebarModal, {
1666
2579
  title: t("overview.createTitle"),
1667
2580
  description: t("overview.createDialogHint"),
1668
2581
  busy: creating,
1669
2582
  wide: true,
1670
- onClose: () => setCreatingBodyOpen(false),
2583
+ onClose: () => setCreatingSpaceOpen(false),
1671
2584
  footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1672
- className: dsh_mnemon_client.memoryPageStyles.modalFooterActions,
2585
+ className: css.modalFooterActions,
1673
2586
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1674
2587
  type: "button",
1675
2588
  "data-dialog-close": true,
1676
- className: dsh_mnemon_client.memoryPageStyles.ghostButton,
2589
+ className: css.ghostButton,
1677
2590
  disabled: creating,
1678
- onClick: () => setCreatingBodyOpen(false),
2591
+ onClick: () => setCreatingSpaceOpen(false),
1679
2592
  children: t("common.cancel")
1680
2593
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1681
2594
  type: "submit",
1682
- form: bodyCreateFormId,
1683
- className: dsh_mnemon_client.memoryPageStyles.primaryButton,
1684
- disabled: creating || bodyName.trim() === "" || bodyDescription.trim() === "" || !providerDraftComplete(selectedProvider, providerDrafts[bodyProviderId]),
2595
+ form: spaceCreateFormId,
2596
+ className: css.primaryButton,
2597
+ disabled: creating || spaceName.trim() === "" || spaceDescription.trim() === "" || !providerDraftComplete(selectedProvider, providerDrafts[spaceProviderId]),
1685
2598
  children: creating ? t("overview.creating") : t("overview.createAction")
1686
2599
  })]
1687
2600
  }),
1688
- children: bodyCreateForm
2601
+ children: spaceCreateForm
1689
2602
  }),
1690
2603
  metadataOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.SidebarModal, {
1691
2604
  title: t("overview.metadataTitle"),
@@ -1694,20 +2607,20 @@ window.__ModuleLoader__.load({
1694
2607
  wide: true,
1695
2608
  onClose: () => setMetadataOpen(false),
1696
2609
  footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1697
- className: dsh_mnemon_client.memoryPageStyles.modalFooterNote,
2610
+ className: css.modalFooterNote,
1698
2611
  children: t("overview.metadataSafety")
1699
2612
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1700
- className: dsh_mnemon_client.memoryPageStyles.modalFooterActions,
2613
+ className: css.modalFooterActions,
1701
2614
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1702
2615
  type: "button",
1703
2616
  "data-dialog-close": true,
1704
- className: dsh_mnemon_client.memoryPageStyles.ghostButton,
2617
+ className: css.ghostButton,
1705
2618
  disabled: metadataBusy,
1706
2619
  onClick: () => setMetadataOpen(false),
1707
2620
  children: t("common.cancel")
1708
2621
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1709
2622
  type: "button",
1710
- className: dsh_mnemon_client.memoryPageStyles.primaryButton,
2623
+ className: css.primaryButton,
1711
2624
  disabled: !props.agentAvailable || metadataSelection.length === 0,
1712
2625
  title: !props.agentAvailable ? t("overview.metadataUnavailable") : void 0,
1713
2626
  onClick: maintainMetadata,
@@ -1715,28 +2628,28 @@ window.__ModuleLoader__.load({
1715
2628
  })]
1716
2629
  })] }),
1717
2630
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1718
- className: dsh_mnemon_client.memoryPageStyles.metadataDialog,
2631
+ className: css.metadataDialog,
1719
2632
  children: [
1720
2633
  !props.agentAvailable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1721
- className: dsh_mnemon_client.memoryPageStyles.inlineError,
2634
+ className: css.inlineError,
1722
2635
  role: "status",
1723
2636
  children: t("overview.metadataUnavailable")
1724
2637
  }),
1725
2638
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1726
- className: dsh_mnemon_client.memoryPageStyles.metadataToolbar,
2639
+ className: css.metadataToolbar,
1727
2640
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [t("overview.metadataSelected", { count: metadataSelection.length }), metadataRunningCount > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("em", { children: t("overview.metadataRunningCount", { count: metadataRunningCount }) })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1728
2641
  type: "button",
1729
- className: dsh_mnemon_client.memoryPageStyles.ghostButton,
2642
+ className: css.ghostButton,
1730
2643
  disabled: metadataSelectable.length === 0,
1731
2644
  onClick: () => setMetadataSelection(metadataAllSelected ? [] : metadataSelectable.map((body) => body.id)),
1732
2645
  children: metadataAllSelected ? t("overview.metadataClear") : t("overview.metadataSelectAll")
1733
2646
  })]
1734
2647
  }),
1735
2648
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1736
- className: dsh_mnemon_client.memoryPageStyles.metadataList,
2649
+ className: css.metadataList,
1737
2650
  "aria-live": "polite",
1738
2651
  children: [metadataCandidates.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1739
- className: dsh_mnemon_client.memoryPageStyles.metadataEmpty,
2652
+ className: css.metadataEmpty,
1740
2653
  children: catalogLoading ? t("overview.metadataLoading") : t("overview.metadataEmpty")
1741
2654
  }), metadataCandidates.map((body) => {
1742
2655
  const selected = metadataSelection.includes(body.id);
@@ -1755,7 +2668,7 @@ window.__ModuleLoader__.load({
1755
2668
  onChange: (event) => setMetadataSelection((current) => event.target.checked ? [.../* @__PURE__ */ new Set([...current, body.id])] : current.filter((id) => id !== body.id))
1756
2669
  }),
1757
2670
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("i", {
1758
- className: dsh_mnemon_client.memoryPageStyles.choiceControl,
2671
+ className: css.choiceControl,
1759
2672
  "data-kind": "check",
1760
2673
  "aria-hidden": "true"
1761
2674
  }),
@@ -1766,7 +2679,7 @@ window.__ModuleLoader__.load({
1766
2679
  providerId: body.provider.id,
1767
2680
  label: body.provider.label
1768
2681
  }), task === void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", { children: body.id }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
1769
- className: dsh_mnemon_client.memoryPageStyles.metadataTaskStatus,
2682
+ className: css.metadataTaskStatus,
1770
2683
  "data-status": task.status,
1771
2684
  title: task.error,
1772
2685
  children: task.status === "running" ? t("overview.metadataTaskRunning") : task.status === "success" ? t("overview.metadataTaskSuccess") : t("overview.metadataTaskError", { error: task.error ?? t("overview.metadataTaskUnknown") })
@@ -1779,80 +2692,80 @@ window.__ModuleLoader__.load({
1779
2692
  ]
1780
2693
  })
1781
2694
  }),
1782
- editingBodyView !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.SidebarModal, {
1783
- title: t("overview.editBodyAria", { name: editingBodyView.name }),
1784
- description: editingBodyView.id,
1785
- busy: savingBody === editingBodyView.id,
1786
- onClose: () => setEditingBody(null),
2695
+ editingSpaceView !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.SidebarModal, {
2696
+ title: t("overview.editSpaceAria", { name: editingSpaceView.name }),
2697
+ description: editingSpaceView.id,
2698
+ busy: savingSpace === editingSpaceView.id,
2699
+ onClose: () => setEditingSpace(null),
1787
2700
  footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1788
- className: dsh_mnemon_client.memoryPageStyles.modalFooterActions,
2701
+ className: css.modalFooterActions,
1789
2702
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1790
2703
  type: "button",
1791
2704
  "data-dialog-close": true,
1792
- className: dsh_mnemon_client.memoryPageStyles.ghostButton,
1793
- disabled: savingBody === editingBodyView.id,
1794
- onClick: () => setEditingBody(null),
2705
+ className: css.ghostButton,
2706
+ disabled: savingSpace === editingSpaceView.id,
2707
+ onClick: () => setEditingSpace(null),
1795
2708
  children: t("common.cancel")
1796
2709
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1797
2710
  type: "submit",
1798
- form: bodyEditFormId,
1799
- className: dsh_mnemon_client.memoryPageStyles.primaryButton,
1800
- disabled: savingBody === editingBodyView.id || editName.trim() === "",
1801
- children: savingBody === editingBodyView.id ? t("overview.savingBody") : t("overview.saveBody")
2711
+ form: spaceEditFormId,
2712
+ className: css.primaryButton,
2713
+ disabled: savingSpace === editingSpaceView.id || editName.trim() === "",
2714
+ children: savingSpace === editingSpaceView.id ? t("overview.savingSpace") : t("overview.saveSpace")
1802
2715
  })]
1803
2716
  }),
1804
- children: bodyEditForm(editingBodyView)
2717
+ children: spaceEditForm(editingSpaceView)
1805
2718
  }),
1806
- deletingBodyView !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.SidebarModal, {
1807
- title: t(!nativeBodyProvider(deletingBodyView.provider) ? "overview.disconnectTitle" : "overview.deleteTitle", { name: deletingBodyView.name }),
1808
- description: deletingBodyView.id,
1809
- busy: deletingBody === deletingBodyView.id,
1810
- onClose: () => setConfirmingDeleteBody(null),
2719
+ deletingSpaceView !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.SidebarModal, {
2720
+ title: t(!nativeSpaceProvider(deletingSpaceView.provider) ? "overview.disconnectTitle" : "overview.deleteTitle", { name: deletingSpaceView.name }),
2721
+ description: deletingSpaceView.id,
2722
+ busy: deletingSpace === deletingSpaceView.id,
2723
+ onClose: () => setConfirmingDeleteSpace(null),
1811
2724
  footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1812
- className: dsh_mnemon_client.memoryPageStyles.modalFooterActions,
2725
+ className: css.modalFooterActions,
1813
2726
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1814
2727
  type: "button",
1815
2728
  "data-dialog-close": true,
1816
2729
  "data-autofocus": true,
1817
- className: dsh_mnemon_client.memoryPageStyles.ghostButton,
1818
- disabled: deletingBody === deletingBodyView.id,
1819
- onClick: () => setConfirmingDeleteBody(null),
2730
+ className: css.ghostButton,
2731
+ disabled: deletingSpace === deletingSpaceView.id,
2732
+ onClick: () => setConfirmingDeleteSpace(null),
1820
2733
  children: t("common.cancel")
1821
2734
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1822
2735
  type: "button",
1823
- className: dsh_mnemon_client.memoryPageStyles.dangerSolidButton,
1824
- title: canDeleteBody(deletingBodyView) ? void 0 : t("overview.lastStoreDeleteHint"),
1825
- disabled: deletingBody === deletingBodyView.id || !canDeleteBody(deletingBodyView),
1826
- onClick: () => void deleteBody(deletingBodyView),
1827
- children: deletingBody === deletingBodyView.id ? t("overview.deletingBody") : t(!nativeBodyProvider(deletingBodyView.provider) ? "overview.disconnectAction" : "overview.deleteAction")
2736
+ className: css.dangerSolidButton,
2737
+ title: canDeleteSpace(deletingSpaceView) ? void 0 : t("overview.lastStoreDeleteHint"),
2738
+ disabled: deletingSpace === deletingSpaceView.id || !canDeleteSpace(deletingSpaceView),
2739
+ onClick: () => void deleteBody(deletingSpaceView),
2740
+ children: deletingSpace === deletingSpaceView.id ? t("overview.deletingSpace") : t(!nativeSpaceProvider(deletingSpaceView.provider) ? "overview.disconnectAction" : "overview.deleteAction")
1828
2741
  })]
1829
2742
  }),
1830
2743
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1831
- className: dsh_mnemon_client.memoryPageStyles.bodyDeleteConfirm,
1832
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: t(!nativeBodyProvider(deletingBodyView.provider) ? "overview.disconnectWarning" : "overview.deleteWarning", { provider: deletingBodyView.provider.label }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1833
- className: dsh_mnemon_client.memoryPageStyles.bodyDeleteSummary,
1834
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: deletingBodyView.name }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [
1835
- deletingBodyView.provider.label,
2744
+ className: css.bodyDeleteConfirm,
2745
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: t(!nativeSpaceProvider(deletingSpaceView.provider) ? "overview.disconnectWarning" : "overview.deleteWarning", { provider: deletingSpaceView.provider.label }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2746
+ className: css.bodyDeleteSummary,
2747
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: deletingSpaceView.name }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [
2748
+ deletingSpaceView.provider.label,
1836
2749
  " · ",
1837
- deletingBodyView.provider.location || t("common.memories", { count: deletingBodyView.stats?.totalInsights ?? 0 })
2750
+ deletingSpaceView.provider.location || t("common.memories", { count: deletingSpaceView.stats?.totalInsights ?? 0 })
1838
2751
  ] })]
1839
2752
  })]
1840
2753
  })
1841
2754
  }),
1842
2755
  !catalogUnavailable && graph !== null && graph.nodes.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1843
- className: dsh_mnemon_client.memoryPageStyles.graphLayout,
2756
+ className: css.graphLayout,
1844
2757
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
1845
- className: dsh_mnemon_client.memoryPageStyles.graphPanel,
2758
+ className: css.graphPanel,
1846
2759
  children: [
1847
2760
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1848
- className: dsh_mnemon_client.memoryPageStyles.graphToolbar,
2761
+ className: css.graphToolbar,
1849
2762
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [
1850
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: dsh_mnemon_client.memoryPageStyles.liveDot }),
2763
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: css.liveDot }),
1851
2764
  t("overview.snapshot"),
1852
2765
  " ",
1853
2766
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: generated })
1854
2767
  ] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1855
- className: dsh_mnemon_client.memoryPageStyles.graphLegend,
2768
+ className: css.graphLegend,
1856
2769
  children: [
1857
2770
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1858
2771
  "data-edge": "scope",
@@ -1878,7 +2791,7 @@ window.__ModuleLoader__.load({
1878
2791
  })]
1879
2792
  }),
1880
2793
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1881
- className: dsh_mnemon_client.memoryPageStyles.graphViewport,
2794
+ className: css.graphViewport,
1882
2795
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MemoryGraph, {
1883
2796
  graph,
1884
2797
  selectedId: selected === null ? void 0 : graphNodeKey(selected),
@@ -1886,7 +2799,7 @@ window.__ModuleLoader__.load({
1886
2799
  })
1887
2800
  }),
1888
2801
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1889
- className: dsh_mnemon_client.memoryPageStyles.graphFooter,
2802
+ className: css.graphFooter,
1890
2803
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("overview.graphComposition", {
1891
2804
  spaces: graphSpaces,
1892
2805
  memories: graphMemories,
@@ -1902,13 +2815,13 @@ window.__ModuleLoader__.load({
1902
2815
  })
1903
2816
  ]
1904
2817
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("aside", {
1905
- className: dsh_mnemon_client.memoryPageStyles.graphInspector,
2818
+ className: css.graphInspector,
1906
2819
  "data-empty": selected === null || void 0,
1907
2820
  children: selected === null ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1908
- className: dsh_mnemon_client.memoryPageStyles.inspectorEmpty,
2821
+ className: css.inspectorEmpty,
1909
2822
  children: [
1910
2823
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1911
- className: (0, dsh_mnemon_client.appearanceClass)(dsh_mnemon_client.memoryPageStyles.inspectorLogo, dsh_mnemon_client.memorySidebarStyles.inspectorGlyph),
2824
+ className: (0, dsh_mnemon_client.appearanceClass)(css.inspectorLogo, sidebarCss.inspectorGlyph),
1912
2825
  "aria-hidden": "true",
1913
2826
  children: "◇"
1914
2827
  }),
@@ -1917,7 +2830,7 @@ window.__ModuleLoader__.load({
1917
2830
  ]
1918
2831
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
1919
2832
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1920
- className: dsh_mnemon_client.memoryPageStyles.inspectorHeading,
2833
+ className: css.inspectorHeading,
1921
2834
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t(selectedKind === "space" ? "overview.inspectorSpace" : selectedKind === "entity" ? "overview.inspectorEntity" : "overview.inspector") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1922
2835
  type: "button",
1923
2836
  onClick: () => setSelected(null),
@@ -1926,9 +2839,9 @@ window.__ModuleLoader__.load({
1926
2839
  })]
1927
2840
  }),
1928
2841
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1929
- className: dsh_mnemon_client.memoryPageStyles.inspectorChips,
2842
+ className: css.inspectorChips,
1930
2843
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1931
- className: dsh_mnemon_client.memoryPageStyles.categoryChip,
2844
+ className: css.categoryChip,
1932
2845
  children: graphKindLabel(t, selected)
1933
2846
  }), selected.memoryProviderId !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MemoryProviderBadge, {
1934
2847
  providerId: selected.memoryProviderId,
@@ -1936,13 +2849,13 @@ window.__ModuleLoader__.load({
1936
2849
  })]
1937
2850
  }),
1938
2851
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1939
- className: dsh_mnemon_client.memoryPageStyles.inspectorTitleRow,
2852
+ className: css.inspectorTitleRow,
1940
2853
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
1941
- className: dsh_mnemon_client.memoryPageStyles.inspectorTitle,
2854
+ className: css.inspectorTitle,
1942
2855
  children: selected.content
1943
2856
  }), selectedKind === "memory" && selected.content.length > 140 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1944
2857
  type: "button",
1945
- className: dsh_mnemon_client.memoryPageStyles.inspectorEye,
2858
+ className: css.inspectorEye,
1946
2859
  onClick: () => setPreview(selected),
1947
2860
  "aria-label": t("overview.previewAria"),
1948
2861
  title: t("overview.previewAria"),
@@ -1966,13 +2879,13 @@ window.__ModuleLoader__.load({
1966
2879
  })]
1967
2880
  }),
1968
2881
  selectedKind === "space" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("dl", {
1969
- className: dsh_mnemon_client.memoryPageStyles.inspectorMeta,
2882
+ className: css.inspectorMeta,
1970
2883
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("dt", { children: t("overview.spaceId") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("dd", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", { children: selected.memoryBodyId ?? selected.id }) })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("dt", { children: t("overview.containedMemories") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("dd", { children: selected.occurrenceCount ?? 0 })] })]
1971
2884
  }) : selectedKind === "entity" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("dl", {
1972
- className: dsh_mnemon_client.memoryPageStyles.inspectorMeta,
2885
+ className: css.inspectorMeta,
1973
2886
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("dt", { children: t("overview.entityMentions") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("dd", { children: selected.occurrenceCount ?? 0 })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("dt", { children: t("term.spaces") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("dd", { children: selected.memoryBodyNames?.join(" · ") || "—" })] })]
1974
2887
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("dl", {
1975
- className: dsh_mnemon_client.memoryPageStyles.inspectorMeta,
2888
+ className: css.inspectorMeta,
1976
2889
  children: [
1977
2890
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("dt", { children: t("term.space") }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("dd", { children: [
1978
2891
  selected.memoryBodyName ?? "—",
@@ -1984,15 +2897,15 @@ window.__ModuleLoader__.load({
1984
2897
  ]
1985
2898
  }),
1986
2899
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1987
- className: dsh_mnemon_client.memoryPageStyles.inspectorActions,
2900
+ className: css.inspectorActions,
1988
2901
  children: [selectedKind !== "space" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1989
2902
  type: "button",
1990
- className: dsh_mnemon_client.memoryPageStyles.primaryButton,
2903
+ className: css.primaryButton,
1991
2904
  onClick: () => props.onExplore(selected.content),
1992
2905
  children: t("overview.exploreNode")
1993
2906
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1994
2907
  type: "button",
1995
- className: dsh_mnemon_client.memoryPageStyles.secondaryButton,
2908
+ className: css.secondaryButton,
1996
2909
  onClick: () => void navigator.clipboard?.writeText(selected.id),
1997
2910
  children: t("common.copyId")
1998
2911
  })]
@@ -2016,7 +2929,7 @@ window.__ModuleLoader__.load({
2016
2929
  title: t(onlyQueryOrUnsupported ? "overview.noVisualTitle" : "overview.noContentTitle"),
2017
2930
  children: t(onlyQueryOrUnsupported ? "overview.noVisualText" : "overview.noContentText")
2018
2931
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2019
- className: dsh_mnemon_client.memoryPageStyles.asyncPlaceholder,
2932
+ className: css.asyncPlaceholder,
2020
2933
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("overview.loading") })
2021
2934
  }),
2022
2935
  preview !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ContentPreview, {
@@ -2028,7 +2941,7 @@ window.__ModuleLoader__.load({
2028
2941
  });
2029
2942
  }
2030
2943
  function ExplorePage(props) {
2031
- const t = (0, dsh_mnemon_client.useT)();
2944
+ const t = useT();
2032
2945
  const pageSize = 6;
2033
2946
  const [query, setQuery] = (0, react.useState)(props.seed);
2034
2947
  const [mode, setMode] = (0, react.useState)("smart");
@@ -2122,7 +3035,7 @@ window.__ModuleLoader__.load({
2122
3035
  const visibleResults = results.slice(0, visibleResultLimit);
2123
3036
  const visibleRelated = related.slice(0, visibleRelatedLimit);
2124
3037
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2125
- className: dsh_mnemon_client.memoryPageStyles.page,
3038
+ className: css.page,
2126
3039
  children: [
2127
3040
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.PageHeader, {
2128
3041
  title: t("search.title"),
@@ -2130,10 +3043,10 @@ window.__ModuleLoader__.load({
2130
3043
  meta: t("search.maxResults", { count: props.status?.defaultRecallLimit ?? "—" })
2131
3044
  }),
2132
3045
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
2133
- className: dsh_mnemon_client.memoryPageStyles.searchBar,
3046
+ className: css.searchBar,
2134
3047
  onSubmit: (event) => void search(event),
2135
3048
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2136
- className: dsh_mnemon_client.memoryPageStyles.queryField,
3049
+ className: css.queryField,
2137
3050
  children: [
2138
3051
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2139
3052
  "aria-hidden": "true",
@@ -2148,7 +3061,7 @@ window.__ModuleLoader__.load({
2148
3061
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("kbd", { children: "↵" })
2149
3062
  ]
2150
3063
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2151
- className: dsh_mnemon_client.memoryPageStyles.searchControls,
3064
+ className: css.searchControls,
2152
3065
  children: [
2153
3066
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", { children: [t("common.category"), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
2154
3067
  value: category,
@@ -2182,15 +3095,15 @@ window.__ModuleLoader__.load({
2182
3095
  ]
2183
3096
  })] }),
2184
3097
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2185
- className: dsh_mnemon_client.memoryPageStyles.searchActions,
3098
+ className: css.searchActions,
2186
3099
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2187
3100
  type: "submit",
2188
- className: dsh_mnemon_client.memoryPageStyles.secondaryButton,
3101
+ className: css.secondaryButton,
2189
3102
  disabled: searching || query.trim() === "",
2190
3103
  children: searchKind === "direct" ? t("search.searching") : t("search.action")
2191
3104
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2192
3105
  type: "button",
2193
- className: dsh_mnemon_client.memoryPageStyles.primaryButton,
3106
+ className: css.primaryButton,
2194
3107
  disabled: searching || query.trim() === "" || !props.agentAvailable,
2195
3108
  onClick: () => void runSearch(true),
2196
3109
  children: searchKind === "agent" ? t("search.agentSearching") : t("search.agentAction")
@@ -2204,26 +3117,26 @@ window.__ModuleLoader__.load({
2204
3117
  sources
2205
3118
  }),
2206
3119
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2207
- className: dsh_mnemon_client.memoryPageStyles.asyncResults,
3120
+ className: css.asyncResults,
2208
3121
  children: [
2209
3122
  searching && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.SectionSpinner, { label: searchKind === "agent" ? t("search.agentSearching") : t("search.searching") }),
2210
3123
  agentAnswer !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
2211
- className: dsh_mnemon_client.memoryPageStyles.agentAnswer,
3124
+ className: css.agentAnswer,
2212
3125
  "aria-label": t("search.agentAnswer"),
2213
3126
  children: [
2214
3127
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2215
- className: dsh_mnemon_client.memoryPageStyles.agentAnswerHeading,
3128
+ className: css.agentAnswerHeading,
2216
3129
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("search.agentAnswerHint") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", { children: t("search.agentAnswer") })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", { children: agentAnswer.runId.slice(0, 8) })]
2217
3130
  }),
2218
3131
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: agentAnswer.answer }),
2219
3132
  agentAnswer.citations.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2220
- className: dsh_mnemon_client.memoryPageStyles.agentCitations,
3133
+ className: css.agentCitations,
2221
3134
  children: agentAnswer.citations.map((citation) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", { children: citation }, citation))
2222
3135
  })
2223
3136
  ]
2224
3137
  }),
2225
3138
  error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2226
- className: dsh_mnemon_client.memoryPageStyles.inlineError,
3139
+ className: css.inlineError,
2227
3140
  role: "alert",
2228
3141
  children: error
2229
3142
  }),
@@ -2238,12 +3151,12 @@ window.__ModuleLoader__.load({
2238
3151
  children: t("search.emptyText")
2239
3152
  }),
2240
3153
  results.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2241
- className: relatedTo === null ? dsh_mnemon_client.memoryPageStyles.singleColumn : dsh_mnemon_client.memoryPageStyles.resultLayout,
3154
+ className: relatedTo === null ? css.singleColumn : css.resultLayout,
2242
3155
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
2243
- className: dsh_mnemon_client.memoryPageStyles.results,
3156
+ className: css.results,
2244
3157
  children: [
2245
3158
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2246
- className: dsh_mnemon_client.memoryPageStyles.sectionHeading,
3159
+ className: css.sectionHeading,
2247
3160
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", { children: t("search.results") }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: results.length })]
2248
3161
  }),
2249
3162
  visibleResults.map((insight) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(InsightCard, {
@@ -2261,10 +3174,10 @@ window.__ModuleLoader__.load({
2261
3174
  ]
2262
3175
  }), relatedTo !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("aside", {
2263
3176
  id: "mnemon-related-pane",
2264
- className: dsh_mnemon_client.memoryPageStyles.relatedPane,
3177
+ className: css.relatedPane,
2265
3178
  children: [
2266
3179
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2267
- className: dsh_mnemon_client.memoryPageStyles.sectionHeading,
3180
+ className: css.sectionHeading,
2268
3181
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", { children: t("search.related") }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2269
3182
  type: "button",
2270
3183
  onClick: () => {
@@ -2277,15 +3190,15 @@ window.__ModuleLoader__.load({
2277
3190
  })]
2278
3191
  }),
2279
3192
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
2280
- className: dsh_mnemon_client.memoryPageStyles.relatedSource,
3193
+ className: css.relatedSource,
2281
3194
  children: relatedTo.content
2282
3195
  }),
2283
3196
  relatedLoading && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2284
- className: dsh_mnemon_client.memoryPageStyles.loading,
3197
+ className: css.loading,
2285
3198
  children: t("search.traversing")
2286
3199
  }),
2287
3200
  !relatedLoading && related.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2288
- className: dsh_mnemon_client.memoryPageStyles.muted,
3201
+ className: css.muted,
2289
3202
  children: t("search.noRelated")
2290
3203
  }),
2291
3204
  visibleRelated.map((insight) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(InsightCard, {
@@ -2309,7 +3222,7 @@ window.__ModuleLoader__.load({
2309
3222
  });
2310
3223
  }
2311
3224
  function EntitiesPage(props) {
2312
- const t = (0, dsh_mnemon_client.useT)();
3225
+ const t = useT();
2313
3226
  const entityPageSize = 10;
2314
3227
  const insightPageSize = 6;
2315
3228
  const [view, setView] = (0, react.useState)({
@@ -2366,7 +3279,7 @@ window.__ModuleLoader__.load({
2366
3279
  const sources = view.sources ?? [];
2367
3280
  const hasEntityProvider = sources.length === 0 || sources.some((source) => source.mode === "entities" && source.status !== "unavailable");
2368
3281
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2369
- className: dsh_mnemon_client.memoryPageStyles.page,
3282
+ className: css.page,
2370
3283
  children: [
2371
3284
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.PageHeader, {
2372
3285
  title: t("entities.title"),
@@ -2382,12 +3295,12 @@ window.__ModuleLoader__.load({
2382
3295
  title: t("entities.unsupportedTitle"),
2383
3296
  children: t("entities.unsupportedText")
2384
3297
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2385
- className: dsh_mnemon_client.memoryPageStyles.entityLayout,
3298
+ className: css.entityLayout,
2386
3299
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("aside", {
2387
- className: dsh_mnemon_client.memoryPageStyles.entityRail,
3300
+ className: css.entityRail,
2388
3301
  children: [
2389
3302
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
2390
- className: dsh_mnemon_client.memoryPageStyles.entitySearch,
3303
+ className: css.entitySearch,
2391
3304
  onSubmit: submit,
2392
3305
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
2393
3306
  "aria-label": t("entities.nameAria"),
@@ -2405,17 +3318,17 @@ window.__ModuleLoader__.load({
2405
3318
  placeholder: t("entities.placeholder")
2406
3319
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2407
3320
  type: "submit",
2408
- className: dsh_mnemon_client.memoryPageStyles.primaryButton,
3321
+ className: css.primaryButton,
2409
3322
  disabled: loading || entity.trim() === "",
2410
3323
  children: t("entities.action")
2411
3324
  })]
2412
3325
  }),
2413
3326
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2414
- className: dsh_mnemon_client.memoryPageStyles.entityHeading,
3327
+ className: css.entityHeading,
2415
3328
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("entities.top") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: entityFilter === "" ? t("entities.frequency") : t("entities.filterHint") })]
2416
3329
  }),
2417
3330
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2418
- className: dsh_mnemon_client.memoryPageStyles.entityList,
3331
+ className: css.entityList,
2419
3332
  children: visibleEntities.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
2420
3333
  type: "button",
2421
3334
  "aria-pressed": view.selected === item.entity,
@@ -2434,20 +3347,20 @@ window.__ModuleLoader__.load({
2434
3347
  onMore: () => setVisibleEntityLimit((value) => value + entityPageSize)
2435
3348
  }),
2436
3349
  !loading && view.items.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
2437
- className: dsh_mnemon_client.memoryPageStyles.muted,
3350
+ className: css.muted,
2438
3351
  children: t("entities.emptyRail")
2439
3352
  }),
2440
3353
  !loading && view.items.length > 0 && visibleEntities.length === 0 && entityFilter !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
2441
- className: dsh_mnemon_client.memoryPageStyles.muted,
3354
+ className: css.muted,
2442
3355
  children: t("entities.filterEmpty")
2443
3356
  })
2444
3357
  ]
2445
3358
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
2446
- className: (0, dsh_mnemon_client.appearanceClass)(dsh_mnemon_client.memoryPageStyles.entityResults, dsh_mnemon_client.memoryPageStyles.asyncResults),
3359
+ className: (0, dsh_mnemon_client.appearanceClass)(css.entityResults, css.asyncResults),
2447
3360
  children: [
2448
3361
  loading && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.SectionSpinner, { label: t("entities.loading") }),
2449
3362
  error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2450
- className: dsh_mnemon_client.memoryPageStyles.inlineError,
3363
+ className: css.inlineError,
2451
3364
  role: "alert",
2452
3365
  children: error
2453
3366
  }),
@@ -2457,7 +3370,7 @@ window.__ModuleLoader__.load({
2457
3370
  children: t("entities.selectText")
2458
3371
  }),
2459
3372
  view.selected !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2460
- className: dsh_mnemon_client.memoryPageStyles.sectionHeading,
3373
+ className: css.sectionHeading,
2461
3374
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", { children: view.selected }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: view.insights.length })]
2462
3375
  }), !loading && view.insights.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.EmptyState, {
2463
3376
  glyph: "0",
@@ -2481,7 +3394,7 @@ window.__ModuleLoader__.load({
2481
3394
  });
2482
3395
  }
2483
3396
  function PersistenceStrategyDialog(props) {
2484
- const t = (0, dsh_mnemon_client.useT)();
3397
+ const t = useT();
2485
3398
  const strategyFormId = (0, react.useId)();
2486
3399
  const configured = props.config?.persistenceStrategy;
2487
3400
  const [mode, setMode] = (0, react.useState)(configured?.mode ?? "manual");
@@ -2559,43 +3472,43 @@ window.__ModuleLoader__.load({
2559
3472
  wide: true,
2560
3473
  onClose: props.onClose,
2561
3474
  footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2562
- className: dsh_mnemon_client.memoryPageStyles.modalFooterActions,
3475
+ className: css.modalFooterActions,
2563
3476
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2564
3477
  type: "button",
2565
3478
  "data-dialog-close": true,
2566
- className: dsh_mnemon_client.memoryPageStyles.ghostButton,
3479
+ className: css.ghostButton,
2567
3480
  disabled: saving,
2568
3481
  onClick: props.onClose,
2569
3482
  children: t("common.cancel")
2570
3483
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2571
3484
  type: "submit",
2572
3485
  form: strategyFormId,
2573
- className: dsh_mnemon_client.memoryPageStyles.primaryButton,
3486
+ className: css.primaryButton,
2574
3487
  disabled: loading || saving || !props.writable || !selectedProvidersValid,
2575
3488
  children: saving ? t("strategy.saving") : t("strategy.save")
2576
3489
  })]
2577
3490
  }),
2578
3491
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
2579
3492
  id: strategyFormId,
2580
- className: (0, dsh_mnemon_client.appearanceClass)(dsh_mnemon_client.memoryPageStyles.bodyEdit, dsh_mnemon_client.memoryPageStyles.strategyForm),
3493
+ className: (0, dsh_mnemon_client.appearanceClass)(css.bodyEdit, css.strategyForm),
2581
3494
  onSubmit: (event) => void save(event),
2582
3495
  children: [
2583
3496
  loading && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2584
- className: dsh_mnemon_client.memoryPageStyles.strategyLoading,
3497
+ className: css.strategyLoading,
2585
3498
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.SectionSpinner, { label: t("strategy.loading") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("strategy.loading") })]
2586
3499
  }),
2587
3500
  error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2588
- className: dsh_mnemon_client.memoryPageStyles.inlineError,
3501
+ className: css.inlineError,
2589
3502
  role: "alert",
2590
3503
  children: error
2591
3504
  }),
2592
3505
  !loading && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
2593
- className: dsh_mnemon_client.memoryPageStyles.createSection,
3506
+ className: css.createSection,
2594
3507
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2595
- className: dsh_mnemon_client.memoryPageStyles.createSectionHeading,
3508
+ className: css.createSectionHeading,
2596
3509
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "01" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: t("strategy.modeTitle") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: t("strategy.modeHint") })] })]
2597
3510
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("fieldset", {
2598
- className: dsh_mnemon_client.memoryPageStyles.placementMode,
3511
+ className: css.placementMode,
2599
3512
  children: [
2600
3513
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("legend", { children: t("overview.placementMode") }),
2601
3514
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
@@ -2610,7 +3523,7 @@ window.__ModuleLoader__.load({
2610
3523
  onChange: () => setMode("manual")
2611
3524
  }),
2612
3525
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("i", {
2613
- className: dsh_mnemon_client.memoryPageStyles.choiceControl,
3526
+ className: css.choiceControl,
2614
3527
  "data-kind": "radio",
2615
3528
  "aria-hidden": "true"
2616
3529
  }),
@@ -2629,7 +3542,7 @@ window.__ModuleLoader__.load({
2629
3542
  onChange: () => setMode("automatic")
2630
3543
  }),
2631
3544
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("i", {
2632
- className: dsh_mnemon_client.memoryPageStyles.choiceControl,
3545
+ className: css.choiceControl,
2633
3546
  "data-kind": "radio",
2634
3547
  "aria-hidden": "true"
2635
3548
  }),
@@ -2643,12 +3556,12 @@ window.__ModuleLoader__.load({
2643
3556
  ]
2644
3557
  })]
2645
3558
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
2646
- className: dsh_mnemon_client.memoryPageStyles.createSection,
3559
+ className: css.createSection,
2647
3560
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2648
- className: dsh_mnemon_client.memoryPageStyles.createSectionHeading,
3561
+ className: css.createSectionHeading,
2649
3562
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "02" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: t(mode === "manual" ? "strategy.manualTitle" : "strategy.automaticTitle") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: t(mode === "manual" ? "strategy.manualDescription" : "strategy.automaticDescription") })] })]
2650
3563
  }), mode === "manual" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("fieldset", {
2651
- className: dsh_mnemon_client.memoryPageStyles.providerChoice,
3564
+ className: css.providerChoice,
2652
3565
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("legend", { children: t("overview.providerLabel") }), providers.map((provider) => {
2653
3566
  const disabled = provider.origin !== "native" && provider.serviceConfigured === false;
2654
3567
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
@@ -2667,11 +3580,11 @@ window.__ModuleLoader__.load({
2667
3580
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProviderIcon, {
2668
3581
  providerId: provider.id,
2669
3582
  icon: provider.icon,
2670
- className: dsh_mnemon_client.memoryPageStyles.providerChoiceIcon
3583
+ className: css.providerChoiceIcon
2671
3584
  }),
2672
3585
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("strong", { children: [provider.label, provider.origin === "native" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("em", { children: t("overview.nativeOfficial") })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: disabled ? t("overview.providerServiceRequired") : `${t(`overview.workspaceBinding.${provider.workspaceBinding}`)} · ${providerSummary(t, provider)}` })] }),
2673
3586
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("i", {
2674
- className: dsh_mnemon_client.memoryPageStyles.choiceControl,
3587
+ className: css.choiceControl,
2675
3588
  "data-kind": "radio",
2676
3589
  "aria-hidden": "true"
2677
3590
  })
@@ -2683,11 +3596,11 @@ window.__ModuleLoader__.load({
2683
3596
  connection: providerDrafts[selectedProvider.id] ?? {},
2684
3597
  onChange: (key, value) => updateDraft(selectedProvider.id, key, value)
2685
3598
  })] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
2686
- className: dsh_mnemon_client.memoryPageStyles.placementPolicy,
3599
+ className: css.placementPolicy,
2687
3600
  "aria-label": t("overview.placementPolicy"),
2688
3601
  children: [
2689
3602
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2690
- className: dsh_mnemon_client.memoryPageStyles.placementPolicyHeading,
3603
+ className: css.placementPolicyHeading,
2691
3604
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: t("overview.placementPolicy") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: t("overview.placementPolicyHint") })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: props.agentAvailable ? t("strategy.taskAgentReady") : t("strategy.taskAgentUnavailable") })]
2692
3605
  }),
2693
3606
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", { children: [t("overview.placementPrompt"), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
@@ -2699,7 +3612,7 @@ window.__ModuleLoader__.load({
2699
3612
  maxLength: 4e3
2700
3613
  })] }),
2701
3614
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2702
- className: dsh_mnemon_client.memoryPageStyles.placementRuleGrid,
3615
+ className: css.placementRuleGrid,
2703
3616
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", { children: [t("overview.dataBoundary"), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
2704
3617
  "aria-label": t("overview.dataBoundary"),
2705
3618
  value: dataBoundary,
@@ -2736,7 +3649,7 @@ window.__ModuleLoader__.load({
2736
3649
  })] })]
2737
3650
  }),
2738
3651
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("fieldset", {
2739
- className: dsh_mnemon_client.memoryPageStyles.capabilityRules,
3652
+ className: css.capabilityRules,
2740
3653
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("legend", { children: t("overview.requiredCapabilities") }), [
2741
3654
  "graph",
2742
3655
  "exact-write",
@@ -2752,7 +3665,7 @@ window.__ModuleLoader__.load({
2752
3665
  onChange: () => toggleCapability(capability)
2753
3666
  }),
2754
3667
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("i", {
2755
- className: dsh_mnemon_client.memoryPageStyles.choiceControl,
3668
+ className: css.choiceControl,
2756
3669
  "data-kind": "check",
2757
3670
  "aria-hidden": "true"
2758
3671
  }),
@@ -2762,7 +3675,7 @@ window.__ModuleLoader__.load({
2762
3675
  })]
2763
3676
  }),
2764
3677
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2765
- className: dsh_mnemon_client.memoryPageStyles.placementCandidates,
3678
+ className: css.placementCandidates,
2766
3679
  children: providers.map((provider) => {
2767
3680
  const disabled = provider.serviceConfigured === false || dataBoundary === "local-only" && provider.kind === "remote";
2768
3681
  const selected = automaticProviderIds.includes(provider.id);
@@ -2779,11 +3692,11 @@ window.__ModuleLoader__.load({
2779
3692
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProviderIcon, {
2780
3693
  providerId: provider.id,
2781
3694
  icon: provider.icon,
2782
- className: dsh_mnemon_client.memoryPageStyles.candidateIcon
3695
+ className: css.candidateIcon
2783
3696
  }),
2784
3697
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: provider.label }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: provider.serviceConfigured === false ? t("overview.providerServiceRequired") : provider.origin === "native" ? t("overview.candidateNativeReady") : provider.kind === "local" ? t("overview.candidateLocal") : t("overview.candidateRemote") })] }),
2785
3698
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("i", {
2786
- className: dsh_mnemon_client.memoryPageStyles.choiceControl,
3699
+ className: css.choiceControl,
2787
3700
  "data-kind": "check",
2788
3701
  "aria-hidden": "true"
2789
3702
  })
@@ -2807,7 +3720,7 @@ window.__ModuleLoader__.load({
2807
3720
  });
2808
3721
  }
2809
3722
  function RememberPage(props) {
2810
- const t = (0, dsh_mnemon_client.useT)();
3723
+ const t = useT();
2811
3724
  const rememberFormId = (0, react.useId)();
2812
3725
  const [content, setContent] = (0, react.useState)(props.seed);
2813
3726
  const [category, setCategory] = (0, react.useState)("general");
@@ -2876,21 +3789,21 @@ window.__ModuleLoader__.load({
2876
3789
  }
2877
3790
  };
2878
3791
  const composer = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
2879
- className: dsh_mnemon_client.memoryPageStyles.supervisedComposer,
3792
+ className: css.supervisedComposer,
2880
3793
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
2881
3794
  id: rememberFormId,
2882
- className: dsh_mnemon_client.memoryPageStyles.supervisedForm,
3795
+ className: css.supervisedForm,
2883
3796
  onSubmit: (event) => void supervise(event),
2884
3797
  children: [
2885
3798
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2886
- className: dsh_mnemon_client.memoryPageStyles.supervisedHeading,
3799
+ className: css.supervisedHeading,
2887
3800
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", { children: t("remember.delegateTitle") }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2888
- className: !props.agentAvailable ? dsh_mnemon_client.memoryPageStyles.sessionMissing : dsh_mnemon_client.memoryPageStyles.sessionReady,
3801
+ className: !props.agentAvailable ? css.sessionMissing : css.sessionReady,
2889
3802
  children: !props.agentAvailable ? t("remember.noTaskAgent") : t("remember.taskAgentReady")
2890
3803
  })]
2891
3804
  }),
2892
3805
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
2893
- className: dsh_mnemon_client.memoryPageStyles.fieldWide,
3806
+ className: css.fieldWide,
2894
3807
  children: [t("remember.candidate"), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
2895
3808
  "aria-label": t("remember.candidateAria"),
2896
3809
  value: content,
@@ -2901,25 +3814,25 @@ window.__ModuleLoader__.load({
2901
3814
  })]
2902
3815
  }),
2903
3816
  !props.agentAvailable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
2904
- className: dsh_mnemon_client.memoryPageStyles.sessionHint,
3817
+ className: css.sessionHint,
2905
3818
  children: t("remember.taskAgentHint")
2906
3819
  }),
2907
3820
  result !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
2908
- className: dsh_mnemon_client.memoryPageStyles.modalInlineStatus,
3821
+ className: css.modalInlineStatus,
2909
3822
  role: "status",
2910
3823
  children: result
2911
3824
  })
2912
3825
  ]
2913
3826
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("details", {
2914
- className: dsh_mnemon_client.memoryPageStyles.advancedWrite,
3827
+ className: css.advancedWrite,
2915
3828
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("summary", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: t("remember.advanced") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: t("remember.advancedHint") })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("remember.expand") })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
2916
- className: dsh_mnemon_client.memoryPageStyles.manualForm,
3829
+ className: css.manualForm,
2917
3830
  onSubmit: (event) => void manualSave(event),
2918
3831
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2919
- className: dsh_mnemon_client.memoryPageStyles.formGrid,
3832
+ className: css.formGrid,
2920
3833
  children: [
2921
3834
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
2922
- className: dsh_mnemon_client.memoryPageStyles.fieldWide,
3835
+ className: css.fieldWide,
2923
3836
  children: [
2924
3837
  t("remember.target"),
2925
3838
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("select", {
@@ -2937,7 +3850,7 @@ window.__ModuleLoader__.load({
2937
3850
  }, body.id))
2938
3851
  }),
2939
3852
  selectedMemoryBody?.provider.capabilities.writeMode === "async-extracting" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
2940
- className: dsh_mnemon_client.memoryPageStyles.providerWriteHint,
3853
+ className: css.providerWriteHint,
2941
3854
  children: t("remember.asyncProviderHint")
2942
3855
  })
2943
3856
  ]
@@ -2965,7 +3878,7 @@ window.__ModuleLoader__.load({
2965
3878
  }, value))
2966
3879
  })] }),
2967
3880
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
2968
- className: dsh_mnemon_client.memoryPageStyles.fieldWide,
3881
+ className: css.fieldWide,
2969
3882
  children: [t("remember.entities"), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
2970
3883
  value: entities,
2971
3884
  onChange: (event) => setEntities(event.target.value),
@@ -2973,7 +3886,7 @@ window.__ModuleLoader__.load({
2973
3886
  })]
2974
3887
  }),
2975
3888
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
2976
- className: dsh_mnemon_client.memoryPageStyles.fieldWide,
3889
+ className: css.fieldWide,
2977
3890
  children: [t("remember.tags"), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
2978
3891
  value: tags,
2979
3892
  onChange: (event) => setTags(event.target.value),
@@ -2982,10 +3895,10 @@ window.__ModuleLoader__.load({
2982
3895
  })
2983
3896
  ]
2984
3897
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2985
- className: dsh_mnemon_client.memoryPageStyles.manualActions,
3898
+ className: css.manualActions,
2986
3899
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: t("remember.advancedText") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2987
3900
  type: "submit",
2988
- className: dsh_mnemon_client.memoryPageStyles.secondaryButton,
3901
+ className: css.secondaryButton,
2989
3902
  disabled: saving || content.trim() === "" || memoryBodyId === "",
2990
3903
  children: saving ? t("remember.saving") : t("remember.advancedAction")
2991
3904
  })]
@@ -2999,18 +3912,18 @@ window.__ModuleLoader__.load({
2999
3912
  busy: supervising || saving,
3000
3913
  onClose: props.onClose,
3001
3914
  footer: props.writeEnabled ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3002
- className: dsh_mnemon_client.memoryPageStyles.modalFooterActions,
3915
+ className: css.modalFooterActions,
3003
3916
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3004
3917
  type: "button",
3005
3918
  "data-dialog-close": true,
3006
- className: dsh_mnemon_client.memoryPageStyles.ghostButton,
3919
+ className: css.ghostButton,
3007
3920
  disabled: supervising || saving,
3008
3921
  onClick: props.onClose,
3009
3922
  children: t("common.cancel")
3010
3923
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3011
3924
  type: "submit",
3012
3925
  form: rememberFormId,
3013
- className: dsh_mnemon_client.memoryPageStyles.primaryButton,
3926
+ className: css.primaryButton,
3014
3927
  disabled: supervising || content.trim() === "" || !props.agentAvailable,
3015
3928
  children: supervising ? t("remember.processing") : t("remember.action")
3016
3929
  })]
@@ -3023,7 +3936,7 @@ window.__ModuleLoader__.load({
3023
3936
  });
3024
3937
  }
3025
3938
  function ListPage(props) {
3026
- const t = (0, dsh_mnemon_client.useT)();
3939
+ const t = useT();
3027
3940
  const pageSize = 12;
3028
3941
  const [query, setQuery] = (0, react.useState)("");
3029
3942
  const [category, setCategory] = (0, react.useState)("");
@@ -3077,7 +3990,7 @@ window.__ModuleLoader__.load({
3077
3990
  setVisibleLimit(pageSize);
3078
3991
  };
3079
3992
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3080
- className: dsh_mnemon_client.memoryPageStyles.page,
3993
+ className: css.page,
3081
3994
  children: [
3082
3995
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.PageHeader, {
3083
3996
  title: t("content.title"),
@@ -3085,7 +3998,7 @@ window.__ModuleLoader__.load({
3085
3998
  meta: t("content.count", { count: view === null ? "—" : selectedBodyId === void 0 ? view.total : filteredItems.length })
3086
3999
  }),
3087
4000
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
3088
- className: dsh_mnemon_client.memoryPageStyles.listToolbar,
4001
+ className: css.listToolbar,
3089
4002
  onSubmit: submit,
3090
4003
  children: [
3091
4004
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
@@ -3108,14 +4021,14 @@ window.__ModuleLoader__.load({
3108
4021
  }),
3109
4022
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3110
4023
  type: "submit",
3111
- className: dsh_mnemon_client.memoryPageStyles.primaryButton,
4024
+ className: css.primaryButton,
3112
4025
  disabled: loading,
3113
4026
  children: loading ? t("common.loading") : t("content.apply")
3114
4027
  })
3115
4028
  ]
3116
4029
  }),
3117
4030
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3118
- className: dsh_mnemon_client.memoryPageStyles.listNotice,
4031
+ className: css.listNotice,
3119
4032
  children: t("content.notice")
3120
4033
  }),
3121
4034
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ReadSourcePanel, {
@@ -3125,12 +4038,12 @@ window.__ModuleLoader__.load({
3125
4038
  onSelect: selectBody
3126
4039
  }),
3127
4040
  error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3128
- className: dsh_mnemon_client.memoryPageStyles.inlineError,
4041
+ className: css.inlineError,
3129
4042
  role: "alert",
3130
4043
  children: error
3131
4044
  }),
3132
4045
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3133
- className: dsh_mnemon_client.memoryPageStyles.asyncResults,
4046
+ className: css.asyncResults,
3134
4047
  children: [
3135
4048
  loading && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.SectionSpinner, { label: t("common.loading") }),
3136
4049
  !loading && filteredItems.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.EmptyState, {
@@ -3139,7 +4052,7 @@ window.__ModuleLoader__.load({
3139
4052
  children: t(waitingForQuery ? "content.queryRequiredText" : "content.emptyText")
3140
4053
  }),
3141
4054
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3142
- className: dsh_mnemon_client.memoryPageStyles.memoryList,
4055
+ className: css.memoryList,
3143
4056
  children: visibleItems.map((insight) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(InsightCard, {
3144
4057
  insight,
3145
4058
  writeEnabled: props.writeEnabled,
@@ -3159,6 +4072,8 @@ window.__ModuleLoader__.load({
3159
4072
  ]
3160
4073
  });
3161
4074
  }
4075
+ /** @deprecated Use nativeSpaceProvider. */
4076
+ const nativeBodyProvider = nativeSpaceProvider;
3162
4077
  //#endregion
3163
4078
  //#region src/client/ui.tsx
3164
4079
  /** The adapter never gets a transport or chooses another Source instance. */
@@ -3224,7 +4139,7 @@ window.__ModuleLoader__.load({
3224
4139
  }
3225
4140
  ];
3226
4141
  function MemorySpacesSourceView(props) {
3227
- const t = (0, dsh_mnemon_client.useT)();
4142
+ const t = useT();
3228
4143
  const client = (0, react.useMemo)(() => props.management === void 0 ? void 0 : memorySpacesPageClient(props.management), [props.management]);
3229
4144
  const [revision, setRevision] = (0, react.useState)(0);
3230
4145
  const [status, setStatus] = (0, react.useState)(null);
@@ -3278,35 +4193,35 @@ window.__ModuleLoader__.load({
3278
4193
  const preferences = props.preferences;
3279
4194
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
3280
4195
  error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3281
- className: dsh_mnemon_client.memoryPageStyles.inlineError,
4196
+ className: css.inlineError,
3282
4197
  role: "alert",
3283
4198
  children: error
3284
4199
  }),
3285
4200
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
3286
- className: dsh_mnemon_client.memorySidebarStyles.memoryWorkspace,
4201
+ className: sidebarCss.memoryWorkspace,
3287
4202
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(dsh_mnemon_client.PageHeader, {
3288
- title: t("nav.bodies"),
4203
+ title: t("nav.spaces"),
3289
4204
  description: t("overview.description"),
3290
4205
  meta: writable ? t("common.agentSupervised") : activationEnabled ? t("common.activationOnly") : t("common.readOnly"),
3291
4206
  action: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3292
- className: dsh_mnemon_client.memoryPageStyles.memoryHeaderActions,
4207
+ className: css.memoryHeaderActions,
3293
4208
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3294
4209
  type: "button",
3295
- className: (0, dsh_mnemon_client.appearanceClass)(dsh_mnemon_client.memoryPageStyles.primaryButton, dsh_mnemon_client.memorySidebarStyles.memoryWriteButton),
4210
+ className: (0, dsh_mnemon_client.appearanceClass)(css.primaryButton, sidebarCss.memoryWriteButton),
3296
4211
  disabled: !writable,
3297
4212
  onClick: () => remember(),
3298
4213
  children: t("nav.rememberAction")
3299
4214
  }), preferences !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3300
4215
  type: "button",
3301
- className: dsh_mnemon_client.memoryPageStyles.secondaryButton,
4216
+ className: css.secondaryButton,
3302
4217
  onClick: () => setStrategyOpen(true),
3303
4218
  children: t("strategy.action")
3304
4219
  })]
3305
4220
  })
3306
4221
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3307
- className: dsh_mnemon_client.memorySidebarStyles.memoryNavigation,
4222
+ className: sidebarCss.memoryNavigation,
3308
4223
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3309
- className: dsh_mnemon_client.memorySidebarStyles.memoryTabs,
4224
+ className: sidebarCss.memoryTabs,
3310
4225
  role: "tablist",
3311
4226
  "aria-label": t("nav.memory.aria"),
3312
4227
  children: TABS.map((tab) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
@@ -3395,7 +4310,7 @@ window.__ModuleLoader__.load({
3395
4310
  pages: [
3396
4311
  {
3397
4312
  id: "spaces",
3398
- key: "nav.bodies",
4313
+ key: "nav.spaces",
3399
4314
  order: 300,
3400
4315
  glyph: "◇"
3401
4316
  },
@@ -3457,6 +4372,7 @@ window.__ModuleLoader__.load({
3457
4372
  exports.installMemorySpacesUI = installMemorySpacesUI;
3458
4373
  exports.memorySpacesPageClient = memorySpacesPageClient;
3459
4374
  exports.nativeBodyProvider = nativeBodyProvider;
4375
+ exports.nativeSpaceProvider = nativeSpaceProvider;
3460
4376
  return module.exports;
3461
4377
  }
3462
4378
  });