@gehennawu/dsh-service 1.4.4 → 1.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/client.js CHANGED
@@ -1 +1 @@
1
- window.__ModuleLoader__.load({id:"@gehennawu/dsh-service",factory:e=>{var t={},a=t;Object.defineProperty(a,Symbol.toStringTag,{value:"Module"});const r=e("react"),s="dsh-service",n={"nav.label":"服务控制","nav.restart":"重启","features.cardTitle":"服务控制(dsh-service)","features.cardHint":"控制可选功能和外部能力。开关立即生效,无需重启。","features.external":"外部能力","features.healthDiagnostics":"健康诊断","features.modelUsage":"模型统计","features.quotaLookup":"额度查询","features.backupMaintenance":"备份维护","features.taskNotifications":"任务通知","features.healthz":"/healthz 探活端点","features.skillManager":"技能管理","features.readOnly":"当前设置不可写。","tabs.skills":"技能","tabs.subagent":"子代理","tabs.sessions":"会话管理","features.subagentRoute":"子代理模型","features.mobileAdaptation":"移动端适配","features.sessionManager":"会话管理","sessions.title":"会话管理","sessions.hint":"查看、导出、归档与会话搜索;删除仅限已归档。","sessions.filter.all":"全部","sessions.filter.archived":"仅归档","sessions.filter.deleted":"已删除","sessions.refresh":"刷新","sessions.batch.enter":"批量选择","sessions.batch.exit":"退出批量","sessions.batch.selectAll":"全选","sessions.batch.clearAll":"取消全选","sessions.batch.selected":"已选择 {count} 项","sessions.batch.selectRow":"选择会话:{title}","sessions.batch.export":"导出 ({count})","sessions.batch.archive":"归档 ({count})","sessions.batch.delete":"删除 ({count})","sessions.batch.completed":"已完成{action}:{count} 项","sessions.batch.failed":"{action}完成 {done}/{total} 项;{error}","sessions.batch.deleteTitle":"删除 {count} 个会话","sessions.batch.deleteBody":"将永久删除以下已归档会话的日志文件,删除后不可恢复。","sessions.batch.deleteItem":"{title}({bytes})","sessions.status.loading":"加载中…","sessions.status.working":"处理中…","sessions.status.unavailableTime":"时间未知","sessions.glyph.expand":"▸","sessions.glyph.collapse":"▾","sessions.glyph.back":"←","sessions.search.placeholder":"搜索对话内容…","sessions.search.archivedOnly":"仅搜归档","sessions.sort.createdDesc":"创建时间倒序","sessions.sort.createdAsc":"创建时间正序","sessions.sort.title":"按标题","sessions.sort.project":"按项目","sessions.projectGroup.countOne":"1 个会话","sessions.projectGroup.countMany":"{count} 个会话","sessions.projectGroup.noCwd":"(无工作区)","sessions.row.live":"运行中","sessions.row.archived":"已归档","sessions.row.deleted":"已删除","sessions.row.events":"{count} 条事件","sessions.row.noTitle":"(无标题)","sessions.action.view":"查看","sessions.action.export":"导出","sessions.action.archive":"归档","sessions.action.delete":"删除","sessions.empty.all":"没有会话","sessions.empty.archived":"没有归档会话","sessions.empty.deleted":"暂无删除记录","sessions.empty.search":"没有命中「{query}」","sessions.error.load":"加载失败:{error}","sessions.error.feature-disabled":"会话管理功能已在设置中关闭","sessions.error.network":"网络错误:无法连接宿主","sessions.error.session-not-found":"会话不存在或已被删除","sessions.error.live-session-rejected":"会话正在运行,无法删除","sessions.error.session-not-archived":"仅已归档会话可以删除","sessions.error.unknown-delete-plan":"删除请求已失效,请重新发起","sessions.error.export-failed":"导出失败:{error}","sessions.detail.back":"返回列表","sessions.detail.open":"在官方会话中打开","sessions.detail.archiveDisabled":"归档会话/空白会话无法在官方界面打开","sessions.detail.exportAll":"导出全部 ZIP","sessions.detail.exporting":"正在导出…","sessions.detail.loadMore":"加载更多({remaining})","sessions.detail.noMore":"已加载全部 {total} 条事件","sessions.detail.noise":"系统事件","sessions.detail.noiseBlock":"{count} 条系统事件","sessions.detail.noiseExpand":"展开全部","sessions.detail.noiseCollapse":"收起","sessions.detail.cwd":"{cwd}","sessions.detail.created":"创建于 {time}","sessions.md.copy":"复制","sessions.md.copied":"已复制","sessions.md.footnotes":"脚注","sessions.hit.title":"命中 {count} 条","sessions.hit.return":"返回搜索结果","sessions.hit.badge":"命中","sessions.hit.prev":"◀ 上一个","sessions.hit.next":"下一个 ▶","sessions.hit.inSession":"本会话 {count} 处命中","sessions.delete.title":"删除会话","sessions.delete.body":"将永久删除以下会话的日志文件,删除后不可恢复。","sessions.delete.consequence.log":"删除会话日志({bytes})","sessions.delete.consequence.sidebar":"会话从官方侧栏隐藏","sessions.delete.confirm":"确认删除","sessions.delete.cancel":"取消","sessions.delete.done":"已删除","sessions.export.includes":"含子代理与附件","sessions.navToggle":"设置页左列显示「会话管理」入口","sessions.navToggleHint":"默认关闭;开启后在设置页左侧标签列显示会话管理入口","sessions.oneWay":"归档不可恢复","sessions.oneWayHint":"归档后会话从官方侧栏隐藏;官方不支持恢复归档,只能通过本面板删除。","mobile.fab.label":"打开侧栏菜单","mobile.debug.title":"移动端诊断","mobile.debug.viewport":"视口","mobile.debug.drawer":"抽屉","mobile.debug.details":"预览列","mobile.debug.errors":"JS 错误","mobile.debug.stateOn":"开","mobile.debug.stateOff":"关","mobile.immersive.hide":"收起头部与输入框","mobile.immersive.show":"展开头部与输入框","mobile.debug.immersive":"沉浸","conversation.jump.previousReply":"上一条用户回复","subagent.title":"子代理模型","subagent.hint":"控制未显式指定模型的子代理所用模型;显式指定的不受影响。","subagent.mode.label":"模式","subagent.mode.inherit":"初始(不干预)","subagent.mode.inherit.desc":"不注入任何路由,保持宿主原生继承行为:子代理使用会话创建时烘焙的默认模型。","subagent.mode.follow":"跟随主模型","subagent.mode.follow.desc":"每次派生时读取主对话当前实际使用的模型(最近一次请求的渠道)并注入。","subagent.mode.custom":"自定义","subagent.mode.custom.desc":"所有未显式指定模型的子代理固定使用下方选择的模型。","subagent.provider":"供应商","subagent.model":"模型","subagent.reasoningEffort":"思考等级","subagent.reasoningEffort.default":"使用模型默认(不指定)","subagent.reasoningEffort.unavailable":"该模型未声明可选思考等级","subagent.modelsEmpty":"模型清单为空:无法解析宿主 LLM 渠道。","subagent.save":"保存","subagent.saved":"已保存","subagent.reset":"重置回初始配置","subagent.saving":"保存中…","subagent.unavailable":"宿主未提供子代理注册表(subagents 服务缺席),配置不会生效。","subagent.error":"操作失败:{error}","subagent.error.feature-disabled":"子代理模型功能已在设置中关闭","subagent.error.llm-unavailable":"宿主 LLM 服务不可用","subagent.error.unknown-mode":"未知模式","subagent.error.invalid-model-route":"供应商或模型不在宿主清单内","subagent.error.invalid-reasoning-effort":"思考等级不受该模型支持,请重新选择","subagent.error.network":"网络错误:无法连接宿主","subagent.fallback.title":"回退模型(按顺序)","subagent.fallback.item":"回退 {index}","subagent.fallback.hint":"第一路由不可用时(渠道已卸载、额度查询判定不可服务)依次尝试回退;全部不可用则回落原生继承,不让派生失败。","subagent.fallback.add":"添加回退","subagent.fallback.sort":"调整排序","subagent.fallback.sort.done":"完成排序","subagent.fallback.remove":"移除","subagent.fallback.up":"上移","subagent.fallback.down":"下移","subagent.fallback.empty":"未添加回退:第一路由不可用时子代理回落到原生继承。","subagent.fallback.limit":"已达上限({max} 个)","subagent.error.invalid-fallback-route":"回退条目不在宿主清单内,请重新选择","subagent.turnTail.label":"子代理模型:","subagent.turnTail.countOne":"子代理 ×1","subagent.turnTail.countMany":"子代理 ×{count}","subagent.turnTail.unknown":"(模型未记录)","subagent.dock.title":"输入框底部显示子代理信息","subagent.dock.desc":"在对话页输入框下方常驻一行本会话子代理实际使用的模型(20 秒刷新,不受事件折叠影响)。关闭后仅保留回合尾部小字行。","skills.error":"操作失败:{error}","skills.error.feature-disabled":"技能管理功能已在设置中关闭","skills.error.network":"网络错误,请稍后重试","skills.error.read-only-source":"该条目位于只读来源,无法修改","skills.error.unknown-skill":"技能未找到,列表可能已变化,请刷新重试","skills.error.invalid-skill":"条目当前无效:{reason}","skills.error.invalid-field":"开关字段无效","skills.error.invalid-enable":"开关值无效","skills.error.invalid-model-route":"模型路由无效,请重新选择模型","skills.error.invalid-description":"描述不能为空","skills.error.describe-timeout":"模型生成超时(90 秒)","skills.error.empty-output":"模型未产出正文(结束原因:{kind})","skills.error.batch-cancelled":"已取消","skills.error.entry-changed":"条目在运行中发生变化,已跳过","skills.error.unknown-batch-plan":"批量计划已失效,请重新生成","skills.error.batch-already-done":"该批量计划已完成","skills.error.batch-already-cancelled":"该批量计划已取消","skills.error.annotated-confirm-required":"已注释技能需再次确认后才能被覆盖","skills.empty":"未发现任何技能","skills.filter":"按名称过滤…","skills.colon":":","skills.group.auto":"自动加载","skills.group.manual":"仅手动调用","skills.group.disabled":"完全停用","skills.source.project-dsh":"项目 .dsh","skills.source.project-agents":"项目 .agents","skills.source.user-dsh":"用户 DSH","skills.source.user-agents":"用户 .agents","skills.source.bundled":"内置","skills.source.custom":"自定义目录","skills.badge.shadowed":"被同名遮蔽","skills.badge.readonly":"只读","skills.badge.annotated":"已注释","skills.note.stale":"正文已变更,待重新补全","skills.note.remove":"移除 AI 注释","skills.note.panelOnly":"注释仅保存在本面板展示,不写入 SKILL.md。","skills.log.title":"运行日志","skills.log.located":"已定位技能 {name}(文件 {chars} 字符)","skills.log.attempt":"第 {n}/{total} 次生成:调用 {route}","skills.log.received":"输出接收完成({chars} 字符),解析 JSON…","skills.log.parsed":"解析成功,草稿就绪","skills.log.failed-retry":"失败:{message},自动重试","skills.log.failed":"失败:{message}","skills.log.wait":"等待模型输出… {secs}s","skills.log.first-delta":"模型已开始返回","skills.log.first-reasoning":"模型已开始返回(先输出推理)","skills.log.progress":"已接收 {chars} 字符","skills.log.finish-reasoning-only":"模型结束:{kind}(仅推理 {chars} 字符,未产出正文)","skills.log.finish-empty":"模型结束:{kind}(无任何输出)","skills.log.block-extract":"从整块输出提取正文({chars} 字符)","skills.log.item-start":"开始生成注释…","skills.batch.toggle":"批量注释","skills.batch.collapse":"收起","skills.batch.already":"已有批量任务在进行中,请等待完成或先取消","skills.invalid.legacy":"存在旧版调用键,已从模型目录剔除","skills.invalid.other":"无效条目:{reason}","skills.fix.legacy":"一键修复旧键","skills.switch.model":"对模型可见","skills.switch.user":"可被 / 调用","skills.switch.confirm":"再次点击生效","skills.describe.button":"AI 补全说明","skills.describe.title":"AI 补全说明 — {name}","skills.describe.model":"模型","skills.describe.models.loading":"获取模型列表…","skills.describe.models.empty":"未发现已配置模型","skills.describe.run":"生成草稿","skills.describe.running":"生成中…","skills.apply.title":"保存 AI 注释 — {name}","skills.apply.description":"描述","skills.apply.usage":"用法","skills.apply.old":"旧","skills.apply.new":"新","skills.apply.confirm":"保存注释","skills.apply.done":"注释已保存","skills.apply.keepusage":"(保留现有)","skills.llm.unavailable":"宿主 LLM 服务不可用,无法 AI 补全。","skills.batch.title":"批量补全技能说明","skills.batch.hint":"逐条调用所选模型为未注释或正文有变的技能生成说明;已注释技能在计划中单列,再次确认后才会被覆盖。结果仅存插件内并展示在条目下方。","skills.batch.plan":"生成计划","skills.batch.candidates":"候选 {count} 项","skills.batch.estBytes":"约发送 {size} 内容","skills.batch.skipped":"跳过 {count} 项(无效 / 被遮蔽)","skills.batch.annotated":"已注释将覆盖 {count} 项","skills.batch.annotatedList":"将覆盖清单","skills.batch.forceConfirm":"确认强制补全(覆盖 {count} 项已注释)","skills.skippedList":"跳过清单","skills.skip.shadowed":"被遮蔽","skills.skip.invalid":"无效({reason})","skills.skip.reason.missing-frontmatter":"缺 frontmatter","skills.skip.reason.missing-name":"缺 name","skills.skip.reason.invalid-name":"name 不合法","skills.skip.reason.missing-description":"缺 description","skills.skip.reason.too-large":"文件过大","skills.skip.reason.legacy-invocation-key":"旧版调用键","skills.batch.start":"开始批量补全","skills.batch.progress":"进度 {done}/{total}","skills.batch.current":"当前:{name}","skills.batch.cancel":"取消","skills.batch.phase.idle":"空闲","skills.batch.phase.planned":"待开始(核对候选后点击「开始批量补全」)","skills.batch.phase.running":"进行中","skills.batch.phase.done":"已完成","skills.batch.phase.cancelled":"已取消","skills.batch.failures":"失败 {count} 项","skills.batch.no-candidates":"没有需要补全的候选","skills.batch.model":"模型","overlay.label":"服务重启状态","recovery.waiting.title":"服务重启中…","recovery.waiting.body":"正在等待新的 DSH Web 进程启动,已等待 {seconds} 秒。","recovery.timeout.title":"服务尚未恢复","recovery.timeout.body":"已等待 60 秒。请确认外部进程管理器已正确配置,或手动刷新页面重试。","recovery.manual":"手动刷新","health.title":"运行状况","health.uptime":"运行时间","health.rss":"内存 RSS","health.platform":"平台","health.nodeVersion":"Node 版本","health.liveSessions":"存活会话","health.persistedSessions":"持久化会话","health.activeAgents":"活跃 Agent","health.activeJobs":"后台任务","health.uptimeValue":"{hours} 小时 {minutes} 分钟","health.error":"无法读取运行状况","health.check":"立即健康检查","health.checking":"检查中…","health.overall.ok":"正常","health.overall.warning":"警告","health.overall.error":"错误","health.alert.title":"健康提醒","health.alert.diagnostics":"检查结果存在{status},请查看下方异常项。","health.status.ok":"正常","health.status.warning":"警告","health.status.error":"错误","health.status.info":"信息","health.check.session-storage":"会话存储","health.check.workspace-registry":"工作区注册表","health.check.dsh-home":"DSH_HOME","health.check.backup-storage":"备份存储","health.check.tar":"tar","health.check.permissions":"文件权限","health.check.runtime-env":"运行环境","health.check.node-version":"Node 运行时","health.detail.runtime-env.managed":"由{kind}管理,重启后会自动拉起","health.detail.runtime-env.declared":"已通过 DSH_SERVICE_RUNTIME_ENV 声明由外部进程管理器管理","health.detail.runtime-env.manual":"疑似终端手动启动,重启后不会自动拉起;一键升级已改为不自动退出","health.detail.runtime-env.unknown":"未检测到进程管理器,无法确认重启后是否自动拉起;如实际有,可设置 DSH_SERVICE_RUNTIME_ENV=managed 声明","health.detail.node-version.ok":"{version},满足 ≥{required} 要求","health.detail.node-version.warning":"{version} 低于插件要求的 {required}.x,建议升级 Node","health.detail.session-storage.ok":"可用,共 {count} 个会话快照","health.detail.workspace-registry.ok":"可用,共 {count} 个工作区","health.detail.dsh-home.ok":"目录可访问,权限模式 {mode}","health.detail.backup-storage.empty":"备份目录可用,当前暂无备份","health.detail.backup-storage.ok":"备份目录可用,共 {count} 个备份,占用 {size}","health.detail.tar.ok":"tar 可执行文件可用","health.detail.permissions.ok":"文件权限检查正常,未发现异常","health.detail.permissions.warning":"发现 {count} 个文件或目录权限异常","health.detail.generic":"{status}","health.check.plugins":"插件","health.detail.plugins.unavailable":"插件体检不可用(宿主未暴露 Loader)","health.detail.plugins.ok":"共 {total} 个插件,状态正常","plugin.issue.failed":"{failed} 个插件失败","plugin.issue.pending":"{pending} 个插件未就绪","plugin.issue.info":"{count} 个插件状态需确认","plugin.state.pending":"等待依赖","plugin.state.loading":"加载中","plugin.state.failed":"失败","plugin.state.disposed":"已释放","plugin.state.unknown":"未知状态","plugin.state.unloading":"卸载中","plugin.missingDeps":"依赖缺失:{deps}","plugin.error":"错误:{error}","plugin.restart":"重新加载","plugin.restarting":"重新加载中…","plugin.restartConfirm":"确认重新加载","plugin.restartHint":"重新加载「{name}」,其启动逻辑将重新执行,失败状态会随之刷新。","plugin.restartCancel":"取消","plugin.restartFailed":"重新加载失败:{detail}","plugin.error.unknown-plugin":"未找到该插件","plugin.error.loader-unavailable":"宿主 Loader 不可用","plugin.error.plugin-disabled":"插件已停用,无法重新加载","plugin.error.not-failed":"该插件未处于失败状态","plugin.error.restart-failed":"重新加载后仍然失败","health.check.plugin-compat":"插件兼容性","health.detail.plugin-compat.unavailable":"插件兼容性检查不可用(宿主未暴露 Loader)","health.detail.plugin-compat.ok":"已扫描 {total} 个插件,未发现对已变更接口的引用","plugin.compat.issue.broken":"{count} 个插件可能不兼容","plugin.compat.issue.declared":"{count} 个插件仅声明残留(代码未引用)","plugin.compat.issue.unknown":"{count} 个插件未能扫描","plugin.compat.declared":"声明了已移除的接口但代码未引用——官方加载器对缺失供应商静默跳过,当前无害,可提示作者清理","plugin.compat.break.client-runtime":"声明了已移除的客户端供应商 @deepseek-ai/dsh-client-runtime(0.1.2-alpha.2 起官方 roster 移除,浏览器半可能无法挂载)","plugin.compat.break.sqlite-persistence":"依赖已移除的会话持久化后端 @deepseek-ai/dsh-session-persistence-sqlite(0.1.2-alpha.3 起官方仅交付 JSONL)","plugin.compat.break.chat-hash":"引用已迁移的聊天界面旧样式前缀(Md3f7G_,0.1.2-alpha.2 起漂移至 EvIC1a_)","plugin.compat.break.stats-hash":"引用已迁移的统计条旧样式前缀(FJxK0a_,0.1.2-alpha.2 起漂移至 -NDN2W_)","plugin.compat.break.time-hover-root":"使用已移除的元素属性 data-time-hover-root(0.1.2-alpha.2 起由 data-turn-tail 取代)","plugin.compat.unknown.unresolved":"包清单不可解析","plugin.compat.unknown.missing-entry":"未找到可扫描的入口文件","plugin.compat.unknown.too-large":"入口文件超过扫描上限(4 MiB)","tabs.overview":"概览","tabs.notify":"通知","tabs.health":"健康诊断","tabs.usage":"模型统计","tabs.quota":"额度查询","overview.container":"进程与运行环境","overview.errors":"报错信息","overview.status.normal":"所有系统运行正常","overview.status.info":"有 {count} 条提示","overview.status.warning":"有 {count} 项需要注意","overview.status.error":"有 {count} 项需要处理","overview.backupEmpty":"还没有备份,建议创建一份","overview.updateAvailable":"检测到新版本可用","overview.action.health":"健康检查","tabs.backup":"备份维护","tabs.restart":"重启","tabs.maintenance":"维护","tabs.configuration":"配置","tabs.features":"功能","tabs.notifications":"通知","maintenance.empty":"所有维护子页均已关闭。可在「配置 → 功能」中开启备份、技能、子代理或会话管理。","config.notificationsDisabled":"任务通知功能已在「功能」页关闭,以下设置仅作展示;重新开启后通知才会生效。","features.group.runtime":"运行与观测","features.group.maintenance":"维护","features.group.interaction":"交互","page.quota.desc":"查询各供应商额度、余额与重置时间;额度圆环跟随会话模型供应商,查询由宿主节流。","page.diagnostics.desc":"健康检查与运行环境诊断,异常时给出处理建议。","page.configuration.desc":"功能开关与任务通知设置。","tabs.alert.title":"服务控制提醒","tabs.alert.body":"以下功能需要处理:{tabs}","tabs.alert.join":"、","tabs.alert.dot":"此标签存在故障提醒","permissions.title":"文件权限","permissions.description":"检查 Agent 能否读写并进入 DSH_HOME 与工作区。深检跳过 .git;修复补充当前用户所需权限并保留执行位。","permissions.target":"目标属主:{owner}","permissions.repair":"修复权限","permissions.repairing":"修复中…","permissions.confirm":"确认修复","permissions.confirmHint":"跳过 .git,递归恢复当前用户属主并补充 Agent 读写权限,保留已有执行位。","permissions.cancel":"取消","permissions.show":"权限与修复","permissions.hide":"收起","permissions.error":"权限操作失败","permissions.summary.ok":"{count} 个根目录检查正常","permissions.summary.warning":"发现 {count} 个根目录异常","permissions.showDetails":"查看详情","permissions.hideDetails":"隐藏详情","permissions.deep":"深度检查","permissions.deepChecking":"扫描中…","permissions.deepSummary":"扫描 {scanned} 项,用时 {duration} ms;目录不可编辑 {directories},文件不可编辑 {files},无法读取 {unreadable}。","backup.title":"备份管理","backup.description":"备份会话、配置与插件 profile 清单,不含 node_modules 与凭据;不自动清理。","backup.create":"创建备份","backup.creating":"创建中…","backup.progress.copy":"正在复制会话数据({current}/{total})…","backup.progress.archive":"正在打包归档({current}/{total})…","backup.progress.validate":"正在校验归档({current}/{total})…","backup.progress.publish":"正在发布备份({current}/{total})…","backup.total":"总体积:{size}","backup.empty":"还没有备份。","backup.delete":"删除","backup.confirm":"确认删除","backup.confirmHint":"确认删除这个备份?此操作无法撤销。","backup.cancel":"取消","backup.error":"备份操作失败","backup.export":"导出","backup.exporting":"导出中…","backup.exportError":"备份导出失败","backup.restore":"恢复","backup.inspecting":"检查中…","backup.restoreConfirm":"确认恢复","backup.restoreHint":"完整性检查通过。确认后会按下方计划覆盖数据;提交前宿主会再次检查归档和当前目标是否发生变化。","backup.restoreError":"备份恢复失败","backup.integrity.ok":"完整性检查通过","backup.integrity.invalid":"归档不可恢复","backup.integrity.summary":"共 {entries} 个条目,解压后 {size};会话文件 {sessions},配置文件 {config},profile 清单 {profiles}。","backup.plan.sessions":"会话目录将整体替换","backup.plan.config":"配置覆盖 {replace} 项,移除 {remove} 项","backup.plan.profiles":"覆盖 {count} 个 profile 的 package.json,保留 node_modules 与其他文件","backup.plan.expires":"恢复计划有效至 {time}","backup.manualRestartTitle":"恢复完成,需要手动重启","backup.manualRestartBody":"数据已恢复,但当前进程仍在运行旧状态。请在运行 dsh 的终端按 Ctrl+C,然后重新启动 dsh。","backup.error.backup-gzip-invalid":"归档不是有效的 gzip 文件或已损坏。","backup.error.backup-tar-invalid":"tar 结构或校验和无效。","backup.error.backup-entry-traversal":"归档含越界或不安全路径。","backup.error.backup-entry-absolute":"归档含绝对路径。","backup.error.backup-entry-link":"归档含符号链接或硬链接。","backup.error.backup-entry-type":"归档含不支持的特殊条目。","backup.error.backup-entry-platform":"归档包含其他系统不兼容的文件名。","backup.error.backup-entry-unexpected":"归档含备份范围外的文件。","backup.error.backup-profile-invalid":"profile package.json 无效。","backup.error.backup-section-missing":"归档缺少必要分区。","backup.error.backup-size-limit":"归档超过安全大小或条目限制。","backup.error.backup-archive-invalid":"归档未通过完整性检查。","backup.error.backup-source-changed":"会话正在写入,备份未完成,请稍后重试。","backup.error.backup-source-unsafe":"备份源含符号链接或特殊文件,已拒绝创建。","backup.error.tar-failed":"归档工具执行失败,请检查 tar/gzip 是否可用。","backup.error.active-work":"检测到运行中的工作,暂不能恢复。","backup.error.restore-plan-expired":"恢复计划已过期,请重新检查。","backup.error.restore-source-changed":"备份归档在确认前发生变化,请重新检查。","backup.error.restore-target-changed":"当前数据在确认前发生变化,请重新检查。","backup.error.restore-target-unsafe":"当前目标含不安全的链接或特殊文件。","backup.import":"导入备份","backup.importing":"导入中…","backup.showRecords":"展开备份记录","backup.hideRecords":"收起备份记录","version.title":"版本信息","version.current":"DSH:","version.plugin":"dsh-service:","version.loading":"加载中…","update.check":"检查更新","update.checking":"检查中…","update.current":"已是最新版本","update.available":"有新版本:{version}","update.detailsButton":"查看详情","update.detailsHide":"收起","update.unavailable":"暂时无法检查最新版本","update.unpublished":"尚未发布可检查版本","health.recheck":"重新诊断","update.badge":"DSH 有更新","update.details.title":"DSH 更新可用","update.details.current":"当前版本:{version}","update.details.latest":"最新版本:{version}","update.channelStable":"正式版","update.channelPreview":"预览版","update.channelAlpha":"Alpha 版","update.details.close":"关闭","update.upgrade":"升级插件","update.upgrading":"升级中…","update.upgradeError":"插件升级失败","update.upgradeErrorDetail":"插件升级失败({detail})","update.upgradeSuccess":"升级成功,服务重启中…","update.guardActiveWork":"有活动中的会话或后台任务,请处理完毕后再升级","update.guardLinkInstall":"插件通过 link: 安装(开发模式),不能从 registry 一键升级;请更新源码仓库后重启","update.guardFileInstall":"插件通过 file: 安装,不能从 registry 一键升级","update.guardNoNewer":"registry 最新版不高于当前版本,已拒绝可能回退的升级","update.guardNoProfile":"没有找到安装了本插件的 profile,无法定位升级目标","update.guardAmbiguous":"多个 profile 都安装了本插件且无法确定当前加载的副本,已中止","update.guardStale":"命令报告成功但安装版本没有变化(可能被 pnpm 安全等待期拦下),保持当前版本不重启","update.guardUnreadable":"命令成功但无法确认安装后的版本,已中止重启","update.failPnpmMissing":"找不到 pnpm,无法执行升级;请先安装 pnpm 再重试","update.failNetwork":"拉取依赖时网络临时失败,请稍后重试","update.failFetchTimeout":"下载超时(网络较慢或安装包较大),请稍后重试","update.failReleaseAge":"新版本被 pnpm 安全等待期拦截,已自动放行重试仍失败","update.failHoist":"profile 的 node_modules 由不同版本的 pnpm 创建,已重建重试仍失败","update.failAddingToRoot":"pnpm 拒绝在 workspace 根目录安装(缺少 -w)","update.failNotWorkspace":"profile 不是 pnpm workspace 却传入了 -w","update.failIgnoredBuilds":"依赖构建脚本被 pnpm 默认拦截,无法完成升级","env.kind.docker":"Docker 容器","env.kind.container":"容器(containerd/Kubernetes)","env.kind.systemd":"systemd 服务","env.kind.pm2":"pm2","env.kind.supervisord":"supervisord","env.kind.kubernetes":"Kubernetes","env.kind.declared":"外部进程管理器(手动指定)","update.manualConfirmTitle":"升级前请确认:当前疑似手动启动环境","update.manualConfirm":"未检测到进程管理器。升级完成后 DSH 不会自动重启。","update.manualProceed":"仍要升级","update.manualRestartTitle":"升级完成,需要手动重启","update.manualRestartBody":"新版本已安装,但当前进程仍在运行旧版本。请在运行 dsh 的终端窗口按 Ctrl+C(或直接关闭窗口),然后重新启动 dsh。","restart.title":"服务重启","restart.description":"重启 dsh web 进程。运行中的工作会中断,持久化会话可恢复。","restart.button":"重启 dsh web","restart.sending":"发送中…","restart.confirm":"确认重启","restart.force":"仍要重启","restart.cancel":"取消","restart.sent":"重启指令已发出。","restart.sentHint":"页面连接即将断开,服务恢复后将自动刷新。","restart.idleHint":"当前没有检测到运行中的工作。确认后将断开连接,等待服务自动重启。","restart.manualWarn":"当前疑似终端手动启动环境:确认后进程将退出且不会自动拉起,需要你手动重新运行 dsh。","restart.sentManualHint":"当前为手动启动环境,服务不会自动拉起;请在原终端重新运行 dsh 后刷新。","restart.navToggle":"设置页左列显示「重启」入口","restart.navToggleHint":"默认关闭;开启后在设置页左侧标签列底部显示快捷重启入口","activity.agent":"Agent","activity.job":"后台任务","activity.terminal":"终端","activity.warning":"检测到 {count} 项运行中的工作,重启将中断。","activity.item":"{type}:{label} ({status})","error.update":"检查失败","error.activity":"检查运行状态失败","error.restart":"重启失败","error.instance":"重启响应缺少进程实例标识","usage.title":"模型使用","usage.structure":"token 结构","usage.structureHint":"按日期展示输入、输出和缓存 token。","usage.tooltip.date":"日期:{date}","usage.tooltip.input":"输入 {value} token","usage.tooltip.output":"输出 {value} token","usage.tooltip.cache":"缓存命中 {value} token","usage.axis":"token 纵轴","usage.models.more":"展开其余 {count} 个模型","usage.models.less":"收起模型列表","usage.modelScope.today":"今日","usage.modelScope.week":"近 7 天","usage.modelScope.all":"累计","usage.modelSortHint.today":"按今日 token 从多到少排列","usage.modelSortHint.week":"按近 7 天 token 从多到少排列","usage.modelSortHint.all":"按累计 token 从多到少排列","usage.modelBar.today":"{model}:今日 {total} token","usage.modelBar.week":"{model}:近 7 天 {total} token","usage.modelBar.all":"{model}:累计 {total} token","usage.refresh":"刷新统计","usage.refreshing":"刷新中…","usage.empty":"尚未建立使用统计索引。点击刷新统计开始只读建立索引。","usage.error":"无法读取模型使用统计","usage.allProjects":"全部项目","usage.chartSummary":"七天内累计用量 {total} token","usage.barDay":"{day} 总用量 {total} token","usage.total":"token 总量","usage.steps":"成功模型步骤","usage.stepsValue":"{count} 次","usage.modelLine":"{steps}次 · 缓存命中 {hitRate} · 输入 {input} token · 输出 {output} token","usage.input":"输入 token","usage.output":"输出 token","usage.cache":"缓存 token","usage.hitRate":"缓存命中率","usage.today":"今天","usage.sevenDays":"近 7 天","usage.errors.title":"模型报错","usage.errors.toggle":"模型报错({count} 类)","usage.errors.recent":"最近 24 小时","usage.errors.empty":"最近 24 小时没有记录到模型报错。","usage.toolErrors.title":"工具报错","usage.toolErrors.toggle":"工具报错({count} 类)","usage.toolErrors.empty":"最近 24 小时没有记录到工具报错。","usage.errors.count":"{count} 次","notification.title":"通知","notification.description":"主会话任务结束,或会话需要授权、抉择时发送浏览器通知;子代理完成任务不通知。","notification.enable":"开启通知","notification.enabled":"通知已开启","notification.disable":"关闭通知","notification.denied":"通知权限被拒绝","notification.master":"通知总开关","notification.done":"任务结束通知","notification.input":"授权与提问通知","notification.doneTitle":"任务完成","notification.doneBody":"{title} 已完成本轮任务","notification.inputTitle":"需要你的确认","notification.inputBody":"{title}({kind})","notification.kind.approval":"等待授权","notification.kind.plan-review":"等待审阅计划","notification.kind.question":"等待选择答案","notification.bellOn":"通知开启","notification.bellOff":"通知关闭","notification.bellShow":"显示输入框旁的铃铛图标","quota.cardTitle":"额度查询","quota.navToggle":"设置页左列显示「额度查询」入口","quota.navToggleHint":"默认关闭;开启后在设置页左侧标签列底部显示「额度查询」快捷入口","quota.poll":"自动查询","quota.poll.manual":"仅手动","quota.poll.minute":"{count} 分钟","quota.window.rolling":"滚动 5 小时","quota.window.tokens-limit-u3-n5":"5 小时 Token","quota.window.tokens-limit-u6-n1":"本周 Token","quota.window.tokens-limit":"Token 额度","quota.window.time-limit-u5-n1":"MCP 配额","quota.window.time-limit":"MCP 配额","quota.window.credit-limit":"点数额度","quota.window.credits":"已用额度","quota.window.balance":"余额","quota.window.weekly":"本周","quota.window.monthly":"本月","quota.window.codex-5h":"Codex 5 小时窗","quota.window.codex-day":"Codex 日窗口","quota.window.codex-week":"Codex 本周窗","quota.window.codex-month":"Codex 本月窗口","quota.window.gemini-5h":"Gemini 5 小时窗","quota.window.gemini-week":"Gemini 本周窗","quota.window.claude-5h":"Claude 5 小时窗","quota.window.claude-week":"Claude 本周窗","quota.panel.title":"额度用量","quota.panel.used":"已用","quota.panel.remaining":"剩余","quota.ring.label":"额度查询","quota.updated":"更新于 {time}","quota.refreshing":"刷新中…","quota.empty":"暂无数据","quota.resetIn":"重置于 {time}","quota.resetCard.title":"重置卡","quota.resetCard.expires":"{date} 到期","quota.resetCard.expired":"已过期","quota.resetCard.edit":"添加重置卡","quota.advanced":"高级配置","quota.resetCard.dateLabel":"到期日期","quota.resetCard.nameLabel":"名称(可选)","quota.resetCard.add":"添加","quota.resetCard.cancel":"取消","quota.resetCard.remove":"移除","quota.retryAt":"{time} 后可重试","quota.refresh":"刷新","quota.card.moveUp":"上移","quota.card.moveDown":"下移","quota.reorder":"调整排序","quota.usageLink":"打开官网用量页","quota.adapt":"适配","quota.kind.opencode-go":"OpenCode Go","quota.kind.zai-coding-cn":"智谱 GLM Coding Plan","quota.kind.openrouter":"OpenRouter","quota.kind.kimi":"Kimi / Moonshot","quota.kind.siliconflow":"硅基流动","quota.kind.deepseek":"DeepSeek 开放平台","quota.kind.stepfun":"StepFun 余额","quota.kind.stepfun-step-plan":"StepFun Step Plan 订阅","quota.kind.cliproxy":"CLIProxyAPI 账号额度","quota.kind.xiaomi-token-plan-cn":"小米 MiMo Token Plan","quota.window.total_token":"套餐总额度","quota.window.compensation_total_token":"补偿积分","quota.window.plan-name":"订阅套餐","quota.window.credit-pool":"月度 Credit 池","quota.window.topup-credit":"加油包 Credit","quota.window.five-hour":"5 小时额度","quota.error.no-subscription":"当前账号没有生效中的订阅额度","quota.error.credential-rejected":"控制台登录态已失效,请重新从浏览器复制","quota.credential.editCookie":"填写控制台 Cookie(网页登录态)","quota.credential.editToken":"填写控制台令牌(Oasis-Token,浏览器登录态)","quota.kindAuto":"自动识别","quota.noAdapted":"暂无已适配的供应商,可在下方手动适配","quota.disable":"停用查询","quota.followAuto":"跟随自动识别","quota.addAdapt":"手动适配:","quota.addPickProvider":"选择供应商","quota.addPickKind":"选择类型","quota.saveFailed":"保存失败:{error}","quota.unknownProvider":"未知供应商","quota.error.credential-missing":"凭据未配置(请在 DSH 凭据中设置对应 API key)","quota.error.no-base-url":"该供应商未配置 baseURL","quota.error.credentials-unavailable":"凭据服务不可用","quota.error.http-status":"上游返回错误状态","quota.error.network":"网络错误","quota.error.network-transient":"网络不稳定(已自动重试)","quota.error.timeout":"请求超时","quota.error.bad-payload":"响应格式异常","quota.error.mgmt-disabled":"CLIProxyAPI 管理面未启用(未设置 remote-management secret-key)","quota.error.host-not-pinned":"baseURL 与适配时记录的域名不一致,请重新保存适配","quota.error.upstream-status":"上游官方接口返回错误状态","quota.credential.edit":"填写 API 密钥","quota.credential.editManagement":"填写管理密钥(网页登录的 key)","quota.credential.nameLabel":"凭据名称","quota.credential.valueLabel":"密钥值","quota.credential.save":"保存","quota.credential.primary":"主名(别名存一即可)","quota.credential.clear":"清除已存","quota.credential.clearConfirm":"再次点击清除","quota.credential.configured":"已配置","quota.credential.notConfigured":"未配置","quota.credential.saveFailed":"凭据保存失败:{error}","quota.credential.unknown-hint":"未知凭据名","quota.credential.invalid-value":"密钥值不能为空","quota.credential.credentials-unavailable":"凭据服务不可用","quota.error.unknown":"未知错误","quota.unadapted":"该供应商未适配,请先在下方选择类型","quota.unit.day":"{count} 天","quota.unit.hour":"{count} 小时","quota.unit.minute":"{count} 分钟","quota.window.granted-balance":"赠送余额(未过期)","quota.peak.nowIdle":"当前空闲时段 · 半价计费","quota.peak.nowPeak":"当前高峰时段 · 标准价","quota.peak.untilIdle":"{time} 转空闲({dur}后)","quota.peak.untilPeak":"{time} 转高峰({dur}后)","quota.peak.tag.peak":"忙时","quota.peak.tag.idle":"闲时","quota.peak.caption":"空闲时段价格为高峰时段的一半。高峰时段:北京时间周一至周五 09:00–12:00、14:00–18:00;其余时间为空闲时段,周六和周日全天空闲。","quota.peak.caption.zai":"非高峰时段模型调用按基础积分的 50% 抵扣。高峰时段:每周一至周五 14:00–18:00(UTC+8);其余时间为非高峰时段,周六和周日全天空闲。"},i={"nav.label":"Service Control","nav.restart":"Restart","features.cardTitle":"Service control (dsh-service)","features.cardHint":"Controls optional features and external capabilities. Switches apply instantly without restart.","features.external":"External capabilities","features.healthDiagnostics":"Health diagnostics","features.modelUsage":"Model statistics","features.quotaLookup":"Quota lookup","features.backupMaintenance":"Backup maintenance","features.taskNotifications":"Task notifications","features.healthz":"/healthz liveness endpoint","features.skillManager":"Skill manager","features.readOnly":"These settings are read-only.","tabs.skills":"Skills","tabs.subagent":"Subagents","tabs.sessions":"Sessions","features.subagentRoute":"Subagent model","features.mobileAdaptation":"Mobile adaptation","features.sessionManager":"Session manager","sessions.title":"Session manager","sessions.hint":"View, export, archive, and search sessions; deletion is limited to archived ones.","sessions.filter.all":"All","sessions.filter.archived":"Archived","sessions.filter.deleted":"Deleted","sessions.refresh":"Refresh","sessions.batch.enter":"Select multiple","sessions.batch.exit":"Exit selection","sessions.batch.selectAll":"Select all","sessions.batch.clearAll":"Clear all","sessions.batch.selected":"{count} selected","sessions.batch.selectRow":"Select session: {title}","sessions.batch.export":"Export ({count})","sessions.batch.archive":"Archive ({count})","sessions.batch.delete":"Delete ({count})","sessions.batch.completed":"{action} completed for {count}","sessions.batch.failed":"{action} completed for {done}/{total}; {error}","sessions.batch.deleteTitle":"Delete {count} sessions","sessions.batch.deleteBody":"This permanently deletes the logs of the archived sessions below. This cannot be undone.","sessions.batch.deleteItem":"{title} ({bytes})","sessions.status.loading":"Loading…","sessions.status.working":"Working…","sessions.status.unavailableTime":"Time unavailable","sessions.glyph.expand":"▸","sessions.glyph.collapse":"▾","sessions.glyph.back":"←","sessions.search.placeholder":"Search conversation content…","sessions.search.archivedOnly":"Search archived only","sessions.sort.createdDesc":"Created (newest first)","sessions.sort.createdAsc":"Created (oldest first)","sessions.sort.title":"By title","sessions.sort.project":"By project","sessions.projectGroup.countOne":"1 session","sessions.projectGroup.countMany":"{count} sessions","sessions.projectGroup.noCwd":"(no workspace)","sessions.row.live":"Running","sessions.row.archived":"Archived","sessions.row.deleted":"Deleted","sessions.row.events":"{count} events","sessions.row.noTitle":"(No title)","sessions.action.view":"View","sessions.action.export":"Export","sessions.action.archive":"Archive","sessions.action.delete":"Delete","sessions.empty.all":"No sessions","sessions.empty.archived":"No archived sessions","sessions.empty.deleted":"No deleted sessions yet","sessions.empty.search":"No matches for “{query}”","sessions.error.load":"Load failed: {error}","sessions.error.feature-disabled":"Session manager is disabled in settings","sessions.error.network":"Network error: cannot reach the host","sessions.error.session-not-found":"Session not found or already deleted","sessions.error.live-session-rejected":"Session is running and cannot be deleted","sessions.error.session-not-archived":"Only archived sessions can be deleted","sessions.error.unknown-delete-plan":"Delete request expired, please retry","sessions.error.export-failed":"Export failed: {error}","sessions.detail.back":"Back to list","sessions.detail.open":"Open in official view","sessions.detail.archiveDisabled":"Archived or blank sessions cannot be opened in the official view","sessions.detail.exportAll":"Export full ZIP","sessions.detail.exporting":"Exporting…","sessions.detail.loadMore":"Load more ({remaining})","sessions.detail.noMore":"All {total} events loaded","sessions.detail.noise":"System events","sessions.detail.noiseBlock":"{count} system events","sessions.detail.noiseExpand":"Expand all","sessions.detail.noiseCollapse":"Collapse","sessions.detail.cwd":"{cwd}","sessions.detail.created":"Created {time}","sessions.md.copy":"Copy","sessions.md.copied":"Copied","sessions.md.footnotes":"Footnotes","sessions.hit.title":"{count} hits","sessions.hit.return":"Back to search results","sessions.hit.badge":"HIT","sessions.hit.prev":"◀ Prev","sessions.hit.next":"Next ▶","sessions.hit.inSession":"{count} matches in this session","sessions.delete.title":"Delete session","sessions.delete.body":"This permanently deletes the session log below. This cannot be undone.","sessions.delete.consequence.log":"Delete session log ({bytes})","sessions.delete.consequence.sidebar":"Session disappears from the official sidebar","sessions.delete.confirm":"Delete","sessions.delete.cancel":"Cancel","sessions.delete.done":"Deleted","sessions.export.includes":"Includes subagents and attachments","sessions.navToggle":"Show “Sessions” entry in the settings sidebar","sessions.navToggleHint":"Disabled by default; shows the session manager entry at the bottom of the settings sidebar when enabled","sessions.oneWay":"Archiving cannot be undone","sessions.oneWayHint":"Archived sessions are hidden from the official sidebar; the official UI cannot unarchive, deletion here is the only way out.","mobile.fab.label":"Open sidebar menu","mobile.debug.title":"Mobile diagnostics","mobile.debug.viewport":"Viewport","mobile.debug.drawer":"Drawer","mobile.debug.details":"Details","mobile.debug.errors":"JS errors","mobile.debug.stateOn":"on","mobile.debug.stateOff":"off","mobile.immersive.hide":"Hide header and composer","mobile.immersive.show":"Show header and composer","mobile.debug.immersive":"Immersive","conversation.jump.previousReply":"Previous user message","subagent.title":"Subagent model","subagent.hint":"Controls the model used by subagents without an explicit model; explicitly specified ones are unaffected.","subagent.mode.label":"Mode","subagent.mode.inherit":"Default (no override)","subagent.mode.inherit.desc":"Injects nothing and keeps the native inheritance: subagents use the model baked in when the session was created.","subagent.mode.follow":"Follow main model","subagent.mode.follow.desc":"Each delegation reads the model the main conversation actually uses right now (route of its latest request) and injects it.","subagent.mode.custom":"Custom","subagent.mode.custom.desc":"Every delegation without an explicit model uses the model selected below.","subagent.provider":"Provider","subagent.model":"Model","subagent.reasoningEffort":"Reasoning effort","subagent.reasoningEffort.default":"Use model default (unspecified)","subagent.reasoningEffort.unavailable":"This model does not declare selectable reasoning levels","subagent.modelsEmpty":"Model list is empty: host LLM channels cannot be resolved.","subagent.save":"Save","subagent.saved":"Saved","subagent.reset":"Reset to default","subagent.saving":"Saving…","subagent.unavailable":"The host exposes no subagents registry (service missing); this configuration has no effect.","subagent.error":"Operation failed: {error}","subagent.error.feature-disabled":"Subagent model is switched off in settings","subagent.error.llm-unavailable":"Host LLM service is unavailable","subagent.error.unknown-mode":"Unknown mode","subagent.error.invalid-model-route":"Provider or model is not in the host catalog","subagent.error.invalid-reasoning-effort":"This reasoning effort is not supported by the selected model; choose another","subagent.error.network":"Network error: cannot reach the host","subagent.fallback.title":"Fallback models (in order)","subagent.fallback.item":"Fallback {index}","subagent.fallback.hint":"When the primary route is unavailable (channel unloaded, or quota state marks it unserviceable), try fallbacks in order; if none works, fall back to native inheritance instead of failing the delegation.","subagent.fallback.add":"Add fallback","subagent.fallback.sort":"Reorder","subagent.fallback.sort.done":"Done","subagent.fallback.remove":"Remove","subagent.fallback.up":"Move up","subagent.fallback.down":"Move down","subagent.fallback.empty":"No fallbacks: delegations fall back to native inheritance when the primary route is unavailable.","subagent.fallback.limit":"Limit reached ({max})","subagent.error.invalid-fallback-route":"Fallback entry is not in the host catalog, please choose again","subagent.turnTail.label":"Subagent models: ","subagent.turnTail.countOne":"1 subagent","subagent.turnTail.countMany":"{count} subagents","subagent.turnTail.unknown":" (models not recorded)","subagent.dock.title":"Show subagent info under the composer","subagent.dock.desc":"Keeps a session-level line under the composer listing the models your subagents actually used (20s refresh, unaffected by compaction). When off, only the per-turn tail line remains.","skills.error":"Operation failed: {error}","skills.error.feature-disabled":"Skill manager is switched off in settings","skills.error.network":"Network error, try again later","skills.error.read-only-source":"This entry lives in a read-only source","skills.error.unknown-skill":"Skill not found; the list may have changed, refresh and retry","skills.error.invalid-skill":"Entry is currently invalid: {reason}","skills.error.invalid-field":"Invalid switch field","skills.error.invalid-enable":"Invalid switch value","skills.error.invalid-model-route":"Invalid model route; pick a model again","skills.error.invalid-description":"Description cannot be empty","skills.error.describe-timeout":"Model generation timed out (90s)","skills.error.empty-output":"Model produced no body output (finish: {kind})","skills.error.batch-cancelled":"Cancelled","skills.error.entry-changed":"Entry changed during the run; skipped","skills.error.unknown-batch-plan":"Batch plan is stale; regenerate it","skills.error.batch-already-done":"That batch already finished","skills.error.batch-already-cancelled":"That batch was already cancelled","skills.error.annotated-confirm-required":"Annotated skills need an explicit confirm before being overwritten","skills.empty":"No skills found","skills.filter":"Filter by name…","skills.colon":": ","skills.group.auto":"Auto-loaded","skills.group.manual":"Manual only","skills.group.disabled":"Fully disabled","skills.source.project-dsh":"Project .dsh","skills.source.project-agents":"Project .agents","skills.source.user-dsh":"User DSH","skills.source.user-agents":"User .agents","skills.source.bundled":"Bundled","skills.source.custom":"Custom dir","skills.badge.shadowed":"Shadowed","skills.badge.readonly":"Read-only","skills.badge.annotated":"Annotated","skills.note.stale":"Body changed; refill needed","skills.note.remove":"Remove AI note","skills.note.panelOnly":"Notes are stored and shown in this panel only; SKILL.md is never modified.","skills.log.title":"Run log","skills.log.located":"Located skill {name} ({chars} chars)","skills.log.attempt":"Attempt {n}/{total}: calling {route}","skills.log.received":"Output received ({chars} chars), parsing JSON…","skills.log.parsed":"Parsed OK, draft ready","skills.log.failed-retry":"Failed: {message}, retrying","skills.log.failed":"Failed: {message}","skills.log.wait":"Waiting for model output… {secs}s","skills.log.first-delta":"Model started returning","skills.log.first-reasoning":"Model started returning (reasoning first)","skills.log.progress":"Received {chars} chars","skills.log.finish-reasoning-only":"Finished: {kind} (only {chars} reasoning chars, no body)","skills.log.finish-empty":"Finished: {kind} (no output)","skills.log.block-extract":"Extracted body from whole block ({chars} chars)","skills.log.item-start":"Generating note…","skills.batch.toggle":"Batch annotate","skills.batch.collapse":"Collapse","skills.batch.already":"A batch is already running; wait for it or cancel first","skills.invalid.legacy":"Legacy invocation keys present; excluded from the model catalog","skills.invalid.other":"Invalid entry: {reason}","skills.fix.legacy":"Fix legacy keys","skills.switch.model":"Visible to model","skills.switch.user":"Invocable via /","skills.switch.confirm":"Click again to apply","skills.describe.button":"Fill with AI","skills.describe.title":"Fill metadata with AI — {name}","skills.describe.model":"Model","skills.describe.models.loading":"Loading models…","skills.describe.models.empty":"No configured models found","skills.describe.run":"Generate draft","skills.describe.running":"Generating…","skills.apply.title":"Save AI note — {name}","skills.apply.description":"Description","skills.apply.usage":"Usage","skills.apply.old":"Old","skills.apply.new":"New","skills.apply.confirm":"Save note","skills.apply.done":"Note saved","skills.apply.keepusage":"(keep existing)","skills.llm.unavailable":"Host LLM service unavailable; AI fill disabled.","skills.batch.title":"Batch-fill skill descriptions","skills.batch.hint":"Call the selected model per skill to draft explanations for uncommented or changed skills; annotated skills are listed separately and are only overwritten after an explicit confirm. Results stay in the plugin and render below the entry.","skills.batch.plan":"Plan batch","skills.batch.candidates":"{count} candidates","skills.batch.estBytes":"~{size} of content will be sent","skills.batch.skipped":"{count} skipped (invalid / shadowed)","skills.batch.annotated":"{count} annotated will be overwritten","skills.batch.annotatedList":"To be overwritten","skills.batch.forceConfirm":"Confirm forced refill ({count} annotated)","skills.skippedList":"Skipped","skills.skip.shadowed":"shadowed","skills.skip.invalid":"invalid ({reason})","skills.skip.reason.missing-frontmatter":"no frontmatter","skills.skip.reason.missing-name":"missing name","skills.skip.reason.invalid-name":"invalid name","skills.skip.reason.missing-description":"missing description","skills.skip.reason.too-large":"file too large","skills.skip.reason.legacy-invocation-key":"legacy invocation keys","skills.batch.start":"Start batch","skills.batch.progress":"Progress {done}/{total}","skills.batch.current":"Current: {name}","skills.batch.cancel":"Cancel","skills.batch.phase.idle":"Idle","skills.batch.phase.planned":"Planned — review candidates, then press Start","skills.batch.phase.running":"Running","skills.batch.phase.done":"Done","skills.batch.phase.cancelled":"Cancelled","skills.batch.failures":"{count} failed","skills.batch.no-candidates":"Nothing to fill","skills.batch.model":"Model","overlay.label":"Service restart status","recovery.waiting.title":"Restarting service…","recovery.waiting.body":"Waiting for a new DSH Web process. Elapsed: {seconds} seconds.","recovery.timeout.title":"Service has not recovered","recovery.timeout.body":"Waited 60 seconds. Check the external process manager, or refresh the page manually.","recovery.manual":"Manual reload","health.title":"Health","health.uptime":"Uptime","health.rss":"Memory RSS","health.platform":"Platform","health.nodeVersion":"Node version","health.liveSessions":"Live sessions","health.persistedSessions":"Persisted sessions","health.activeAgents":"Active agents","health.activeJobs":"Background jobs","health.uptimeValue":"{hours} h {minutes} min","health.error":"Could not read health metrics","health.check":"Run health check","health.checking":"Checking…","health.overall.ok":"Healthy","health.overall.warning":"Warning","health.overall.error":"Error","health.alert.title":"Health alert","health.alert.diagnostics":"The health check reported {status}. Review the affected items below.","health.status.ok":"Healthy","health.status.warning":"Warning","health.status.error":"Error","health.status.info":"Info","health.check.session-storage":"Session storage","health.check.workspace-registry":"Workspace registry","health.check.dsh-home":"DSH_HOME","health.check.backup-storage":"Backup storage","health.check.tar":"tar","health.check.permissions":"File permissions","health.check.runtime-env":"Runtime environment","health.check.node-version":"Node runtime","health.detail.runtime-env.managed":"Managed by {kind}; the process restarts automatically after exit","health.detail.runtime-env.declared":"Declared externally managed via DSH_SERVICE_RUNTIME_ENV","health.detail.runtime-env.manual":"Likely a manual terminal launch — nothing restarts the process after exit; one-click upgrade already keeps it running","health.detail.runtime-env.unknown":"No process manager detected, so automatic restart cannot be confirmed; set DSH_SERVICE_RUNTIME_ENV=managed if one exists","health.detail.node-version.ok":"{version}, meets the >={required} requirement","health.detail.node-version.warning":"{version} is below the required {required}.x; upgrading Node is recommended","health.detail.session-storage.ok":"Available, with {count} session snapshots","health.detail.workspace-registry.ok":"Available, with {count} workspaces","health.detail.dsh-home.ok":"Directory is accessible with mode {mode}","health.detail.backup-storage.empty":"Backup directory is available; no backups exist yet","health.detail.backup-storage.ok":"Backup directory is available, with {count} backups using {size}","health.detail.tar.ok":"The tar executable is available","health.detail.permissions.ok":"Permission check passed with no anomalies","health.detail.permissions.warning":"Found {count} file or directory permission anomalies","health.detail.generic":"{status}","health.check.plugins":"Plugins","health.detail.plugins.unavailable":"Plugin health check unavailable (host loader is not exposed)","health.detail.plugins.ok":"{total} plugins healthy","plugin.issue.failed":"{failed} failed plugin(s)","plugin.issue.pending":"{pending} pending plugin(s)","plugin.issue.info":"{count} plugin state(s) need review","plugin.state.pending":"Waiting","plugin.state.loading":"Loading","plugin.state.failed":"Failed","plugin.state.disposed":"Disposed","plugin.state.unknown":"Unknown state","plugin.state.unloading":"Unloading","plugin.missingDeps":"Missing deps: {deps}","plugin.error":"Error: {error}","plugin.restart":"Reload","plugin.restarting":"Reloading…","plugin.restartConfirm":"Confirm reload","plugin.restartHint":'Reloading "{name}" re-runs its startup logic; the failure state refreshes afterwards.',"plugin.restartCancel":"Cancel","plugin.restartFailed":"Reload failed: {detail}","plugin.error.unknown-plugin":"Plugin not found","plugin.error.loader-unavailable":"Host loader unavailable","plugin.error.plugin-disabled":"The plugin is disabled and cannot be reloaded","plugin.error.not-failed":"The plugin is not in a failed state","plugin.error.restart-failed":"Still failed after reload","health.check.plugin-compat":"Plugin compatibility","health.detail.plugin-compat.unavailable":"Plugin compatibility check unavailable (host loader is not exposed)","health.detail.plugin-compat.ok":"Scanned {total} plugins; no references to changed interfaces","plugin.compat.issue.broken":"{count} plugin(s) possibly incompatible","plugin.compat.issue.declared":"{count} plugin(s) with stale declarations only (not referenced in code)","plugin.compat.issue.unknown":"{count} plugin(s) could not be scanned","plugin.compat.declared":"Declares a removed interface but never references it in code — the official loader silently skips missing suppliers, so this is harmless today and only signals the author to clean up","plugin.compat.break.client-runtime":"Declares the removed client supplier @deepseek-ai/dsh-client-runtime (dropped from the official roster in 0.1.2-alpha.2; the browser half may fail to mount)","plugin.compat.break.sqlite-persistence":"Depends on the removed session persistence backend @deepseek-ai/dsh-session-persistence-sqlite (JSONL is the only official provider since 0.1.2-alpha.3)","plugin.compat.break.chat-hash":"References the old chat UI style prefix (Md3f7G_, migrated to EvIC1a_ since 0.1.2-alpha.2)","plugin.compat.break.stats-hash":"References the old status-line style prefix (FJxK0a_, migrated to -NDN2W_ since 0.1.2-alpha.2)","plugin.compat.break.time-hover-root":"Uses the removed attribute data-time-hover-root (replaced by data-turn-tail in 0.1.2-alpha.2)","plugin.compat.unknown.unresolved":"Package manifest could not be resolved","plugin.compat.unknown.missing-entry":"No scannable entry file found","plugin.compat.unknown.too-large":"Entry file exceeds the 4 MiB scan limit","tabs.overview":"Overview","tabs.notify":"Notifications","tabs.health":"Health","tabs.usage":"Models","tabs.quota":"Quota lookup","overview.container":"Process and runtime","overview.errors":"Errors","overview.status.normal":"All systems nominal","overview.status.info":"You have {count} note(s)","overview.status.warning":"You have {count} item(s) to review","overview.status.error":"You have {count} item(s) needing attention","overview.backupEmpty":"No backups yet — consider creating one","overview.updateAvailable":"A new version is available","overview.action.health":"Health check","tabs.backup":"Backup","tabs.restart":"Restart","tabs.maintenance":"Maintenance","tabs.configuration":"Configuration","tabs.features":"Features","tabs.notifications":"Notifications","maintenance.empty":"All maintenance pages are disabled. Enable backup, skills, subagents, or session management under “Configuration → Features”.","config.notificationsDisabled":"Task notifications are turned off on the Features page; these settings are shown for reference only until re-enabled.","features.group.runtime":"Runtime and observation","features.group.maintenance":"Maintenance","features.group.interaction":"Interaction","page.quota.desc":"Quota, balance, and reset times across providers; the ring follows the session provider and queries are host-throttled.","page.diagnostics.desc":"Health checks and runtime environment diagnostics.","page.configuration.desc":"Feature switches and task notification settings.","tabs.alert.title":"Service control alert","tabs.alert.body":"These areas need attention: {tabs}","tabs.alert.join":", ","tabs.alert.dot":"Alert on this tab","permissions.title":"File permissions","permissions.description":"Checks whether the Agent can read, write, and enter DSH_HOME and workspaces. Deep scans skip .git; repair adds only the needed permissions and keeps execute bits.","permissions.target":"Target owner: {owner}","permissions.repair":"Repair permissions","permissions.repairing":"Repairing…","permissions.confirm":"Confirm repair","permissions.confirmHint":"Skips .git, restores ownership to the current user, adds Agent read/write access, and keeps existing execute bits.","permissions.cancel":"Cancel","permissions.show":"Permissions & repair","permissions.hide":"Collapse","permissions.error":"Permission operation failed","permissions.summary.ok":"{count} root path(s) passed the check","permissions.summary.warning":"{count} root path(s) need attention","permissions.showDetails":"Show details","permissions.hideDetails":"Hide details","permissions.deep":"Deep check","permissions.deepChecking":"Scanning…","permissions.deepSummary":"Scanned {scanned} entries in {duration} ms; non-editable directories {directories}, non-editable files {files}, unreadable {unreadable}.","backup.title":"Backup management","backup.description":"Backs up sessions, config, and plugin profiles — no node_modules or credentials; never auto-pruned.","backup.create":"Create backup","backup.creating":"Creating…","backup.progress.copy":"Copying session data ({current}/{total})…","backup.progress.archive":"Packing archive ({current}/{total})…","backup.progress.validate":"Verifying archive ({current}/{total})…","backup.progress.publish":"Publishing backup ({current}/{total})…","backup.total":"Total size: {size}","backup.empty":"No backups yet.","backup.delete":"Delete","backup.confirm":"Confirm delete","backup.confirmHint":"Delete this backup? This cannot be undone.","backup.cancel":"Cancel","backup.error":"Backup operation failed","backup.export":"Export","backup.exporting":"Exporting…","backup.exportError":"Backup export failed","backup.restore":"Restore","backup.inspecting":"Inspecting…","backup.restoreConfirm":"Confirm restore","backup.restoreHint":"The integrity check passed. Confirm to apply the plan below; the host will recheck the archive and current targets immediately before committing.","backup.restoreError":"Backup restore failed","backup.integrity.ok":"Integrity check passed","backup.integrity.invalid":"Archive cannot be restored","backup.integrity.summary":"{entries} entries, {size} expanded; {sessions} session file(s), {config} config file(s), {profiles} profile manifest(s).","backup.plan.sessions":"The sessions directory will be replaced in full","backup.plan.config":"Replace {replace} config file(s), remove {remove}","backup.plan.profiles":"Replace package.json for {count} profile(s); keep node_modules and all other files","backup.plan.expires":"Restore plan expires at {time}","backup.manualRestartTitle":"Restore completed — manual restart required","backup.manualRestartBody":"The data is restored, but the current process is still running its old state. Press Ctrl+C in the terminal running dsh, then start dsh again.","backup.error.backup-gzip-invalid":"The archive is not a valid gzip file or is damaged.","backup.error.backup-tar-invalid":"The tar structure or checksum is invalid.","backup.error.backup-entry-traversal":"The archive contains an unsafe path traversal.","backup.error.backup-entry-absolute":"The archive contains an absolute path.","backup.error.backup-entry-link":"The archive contains a symbolic or hard link.","backup.error.backup-entry-type":"The archive contains an unsupported special entry.","backup.error.backup-entry-platform":"The archive contains a filename incompatible with another platform.","backup.error.backup-entry-unexpected":"The archive contains files outside the backup scope.","backup.error.backup-profile-invalid":"A profile package.json is invalid.","backup.error.backup-section-missing":"The archive is missing a required section.","backup.error.backup-size-limit":"The archive exceeds a safe size or entry limit.","backup.error.backup-archive-invalid":"The archive failed its integrity check.","backup.error.backup-source-changed":"A session is being written; the backup was not completed. Try again shortly.","backup.error.backup-source-unsafe":"The backup source contains a link or special file, so creation was refused.","backup.error.tar-failed":"The archive tool failed. Check that tar and gzip are available.","backup.error.active-work":"Running work was detected; restore is blocked for now.","backup.error.restore-plan-expired":"The restore plan expired. Inspect the backup again.","backup.error.restore-source-changed":"The backup changed before confirmation. Inspect it again.","backup.error.restore-target-changed":"Current data changed before confirmation. Inspect it again.","backup.error.restore-target-unsafe":"A restore target contains an unsafe link or special file.","backup.import":"Import backup","backup.importing":"Importing…","backup.showRecords":"Show backup records","backup.hideRecords":"Hide backup records","version.title":"Version information","version.current":"DSH: ","version.plugin":"dsh-service: ","version.loading":"Loading…","update.check":"Check for updates","update.checking":"Checking…","update.current":"Up to date","update.available":"New version: {version}","update.detailsButton":"View details","update.detailsHide":"Collapse","update.unavailable":"Latest version is temporarily unavailable","update.unpublished":"No published version is available to check","health.recheck":"Run again","update.badge":"DSH update","update.details.title":"DSH update available","update.details.current":"Current version: {version}","update.details.latest":"Latest version: {version}","update.channelStable":"Stable","update.channelPreview":"Preview","update.channelAlpha":"Alpha","update.details.close":"Close","update.upgrade":"Upgrade plugin","update.upgrading":"Upgrading…","update.upgradeError":"Plugin upgrade failed","update.upgradeErrorDetail":"Plugin upgrade failed ({detail})","update.upgradeSuccess":"Upgrade successful, restarting…","update.guardActiveWork":"Active sessions or background tasks are running; resolve them before upgrading","update.guardLinkInstall":"Installed via link: (development mode) — cannot one-click upgrade from the registry; update the source checkout and restart","update.guardFileInstall":"Installed via file: — cannot one-click upgrade from the registry","update.guardNoNewer":"The registry latest is not higher than the current version; refused a possible downgrade","update.guardNoProfile":"No profile with this plugin installed was found to target the upgrade at","update.guardAmbiguous":"Several profiles install this plugin and the loaded copy could not be determined; aborted","update.guardStale":"The command reported success but the installed version did not change (pnpm safety wait likely blocked it); keeping the current version without restarting","update.guardUnreadable":"The command succeeded but the installed version could not be confirmed; the restart was cancelled","update.failPnpmMissing":"pnpm was not found, so the upgrade cannot run; install pnpm first and retry","update.failNetwork":"A transient network failure occurred while fetching dependencies; please retry shortly","update.failFetchTimeout":"Download timed out (slow network or large package); please retry later","update.failReleaseAge":"The new release is blocked by pnpm's fresh-release safety wait; one automatic bypass retry also failed","update.failHoist":"This profile's node_modules was created by a different pnpm major; the rebuild retry also failed","update.failAddingToRoot":"pnpm refused to add at the workspace root (missing -w)","update.failNotWorkspace":"-w was passed but the profile is not a pnpm workspace","update.failIgnoredBuilds":"Dependency build scripts are blocked by pnpm by default, so the upgrade could not finish","env.kind.docker":"Docker container","env.kind.container":"Container (containerd/Kubernetes)","env.kind.systemd":"systemd service","env.kind.pm2":"pm2","env.kind.supervisord":"supervisord","env.kind.kubernetes":"Kubernetes","env.kind.declared":"External process manager (declared manually)","update.manualConfirmTitle":"Confirm before upgrading: manual launch suspected","update.manualConfirm":"No process manager detected. DSH will not restart automatically after the upgrade.","update.manualProceed":"Upgrade anyway","update.manualRestartTitle":"Upgrade finished — manual restart required","update.manualRestartBody":"The new version is installed, but the current process still runs the old one. Press Ctrl+C in the terminal running dsh (or simply close the window), then start dsh again.","restart.title":"Service restart","restart.description":"Restarts the dsh web process. Running work is interrupted; persisted sessions recover.","restart.button":"Restart dsh web","restart.sending":"Sending…","restart.confirm":"Confirm restart","restart.force":"Force restart","restart.cancel":"Cancel","restart.sent":"Restart request sent.","restart.sentHint":"The connection will close shortly. The page will reload automatically after recovery.","restart.idleHint":"No active work was detected. Confirm to disconnect and wait for the service to restart.","restart.manualWarn":"This looks like a manual terminal launch: once confirmed the process exits and nothing restarts it — you must run dsh again yourself.","restart.sentManualHint":"Manual start detected — the service will not relaunch itself. Rerun dsh in the original terminal, then refresh.","restart.navToggle":'Show "Restart" entry in settings left nav',"restart.navToggleHint":"Off by default; when enabled, a quick-restart entry appears at the bottom of the settings left navigation","activity.agent":"Agent","activity.job":"Background job","activity.terminal":"Terminal","activity.warning":"Detected {count} active items; restart interrupts them.","activity.item":"{type}: {label} ({status})","error.update":"Update check failed","error.activity":"Could not check active work","error.restart":"Restart failed","error.instance":"Restart response is missing the process instance ID","usage.title":"Model usage","usage.structure":"token structure","usage.structureHint":"Input, output, and cache token by date.","usage.tooltip.date":"Date: {date}","usage.tooltip.input":"Input {value} token","usage.tooltip.output":"Output {value} token","usage.tooltip.cache":"Cache hit {value} token","usage.axis":"token vertical axis","usage.models.more":"Show {count} more models","usage.models.less":"Collapse model list","usage.modelScope.today":"Today","usage.modelScope.week":"Last 7 days","usage.modelScope.all":"All time","usage.modelSortHint.today":"Sorted by tokens used today, largest first","usage.modelSortHint.week":"Sorted by tokens in the last 7 days, largest first","usage.modelSortHint.all":"Sorted by all-time tokens, largest first","usage.modelBar.today":"{model}: {total} tokens today","usage.modelBar.week":"{model}: {total} tokens in the last 7 days","usage.modelBar.all":"{model}: {total} tokens in total","usage.refresh":"Refresh usage","usage.refreshing":"Refreshing…","usage.empty":"No usage index yet. Select Refresh usage to build the read-only index.","usage.error":"Could not read model usage","usage.allProjects":"All projects","usage.chartSummary":"Total usage over seven days: {total} tokens","usage.barDay":"{day} total {total} tokens","usage.total":"Total tokens","usage.steps":"Successful model steps","usage.stepsValue":"{count} times","usage.modelLine":"{steps} times · Cache hit {hitRate} · Input {input} token · Output {output} token","usage.input":"Input token","usage.output":"Output token","usage.cache":"Cache token","usage.hitRate":"Cache hit rate","usage.today":"Today","usage.sevenDays":"Last 7 days","usage.errors.title":"Model errors","usage.errors.toggle":"Model errors ({count} types)","usage.errors.recent":"Last 24 hours","usage.errors.empty":"No model errors were recorded in the last 24 hours.","usage.toolErrors.title":"Tool errors","usage.toolErrors.toggle":"Tool errors ({count} types)","usage.toolErrors.empty":"No tool errors were recorded in the last 24 hours.","usage.errors.count":"{count} occurrence(s)","notification.title":"Notifications","notification.description":"Browser notifications when a root task finishes or approval/choice is needed; subagent completion stays silent.","notification.enable":"Enable notifications","notification.enabled":"Notifications enabled","notification.disable":"Disable notifications","notification.denied":"Notification permission denied","notification.master":"Master switch","notification.done":"Task completion","notification.input":"Approvals & questions","notification.doneTitle":"Task complete","notification.doneBody":"{title} has finished its turn","notification.inputTitle":"Your attention needed","notification.inputBody":"{title} — {kind}","notification.kind.approval":"approval requested","notification.kind.plan-review":"plan review requested","notification.kind.question":"answer requested","notification.bellOn":"Notifications on","notification.bellOff":"Notifications off","notification.bellShow":"Show composer bell icon","quota.cardTitle":"Quota lookup","quota.navToggle":'Show "Quota lookup" entry in settings left nav',"quota.navToggleHint":'Off by default; when enabled, a "Quota lookup" entry appears at the bottom of the settings left navigation',"quota.poll":"Auto query","quota.poll.manual":"Manual only","quota.poll.minute":"{count} min","quota.window.rolling":"5h rolling","quota.window.tokens-limit-u3-n5":"5-hour tokens","quota.window.tokens-limit-u6-n1":"Weekly tokens","quota.window.tokens-limit":"Token quota","quota.window.time-limit-u5-n1":"MCP quota","quota.window.time-limit":"MCP quota","quota.window.credit-limit":"Credit quota","quota.window.credits":"Credits used","quota.window.balance":"Balance","quota.window.weekly":"This week","quota.window.monthly":"This month","quota.window.codex-5h":"Codex 5-hour window","quota.window.codex-day":"Codex daily window","quota.window.codex-week":"Codex weekly window","quota.window.codex-month":"Codex monthly window","quota.window.gemini-5h":"Gemini 5-hour window","quota.window.gemini-week":"Gemini weekly window","quota.window.claude-5h":"Claude 5-hour window","quota.window.claude-week":"Claude weekly window","quota.panel.title":"Quota usage","quota.panel.used":"Used","quota.panel.remaining":"Remaining","quota.ring.label":"Quota lookup","quota.updated":"Updated {time}","quota.refreshing":"Refreshing…","quota.empty":"No data yet","quota.resetIn":"Resets in {time}","quota.resetCard.title":"Reset card","quota.resetCard.expires":"expires {date}","quota.resetCard.expired":"expired","quota.resetCard.edit":"Add reset card","quota.advanced":"Advanced","quota.resetCard.dateLabel":"Expiry date","quota.resetCard.nameLabel":"Name (optional)","quota.resetCard.add":"Add","quota.resetCard.cancel":"Cancel","quota.resetCard.remove":"Remove","quota.retryAt":"Retry allowed after {time}","quota.refresh":"Refresh","quota.card.moveUp":"Move up","quota.card.moveDown":"Move down","quota.reorder":"Reorder","quota.usageLink":"Open the official usage page","quota.adapt":"Adapt","quota.kind.opencode-go":"OpenCode Go","quota.kind.zai-coding-cn":"Zhipu GLM Coding Plan","quota.kind.openrouter":"OpenRouter","quota.kind.kimi":"Kimi / Moonshot","quota.kind.siliconflow":"SiliconFlow","quota.kind.cliproxy":"CLIProxyAPI accounts","quota.kind.deepseek":"DeepSeek Platform","quota.kind.stepfun":"StepFun Balance","quota.kind.stepfun-step-plan":"StepFun Step Plan","quota.kind.xiaomi-token-plan-cn":"Xiaomi MiMo Token Plan","quota.window.total_token":"Plan total quota","quota.window.compensation_total_token":"Compensation credits","quota.window.plan-name":"Subscription plan","quota.window.credit-pool":"Monthly credit pool","quota.window.topup-credit":"Top-up credit","quota.window.five-hour":"5-hour quota","quota.error.no-subscription":"No active quota subscription on this account","quota.error.credential-rejected":"Console session expired; copy it from the browser again","quota.credential.editCookie":"Set console cookie (web session)","quota.credential.editToken":"Set console token (Oasis-Token, browser session)","quota.kindAuto":"Auto-detected","quota.noAdapted":"No adapted providers yet — adapt manually below","quota.disable":"Disable","quota.followAuto":"Follow auto-detect","quota.addAdapt":"Manual adapt:","quota.addPickProvider":"Pick provider","quota.addPickKind":"Pick type","quota.saveFailed":"Save failed: {error}","quota.unknownProvider":"Unknown provider","quota.error.credential-missing":"Credential missing (set the API key in DSH credentials)","quota.error.no-base-url":"This provider has no baseURL configured","quota.error.credentials-unavailable":"Credential service unavailable","quota.error.http-status":"Upstream returned an error status","quota.error.network":"Network error","quota.error.network-transient":"Unstable network (auto-retried)","quota.error.timeout":"Request timed out","quota.error.bad-payload":"Unexpected response format","quota.error.mgmt-disabled":"CLIProxyAPI management API disabled (remote-management secret-key not set)","quota.error.host-not-pinned":"baseURL differs from the domain recorded when adapting; save the adapter again","quota.error.upstream-status":"Upstream official API returned an error status","quota.credential.edit":"Set API credential","quota.credential.editManagement":"Set management key (web login key)","quota.credential.nameLabel":"Credential name","quota.credential.valueLabel":"Secret value","quota.credential.save":"Save","quota.credential.primary":"primary (one alias is enough)","quota.credential.clear":"Clear stored","quota.credential.clearConfirm":"Click again to clear","quota.credential.configured":"configured","quota.credential.notConfigured":"not set","quota.credential.saveFailed":"Failed to save credential: {error}","quota.credential.unknown-hint":"Unknown credential name","quota.credential.invalid-value":"Secret value must not be empty","quota.credential.credentials-unavailable":"Credential service unavailable","quota.error.unknown":"Unknown error","quota.unadapted":"Not adapted: pick a provider kind below first","quota.unit.day":"{count} d","quota.unit.hour":"{count} h","quota.unit.minute":"{count} min","quota.window.granted-balance":"Granted balance (unexpired)","quota.peak.nowIdle":"Off-peak now · half price","quota.peak.nowPeak":"Peak now · standard price","quota.peak.untilIdle":"Half price from {time} (in {dur})","quota.peak.untilPeak":"Peak pricing from {time} (in {dur})","quota.peak.tag.peak":"Peak","quota.peak.tag.idle":"Off-peak","quota.peak.caption":"Off-peak price is half the peak price. Peak hours (GMT+8): Mon–Fri 09:00–12:00 and 14:00–18:00. All other times are off-peak, including all day Saturday and Sunday.","quota.peak.caption.zai":"Off-peak calls deduct 50% of the base credits. Peak hours: Mon–Fri 14:00–18:00 (UTC+8). All other times are off-peak, including all day Saturday and Sunday."},l="%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2724%27 height=%2724%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E",o="%3C/svg%3E",d=e=>'-webkit-mask:url("data:image/svg+xml,'+l+e+o+'") center/contain no-repeat;mask:url("data:image/svg+xml,'+l+e+o+'") center/contain no-repeat',c={service:[["path",{d:"M4 8h16"}],["path",{d:"M4 16h16"}],["circle",{cx:"9",cy:"8",r:"2.5",fill:"black"}],["circle",{cx:"15",cy:"16",r:"2.5",fill:"black"}]],overview:[["rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}],["rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}],["rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}],["rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"}]],notify:[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0"}],["path",{d:"M16.8607 4.4824A6 6 0 0 0 6 8C6 12.499 4.589 13.956 3.262 15.326"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17H20A1 1 0 0 0 20.74 15.327C20.209 14.779 19.665 14.218 19.203 13.454"}]],health:[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"m9 12 2 2 4-4"}]],usage:[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16"}],["path",{d:"M18 17V9"}],["path",{d:"M13 17V5"}],["path",{d:"M8 17v-3"}]],quota:[["path",{d:"m12 14 4-4"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0"}]],backup:[["rect",{x:"2",y:"3",width:"20",height:"5",rx:"1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8"}],["path",{d:"M10 12h4"}]],skills:[["path",{d:"M4 19.5A2.5 2.5 0 0 1 6.5 17H20"}],["path",{d:"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"}]],subagent:[["path",{d:"M12 8V4H8"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2"}],["path",{d:"M2 14h2"}],["path",{d:"M20 14h2"}],["path",{d:"M15 13v2"}],["path",{d:"M9 13v2"}]],sessions:[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"}],["path",{d:"m9 10 2 2 4-4"}]],restart:[["path",{d:"M12 2v10"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04"}]],maintenance:[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"}]],configuration:[["path",{d:"M20 7h-9"}],["path",{d:"M14 17H5"}],["circle",{cx:"17",cy:"17",r:"3"}],["circle",{cx:"7",cy:"7",r:"3"}]]},u=e=>e.map(([e,t])=>"%3C"+e+Object.entries(t).map(([e,t])=>` ${e}=%27${t}%27`).join("")+"/%3E").join(""),p=u(c.service),m=u(c.quota),g=u(c.restart),h=u(c.sessions);function b({name:e}){const t=c[e];return void 0===t?null:r.createElement("svg",{viewBox:"0 0 24 24",width:13,height:13,fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",style:{flexShrink:0,display:"block"}},t.map(([e,t],a)=>r.createElement(e,Object.assign({key:a},t))))}function v(e){const t=e?.turn?.data?.get?.("turn-process");if("string"!=typeof t)return null;const a=t.split("|");if(""===a[0])return null;const r=Number(a[0]),s=Number(a[8]);return!Number.isFinite(r)||!Number.isFinite(s)||s<=0?null:{turn:r,subagentCount:s}}function f(e){if(!Array.isArray(e))return[];const t=[],a=new Map;for(const r of e){if(null===r||"object"!=typeof r)continue;const e="string"==typeof r.provider&&""!==r.provider?r.provider:void 0,s="string"==typeof r.model&&""!==r.model?r.model:void 0;if(void 0===e||void 0===s)continue;const n="string"==typeof r.reasoningEffort&&""!==r.reasoningEffort?r.reasoningEffort:void 0,i=e+"\0"+s+"\0"+(n??"");let l=a.get(i);void 0===l&&(l={provider:e,model:s,...void 0!==n?{reasoningEffort:n}:{},count:0},a.set(i,l),t.push(l)),l.count+=1}return t}function y(e){return(Array.isArray(e)?e:[]).map(e=>{if(null===e||"object"!=typeof e)return"";const t="string"==typeof e.provider?e.provider:"",a="string"==typeof e.model?e.model:"",r="string"==typeof e.reasoningEffort&&""!==e.reasoningEffort?e.reasoningEffort:void 0;return`${t}/${a}${void 0!==r?` (${r})`:""}${Number.isFinite(e.count)&&e.count>1?` ×${e.count}`:""}`}).filter(e=>""!==e).join(" · ")}return a.inject=["slots","connection","timer","locale","sessions","settingsScope"],a.apply=function(t){const{useState:a,useEffect:l,useRef:o}=r,c=(e,a)=>Promise.resolve(t.connection.rpc.call("/dsh-service",e,a)),u=new Map,k=new Map,x=new Map,w=(e,t=!1)=>{if("string"!=typeof e||""===e)return Promise.resolve(new Map);const a=Date.now();if(!t&&a-(k.get(e)??0)<1e4)return Promise.resolve((e=>{const t=u.get(e);return void 0===t?new Map:t.byTurn})(e));let r=x.get(e);return void 0===r&&(r=c("subagent-dispatches",{parentId:e,limit:400}).then(t=>{const a=t&&!0===t.ok&&Array.isArray(t.value?.records)?t.value.records:[],r=new Map,s=[];for(const e of a){if(null===e||"object"!=typeof e)continue;s.push(e);const t="number"==typeof e.turn&&Number.isFinite(e.turn)?e.turn:void 0;if(void 0===t)continue;let a=r.get(t);void 0===a&&(a=[],r.set(t,a)),a.push(e)}return u.set(e,{byTurn:r,records:s}),k.set(e,Date.now()),r}).catch(()=>(k.set(e,Date.now()),null)),x.set(e,r),r.finally(()=>x.delete(e)).catch(()=>{})),r};function E(e){const t=O(),[s,n]=a("");return l(()=>{let a=!1;const r=e.matched&&"number"==typeof e.matched.turn?e.matched.turn:void 0,s="string"==typeof e.sessionId?e.sessionId:void 0;if(void 0!==r&&void 0!==s)return w(s).then(i=>{if(a)return;const l=u.get(s),o=(null===i?void 0===l?new Map:l.byTurn:i).get(r),d=f(o);if(0===d.length){if(null===i&&void 0===l)return void n("");const a=Number.isFinite(e.matched.subagentCount)&&e.matched.subagentCount>0?String(e.matched.subagentCount):String(o?.length??1);return void n(`${t("1"===a?"subagent.turnTail.countOne":"subagent.turnTail.countMany",{count:a})}${t("subagent.turnTail.unknown")}`)}n(`${t("subagent.turnTail.label")}${y(d)}`)}).catch(()=>{a||n("")}),()=>{a=!0};n("")},[e.matched&&e.matched.turn,e.sessionId]),""===s?null:r.createElement("div",{"data-testid":"subagent-models-turn-tail","data-dsh-service-subagent-models":!0,style:{fontSize:"12px",lineHeight:"18px",color:"var(--dsh-svc-text-muted, var(--dsw-alias-label-secondary, #6b7280))",padding:"2px 0",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"}},s)}function S(e){const s=O(),[n,i]=a("");return l(()=>{let a=!1;const r="string"==typeof e.sessionId?e.sessionId:void 0;if(void 0===r)return void i("");const n=()=>{const e=u.get(r),t=f(void 0===e?[]:e.records);i(0===t.length?"":`${s("subagent.turnTail.label")}${y(t)}`)},l=()=>w(r).then(e=>!a&&(n(),null!==e)).catch(()=>(a||i(""),!1));l();const o=()=>{a||(w(r,!0).then(e=>{a||n()}).catch(()=>{a||i("")}),d=t.timer?.timeout?.(o,2e4))};let d;return Promise.resolve(l()).then(e=>{!a&&e&&(d=t.timer?.timeout?.(o,2e4))}),()=>{a=!0,"function"==typeof d&&d()}},[e.sessionId]),""===n?null:r.createElement("div",{"data-testid":"subagent-models-dock","data-dsh-service-subagent-models-dock":!0,style:{fontSize:"12px",lineHeight:"18px",color:"var(--dsh-svc-text-muted, var(--dsw-alias-label-secondary, #6b7280))",padding:"2px 4px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"}},n)}let q;"undefined"!=typeof document&&document.head&&(q=document.createElement("style"),q.textContent=["body{--dsh-svc-page-bg:#f4f5f7;--dsh-svc-content-bg:var(--dsw-alias-bg-layer-2,#ffffff);--dsh-svc-raised-bg:var(--dsw-alias-bg-layer-3,#ffffff);--dsh-svc-text:var(--dsw-alias-label-primary,#202124);--dsh-svc-text-muted:var(--dsw-alias-label-secondary,#6b7280);--dsh-svc-border:var(--dsw-alias-border-l1,#e5e7eb);--dsh-svc-brand:var(--dsw-alias-brand-primary,#2563eb);--dsh-svc-brand-text:var(--dsw-alias-label-primary-foreground,#ffffff);--dsh-svc-info:#2563eb;--dsh-svc-success:var(--dsw-alias-state-success-primary,#16a34a);--dsh-svc-warning:var(--dsw-alias-state-warn-primary,#d97706);--dsh-svc-danger:var(--dsw-alias-state-error-primary,#dc2626)}","body{--dsh-svc-card-bg:#eceef1}","body{--dsh-svc-border-strong:#b9c0ca}","body[data-ds-dark-theme]{--dsh-svc-border-strong:#52565f}","body[data-ds-dark-theme]{--dsh-svc-card-bg:var(--dsw-alias-bg-layer-2,#202126)}","body[data-ds-dark-theme]{--dsh-svc-page-bg:var(--dsw-alias-bg-layer-1,#17181c);--dsh-svc-content-bg:var(--dsw-alias-bg-layer-2,#202126);--dsh-svc-raised-bg:var(--dsw-alias-bg-layer-3,#292a31);--dsh-svc-text:var(--dsw-alias-label-primary,#f3f4f6);--dsh-svc-text-muted:var(--dsw-alias-label-secondary,#a1a1aa);--dsh-svc-border:var(--dsw-alias-border-l1,#3f414a)}","body[data-ds-dark-theme]{--dsh-svc-brand-text:#111318}",":root{--dsh-svc-space-1:4px;--dsh-svc-space-2:8px;--dsh-svc-space-3:12px;--dsh-svc-space-4:16px;--dsh-svc-space-5:20px;--dsh-svc-space-6:24px;--dsh-svc-space-8:32px;--dsh-svc-radius-control:8px;--dsh-svc-radius-card:12px;--dsh-svc-radius-panel:16px;--dsh-svc-radius-pill:999px;--dsh-svc-control-h:36px;--dsh-svc-control-h-compact:32px;--dsh-svc-control-h-primary:40px;--dsh-svc-content-max:800px;--dsh-svc-dur-fast:120ms;--dsh-svc-dur-view:170ms;--dsh-svc-font-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}","body{--dsh-svc-surface-bg:var(--dsh-svc-card-bg);--dsh-svc-tab-active-bg:var(--dsh-svc-text);--dsh-svc-tab-active-danger:var(--dsh-svc-text);--dsh-svc-tab-active-text:#ffffff}","body[data-ds-dark-theme]{--dsh-svc-tab-active-text:#111318}","[data-dsh-service-nav]>svg:first-child,[data-dsh-service-quota-nav]>svg:first-child,[data-dsh-service-restart-nav]>svg:first-child,[data-dsh-service-sessions-nav]>svg:first-child{display:none}","[data-dsh-service-nav]::before,[data-dsh-service-quota-nav]::before,[data-dsh-service-restart-nav]::before,[data-dsh-service-sessions-nav]::before{content:'';flex:none;width:16px;height:16px;background:currentColor}","[data-dsh-service-nav]::before{"+d(p)+"}","[data-dsh-service-quota-nav]::before{"+d(m)+"}","[data-dsh-service-sessions-nav]::before{"+d(h)+"}","[data-dsh-service-restart-nav]::before{"+d(g)+"}","@media (max-width:640px){","[data-dshsvc-root] .dshsvc-tabs{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:3px}","[data-dshsvc-root] .dshsvc-tabs::-webkit-scrollbar{display:none}","[data-dshsvc-root] .dshsvc-tab{padding:9px 13px;min-height:36px;box-sizing:border-box;font-size:13px;white-space:nowrap;flex:none}","[data-dshsvc-root] .dshsvc-tab svg{flex:none}","}","@keyframes dshsv-locate-flash{0%,100%{background-color:rgba(198,128,0,0.10)}30%,70%{background-color:rgba(198,128,0,0.45)}}.dshsv-locate-flash{animation:dshsv-locate-flash 2s ease}","[data-dshsvc-root]{color:var(--dsh-svc-text);font-size:14px;line-height:1.55;background:var(--dsh-svc-page-bg);border-radius:var(--dsh-svc-radius-card);padding:2px}","[data-dshsvc-root] .dshsvc-page{width:100%;max-width:var(--dsh-svc-content-max);margin:0 auto}",'[data-dshsvc-root] button:focus-visible,[data-dshsvc-root] [role="switch"]:focus-visible,[data-dshsvc-root] select:focus-visible,[data-dshsvc-root] input:focus-visible{outline:2px solid var(--dsh-svc-brand);outline-offset:2px;border-radius:var(--dsh-svc-radius-control)}',"@media (prefers-reduced-motion:reduce){[data-dshsvc-root] *,[data-dshsvc-root] *::before,[data-dshsvc-root] *::after{transition-duration:0.01ms !important;animation-duration:0.01ms !important}}",'[data-testid^="sessions-project-header-"]{transition:background var(--dsh-svc-dur-fast,120ms)}','[data-testid^="sessions-project-header-"]:hover{background:var(--dsw-alias-bg-layer-3,#f2f3f5)}',"[data-dshsvc-root] .dshsvc-tabs{display:flex;align-items:center;flex-wrap:wrap;gap:2px;width:100%;box-sizing:border-box;border:0.5px solid var(--dsh-svc-border);border-radius:var(--dsh-svc-radius-card);overflow:hidden}","[data-dshsvc-root] .dshsvc-tab{position:relative;display:inline-flex;align-items:center;gap:5px;padding:8px 12px;margin:0;border:0;border-radius:0;background:transparent;color:var(--dsh-svc-text-muted);font:inherit;font-size:12px;font-weight:550;line-height:16px;cursor:pointer;transition:color var(--dsh-svc-dur-fast) ease,background var(--dsh-svc-dur-fast) ease}",'[data-dshsvc-root] .dshsvc-tab[aria-selected="true"]{background:var(--dsh-svc-tab-active-bg);color:var(--dsh-svc-tab-active-text);font-weight:650;border-radius:8px}',"[data-dshsvc-root] .dshsvc-subtabs{display:flex;flex-wrap:wrap;gap:2px;margin:10px 0 0;border-bottom:1px solid var(--dsh-svc-border)}","[data-dshsvc-root] .dshsvc-subtab{appearance:none;background:transparent;border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 10px;font:inherit;font-size:13px;font-weight:550;color:var(--dsh-svc-text-muted);cursor:pointer;transition:color var(--dsh-svc-dur-fast) ease,border-color var(--dsh-svc-dur-fast) ease}",'[data-dshsvc-root] .dshsvc-subtab[aria-selected="true"]{color:var(--dsh-svc-brand);border-bottom-color:var(--dsh-svc-brand);font-weight:700}',"[data-dshsvc-root] .dshsvc-page-header{margin:14px 2px 2px}","[data-dshsvc-root] .dshsvc-page-header-row{display:flex;align-items:center;justify-content:space-between;gap:var(--dsh-svc-space-3);flex-wrap:wrap}"].join(""),document.head.appendChild(q)),t.effect(()=>()=>{q&&q.remove()},"dsh-service theme styles"),t.effect(()=>t.locale.register(s,{zh:n,en:i}),"dsh-service dictionaries");const C=t.locale.bind(s),T=()=>"zh"===t.locale?.getSnapshot?.()?.active?"zh":"en",A=(e,t={})=>{const a=Number(e);return Number.isFinite(a)?!0===t.billions&&a>=1e9?Math.round(a/1e8)/10+"B":a>=1e6?Math.round(a/1e5)/10+"M":a>=1e3?Math.round(a/100)/10+"K":a.toLocaleString():t.invalid??""},I={healthDiagnostics:!0,modelUsage:!0,quotaLookup:!0,backupMaintenance:!0,taskNotifications:!0,healthz:!0,skillManager:!0,subagentRoute:!0,subagentModelsDock:!0,mobileAdaptation:!1,sessionManager:!0},R=t.settingsScope.bind({namespace:s}),z=()=>R.getSnapshot(),M=e=>!1!==Object.assign({},I,z().value||{})[e],j=()=>{const[e,t]=r.useState(z());return r.useEffect(()=>R.subscribe(()=>t(z())),[]),{snapshot:e,value:Object.assign({},I,e.value||{})}};t.effect(()=>function(e){if("undefined"==typeof document||!document.body)return()=>{};let t=!1,a=null,r=null,s=null;const n=()=>{t||null!==a||("function"==typeof requestAnimationFrame?a=requestAnimationFrame(()=>{a=null,i()}):i())},i=()=>{if(t)return;const a="function"==typeof document.querySelector?document.querySelector('[role="dialog"] nav'):null;if(a!==r&&(null!==s&&s.disconnect(),s=null,r=a,null!==r&&(s=new MutationObserver(n),s.observe(r,{childList:!0,subtree:!0,characterData:!0}))),null===r)return;const i="function"==typeof r.querySelectorAll?r.querySelectorAll("button"):document.querySelectorAll('[role="dialog"] nav button');for(const t of i){const a=(t.textContent||"").trim();for(const r of e){const e=String(r.label()||"").trim();e&&a===e?t.setAttribute(r.attr,""):t.removeAttribute(r.attr)}}};i();const l=new MutationObserver(n);return l.observe(document.body,{childList:!0,subtree:!0}),()=>{t=!0,l.disconnect(),null!==s&&s.disconnect(),s=null,r=null,null!==a&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(a),a=null;for(const t of e)for(const e of document.querySelectorAll("["+t.attr+"]"))e.removeAttribute(t.attr)}}([{attr:"data-dsh-service-nav",label:()=>C("nav.label")},{attr:"data-dsh-service-quota-nav",label:()=>C("tabs.quota")},{attr:"data-dsh-service-restart-nav",label:()=>C("nav.restart")},{attr:"data-dsh-service-sessions-nav",label:()=>C("tabs.sessions")}]),"dsh-service settings nav icons");const O=()=>{const[,e]=a(t.locale.getSnapshot());return l(()=>t.locale.subscribe(()=>e(t.locale.getSnapshot())),[]),C},H={minHeight:"var(--dsh-svc-control-h, 36px)",padding:"6px 14px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid transparent",cursor:"pointer",fontSize:"13px",fontWeight:550,transition:"border-color 120ms ease, color 120ms ease, background 120ms ease",lineHeight:"20px"},D=e=>"primary"===e?{...H,background:"var(--dsh-svc-brand)",borderColor:"var(--dsh-svc-brand)",color:"var(--dsh-svc-brand-text)"}:"danger"===e?{...H,background:"var(--dsh-svc-danger)",borderColor:"var(--dsh-svc-danger)",color:"var(--dsh-svc-brand-text)"}:"dangerGhost"===e?{...H,background:"transparent",color:"var(--dsh-svc-danger)",borderColor:"var(--dsh-svc-danger)"}:"brandGhost"===e?{...H,background:"transparent",color:"var(--dsh-svc-brand)",borderColor:"var(--dsh-svc-brand)"}:"ghost"===e?{...H,background:"transparent",color:"var(--dsh-svc-text)",borderColor:"var(--dsh-svc-border-strong)"}:"neutral"===e?{...H,background:"var(--dsh-svc-page-bg)",color:"var(--dsh-svc-text)",borderColor:"var(--dsh-svc-border-strong)"}:{...H,background:"var(--dsh-svc-content-bg)",color:"var(--dsh-svc-text)",borderColor:"var(--dsh-svc-border-strong)"},N=e=>Object.assign({},H,{background:"transparent",color:"var(--dsh-svc-text)",borderColor:"var(--dsh-svc-border-strong)",minHeight:"28px",padding:"4px 10px",fontSize:"12px",borderRadius:"var(--dsh-svc-radius-control)"},e),L=(e,t)=>Object.assign({display:"inline-flex",alignItems:"center",flex:"none",fontSize:"10px",lineHeight:"16px",padding:"1px 6px",borderRadius:999,whiteSpace:"nowrap",...{success:{background:"rgba(16,185,129,0.16)",color:"var(--dsh-svc-success)"},warning:{background:"rgba(198,128,0,0.14)",color:"var(--dsh-svc-warning)"},danger:{background:"rgba(220,38,38,0.12)",color:"var(--dsh-svc-danger)"},info:{background:"rgba(37,99,235,0.10)",color:"var(--dsh-svc-info)"},neutral:{background:"var(--dsh-svc-page-bg)",color:"var(--dsh-svc-text-muted)"}}[e]||{}},t),$=e=>Object.assign({background:"var(--dsh-svc-surface-bg)",color:"var(--dsh-svc-text)",border:"1px solid var(--dsh-svc-border)",borderRadius:"var(--dsh-svc-radius-control)",padding:"10px"},e),W=["overview","usage","quota","diagnostics","maintenance","configuration"],B={overview:"tabs.overview",usage:"tabs.usage",quota:"tabs.quota",diagnostics:"tabs.health",maintenance:"tabs.maintenance",configuration:"tabs.configuration"},F={usage:"modelUsage",quota:"quotaLookup",diagnostics:"healthDiagnostics"},P=["sessions","skills","subagent","backup","restart"],_={sessions:"tabs.sessions",skills:"tabs.skills",subagent:"tabs.subagent",backup:"tabs.backup",restart:"tabs.restart"},U={sessions:"sessionManager",skills:"skillManager",subagent:"subagentRoute",backup:"backupMaintenance"},V=e=>P.filter(t=>void 0===U[t]||!1!==e[U[t]]).map(e=>({id:e,labelKey:_[e]})),K=(e,t)=>{const a=V(t);return 0===a.length?null:a.some(t=>t.id===e)?e:a[0].id},G=[{id:"features",labelKey:"tabs.features"},{id:"notifications",labelKey:"tabs.notifications"}],Y={quota:"page.quota.desc",diagnostics:"page.diagnostics.desc",configuration:"page.configuration.desc"};function J({title:e,description:t,action:a,secondary:s}){return r.createElement("header",{"data-testid":"svc-page-header",className:"dshsvc-page-header"},r.createElement("div",{className:"dshsvc-page-header-row"},r.createElement("h2",{className:"dshsvc-page-title",style:{margin:0,fontSize:"18px",fontWeight:700,lineHeight:1.4,color:"var(--dsh-svc-text)"}},e),null!=a?a:null,null!=s?r.createElement("div",{className:"dshsvc-page-secondary",style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},s):null),t?r.createElement("p",{className:"dshsvc-page-desc",style:{margin:"2px 0 0",fontSize:"12px",color:"var(--dsh-svc-text-muted)",lineHeight:1.5}},t):null)}function Q({items:e,activeId:t,onChange:a,testIdPrefix:s,variant:n,dotLabel:i,ariaLabel:l}){const o="sub"===n;return r.createElement("div",{role:"tablist","aria-label":l,className:o?"dshsvc-subtabs":"dshsvc-tabs","data-testid":s+"-list"},e.map(e=>{const n=e.id===t,l=o?n?{color:"var(--dsh-svc-brand)",borderBottom:"2px solid var(--dsh-svc-brand)",fontWeight:700}:null:n?{background:"var(--dsh-svc-tab-active-bg)",color:"var(--dsh-svc-tab-active-text)",fontWeight:650,borderRadius:"8px"}:null;return r.createElement("button",{key:e.id,type:"button",role:"tab","aria-selected":String(n),"data-testid":s+"-"+e.id,className:o?"dshsvc-subtab":"dshsvc-tab",style:l,onClick:()=>a(e.id)},void 0!==e.icon?r.createElement(b,{name:e.icon}):null,e.label,e.warning?r.createElement("span",{"data-testid":"tab-dot-"+e.id,"aria-label":i,style:{position:"absolute",top:"-3px",right:"-3px",width:"8px",height:"8px",borderRadius:"50%",background:"var(--dsw-alias-state-warn-primary)",boxShadow:"0 0 0 2px var(--dsw-alias-bg-layer-1)"}}):null,e.badge?r.createElement("span",{"data-testid":e.badge.testid,style:{position:"absolute",top:"-7px",right:"-10px",fontSize:"9px",lineHeight:"14px",padding:"0 4px",borderRadius:"999px",background:"var(--dsw-alias-state-warn-primary)",color:"var(--dsh-svc-brand-text)",fontWeight:700}},e.badge.text):null)}))}let X=!1,Z=!0,ee=!0,te=!0;try{X="true"===localStorage.getItem("dsh-service-notify")}catch(e){}try{Z="false"!==localStorage.getItem("dsh-service-notify-done")}catch(e){}try{ee="false"!==localStorage.getItem("dsh-service-notify-input")}catch(e){}try{te="false"!==localStorage.getItem("dsh-service-notify-bell")}catch(e){}const ae=new Set,re=new Set,se=(e,t)=>{try{localStorage.setItem(e,t?"true":"false")}catch(e){}},ne=()=>{for(const e of ae)e()},ie=e=>{te=!0===e,se("dsh-service-notify-bell",te),(()=>{for(const e of re)e()})()},le=()=>{const[,e]=a(0),[t,s]=a(X),[n,i]=a(Z),[l,o]=a(ee),[d,c]=a(te);return r.useEffect(()=>{const t=()=>{s(X),i(Z),o(ee),c(te),e(e=>e+1)};return ae.add(t),re.add(t),()=>{ae.delete(t),re.delete(t)}},[]),{enabled:t,done:n,input:l,bell:d,setEnabled:e=>{return X=t=e,se("dsh-service-notify",t),void ne();var t},setDone:e=>{return Z=t=e,se("dsh-service-notify-done",t),void ne();var t},setInput:e=>{return ee=t=e,se("dsh-service-notify-input",t),void ne();var t},setBell:ie}},oe=({storageKey:e,legacyStorageKey:r,sectionId:s,order:n,labelKey:i,feature:o,renderContent:d})=>{let c=!1;try{let t=localStorage.getItem(e);if(null===t&&void 0!==r){const a=localStorage.getItem(r);if(null!==a){try{localStorage.setItem(e,a)}catch(e){}t=a}}c="true"===t}catch(e){}let u=null;const p=new Set,m=()=>{u&&(u(),u=null),c&&(void 0===o||M(o))&&(u=t.slots.register({name:"settings.section",id:s,order:n,label:()=>C(i)},d))},g=t=>{c=!0===t;try{localStorage.setItem(e,c?"true":"false")}catch(e){}m();for(const e of p)e()};return{sync:m,setEnabled:g,useEnabled:()=>{const[e,t]=a(c);return l(()=>{const e=()=>t(c);return p.add(e),t(c),()=>p.delete(e)},[]),[e,g]},disposeEntry:()=>{u&&(u(),u=null)}}},de=oe({storageKey:"dsh-service-shortcut-restart",legacyStorageKey:"dsh-service-restart-nav",sectionId:"dsh-service-restart",order:499,labelKey:"nav.restart",renderContent:()=>r.createElement(pt,null)}),ce=oe({storageKey:"dsh-service-shortcut-quota",legacyStorageKey:"dsh-service-quota-nav",sectionId:"dsh-service-quota",order:498,labelKey:"tabs.quota",feature:"quotaLookup",renderContent:()=>r.createElement(la,null)}),ue=oe({storageKey:"dsh-service-shortcut-sessions",legacyStorageKey:"dsh-service-sessions-nav",sectionId:"dsh-service-sessions",order:495,labelKey:"tabs.sessions",feature:"sessionManager",renderContent:()=>r.createElement(va,null)});let pe=null,me=null,ge=null,he=null,be="",ve=!1,fe=null,ye=null,ke=!1;const xe="dsh-service-skills-batch-pending",we=new Set,Ee=()=>{for(const e of we)e()},Se=e=>{try{e?localStorage.setItem(xe,"true"):localStorage.removeItem(xe)}catch(e){}},qe=e=>{Se("planned"===e||"running"===e)},Ce=()=>{null!==fe&&(clearInterval(fe),fe=null)},Te=(e=!0)=>{if(null!==pe&&"running"===pe.phase&&M("skillManager")&&null===fe){const t=async()=>{try{const e=await c("skills-batch-status",{});if(!e.ok)return;const t=null!==pe?pe.phase:null;pe=e.value,qe(e.value.phase),"running"===t&&"running"!==e.value.phase&&(Ce(),ve=!0),Ee()}catch(e){}};e&&t(),fe=setInterval(()=>{t()},2e3)}},Ae=async()=>{if(null!==ge)return ge;try{const e=await c("skills-models",{});if(!e.ok)return ge=[],ge;ge=e.value.models??[],null===he&&(he=ra(ge,e.value.current))}catch(e){ge=[]}return ge},Ie=()=>ke?Promise.resolve(pe):(null!==ye||(ye=(async()=>{try{const e=await c("skills-batch-status",{});e.ok&&(ke=!0,qe(e.value.phase),"idle"!==e.value.phase&&(pe=e.value,Te(!1),Ee()))}catch(e){}return pe})().finally(()=>{ye=null})),ye),Re=()=>{const[,e]=a(0);return l(()=>{const t=()=>e(e=>e+1);return we.add(t),()=>we.delete(t)},[]),{batch:pe,plan:me,models:ge,modelItem:he,error:be}};t.effect(()=>{const e=R.subscribe(()=>{M("skillManager")||Ce()});return()=>{e(),Ce()}},"dsh-service skills batch polling lifecycle"),(()=>{try{return"true"===localStorage.getItem(xe)}catch(e){return!1}})()&&Ie();const ze={approval:"notification.kind.approval","plan-review":"notification.kind.plan-review",question:"notification.kind.question"},Me=(e,t)=>{if("undefined"!=typeof Notification&&"granted"===Notification.permission)try{const a=new Notification(e,{body:t});a.onclick=()=>{try{window.focus()}catch(e){}try{a.close()}catch(e){}}}catch(e){}},je=()=>{try{if("function"==typeof t.get)return t.get("modelDirectories")}catch(e){}},Oe={anyRunning:!1,runningSessionIds:new Set};if(t.sessions&&"function"==typeof t.sessions.list?.subscribe){const e=new Map;let a=!1,r=null,s=null;const n=()=>{const r=t.sessions.list.getSnapshot();if(r&&r.byId)if(Oe.runningSessionIds=new Set(Object.entries(r.byId).filter(([,e])=>!0===e.running).map(([e])=>e)),Oe.anyRunning=Oe.runningSessionIds.size>0,a){for(const[t,a]of Object.entries(r.byId)){const r={running:!0===a.running,pending:void 0!==a.pendingInteraction},s=e.get(t);if(void 0!==s&&(s.running&&!r.running&&"subagent"!==a.origin&&M("taskNotifications")&&X&&Z&&Me(C("notification.doneTitle"),C("notification.doneBody",{title:a.displayTitle||t})),!s.pending&&r.pending&&M("taskNotifications")&&X&&ee)){const e=ze[a.pendingInteraction],r=e?C(e):String(a.pendingInteraction);Me(C("notification.inputTitle"),C("notification.inputBody",{title:a.displayTitle||t,kind:r}))}e.set(t,r)}for(const t of[...e.keys()])t in r.byId||e.delete(t);Oe.anyRunning&&At()}else{a=!0;for(const[t,a]of Object.entries(r.byId))e.set(t,{running:!0===a.running,pending:void 0!==a.pendingInteraction})}},i=()=>{null!==r&&(r(),r=null),null!==s&&(s(),s=null),e.clear(),a=!1,Oe.anyRunning=!1,Oe.runningSessionIds=new Set},l=()=>{M("taskNotifications")||M("quotaLookup")?null===r&&(r=t.sessions.list.subscribe(()=>n()),s=t.on("connection/reset",()=>{e.clear(),a=!1}),n()):i()};l();const o=R.subscribe(l);t.effect(()=>()=>{o(),i()},"dsh-service: shared session observation")}const He=new Set,De=new Set;let Ne={status:"idle",elapsedMs:0},Le=0,$e=null,We=!1;const Be=e=>{Ne=e;for(const t of He)t(e)},Fe=()=>{const e={update:$e,open:We};for(const t of De)t(e)},Pe=e=>{We=!0===e,Fe()},_e=()=>{const[e,t]=a({update:$e,open:We});return l(()=>(De.add(t),t({update:$e,open:We}),()=>De.delete(t)),[]),e},Ue=new Set;let Ve={stage:0,activity:null,busy:!1,error:null};const Ke=e=>{Ve=e;for(const t of Ue)t(e)},Ge=()=>{const[e,t]=a(Ve);return l(()=>(Ue.add(t),t(Ve),()=>Ue.delete(t)),[]),e},Ye=new Set;let Je=null;const Qe=()=>{const[e,t]=a(Je);return l(()=>(Ye.add(t),t(Je),()=>Ye.delete(t)),[]),e};let Xe=null;const Ze=()=>(null===Xe&&(Xe=c("version",{}).then(e=>(e&&e.ok&&(e=>{const t=e?e.runtimeEnv:void 0;null!==t&&"object"==typeof t&&"boolean"==typeof t.manualStartLikely&&(void 0!==t.supervisorKind&&null!==t.supervisorKind&&"string"!=typeof t.supervisorKind||(e=>{Je=e;for(const t of Ye)t(e)})({platform:"string"==typeof t.platform?t.platform:"",supervisorKind:void 0===t.supervisorKind||null===t.supervisorKind?null:t.supervisorKind,manualStartLikely:t.manualStartLikely}))})(e.value),e)).catch(()=>(Xe=null,null))),Xe);let et=!1;const tt=async()=>{Ke({...Ve,busy:!0,error:null});try{const e=await c("activity",{});if(e&&!1===e.ok)throw console.error("dsh-service: activity check failed",e.error),new Error(C("error.activity"));const t=e&&e.value?e.value:{hasActive:!1,items:[]};Ke({...Ve,activity:t,stage:t.hasActive?3:1,busy:!1,error:null})}catch(e){Ke({...Ve,error:e&&e.message?String(e.message):String(e),stage:0,busy:!1})}},at=async e=>{Ke({...Ve,busy:!0,error:null});try{const t=await c("web",{force:!0===e});if(t&&!1===t.ok){if("active-work"===t.error&&t.value)return void Ke({...Ve,activity:t.value,stage:3,busy:!1,error:null});throw console.error("dsh-service: restart failed",t.error),new Error(C("error.restart"))}const a=t&&t.value?t.value.instanceId:void 0;if("string"!=typeof a||0===a.length)throw new Error(C("error.instance"));Ke({...Ve,stage:2,busy:!1,error:null}),rt(a).catch(e=>console.error("dsh-service: recovery failed",e))}catch(e){Ke({...Ve,error:e&&e.message?String(e.message):String(e),stage:0,busy:!1})}},rt=async e=>{const a=++Le;let r=0,s=1e3;for(Be({status:"waiting",elapsedMs:r});r<6e4&&a===Le;){const n=Math.min(s,6e4-r);try{await t.timer.timeout(n)}catch(e){return}if(a!==Le)return;r+=n,Be({status:"waiting",elapsedMs:r});try{const t=await c("version",{}),a=t&&t.ok?t.value&&t.value.instanceId:void 0;if("string"==typeof a&&a.length>0&&a!==e)return void window.location.reload()}catch(e){}if(r>=6e4)return void Be({status:"timeout",elapsedMs:r});s=Math.min(2*s,1e4)}};function st(){const e=_e(),t=O();return null===e.update?null:r.createElement("button",{type:"button",onClick:()=>Pe(!0),style:{margin:"4px",padding:"5px 8px",borderRadius:"999px",border:0,background:"var(--dsh-svc-warning)",color:"var(--dsh-svc-brand-text)",cursor:"pointer",fontSize:"11px",fontWeight:600}},t("update.badge"))}t.effect(()=>()=>{Le+=1,He.clear(),Ue.clear(),Ye.clear(),De.clear()},"dsh-service recovery");const nt="@deepseek-ai/dsh",it=(e,t)=>"string"==typeof t&&0!==t.length&&/^[0-9A-Za-z.+_-]+$/.test(t)?`${e}${t}`:null,lt=(e,t,a)=>{const s=`version-dsh-channel-${e}-${t}`;return a?r.createElement("a",{"data-testid":s,href:a,target:"_blank",rel:"noreferrer",style:{color:"var(--dsw-alias-brand-primary)",textDecoration:"underline",marginLeft:"10px"}},t):r.createElement("span",{"data-testid":s,style:{marginLeft:"10px"}},t)},ot=(e,t,a)=>r.createElement("div",{style:{whiteSpace:"nowrap",lineHeight:1.7}},e("latest"===t?"update.channelStable":"next"===t?"update.channelPreview":"update.channelAlpha")," ",r.createElement("span",{"data-testid":`version-dsh-channel-${t}`,style:{marginLeft:"4px"}},a||"—"),lt(t,"npmjs",it(`https://www.npmjs.com/package/${nt}/v/`,a)),lt(t,"npmmirror",it(`https://www.npmmirror.com/package/${nt}/home?version=`,a))),dt=(e,t)=>r.createElement("div",{style:{margin:"4px 0",fontSize:"12px",lineHeight:1.7,color:"var(--dsw-alias-label-secondary)",display:"flex",flexDirection:"column",gap:"6px"}},ot(e,"latest",t&&t.latest),ot(e,"next",t&&t.next),...t&&Object.prototype.hasOwnProperty.call(t,"alpha")?[ot(e,"alpha",t.alpha)]:[]);function ct(){const e=(()=>{const[e,t]=a(Ne);return l(()=>(He.add(t),t(Ne),()=>He.delete(t)),[]),e})(),t=_e(),s=O();if("idle"===e.status&&!t.open)return null;if("idle"===e.status){const e=t.update;return null===e?null:r.createElement("div",{style:{position:"fixed",inset:0,zIndex:1e4,display:"flex",alignItems:"center",justifyContent:"center",padding:"24px",background:"rgba(12, 14, 20, 0.72)",backdropFilter:"blur(4px)",pointerEvents:"auto"}},r.createElement("div",{style:{width:"min(420px, 100%)",padding:"24px",borderRadius:"12px",background:"var(--dsw-alias-bg-overlay)",color:"var(--dsw-alias-label-primary)",border:"1px solid var(--dsw-alias-border-l2)",boxShadow:"0 18px 60px rgba(0,0,0,0.35)",textAlign:"center"}},r.createElement("div",{style:{fontSize:"18px",fontWeight:700,marginBottom:"10px"}},s("update.details.title")),r.createElement("p",{style:{margin:"4px 0",fontSize:"13px"}},s("update.details.current",{version:e.current})),r.createElement("p",{style:{margin:"4px 0",fontSize:"13px"}},s("update.details.latest",{version:e.latest})),dt(s,e.tags),r.createElement("button",{style:Object.assign({},N(),{marginTop:"16px",padding:"7px 16px"}),onClick:()=>Pe(!1)},s("update.details.close"))))}const n="timeout"===e.status;return r.createElement("div",{style:{position:"fixed",inset:0,zIndex:1e4,display:"flex",alignItems:"center",justifyContent:"center",padding:"24px",background:"rgba(12, 14, 20, 0.72)",backdropFilter:"blur(4px)",pointerEvents:"auto"}},r.createElement("div",{style:{width:"min(420px, 100%)",padding:"24px",borderRadius:"12px",background:"var(--dsw-alias-bg-overlay)",color:"var(--dsw-alias-label-primary)",border:"1px solid var(--dsw-alias-border-l2)",boxShadow:"0 18px 60px rgba(0,0,0,0.35)",textAlign:"center"}},r.createElement("div",{style:{fontSize:"18px",fontWeight:700,marginBottom:"10px"}},s(n?"recovery.timeout.title":"recovery.waiting.title")),r.createElement("p",{style:{margin:0,fontSize:"13px",lineHeight:1.7,color:"var(--dsw-alias-label-secondary)"}},n?s("recovery.timeout.body"):s("recovery.waiting.body",{seconds:Math.floor(e.elapsedMs/1e3)})),n?r.createElement("button",{style:Object.assign({},N(),{marginTop:"16px",padding:"7px 16px"}),onClick:()=>window.location.reload()},s("recovery.manual")):null))}function ut(){return r.createElement(ct,null)}function pt({showNavToggle:e}){const t=O(),a=Ge(),s=Qe();l(()=>{Ze()},[]);const[n,i]=de.useEnabled(),o=D("danger"),d=D("dangerGhost"),c=D("ghost"),u={color:"var(--dsw-alias-label-secondary)",fontSize:"12px",marginTop:"8px",lineHeight:1.5},p={padding:"4px 0 14px",marginBottom:"12px",color:"var(--dsw-alias-label-primary)"},m=$(),g={fontSize:"14px",fontWeight:700,margin:"0 0 8px",color:"var(--dsw-alias-label-primary)"};if(2===a.stage)return r.createElement("div",{"data-testid":"restart-card",style:p},r.createElement("div",{style:g},t("restart.title")),r.createElement("p",{style:{margin:0,fontSize:"13px"}},t("restart.sent")),r.createElement("p",{style:u},t(null!==s&&!0===s.manualStartLikely?"restart.sentManualHint":"restart.sentHint")));const h={agent:t("activity.agent"),job:t("activity.job"),terminal:t("activity.terminal")},b=a.activity&&Array.isArray(a.activity.items)?a.activity.items:[],v=null!==s&&!0===s.manualStartLikely?r.createElement("p",{"data-testid":"restart-manual-warn",style:Object.assign({},u,{color:"var(--dsw-alias-state-warn-primary)",margin:"6px 0 0"})},t("restart.manualWarn")):null,f=3===a.stage?r.createElement("div",{style:{marginTop:"12px",padding:"10px 12px",borderRadius:"6px",background:"rgba(211,51,51,0.1)",border:"1px solid rgba(211,51,51,0.35)"}},r.createElement("p",{style:{margin:"0 0 8px",color:"var(--dsw-alias-state-error-primary)",fontSize:"13px",fontWeight:600}},t("activity.warning",{count:b.length})),r.createElement("ul",{style:{margin:0,paddingLeft:"20px",fontSize:"12px",lineHeight:1.7}},b.map(e=>r.createElement("li",{key:e.type+":"+e.id},t("activity.item",{type:h[e.type]||e.type,label:e.label,status:e.status}))))):null;return r.createElement("div",{"data-testid":"restart-card",style:p},r.createElement("div",{style:g},t("restart.title")),r.createElement("div",{"data-testid":"restart-region",style:m},r.createElement("p",{style:{margin:0,fontSize:"13px"}},t("restart.description")),v,f,r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginTop:"12px",flexWrap:"wrap"}},0===a.stage?r.createElement("button",{style:d,"data-variant":"dangerGhost",onClick:tt,disabled:a.busy},t(a.busy?"update.checking":"restart.button")):1===a.stage?[r.createElement("button",{key:"confirm",style:o,"data-variant":"danger",onClick:()=>at(!1),disabled:a.busy},t(a.busy?"restart.sending":"restart.confirm")),r.createElement("button",{key:"cancel",style:c,onClick:()=>Ke({...Ve,activity:null,stage:0,busy:!1,error:null}),disabled:a.busy},t("restart.cancel"))]:3===a.stage?[r.createElement("button",{key:"force",style:o,"data-variant":"danger",onClick:()=>at(!0),disabled:a.busy},t(a.busy?"restart.sending":"restart.force")),r.createElement("button",{key:"cancel",style:c,onClick:()=>Ke({...Ve,activity:null,stage:0,busy:!1,error:null}),disabled:a.busy},t("restart.cancel"))]:null),1===a.stage?r.createElement("p",{style:u},t("restart.idleHint")):null,a.error?r.createElement("p",{style:Object.assign({},u,{color:"var(--dsw-alias-state-error-primary)"})},String(a.error)):null,e?r.createElement("div",{style:{marginTop:"12px",paddingTop:"10px",borderTop:"1px solid var(--dsw-alias-border-l1)",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px"}},r.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"2px"}},r.createElement("span",{style:{fontSize:"13px",color:"var(--dsw-alias-label-primary)"}},t("restart.navToggle")),r.createElement("span",{style:u},t("restart.navToggleHint"))),r.createElement("button",{type:"button",role:"switch","data-testid":"restart-nav-switch","aria-checked":String(n),onClick:()=>i(!n),style:{width:"34px",height:"20px",borderRadius:"10px",padding:0,flexShrink:0,position:"relative",border:"1px solid "+(n?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-border-l2)"),background:n?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-bg-layer-2)",cursor:"pointer",lineHeight:0}},r.createElement("span",{style:{position:"absolute",top:"1px",left:n?"15px":"1px",width:"16px",height:"16px",borderRadius:"50%",background:n?"#fff":"var(--dsw-alias-label-tertiary)"}}))):null))}const mt={snapshot:{providers:[],serverTime:0},listeners:new Set,subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)},getSnapshot(){return this.snapshot},publish(e){this.snapshot=e;for(const e of[...this.listeners])try{e()}catch(e){}}},gt="dsh-service-quota-poll",ht=[0,1,2,5,10],bt=["opencode-go","zai-coding-cn","openrouter","kimi","siliconflow","deepseek","stepfun","stepfun-step-plan","xiaomi-token-plan-cn","cliproxy"];function vt(){try{const e=Number.parseInt(localStorage.getItem(gt),10);return ht.includes(e)?e:0}catch(e){return 0}}const ft="dsh-service-quota-card-order";let yt=null,kt=null;function xt(e){return"all"===e?.scope?{scope:"all"}:{providers:Array.isArray(e?.providers)?[...new Set(e.providers.filter(e=>"string"==typeof e&&""!==e))].sort():[]}}async function wt(e={providers:[]}){const a=xt(e);return null!==yt?(r=kt,s=a,kt="all"===r?.scope||"all"===s?.scope?{scope:"all"}:xt({providers:[...r?.providers??[],...s?.providers??[]]}),yt):(yt=Promise.resolve().then(async()=>{try{const e=await c("quota",a);if(!0===e?.ok&&e.value&&"object"==typeof e.value&&Array.isArray(e.value.providers))return mt.publish(e.value),function(e,a={providers:[]}){Array.isArray(e?.providers)&&e.providers.some(e=>!0===e.adapted&&!0===e.refreshing)&&0!==Ct.refs?null!==St.dispose||St.pulls>=qt.length||(St.dispose=t.timer.timeout(()=>{St.dispose=null,wt(a)},qt[St.pulls]),St.pulls+=1):St.pulls=0}(e.value,a),!0}catch(e){}return!1}).finally(()=>{yt=null;const e=kt;kt=null,null!==e&&wt(e)}),yt);var r,s}function Et(){const e=je();if(void 0===e||"function"!=typeof e.directoryFor)return[];const t=[];for(const a of Oe.runningSessionIds)try{const r=e.directoryFor(a)?.store?.getSnapshot?.()?.current;"string"==typeof r?.provider&&""!==r.provider&&t.push(r.provider)}catch(e){}return[...new Set(t)]}const St={pulls:0,dispose:null},qt=[800,2400,4800,8e3,12e3],Ct={refs:0,allRefs:0,nextDispose:null,running:!1,onVisible:void 0},Tt=()=>"undefined"!=typeof document&&"hidden"===document.visibilityState;function At(){if(!M("quotaLookup")||0===Ct.refs||null!==Ct.nextDispose||vt()<=0)return;const e=vt();Ct.nextDispose=t.timer.timeout(()=>{Ct.nextDispose=null,It()},6e4*e)}function It(){if(!M("quotaLookup")||0===Ct.refs||Ct.running)return;const e=Ct.allRefs>0?{scope:"all"}:{providers:Et()};"all"!==e.scope&&0===e.providers.length||(Ct.running=!0,Promise.resolve(wt(e)).catch(()=>!1).then(()=>{Ct.running=!1,At()}))}function Rt(e={}){M("quotaLookup")&&(Ct.refs+=1,!0===e.all&&(Ct.allRefs+=1),!0===e.all?wt({scope:"all"}):It(),At(),1===Ct.refs&&void 0===Ct.onVisible&&"undefined"!=typeof document&&(Ct.onVisible=()=>{Tt()||It()},document.addEventListener("visibilitychange",Ct.onVisible)))}function zt(e={}){(M("quotaLookup")||0!==Ct.refs)&&(Ct.refs=Math.max(0,Ct.refs-1),!0===e.all&&(Ct.allRefs=Math.max(0,Ct.allRefs-1)),Ct.refs>0||(null!==Ct.nextDispose&&(Ct.nextDispose(),Ct.nextDispose=null),null!==St.dispose&&(St.dispose(),St.dispose=null),void 0!==Ct.onVisible&&"undefined"!=typeof document&&(document.removeEventListener("visibilitychange",Ct.onVisible),Ct.onVisible=void 0)))}function Mt(e,t){const a=Math.max(0,Math.floor(e/6e4)),r=Math.floor(a/1440),s=Math.floor(a%1440/60),n=a%60,i=[];return r>0&&i.push(t("quota.unit.day",{count:r})),s>0&&i.push(t("quota.unit.hour",{count:s})),n>0&&i.push(t("quota.unit.minute",{count:n})),0===i.length&&i.push(t("quota.unit.minute",{count:0})),i.slice(0,2).join(" ")}function jt(e){try{return new Date(e).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hourCycle:"h23"})}catch(e){return""}}function Ot(e){const t=new Date(e),a=e=>String(e).padStart(2,"0");return`${t.getFullYear()}-${a(t.getMonth()+1)}-${a(t.getDate())}`}t.effect(()=>()=>{null!==Ct.nextDispose&&Ct.nextDispose(),null!==St.dispose&&St.dispose(),void 0!==Ct.onVisible&&"undefined"!=typeof document&&document.removeEventListener("visibilitychange",Ct.onVisible)},"dsh-service quota poller disposal");const Ht=Object.assign(Object.create(null),{deepseek:{segments:[[540,720],[840,1080]],captionKey:"quota.peak.caption"},"zai-coding-cn":{segments:[[840,1080]],captionKey:"quota.peak.caption.zai"}}),Dt="#f0952f",Nt="var(--dsw-alias-state-success-primary)",Lt=3e4;function $t(e){const t=new Date(e+288e5),a=e=>String(e).padStart(2,"0");return`${a(t.getUTCHours())}:${a(t.getUTCMinutes())}`}function Wt(e,t){return!1===Array.isArray(t)||0===t.length?null:Ht[e?.kind]??null}function Bt({showCaption:e,schedule:s}){const n=O(),[i,o]=a(Date.now());l(()=>{let e=!1,a=null;const r=()=>{e||(a=t.timer.timeout(()=>{o(Date.now()),r()},Lt))};return r(),()=>{e=!0,null!=a&&a()}},[]);const d=function(e){const t=new Date(e+288e5);return{dayIndex:t.getUTCDay(),minutesOfDay:60*t.getUTCHours()+t.getUTCMinutes()}}(i),c=(u=s.segments,p=d.dayIndex,m=d.minutesOfDay,0!==p&&6!==p&&u.some(([e,t])=>m>=e&&m<t));var u,p,m;const g=function(e,t){const a=new Date(t+288e5);a.setUTCHours(0,0,0,0);const r=a.getTime()-288e5,s=[];for(let a=0;a<=6&&s.length<2;a++){const n=r+864e5*a,i=new Date(n+288e5).getUTCDay();if(0!==i&&6!==i)for(const a of e.flat()){const e=n+6e4*a;if(!(e<=t)&&(s.push(e),s.length>=2))return s}}return s}(s.segments,i),h=g[0]??null,b=c?Dt:Nt,v=e=>Math.round(e/1440*1e6)/1e4;return r.createElement("div",{"data-testid":"quota-peak-timeline",style:{display:"flex",flexDirection:"column",gap:"4px"}},r.createElement("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:"6px",minHeight:"16px"}},r.createElement("span",{"data-testid":"quota-peak-state","data-in-peak":String(c),style:{display:"inline-flex",alignItems:"center",gap:"5px",fontSize:"12px",lineHeight:"16px",color:b,whiteSpace:"nowrap",flexShrink:0}},r.createElement("span",{style:{width:"7px",height:"7px",borderRadius:"50%",background:b,flexShrink:0}}),n(c?"quota.peak.nowPeak":"quota.peak.nowIdle")),null!==h?r.createElement("span",{"data-testid":"quota-peak-next",style:{marginLeft:"auto",fontSize:"11px",lineHeight:"16px",color:"var(--dsw-alias-label-tertiary)",whiteSpace:"nowrap"}},n(c?"quota.peak.untilIdle":"quota.peak.untilPeak",{time:$t(h),dur:Mt(h-i,n)})):null),r.createElement("div",{"data-testid":"quota-peak-bar",style:{position:"relative",height:"14px",borderRadius:999,overflow:"hidden",background:"var(--dsw-alias-interactive-bg-hover)"}},(g.length>0?[{peak:c,weight:g[0]-i},...g.length>1?[{peak:!c,weight:g[1]-g[0]}]:[]]:[{peak:c,weight:1}]).map((e,t,a)=>{const s=a.reduce((e,t)=>e+t.weight,0),i=v(e.weight/s*1440);return r.createElement("span",{key:t,"data-testid":`quota-peak-segment-${t}`,"data-peak":String(e.peak),style:{position:"absolute",top:0,bottom:0,left:`${0===t?0:v(a[0].weight/s*1440)}%`,width:`${i}%`,background:e.peak?Dt:Nt,overflow:"hidden"}},i>=11?r.createElement("span",{style:{position:"absolute",inset:0,textAlign:"center",fontSize:"9px",lineHeight:"14px",fontWeight:500,color:"rgba(255,255,255,0.95)"}},n(e.peak?"quota.peak.tag.peak":"quota.peak.tag.idle")):null)}),r.createElement("span",{"data-testid":"quota-peak-now",style:{position:"absolute",top:0,bottom:0,left:0,width:"3px",borderRadius:"3px",background:"var(--dsw-specific-menu)"}})),!0===e?r.createElement("div",{"data-testid":"quota-peak-caption",style:{fontSize:"11px",lineHeight:1.6,color:"var(--dsw-alias-label-tertiary)",marginTop:"2px"}},n(s.captionKey)):null)}function Ft(e,t){const a="string"==typeof e.expiresAt&&""!==e.expiresAt.trim()?e.expiresAt.trim():"",r=""!==a?Date.parse(a):NaN,s=Number.isFinite(r)&&r<Date.now();let n="";if(""!==a){let e=a;Number.isFinite(r)&&(e=a.length>10?`${Ot(r)} ${jt(r)}`:Ot(r),e=s?`${e} ${t("quota.resetCard.expired")}`:t("quota.resetCard.expires",{date:e})),n=e}const i="string"==typeof e.label&&""!==e.label?` · ${e.label}`:"";return{expired:s,title:`${t("quota.resetCard.title")}${i}`,expiry:n}}function Pt(e,t){const a=`quota.error.${e}`,r=t(a);return r===a?t("quota.error.unknown"):r}function _t(e,t,a){const s=null!=a,n=function(e,t){const a="string"==typeof e.kindKey&&""!==e.kindKey,r=a?e.kindKey:e.id;let s=t(`quota.window.${r}`);if(s===`quota.window.${r}`)if(a){const a=t(`quota.window.${e.id}`);s=a!==`quota.window.${e.id}`?a:r}else s=function(e,t){const a=t(`quota.window.${e}`);if(a!==`quota.window.${e}`)return a;const r=String(e).split("-"),s=r.length>=2?`${r[0]}-${r[1]}`:r[0],n=t(`quota.window.${s}`);return n===`quota.window.${s}`?e:n}(e.id,t);const n="string"==typeof e.label?e.label.trim():"";return""!==n?`${n} · ${s}`:s}(e,t),i={color:"var(--dsw-alias-label-secondary)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},l={color:"var(--dsw-alias-label-primary)",fontWeight:500,fontVariantNumeric:"tabular-nums",whiteSpace:"nowrap",flexShrink:0};if("string"==typeof e.text)return r.createElement("div",{key:e.id,...s?{"data-testid":`quota-card-window-${a}-${e.id}`}:{},style:{display:"flex",justifyContent:"space-between",gap:"10px",fontSize:"12px",lineHeight:"18px"}},r.createElement("span",{style:i,title:n},n),r.createElement("span",{"data-testid":s?`quota-card-text-${a}-${e.id}`:`quota-text-${e.id}`,style:l},e.text));let o=null;if("string"==typeof e.resetsAt){const n=Date.parse(e.resetsAt);Number.isFinite(n)&&n>Date.now()&&(o=r.createElement("div",{"data-testid":s?`quota-card-reset-${a}-${e.id}`:`quota-reset-${e.id}`,style:{fontSize:"11px",lineHeight:"16px",color:"var(--dsw-alias-label-tertiary)"}},t("quota.resetIn",{time:Mt(n-Date.now(),t)})))}return r.createElement("div",{key:e.id,...s?{"data-testid":`quota-card-window-${a}-${e.id}`}:{}},r.createElement("div",{"data-value":e.percent,style:{display:"flex",justifyContent:"space-between",gap:"10px",fontSize:"12px",lineHeight:"18px"}},r.createElement("span",{style:i,title:n},n),r.createElement("span",{style:l},function(e){const t=`${e.percent}%`,a=Number(e.used),r=Number(e.limit);return!Number.isFinite(a)||!Number.isFinite(r)||r<=0?t:`${t} · ${A(a,{billions:!0})} / ${A(r,{billions:!0})}`}(e))),function(e,t,a,s){const n=!0===s?t<=20:t>=80;return r.createElement("div",{"data-testid":e,style:{height:"4px",borderRadius:999,background:"var(--dsw-alias-interactive-bg-hover)",overflow:"hidden"}},r.createElement("div",{style:{height:"100%",width:`${Math.max(0,Math.min(100,t))}%`,borderRadius:999,background:n?"var(--dsw-alias-state-warn-primary)":"var(--dsw-alias-state-success-primary)"}}))}(s?`quota-card-bar-${a}-${e.id}`:`quota-window-bar-${e.id}`,e.percent,0,!0===e.remaining),o)}let Ut=null;try{const t=e("react-dom");null!=t&&"function"==typeof t.createPortal&&(Ut=t.createPortal)}catch(e){Ut=null}function Vt(){if("undefined"==typeof window||null===window)return!1;if("function"==typeof window.matchMedia){const e=window.matchMedia("(max-width: 1023px)");return"boolean"==typeof e.matches&&e.matches}return"number"==typeof window.innerWidth&&window.innerWidth<=1023}function Kt(e){const s=O(),[n,i]=a(mt.getSnapshot());l(()=>mt.subscribe(()=>i(mt.getSnapshot())),[]);const d=e&&e.directoryStore,c=e&&"string"==typeof e.sessionId&&""!==e.sessionId?e.sessionId:void 0,[u,p]=a(null),m=null!=d?d:u;l(()=>{if(null!=d)return;if(void 0===c)return;let e=!1,a=null;const r=[250,500,1e3,2e3,4e3,8e3,15e3],s=n=>{if(e)return;let i=null;try{i=je()}catch(e){i=null}if(null==i||"function"!=typeof i.directoryFor)return;let l=null;try{l=i.directoryFor(c)}catch(e){l=null}if(null==l||void 0===l.store||null===l.store)n>=r.length||(a=t.timer.timeout(()=>{a=null,s(n+1)},r[n]));else{p(l.store);try{const e=l.load();e&&"function"==typeof e.catch&&e.catch(()=>{})}catch(e){}}};return s(0),()=>{e=!0,null!==a&&a()}},[d,c]),l(()=>{if(m)return Rt(),zt},[m]);const[g,h]=a(m?m.getSnapshot():null);l(()=>{if(m)return h(m.getSnapshot()),m.subscribe(()=>h(m.getSnapshot()))},[m]),l(()=>{m&&(null===g||null==g?.current)&&e&&"function"==typeof e.loadDirectory&&e.loadDirectory()},[m,g,e&&e.loadDirectory]);const[b,v]=a(!1),f=o(null),y=o(null),[k,x]=a(Vt);l(()=>{if("undefined"==typeof window||null===window||"function"!=typeof window.matchMedia)return;const e=window.matchMedia("(max-width: 1023px)"),t=()=>x(e.matches);return t(),"function"==typeof e.addEventListener?e.addEventListener("change",t):"function"==typeof e.addListener&&e.addListener(t),()=>{"function"==typeof e.removeEventListener?e.removeEventListener("change",t):"function"==typeof e.removeListener&&e.removeListener(t)}},[]);const w=g?.current?.provider??null,E=null!==w?(n.providers||[]).find(e=>e.provider===w&&!0===e.adapted):null,S=Array.isArray(E?.windows)?E.windows:[],q=S.filter(e=>"number"==typeof e.percent),C=e=>!0===e.remaining?100-e.percent:e.percent,T=q.length>0?q.reduce((e,t)=>C(t)>C(e)?t:e,q[0]):null,A=o(new Set);if(l(()=>{if(null===w)return;const e=(n.providers||[]).find(e=>e.provider===w&&!0===e.adapted);(void 0===e||!1===Array.isArray(e.windows)&&!0!==e.refreshing&&void 0===e.errorCode)&&!A.current.has(w)&&(A.current.add(w),wt({providers:[w]}))},[w,n]),l(()=>{if(!b||"undefined"==typeof document)return;const e=e=>{f.current&&e.target instanceof Node&&f.current.contains(e.target)||y.current&&e.target instanceof Node&&y.current.contains(e.target)||v(!1)},t=e=>{"Escape"===e.key&&v(!1)};return document.addEventListener("pointerdown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("pointerdown",e),document.removeEventListener("keydown",t)}},[b]),null==E)return null;const I=null===T?0:T.percent,R=null!==T,z=!R||!0===T.remaining,M=s(z?"quota.panel.remaining":"quota.panel.used"),j=(z?I<=20:I>=80)?"var(--dsw-alias-state-warn-primary)":"var(--dsw-alias-state-success-primary)",H=2*Math.PI*5.5,D=R?`${s("quota.ring.label")} · ${w} · ${M} ${I}%`:`${s("quota.ring.label")} · ${w}`,N="number"==typeof E.nextAllowedAt&&E.nextAllowedAt>Date.now()?` · ${s("quota.retryAt",{time:jt(E.nextAllowedAt)})}`:"",L=void 0!==E.errorCode?r.createElement("div",{style:{marginTop:"8px",fontSize:"12px",lineHeight:"18px",color:"var(--dsw-alias-state-error-primary)"}},`${Pt(E.errorCode,s)}${void 0!==E.errorDetail?` (${E.errorDetail})`:""}${N}`):null,$=!0===E.refreshing||"number"==typeof E.fetchedAt?r.createElement("div",{style:{marginTop:"8px",fontSize:"11px",color:"var(--dsw-alias-label-tertiary)"}},!0===E.refreshing?s("quota.refreshing"):s("quota.updated",{time:jt(E.fetchedAt)})):null,W=b&&k&&null!==Ut&&"undefined"!=typeof document&&null!==document.body&&void 0!==document.body,B=Wt(E,S),F=r.createElement("button",{type:"button","data-testid":"quota-ring-trigger","aria-label":D,"aria-haspopup":"dialog","aria-expanded":b,title:D,onClick:()=>{const e=!b;v(e),e&&wt({providers:null===w?[]:[w]})},style:{width:"28px",height:"28px",border:"none",borderRadius:"999px",background:"transparent",cursor:"pointer",display:"grid",placeItems:"center",padding:0,color:"var(--dsw-alias-label-secondary)"}},r.createElement("svg",{viewBox:"0 0 14 14",width:"14",height:"14","aria-hidden":!0},r.createElement("circle",{cx:"7",cy:"7",r:5.5,fill:"none",stroke:"var(--dsw-alias-border-l3)",strokeWidth:"2"}),r.createElement("circle",{cx:"7",cy:"7",r:5.5,fill:"none",stroke:j,strokeWidth:"2",strokeLinecap:"round",strokeDasharray:`${H*I/100} ${H}`,transform:"rotate(-90 7 7)"}))),P=b?r.createElement("div",{ref:y,role:"dialog","aria-label":s("quota.panel.title"),"data-testid":"quota-ring-panel",style:W?{position:"fixed",left:"50%",top:"75%",transform:"translate(-50%, -50%)",zIndex:1e3,boxSizing:"border-box",width:"min(280px, calc(100vw - 32px))",maxHeight:"min(560px, calc(100dvh - 176px))",overflowY:"auto",padding:"12px",borderRadius:"12px",background:"var(--dsw-specific-menu)",border:"1px solid var(--dsw-alias-border-inverted)",boxShadow:"var(--dsw-shadow-lv3)"}:{position:"absolute",bottom:"calc(100% + 8px)",right:0,zIndex:100,boxSizing:"border-box",width:"max-content",minWidth:"240px",maxWidth:"min(480px, calc(100vw - 32px))",padding:"12px",borderRadius:"12px",background:"var(--dsw-specific-menu)",border:"1px solid var(--dsw-alias-border-inverted)",boxShadow:"var(--dsw-shadow-lv3)"}},r.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:"6px"}},r.createElement("span",{style:{fontSize:"12px",color:"var(--dsw-alias-label-tertiary)"}},M),r.createElement("span",{style:{marginLeft:"auto",fontSize:"11px",color:"var(--dsw-alias-label-secondary)"}},w)),r.createElement("div",{style:{marginTop:"10px",display:"flex",flexDirection:"column",gap:"8px"}},S.map(e=>_t(e,s,null))),...null!==B?[r.createElement(Bt,{key:"panel-peak-timeline",showCaption:!1,schedule:B})]:[],...Array.isArray(E.resetCards)&&E.resetCards.length>0?[r.createElement("div",{key:"panel-reset-cards",style:{marginTop:"8px",display:"flex",flexDirection:"column",gap:"4px"}},E.resetCards.map((e,t)=>{const a=Ft(e,s);return r.createElement("div",{key:t,"data-testid":`quota-panel-reset-card-${t}`,style:{display:"flex",flexDirection:"column",gap:"2px",fontSize:"11px",lineHeight:"16px",color:a.expired?"var(--dsw-alias-state-warn-primary)":"var(--dsw-alias-label-tertiary)"}},r.createElement("span",null,a.title),""!==a.expiry?r.createElement("span",null,a.expiry):null)}))]:[],L,$):null;return r.createElement("span",{ref:f,style:{position:"relative",display:"inline-flex"}},F,W?Ut(P,document.body):P)}function Gt(){const e=O(),{snapshot:t}=j(),[a,s]=r.useState(!1),n="ready"===t.status&&!0===t.writable;return r.createElement("li",{style:{listStyle:"none",border:"1px solid "+(a?"var(--dsw-alias-label-dimmed)":"var(--dsw-alias-border-l2)"),borderRadius:"12px",color:"var(--dsw-alias-label-primary)",background:a?"var(--dsw-alias-bg-layer-2)":"var(--dsw-alias-bg-layer-3)"}},r.createElement("button",{type:"button","data-testid":"feature-card-toggle","aria-expanded":String(a),onClick:()=>s(!a),style:{appearance:"none",width:"100%",display:"flex",alignItems:"center",gap:"12px",padding:"14px 16px",border:0,borderRadius:"12px",background:"transparent",color:"inherit",font:"inherit",textAlign:"left",cursor:"pointer"}},r.createElement("span",{style:{display:"flex",minWidth:0,flex:1,flexDirection:"column",gap:"4px"}},r.createElement("span",{style:{fontSize:"15px",fontWeight:600,lineHeight:1.4}},e("features.cardTitle")),r.createElement("span",{style:{fontSize:"13px",lineHeight:1.5,color:"var(--dsw-alias-label-tertiary)"}},e("features.cardHint"))),r.createElement("svg",{viewBox:"0 0 14 14",width:14,height:14,"aria-hidden":"true",style:{flex:"none",color:"var(--dsw-alias-label-tertiary)",transform:a?"rotate(180deg)":"none",transition:"transform .16s"}},r.createElement("path",{d:"M3 5.25 7 9l4-3.75",fill:"none",stroke:"currentColor",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round"}))),a?r.createElement("div",{style:{margin:"0 16px",padding:"12px 0 8px",borderTop:"1px solid var(--dsw-alias-border-l2)"}},r.createElement(Jt,null),n?null:r.createElement("p",{style:{margin:"6px 0 0",fontSize:"11px",color:"var(--dsw-alias-label-tertiary)"}},e("features.readOnly"))):null)}const Yt=[["features.group.runtime",["healthDiagnostics","modelUsage","quotaLookup"],!0],["features.group.maintenance",["backupMaintenance","skillManager","subagentRoute","sessionManager"],!0],["features.group.interaction",["taskNotifications","mobileAdaptation"],!0],["features.external",["healthz"],!1]];function Jt(){const e=O(),{snapshot:t,value:s}=j(),[n,i]=a(""),l="ready"===t.status&&!0===t.writable,o=t=>r.createElement("div",{key:t,style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"14px",padding:"7px 0"}},r.createElement("span",{style:{fontSize:"13px",color:"var(--dsw-alias-label-primary)"}},e("features."+t)),r.createElement("button",{type:"button",role:"switch","data-testid":"feature-switch-"+t,"aria-checked":String(!1!==s[t]),disabled:!l||n===t,onClick:async()=>{i(t);try{await R.set(t,!1===s[t])}catch(e){}i("")},style:{width:"34px",height:"20px",borderRadius:"10px",padding:0,flexShrink:0,position:"relative",border:"1px solid "+(!1!==s[t]?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-border-l2)"),background:!1!==s[t]?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-bg-layer-2)",cursor:l&&""===n?"pointer":"default",opacity:l?1:.5,lineHeight:0}},r.createElement("span",{style:{position:"absolute",top:"1px",left:!1!==s[t]?"15px":"1px",width:"16px",height:"16px",borderRadius:"50%",background:!1!==s[t]?"#fff":"var(--dsw-alias-label-tertiary)"}})));return r.createElement("div",null,Yt.map(([t,a])=>r.createElement("div",{key:t,style:{marginTop:"10px"}},r.createElement("div",{style:{fontSize:"12px",fontWeight:700,marginBottom:"2px"}},e(t)),a.map(o))))}const Qt=["inherit","follow","custom"];function Xt(){const e=O(),{useState:t,useEffect:a}=r,s=!1!==j().value.subagentModelsDock,[n,i]=t(null),[l,o]=t("inherit"),[d,u]=t(""),[p,m]=t(""),[g,h]=t(!0),[b,v]=t(!1),[f,y]=t(0),[k,x]=t(""),[w,E]=t(""),[S,q]=t([]),[C,T]=t(!1),A={color:"var(--dsw-alias-label-secondary)",fontSize:"12px",marginTop:"8px",lineHeight:1.5},I={fontSize:"12px",padding:"4px 8px",borderRadius:"6px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)",maxWidth:"100%"},z=async()=>{h(!0);try{const e=await c("subagent-route",{});e.ok?(i(e.value),o(e.value.mode),q(Array.isArray(e.value.fallbacks)?e.value.fallbacks:[]),"custom"===e.value.mode?(u("string"==typeof e.value.provider?e.value.provider:""),m("string"==typeof e.value.model?e.value.model:""),E("string"==typeof e.value.reasoningEffort?e.value.reasoningEffort:"")):E(""),x("")):x(e.error||"unknown")}catch(e){x("network")}finally{h(!1)}};a(()=>{z()},[]);const M=null!==n&&Array.isArray(n.models)?n.models:[],H=[],D={};for(const e of M)void 0===D[e.provider]&&(D[e.provider]=e.providerName,H.push(e.provider));const L=e=>M.filter(t=>t.provider===e),$=e=>{const t=[],a=new Set;for(const r of e?.reasoning?.efforts??[]){if(null===r||"object"!=typeof r)continue;const e="string"==typeof r.id?r.id:"";""===e||a.has(e)||(a.add(e),t.push({id:e,name:"string"==typeof r.name&&""!==r.name?r.name:e,description:"string"==typeof r.description&&""!==r.description?r.description:void 0}))}return t},W=L(d),B=W.find(e=>e.id===p)??null,F=$(B);a(()=>{""===w||F.some(e=>e.id===w)||E("")},[d,p]),a(()=>{""===d||W.some(e=>e.id===p)||m(W[0]?.id??"")},[d]);const P=H.includes(d)?d:H[0]??"";a(()=>{d!==P&&u(P)},[P,d]);const _=(e,t)=>{q(a=>a.map((a,r)=>r===e?{...a,...t}:a))},U=(e,t)=>{q(a=>{const r=e+t;if(r<0||r>=a.length)return a;const s=[...a],n=s.splice(e,1)[0];return s.splice(r,0,n),s})};a(()=>{C&&S.length<2&&T(!1)},[S.length]);const V=async e=>{v(!0),x("");try{const t=("custom"===e||"follow"===e)&&S.length>0?{fallbacks:S}:{},a="custom"===e?{mode:"custom",provider:P,model:p,...""!==w?{reasoningEffort:w}:{},...t}:{mode:e,...t},r=await c("subagent-route-save",a);r.ok?(y(e=>e+1),await z()):x(r.error||"unknown")}catch(e){x("network")}finally{v(!1)}},K=(e,t,a,s)=>r.createElement("button",{type:"button","data-testid":e,disabled:t||b,onClick:a,style:{fontSize:"12px",lineHeight:"14px",width:"24px",height:"24px",padding:0,borderRadius:"6px",border:"1px solid var(--dsh-svc-border-strong)",background:"transparent",color:"var(--dsh-svc-text)",cursor:t||b?"default":"pointer",opacity:t||b?.55:1}},s),G={fontSize:"12px",color:"var(--dsw-alias-label-secondary)",width:"88px",flexShrink:0};return r.createElement("div",{"data-testid":"subagent-section",style:{padding:"4px 0 14px",marginBottom:"12px",color:"var(--dsw-alias-label-primary)"}},r.createElement("div",{style:{fontSize:"14px",fontWeight:700}},e("subagent.title")),r.createElement("p",{style:A},e("subagent.hint")),r.createElement("div",{"data-testid":"subagent-dock-toggle-row",style:{display:"flex",alignItems:"center",gap:"10px",marginTop:"12px",padding:"10px 12px",border:"1px solid var(--dsh-svc-border)",borderRadius:"8px",background:"var(--dsh-svc-raised-bg)"}},r.createElement("div",{style:{flex:1,minWidth:0}},r.createElement("div",{style:{fontSize:"13px",fontWeight:600,color:"var(--dsw-alias-label-primary)"}},e("subagent.dock.title")),r.createElement("p",{style:{...A,marginTop:"2px",marginBottom:0}},e("subagent.dock.desc"))),r.createElement("button",{type:"button",role:"switch","aria-checked":String(s),"data-testid":"subagent-dock-toggle",onClick:()=>{R.set("subagentModelsDock",!s).catch(()=>{})},style:{width:"34px",height:"20px",borderRadius:"10px",padding:0,flexShrink:0,position:"relative",border:"1px solid "+(s?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-border-l2)"),background:s?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-bg-layer-2)",cursor:"pointer",lineHeight:0}},r.createElement("span",{style:{position:"absolute",top:"1px",left:s?"15px":"1px",width:"16px",height:"16px",borderRadius:"50%",background:s?"#fff":"var(--dsw-alias-label-tertiary)",transition:"left 150ms ease"}}))),null!==n&&!1===n.available?r.createElement("p",{"data-testid":"subagent-unavailable",style:{...A,color:"var(--dsw-alias-state-warn-primary)"}},e("subagent.unavailable")):null,r.createElement("div",{"data-testid":"subagent-modes",style:{display:"flex",gap:"8px",marginTop:"12px",flexWrap:"wrap"}},Qt.map(t=>r.createElement("button",{type:"button",key:t,"data-testid":"subagent-mode-"+t,"aria-pressed":String(l===t),disabled:g,onClick:()=>o(t),style:Object.assign({},N(),{cursor:g?"default":"pointer",background:l===t?"var(--dsh-svc-tab-active-bg)":"transparent",color:l===t?"var(--dsh-svc-tab-active-text)":"var(--dsh-svc-text)",opacity:g?.55:1})},e("subagent.mode."+t)))),r.createElement("p",{"data-testid":"subagent-mode-desc",style:{...A,marginTop:"8px"}},e("subagent.mode."+l+".desc")),"custom"===l?r.createElement("div",{"data-testid":"subagent-custom",style:{marginTop:"8px"}},r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"10px",marginTop:"4px"}},r.createElement("span",{style:G},e("subagent.provider")),r.createElement("select",{"data-testid":"subagent-provider",value:P,disabled:0===H.length||b,onChange:e=>u(e.target.value),style:I},H.map(e=>r.createElement("option",{key:e,value:e},D[e]??e)))),r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"10px",marginTop:"4px"}},r.createElement("span",{style:G},e("subagent.model")),r.createElement("select",{"data-testid":"subagent-model",value:p,disabled:0===W.length||b,onChange:e=>m(e.target.value),style:I},W.map(e=>r.createElement("option",{key:e.id,value:e.id},e.name??e.id)))),""!==p?r.createElement("div",{"data-testid":"subagent-reasoning-row",style:{display:"flex",alignItems:"center",gap:"10px",marginTop:"4px",flexWrap:"wrap"}},r.createElement("span",{style:G},e("subagent.reasoningEffort")),r.createElement("select",{"data-testid":"subagent-reasoning-effort",value:w,disabled:b||0===F.length,onChange:e=>E(e.target.value),style:I},r.createElement("option",{value:""},e("subagent.reasoningEffort.default")),...F.map(e=>r.createElement("option",{key:e.id,value:e.id,...void 0!==e.description?{title:e.description}:{}},e.name))),0===F.length?r.createElement("span",{"data-testid":"subagent-reasoning-effort-unavailable",style:{fontSize:"12px",color:"var(--dsw-alias-state-warn-primary)"}},e("subagent.reasoningEffort.unavailable")):null):null):null,"custom"!==l||0!==M.length||g?null:r.createElement("p",{"data-testid":"subagent-models-empty",style:{...A,color:"var(--dsw-alias-state-warn-primary)"}},e("subagent.modelsEmpty")),"custom"===l||"follow"===l?r.createElement("div",{"data-testid":"subagent-fallback-block",style:{marginTop:"14px",borderTop:"1px solid var(--dsh-svc-border)",paddingTop:"12px"}},r.createElement("div",{style:{fontSize:"13px",fontWeight:700}},e("subagent.fallback.title")),r.createElement("p",{style:A},e("subagent.fallback.hint")),0===S.length?r.createElement("p",{"data-testid":"subagent-fallback-empty",style:{...A,color:"var(--dsw-alias-label-secondary)"}},e("subagent.fallback.empty")):null,S.map((t,a)=>{const s=H.includes(t.provider),n=s?L(t.provider):[],i=n.find(e=>e.id===t.model)??null,l=$(i),o=l.map(e=>e.id);return r.createElement("div",{key:a,"data-testid":"subagent-fallback-row",style:{marginTop:"8px",border:"1px solid var(--dsh-svc-border)",borderRadius:"8px",padding:"7px 10px 8px"}},r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"2px"}},r.createElement("span",{style:{fontSize:"12px",fontWeight:600,color:"var(--dsw-alias-label-primary)"}},e("subagent.fallback.item",{index:String(a+1)})),r.createElement("span",{style:{marginLeft:"auto"}}),((e,t,a,s,n=!1)=>r.createElement("button",{type:"button","data-testid":e,disabled:t||b,onClick:a,style:{fontSize:"12px",padding:"3px 8px",borderRadius:"6px",border:"1px solid "+(n?"var(--dsw-alias-state-error-primary)":"var(--dsh-svc-border-strong)"),background:"transparent",color:n?"var(--dsw-alias-state-error-primary)":"var(--dsh-svc-text)",cursor:t||b?"default":"pointer",opacity:t||b?.55:1}},s))("subagent-fallback-remove-"+a,!1,()=>(e=>{q(t=>t.filter((t,a)=>a!==e))})(a),e("subagent.fallback.remove"),!0),C?K("subagent-fallback-up-"+a,0===a,()=>U(a,-1),"▲"):null,C?K("subagent-fallback-down-"+a,a===S.length-1,()=>U(a,1),"▼"):null),r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"10px",marginTop:"4px"}},r.createElement("span",{style:G},e("subagent.provider")),r.createElement("select",{"data-testid":"subagent-fallback-provider-"+a,value:s?t.provider:"",disabled:b,onChange:e=>{const t=e.target.value;_(a,{provider:t,model:L(t)[0]?.id??""})},style:I},r.createElement("option",{value:""},""),H.map(e=>r.createElement("option",{key:e,value:e},D[e]??e)))),r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"10px",marginTop:"4px"}},r.createElement("span",{style:G},e("subagent.model")),r.createElement("select",{"data-testid":"subagent-fallback-model-"+a,value:n.some(e=>e.id===t.model)?t.model:"",disabled:0===n.length||b,onChange:e=>{const r=e.target.value,s=n.find(e=>e.id===r)??null,i=$(s).map(e=>e.id);_(a,{model:r,..."string"!=typeof t.reasoningEffort||""===t.reasoningEffort||i.includes(t.reasoningEffort)?{}:{reasoningEffort:void 0}})},style:I},n.map(e=>r.createElement("option",{key:e.id,value:e.id},e.name??e.id)))),l.length>0?r.createElement("div",{"data-testid":"subagent-fallback-reasoning-row",style:{display:"flex",alignItems:"center",gap:"10px",marginTop:"4px"}},r.createElement("span",{style:G},e("subagent.reasoningEffort")),r.createElement("select",{"data-testid":"subagent-fallback-effort-"+a,value:o.includes(t.reasoningEffort)?t.reasoningEffort:"",disabled:b,onChange:e=>_(a,{reasoningEffort:""===e.target.value?void 0:e.target.value}),style:I},r.createElement("option",{value:""},e("subagent.reasoningEffort.default")),...l.map(e=>r.createElement("option",{key:e.id,value:e.id,...void 0!==e.description?{title:e.description}:{}},e.name)))):r.createElement("span",{"data-testid":"subagent-fallback-effort-unavailable-"+a,style:{display:"inline-block",marginTop:"4px",fontSize:"12px",color:"var(--dsw-alias-state-warn-primary)"}},e("subagent.reasoningEffort.unavailable")))}),S.length>=10?r.createElement("p",{"data-testid":"subagent-fallback-limit",style:{...A,color:"var(--dsw-alias-state-warn-primary)"}},e("subagent.fallback.limit",{max:String(10)})):r.createElement("div",{style:{display:"flex",gap:"10px",marginTop:"8px",flexWrap:"wrap"}},r.createElement("button",{type:"button","data-testid":"subagent-fallback-add",disabled:b||0===H.length,onClick:()=>{q(e=>{if(e.length>=10)return e;const t=H[0]??"";return[...e,{provider:t,model:L(t)[0]?.id??""}]})},style:{fontSize:"12px",padding:"5px 12px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px dashed var(--dsh-svc-border-strong)",background:"transparent",color:"var(--dsh-svc-text)",cursor:b||0===H.length?"default":"pointer",opacity:b||0===H.length?.55:1}},e("subagent.fallback.add")),S.length>1?r.createElement("button",{type:"button","data-testid":"subagent-fallback-sort",disabled:b,onClick:()=>T(e=>!e),style:{fontSize:"12px",padding:"5px 12px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid var(--dsh-svc-border-strong)",background:C?"var(--dsh-svc-tab-active-bg)":"transparent",color:C?"var(--dsh-svc-tab-active-text)":"var(--dsh-svc-text)",cursor:b?"default":"pointer",opacity:b?.55:1}},e(C?"subagent.fallback.sort.done":"subagent.fallback.sort")):null)):null,""!==k?r.createElement("p",{"data-testid":"subagent-error",style:{...A,color:"var(--dsw-alias-state-error-primary)"}},function(e,t){return"feature-disabled"===t?e("subagent.error.feature-disabled"):"llm-unavailable"===t?e("subagent.error.llm-unavailable"):"unknown-mode"===t?e("subagent.error.unknown-mode"):"invalid-model-route"===t?e("subagent.error.invalid-model-route"):"invalid-reasoning-effort"===t?e("subagent.error.invalid-reasoning-effort"):"network"===t?e("subagent.error.network"):t}(e,k)):null,f>0&&""===k?r.createElement("p",{"data-testid":"subagent-saved",style:{...A,color:"var(--dsw-alias-state-success-primary)"}},"✓ "+e("subagent.saved")):null,r.createElement("div",{style:{display:"flex",gap:"10px",marginTop:"12px",flexWrap:"wrap"}},r.createElement("button",{type:"button","data-testid":"subagent-save",disabled:b||g||"custom"===l&&(""===P||""===p),onClick:()=>{V(l)},style:{fontSize:"12px",padding:"6px 16px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid transparent",background:"var(--dsw-alias-brand-primary)",color:"var(--dsh-svc-brand-text)",cursor:b?"default":"pointer",opacity:b||g||"custom"===l&&(""===P||""===p)?.55:1}},e(b?"subagent.saving":"subagent.save")),"inherit"!==l?r.createElement("button",{type:"button","data-testid":"subagent-reset",disabled:b||g,onClick:()=>{o("inherit"),V("inherit")},style:{fontSize:"12px",padding:"6px 14px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid var(--dsw-alias-state-error-primary)",background:"transparent",color:"var(--dsw-alias-state-error-primary)",cursor:b?"default":"pointer",opacity:b||g?.55:1}},e("subagent.reset")):null))}const Zt="dsh-service-skills-model",ea=(e,t)=>c(e,t);function ta(e){return e.provider+"\0"+e.id}function aa(){try{const e=JSON.parse(localStorage.getItem(Zt)||"null");if(e&&"string"==typeof e.provider&&"string"==typeof e.model)return e}catch(e){}return null}const ra=(e,t)=>{let a=function(e,t){const a="object"==typeof t&&null!==t?t:aa();if(null!==a){const t=e.find(e=>e.provider===a.provider&&e.id===a.model);if(void 0!==t)return t}return e[0]??null}(e,aa());return null===a&&void 0!==t&&(a=e.find(e=>e.provider===t.provider&&e.id===t.model)??null),a},sa=(e,t)=>{if(null===t||"object"!=typeof t)return String(t);const a=new Date(t.at),r=e=>String(e).padStart(2,"0"),s=Number.isFinite(a.getTime())?r(a.getHours())+":"+r(a.getMinutes())+":"+r(a.getSeconds()):"--:--:--",n="skills.log."+t.code,i=e(n,t.params??{});return"["+s+"]"+(void 0!==t.name?" ["+t.name+"]":"")+" "+(i===n?t.code:i)};function na(e,t){if("models-empty"===t)return e("skills.describe.models.empty");if("llm-unavailable"===t)return e("skills.llm.unavailable");if("batch-already-running"===t)return e("skills.batch.already");if("feature-disabled"===t)return e("skills.error.feature-disabled");if("network"===t)return e("skills.error.network");if("read-only-source"===t)return e("skills.error.read-only-source");if("unknown-skill"===t)return e("skills.error.unknown-skill");if("invalid-field"===t)return e("skills.error.invalid-field");if("invalid-enable"===t)return e("skills.error.invalid-enable");if("invalid-model-route"===t)return e("skills.error.invalid-model-route");if("invalid-description"===t)return e("skills.error.invalid-description");if("describe-timeout"===t)return e("skills.error.describe-timeout");if("batch-cancelled"===t)return e("skills.error.batch-cancelled");if("entry-changed"===t)return e("skills.error.entry-changed");if("unknown-batch-plan"===t)return e("skills.error.unknown-batch-plan");if("batch-already-done"===t)return e("skills.error.batch-already-done");if("batch-already-cancelled"===t)return e("skills.error.batch-already-cancelled");if("annotated-confirm-required"===t)return e("skills.error.annotated-confirm-required");if("string"==typeof t&&t.startsWith("empty-output")){const a=t.slice(13);return e("skills.error.empty-output",{kind:""===a?"?":a})}return"string"==typeof t&&t.startsWith("invalid-skill")?e("skills.error.invalid-skill",{reason:t.startsWith("invalid-skill:")?t.slice(14):""}):e("skills.error",{error:t})}function ia(){const e=O(),[t,s]=a(null),[n,i]=a(""),[o,d]=a(!0),[u,p]=a(""),[m,g]=a(null),[h,b]=a(null),[v,f]=a(!1),[y,k]=a([]),[x,w]=a(!1),[E,S]=a(!1),[q,C]=a(!1),[A,I]=a(!1),{batch:R,plan:z,models:M,modelItem:j,error:H}=Re(),$=null!==R?R.phase:null;l(()=>{w("running"===$)},[$]);const W=async()=>{d(!0);try{const e=await ea("skills-list",{});e.ok?(s(e.value),i("")):i(e.error||"unknown")}catch(e){i("network")}finally{d(!1)}};l(()=>{W(),Ie(),Ae().then(Ee)},[]),l(()=>{null===R||"done"!==R.phase&&"cancelled"!==R.phase||!ve||(ve=!1,W())},[null!==R&&R.phase]),l(()=>{if(null===h||!h.busy)return;const e=h.entry.id;let t;const a=async()=>{try{const t=await ea("skills-describe-log",{id:e});t.ok&&k(t.value.logs??[])}catch(e){}};return a(),t=setInterval(()=>{a()},800),()=>clearInterval(t)},[null!==h&&h.busy]),l(()=>{if(null===h||h.busy)return;const e=h.entry.id;(async()=>{try{const t=await ea("skills-describe-log",{id:e});t.ok&&k(t.value.logs??[])}catch(e){}})()},[null!==h&&h.busy]);const B=e=>{s(t=>null===t?t:{...t,entries:t.entries.map(t=>t.id===e.id?e:t)})};l(()=>{if(null===m)return;const e=setTimeout(()=>g(null),3e3);return()=>clearTimeout(e)},[m]),l(()=>{if(!q)return;const e=setTimeout(()=>C(!1),3e3);return()=>clearTimeout(e)},[q]),l(()=>{C(!1)},[$,z]);const F=async(e,t)=>{const a=e.id+":"+t;if(m!==a)return void g(a);g(null);const r="model"===t?!0!==e.invocation.model:!0!==e.invocation.user;try{const a=await ea("skills-toggle",{id:e.id,field:t,enable:r});a.ok?B(a.value.entry):i(a.error+(a.detail?":"+a.detail:"")||"unknown")}catch(e){i("network")}},P={color:"var(--dsw-alias-label-secondary)",fontSize:"12px",marginTop:"8px",lineHeight:1.5},_=(e,t)=>r.createElement("span",{key:e,style:L("warn"===t?"warning":"danger"===t?"danger":"neutral",{marginLeft:"6px",padding:"1px 7px",verticalAlign:"middle"})},e),U=(e,t)=>r.createElement("button",{type:"button",role:"switch","data-testid":t.testid,"aria-checked":String(e),title:t.title,disabled:t.disabled,onClick:t.onClick,style:{width:"34px",height:"20px",borderRadius:"10px",padding:0,flexShrink:0,position:"relative",cursor:t.disabled?"default":"pointer",lineHeight:0,border:"1px solid "+(t.armed?"var(--dsw-alias-state-warn-primary)":e?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-border-l2)"),background:t.armed?"transparent":e?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-bg-layer-2)",opacity:t.disabled?.5:1}},r.createElement("span",{style:{position:"absolute",top:"1px",left:e&&!t.armed?"15px":"1px",width:"16px",height:"16px",borderRadius:"50%",background:t.armed?"var(--dsw-alias-state-warn-primary)":e?"#fff":"var(--dsw-alias-label-tertiary)"}})),V={border:"1px solid var(--dsh-alias-border-l2)",borderRadius:"10px",padding:"11px 13px",marginBottom:"8px",background:"var(--dsh-svc-card-bg)"},K=a=>{const s="string"==typeof a.invalid&&a.invalid.startsWith("legacy-invocation-key:"),n=r.createElement("div",{style:{fontSize:"14px",fontWeight:650,color:"var(--dsw-alias-label-primary)",overflowWrap:"anywhere"}},a.name,_(e("skills.source."+a.source)==="skills.source."+a.source?a.source:e("skills.source."+a.source)),a.shadowed?_(e("skills.badge.shadowed"),"warn"):null,a.writable?null:_(e("skills.badge.readonly"),"danger"),a.annotated?_(e("skills.badge.annotated")):null),l=r.createElement("div",{style:{fontSize:"12px",color:"var(--dsw-alias-label-secondary)",marginTop:"3px",lineHeight:1.45,overflowWrap:"anywhere"}},a.description),o=""===a.usage?null:r.createElement("div",{style:{fontSize:"12px",color:"var(--dsw-alias-label-tertiary)",marginTop:"2px",lineHeight:1.45,overflowWrap:"anywhere"}},e("skills.apply.usage")+":"+a.usage),d=void 0!==a.note?r.createElement("div",{"data-testid":"skill-note-"+a.name,style:{marginTop:"5px",padding:"6px 9px",borderRadius:"7px",background:"var(--dsh-svc-raised-bg)",border:"1px solid var(--dsw-alias-border-l2)",fontSize:"11.5px",lineHeight:1.55,color:"var(--dsw-alias-label-secondary)",display:"flex",gap:"8px",alignItems:"flex-start"}},r.createElement("div",{style:{minWidth:0,flex:1}},!0===a.note.stale?r.createElement("div",{style:{marginBottom:"3px",color:"var(--dsw-alias-state-warn-primary)"}},"⚠ "+e("skills.note.stale")):null,r.createElement("div",{style:{overflowWrap:"anywhere"}},r.createElement("span",{style:{fontWeight:700,color:"var(--dsw-alias-label-primary)"}},e("skills.apply.description")+":"),r.createElement("span",null,a.note.description)),""===a.note.usage?null:r.createElement("div",{style:{overflowWrap:"anywhere",marginTop:"3px"}},r.createElement("span",{style:{fontWeight:700,color:"var(--dsw-alias-label-primary)"}},e("skills.apply.usage")+":"),r.createElement("span",null,a.note.usage))),r.createElement("button",{type:"button","data-testid":"skill-note-remove-"+a.name,onClick:()=>{(async e=>{const t=await ea("skills-note-clear",{id:e.id});t.ok?B(t.value.entry):i(t.error||"unknown")})(a)},title:e("skills.note.remove"),style:{border:0,background:"transparent",color:"var(--dsw-alias-label-tertiary)",cursor:"pointer",fontSize:"13px",flexShrink:0,lineHeight:1}},"✕")):null,c=void 0!==a.invalid?r.createElement("div",{style:{fontSize:"12px",color:"var(--dsw-alias-state-warn-primary)",marginTop:"4px",display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},"⚠ ",s?e("skills.invalid.legacy"):e("skills.invalid.other",{reason:a.invalid}),s&&a.writable?r.createElement("button",{type:"button","data-testid":"skill-fix-"+a.name,onClick:()=>{(async e=>{const t=e.id+":fix";if(m===t){g(null);try{const t=await ea("skills-fix-keys",{id:e.id});t.ok?B(t.value.entry):i(t.error+(t.detail?":"+t.detail:"")||"unknown")}catch(e){i("network")}}else g(t)})(a)},title:m===a.id+":fix"?e("skills.switch.confirm"):void 0,style:{fontSize:"11px",padding:"2px 9px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid var(--dsw-alias-state-warn-primary)",background:m===a.id+":fix"?"rgba(198,128,0,0.14)":"transparent",color:"var(--dsw-alias-state-warn-primary)",cursor:"pointer"}},m===a.id+":fix"?e("skills.switch.confirm"):e("skills.fix.legacy")):null):null,u=void 0===a.invalid?r.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"7px",alignItems:"flex-end",flexShrink:0}},r.createElement("label",{style:{display:"flex",alignItems:"center",gap:"7px",fontSize:"11.5px",color:"var(--dsw-alias-label-secondary)"}},e("skills.switch.model"),U(a.invocation.model,{testid:"skill-switch-model-"+a.name,disabled:!a.writable,armed:m===a.id+":model",title:m===a.id+":model"?e("skills.switch.confirm"):void 0,onClick:()=>{F(a,"model")}})),r.createElement("label",{style:{display:"flex",alignItems:"center",gap:"7px",fontSize:"11.5px",color:"var(--dsw-alias-label-secondary)"}},e("skills.switch.user"),U(a.invocation.user,{testid:"skill-switch-user-"+a.name,disabled:!a.writable,armed:m===a.id+":user",title:m===a.id+":user"?e("skills.switch.confirm"):void 0,onClick:()=>{F(a,"user")}})),null!==t&&t.llmAvailable?r.createElement("button",{type:"button","data-testid":"skill-describe-"+a.name,onClick:()=>{(async e=>{const t=aa();b({entry:e,models:null,modelItem:null,draft:null,busy:!1,error:"",applied:!1,preferred:t}),k([]);const a=await ea("skills-models",{});if(!a.ok)return void b(e=>({...e,error:a.error||"unknown"}));const r=a.value.models??[];b(e=>({...e,models:r,modelItem:ra(r,a.value.current)}))})(a)},style:Object.assign({},N(),{fontSize:"11px",padding:"3px 10px"})},"✨ "+e("skills.describe.button")):null):null;return r.createElement("div",{key:a.id,"data-testid":"skill-entry-"+a.name,style:V},r.createElement("div",{style:{display:"flex",gap:"12px",alignItems:"flex-start",justifyContent:"space-between"}},r.createElement("div",{style:{minWidth:0,flex:1}},n,l,o,c),u),d)},G=(t,a,s)=>0===a.length?null:r.createElement("div",{"data-testid":t,style:{marginTop:"9px",padding:"7px 10px",borderRadius:"7px",background:"var(--dsw-alias-bg-layer-3)",border:"1px solid var(--dsw-alias-border-l2)",maxHeight:"130px",overflowY:"auto"}},s?r.createElement("div",{style:{fontSize:"11px",fontWeight:700,color:"var(--dsw-alias-label-secondary)",marginBottom:"3px"}},e("skills.log.title")):null,...a.map((e,t)=>r.createElement("div",{key:t,style:{fontSize:"11px",lineHeight:1.6,color:"var(--dsw-alias-label-tertiary)",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",overflowWrap:"anywhere"}},e))),[Y,J]=a(!1);return l(()=>{null===R||"running"!==R.phase&&"planned"!==R.phase||J(!0)},[null!==R&&R.phase]),r.createElement("div",{"data-testid":"skills-section"},r.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px",flexWrap:"wrap"}},r.createElement("input",{"data-testid":"skills-filter",value:u,placeholder:e("skills.filter"),onChange:e=>p(e.target.value),style:{fontSize:"12px",padding:"6px 10px",borderRadius:"7px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)",width:"200px"}}),r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"10px",flexWrap:"wrap"}},r.createElement("button",{type:"button","data-testid":"skills-refresh","data-variant":"neutral",style:Object.assign({},D("neutral"),{minHeight:"28px",padding:"4px 10px",fontSize:"12px"}),onClick:()=>{W()}},"↻"))),o&&null===t?r.createElement("p",{style:P},"…"):null,""!==n||""!==H?r.createElement("p",{"data-testid":"skills-error",style:{...P,color:"var(--dsw-alias-state-error-primary)"}},na(e,""!==n?n:H)):null,null!==t&&t.llmAvailable?r.createElement("button",{type:"button","data-testid":"skills-batch-toggle","aria-expanded":String(Y),onClick:()=>J(e=>!e),style:{margin:"0 0 12px",fontSize:"12px",padding:"6px 14px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid "+(Y?"var(--dsw-alias-label-dimmed)":"var(--dsh-svc-border-strong)"),background:"transparent",color:"var(--dsw-alias-label-primary)",cursor:"pointer"}},(Y?"▾ ":"▸ ")+e("skills.batch.toggle")):null,Y&&null!==t&&t.llmAvailable?(()=>{const t=null!==R&&"planned"===R.phase&&null===z?"idle":null!==R?R.phase:"idle",a=t,s=null!==R&&R.total>0?Math.round(R.done/R.total*100):0,n=Array.isArray(z?.annotated)?z.annotated.length:0;return r.createElement("div",{"data-testid":"skills-batch-card",style:{border:"1px solid var(--dsw-alias-border-l2)",borderRadius:"12px",padding:"13px 15px",margin:"14px 0"}},r.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px"}},r.createElement("div",{style:{fontSize:"13.5px",fontWeight:700}},e("skills.batch.title")),r.createElement("button",{type:"button","data-testid":"skills-batch-collapse",onClick:()=>J(!1),style:{border:0,background:"transparent",color:"var(--dsw-alias-label-tertiary)",cursor:"pointer",fontSize:"12px"}},e("skills.batch.collapse")+" ▴")),r.createElement("p",{style:{...P,marginTop:"4px"}},e("skills.batch.hint")),r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"10px",marginTop:"9px",flexWrap:"wrap"}},null!==M&&M.length>0?r.createElement("label",{style:{display:"flex",alignItems:"center",gap:"6px",fontSize:"12px",color:"var(--dsw-alias-label-secondary)"}},e("skills.batch.model"),r.createElement("select",{"data-testid":"skills-batch-model",value:null===j?"":ta(j),disabled:v||null!==R&&"running"===R.phase,onChange:e=>(e=>{const t=(ge??[]).find(t=>ta(t)===e)??null;if(he=t,null!==t)try{localStorage.setItem(Zt,JSON.stringify({provider:t.provider,model:t.id}))}catch(e){}Ee()})(e.target.value),style:{fontSize:"12px",padding:"4px 8px",borderRadius:"6px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)",maxWidth:"100%"}},M.map(e=>r.createElement("option",{key:ta(e),value:ta(e)},e.providerName+" / "+e.name)))):null,"idle"===t||"done"===t||"cancelled"===t?r.createElement("button",{type:"button","data-testid":"skills-batch-plan",disabled:v,onClick:()=>{(async()=>{f(!0);try{await(async()=>{if(be="",Ee(),0===(await Ae()).length||null===he)return be="models-empty",Ee(),!1;try{localStorage.setItem(Zt,JSON.stringify({provider:he.provider,model:he.id}))}catch(e){}const e=await c("skills-batch-plan",{provider:he.provider,model:he.id});if(!e.ok)return be=e.error||"unknown",Ee(),!1;me={...e.value,modelItem:he};const t=Array.isArray(e.value.annotated)?e.value.annotated.length:0;return pe={phase:"planned",total:e.value.candidates.length+t,done:0,failures:[],current:null,estBytes:e.value.estBytes,logs:[]},qe("planned"),Te(),Ee(),!0})()}finally{f(!1)}})()},style:Object.assign({},D("neutral"),{cursor:v?"default":"pointer",opacity:v?.55:1})},e("skills.batch.plan")):null,null!==z?r.createElement("span",{"data-testid":"skills-batch-candidates",style:{fontSize:"12px",color:"var(--dsw-alias-label-secondary)"}},e("skills.batch.candidates",{count:z.candidates.length})+(z.estBytes>0?" · "+e("skills.batch.estBytes",{size:(i=z.estBytes,i>=1048576?(i/1024/1024).toFixed(1)+" MB":i>=1024?(i/1024).toFixed(1)+" KB":String(i)+" B")}):"")+(n>0?" · "+e("skills.batch.annotated",{count:n}):"")+" · "+e("skills.batch.skipped",{count:z.skipped.length})):null,null!==z&&"planned"===t?r.createElement("button",{type:"button","data-testid":"skills-batch-start",disabled:v||0===z.candidates.length&&0===n,onClick:()=>{(async()=>{const e=Array.isArray(z?.annotated)?z.annotated.length:0;if(e>0&&!q)C(!0);else{C(!1),f(!0);try{await(async(e=!1)=>{if(null===me||null===pe)return!1;const t=await c("skills-batch-run",{planId:me.planId,lang:T(),...!0===e?{forceAnnotated:!0}:{}});return t.ok?(pe={...pe,phase:"running"},qe("running"),Te(),Ee(),!0):(be=t.error||"unknown",Ee(),!1)})(e>0)}finally{f(!1)}}})()},title:q?e("skills.switch.confirm"):void 0,style:{fontSize:"12px",padding:"5px 14px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid transparent",background:q?"var(--dsh-svc-warning)":"var(--dsw-alias-brand-primary)",color:"var(--dsh-svc-brand-text)",cursor:v?"default":"pointer",opacity:v?.55:1}},q&&n>0?e("skills.batch.forceConfirm",{count:n}):e("skills.batch.start")):null,null!==R&&"running"===R.phase?r.createElement("button",{type:"button","data-testid":"skills-batch-cancel",onClick:()=>{(async()=>{await(async()=>{try{await c("skills-batch-cancel",{}),Se(!1)}catch(e){}})()})()},style:{fontSize:"12px",padding:"4px 12px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid var(--dsw-alias-state-error-primary)",background:"transparent",color:"var(--dsw-alias-state-error-primary)",cursor:"pointer"}},e("skills.batch.cancel")):null,null!==R?r.createElement("span",{"data-testid":"skills-batch-phase",style:{fontSize:"12px",color:"var(--dsw-alias-label-tertiary)"}},e("skills.batch.phase."+a)):null),null!==z&&0===z.candidates.length&&0===n?r.createElement("p",{style:P},e("skills.batch.no-candidates")):null,null===z||0===z.skipped.length?null:r.createElement("div",{"data-testid":"skills-batch-skipped",style:{marginTop:"6px"}},r.createElement("button",{type:"button","data-testid":"skills-batch-skipped-toggle",onClick:()=>S(e=>!e),style:{border:0,background:"transparent",color:"var(--dsw-alias-label-tertiary)",cursor:"pointer",fontSize:"11.5px",padding:0}},(E?"▾ ":"▸ ")+e("skills.skippedList")+"("+z.skipped.length+")"),E?r.createElement("div",{style:{marginTop:"4px",fontSize:"11.5px",lineHeight:1.6,color:"var(--dsw-alias-label-tertiary)"}},z.skipped.map((t,a)=>r.createElement("div",{key:t.id??a,"data-testid":"skills-batch-skipped-item"},(""===t.name?t.id:t.name)+e("skills.colon")+(t=>{if("shadowed"===t)return e("skills.skip.shadowed");if("string"==typeof t&&t.startsWith("legacy-invocation-key"))return e("skills.skip.reason.legacy-invocation-key");const a=e("skills.skip.reason."+t);return a==="skills.skip.reason."+t?t:a})(t.reason)))):null),(()=>{const t=Array.isArray(z?.annotated)?z.annotated:[];return null===z||0===t.length?null:r.createElement("div",{"data-testid":"skills-batch-annotated",style:{marginTop:"6px"}},r.createElement("button",{type:"button","data-testid":"skills-batch-annotated-toggle",onClick:()=>I(e=>!e),style:{border:0,background:"transparent",color:"var(--dsw-alias-label-tertiary)",cursor:"pointer",fontSize:"11.5px",padding:0}},(A?"▾ ":"▸ ")+e("skills.batch.annotatedList")+"("+t.length+")"),A?r.createElement("div",{style:{marginTop:"4px",fontSize:"11.5px",lineHeight:1.6,color:"var(--dsh-svc-warning)"}},t.map((e,t)=>r.createElement("div",{key:e.id??t,"data-testid":"skills-batch-annotated-item"},""===e.name?e.id:e.name))):null)})(),null!==R&&R.total>0&&"idle"!==t?(()=>{const t=Array.isArray(R.failures)&&R.failures.length>0?r.createElement("div",{"data-testid":"skills-batch-failures",style:{marginTop:"7px",fontSize:"11.5px",color:"var(--dsw-alias-state-error-primary)",lineHeight:1.5}},e("skills.batch.failures",{count:R.failures.length})+":"+R.failures.map(e=>e.name+"("+e.reason+")").join("、")):null,a=Array.isArray(R.logs)?R.logs:[],n=0===a.length?null:r.createElement("div",null,r.createElement("button",{type:"button","data-testid":"skills-batch-log-toggle",onClick:()=>w(e=>!e),style:{marginTop:"7px",border:0,background:"transparent",color:"var(--dsw-alias-label-tertiary)",cursor:"pointer",fontSize:"11.5px",padding:0}},(x?"▾ ":"▸ ")+e("skills.log.title")+"("+a.length+")"),x?G("skills-batch-log",a.slice(-30).map(t=>sa(e,t)),!1):null);return r.createElement("div",{style:{marginTop:"10px"}},r.createElement("div",{"data-testid":"skills-batch-progress",style:{fontSize:"12px",color:"var(--dsw-alias-label-secondary)",marginBottom:"4px"}},e("skills.batch.progress",{done:R.done,total:R.total})+(null!==R.current?" · "+e("skills.batch.current",{name:R.current}):"")),r.createElement("div",{style:{height:"6px",borderRadius:"3px",background:"var(--dsw-alias-bg-layer-3)",overflow:"hidden"}},r.createElement("div",{style:{height:"100%",width:s+"%",background:"var(--dsw-alias-state-success-primary)",transition:"width .3s"}})),t,n)})():null);var i})():null,(()=>{if(null===h)return null;const{entry:t,models:a,modelItem:s,draft:n,busy:i,error:l,applied:o}=h,d=null===n?null:[["description",void 0!==t.note?t.note.description:"",n.description],["usage",void 0!==t.note?t.note.usage:"",""===n.usage?null:n.usage]].map(([t,a,s])=>r.createElement("div",{key:t,"data-testid":"skill-diff-"+t,style:{marginBottom:"9px"}},r.createElement("div",{style:{fontSize:"12px",fontWeight:700,marginBottom:"3px"}},e("skills.apply."+t)),r.createElement("div",{style:{fontSize:"12px",color:"var(--dsw-alias-label-tertiary)",textDecoration:"line-through",lineHeight:1.45}},e("skills.apply.old")+":"+(""===a?"—":a)),r.createElement("div",{style:{fontSize:"12px",color:"var(--dsw-alias-label-primary)",lineHeight:1.45}},e("skills.apply.new")+":"+(null===s?e("skills.apply.keepusage"):s))));return r.createElement("div",{"data-testid":"skill-describe-dialog",style:{border:"1px solid var(--dsw-alias-border-l1)",borderRadius:"12px",padding:"14px 16px",marginBottom:"14px",background:"var(--dsh-svc-raised-bg)"}},r.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px"}},r.createElement("div",{style:{fontSize:"14px",fontWeight:700}},e("skills.describe.title",{name:t.name})),r.createElement("button",{type:"button",onClick:()=>b(null),style:{border:0,background:"transparent",color:"var(--dsw-alias-label-tertiary)",cursor:"pointer",fontSize:"15px"}},"✕")),null===a&&""===l?r.createElement("p",{style:P},e("skills.describe.models.loading")):null,null!==a&&0===a.length?r.createElement("p",{style:P},e("skills.describe.models.empty")):null,null!==a&&a.length>0?r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginTop:"10px",flexWrap:"wrap"}},r.createElement("span",{style:{fontSize:"12px",color:"var(--dsw-alias-label-secondary)"}},e("skills.describe.model")),r.createElement("select",{"data-testid":"skill-describe-model",value:null===s?"":ta(s),onChange:e=>b(t=>null===t?t:{...t,modelItem:a.find(t=>ta(t)===e.target.value)??null}),style:{fontSize:"12px",padding:"4px 8px",borderRadius:"6px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)",maxWidth:"100%"}},a.map(e=>r.createElement("option",{key:ta(e),value:ta(e)},e.providerName+" / "+e.name))),null===n?r.createElement("button",{type:"button","data-testid":"skill-describe-run",disabled:i||null===s,onClick:()=>{(async()=>{if(null===h||null===h.modelItem)return;const{entry:e,modelItem:t}=h;b(e=>({...e,busy:!0,error:""}));const a=await ea("skills-describe",{id:e.id,provider:t.provider,model:t.id,lang:T()});if(a.ok){try{localStorage.setItem(Zt,JSON.stringify({provider:t.provider,model:t.id}))}catch(e){}b(e=>({...e,draft:a.value.draft,busy:!1}))}else b(e=>({...e,busy:!1,error:a.error+(a.detail?":"+a.detail:"")}))})()},style:Object.assign({},D("neutral"),{fontSize:"12px",minHeight:"28px",padding:"4px 12px",cursor:i?"default":"pointer",opacity:i||null===s?.55:1})},e(i?"skills.describe.running":"skills.describe.run")):null):null,""!==l?r.createElement("p",{"data-testid":"skill-describe-error",style:{...P,color:"var(--dsw-alias-state-error-primary)"}},na(e,l)):null,G("skill-describe-log",y.map(t=>sa(e,t))),d,o?r.createElement("p",{"data-testid":"skill-apply-done",style:{...P,color:"var(--dsw-alias-state-success-primary)"}},"✓ "+e("skills.apply.done")):null,null===n||o?null:r.createElement("p",{"data-testid":"skill-note-disclaimer",style:{...P,fontSize:"11px"}},e("skills.note.panelOnly")),null===n||o?null:r.createElement("button",{type:"button","data-testid":"skill-apply-confirm",disabled:i,onClick:()=>{(async()=>{if(null===h||null===h.draft||null===h.modelItem)return;const{entry:e,draft:t,modelItem:a}=h;b(e=>({...e,busy:!0}));const r=await ea("skills-note-save",{id:e.id,patch:{description:t.description,usage:t.usage},model:a.provider+"/"+a.id});r.ok?(B(r.value.entry),b(e=>({...e,busy:!1,applied:!0}))):b(e=>({...e,busy:!1,error:r.error||"unknown"}))})()},style:{fontSize:"12px",padding:"6px 16px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid transparent",background:"var(--dsw-alias-brand-primary)",color:"var(--dsh-svc-brand-text)",cursor:i?"default":"pointer",opacity:i?.55:1}},e("skills.apply.confirm")))})(),(()=>{if(null===t||0===t.entries.length)return r.createElement("p",{style:P},e("skills.empty"));const a=u.trim().toLowerCase(),s=""===a?t.entries:t.entries.filter(e=>e.name.toLowerCase().includes(a)),n=s.filter(e=>void 0!==e.invalid),i=s.filter(e=>void 0===e.invalid),l=[["skills.group.auto",i.filter(e=>e.invocation.model)],["skills.group.manual",i.filter(e=>!e.invocation.model&&e.invocation.user)],["skills.group.disabled",i.filter(e=>!e.invocation.model&&!e.invocation.user)]];return r.createElement("div",null,n.length>0?r.createElement("div",{"data-testid":"skills-invalid-group",style:{marginBottom:"12px"}},n.map(K)):null,l.map(([t,a])=>0===a.length?null:r.createElement("div",{key:t,"data-testid":"skills-group-"+t.split(".").pop(),style:{marginBottom:"14px"}},r.createElement("div",{style:{fontSize:"12px",fontWeight:700,margin:"0 0 7px",color:"var(--dsw-alias-label-secondary)"}},e(t)+" · "+a.length),a.map(K))))})())}function la(){return r.createElement(fa,null)}function oa(e){if("number"!=typeof e||!Number.isFinite(e)||e<0)return"";if(0===e)return"0 B";const t=["B","KB","MB","GB"];let a=e,r=0;for(;a>=1024&&r<t.length-1;)a/=1024,r+=1;return(0===r?String(a):a.toFixed(1))+" "+t[r]}function da(e,t){if("number"!=typeof e||e<=0)return t("sessions.status.unavailableTime");try{return new Date(e).toLocaleString()}catch(t){return String(e)}}function ca(e,t){return"feature-disabled"===t?e("sessions.error.feature-disabled"):"session-not-found"===t?e("sessions.error.session-not-found"):"live-session-rejected"===t?e("sessions.error.live-session-rejected"):"session-not-archived"===t?e("sessions.error.session-not-archived"):"unknown-delete-plan"===t?e("sessions.error.unknown-delete-plan"):"network"===t?e("sessions.error.network"):t}const ua={all:void 0,archived:void 0,deleted:void 0},pa=new Map,ma=[Symbol.for("react.memo"),Symbol.for("react.forward_ref"),Symbol.for("react.lazy")],ga=e=>"function"==typeof e||null!==e&&"object"==typeof e&&"symbol"==typeof e.$$typeof&&ma.includes(e.$$typeof);let ha=null;const ba=e=>{const t=e("sessions.md.copy"),a=e("sessions.md.copied"),r=e("sessions.md.footnotes");return{code:{copyLabel:"string"==typeof t&&""!==t?t:"Copy",copiedLabel:"string"==typeof a&&""!==a?a:"Copied"},footnotes:"string"==typeof r&&""!==r?r:"Footnotes"}};try{const t=e("@deepseek-ai/dsh-client-ui-primitives");let a=null==t?null:t.MarkdownText;if(ga(a))ha=a;else if(null!==a&&"object"==typeof a)if(a="function"==typeof a.default?a.default:"function"==typeof a.MarkdownText?a.MarkdownText:null,ga(a))ha=a;else{let e=String(typeof a);try{e+=" keys=["+Object.keys(a).join(",")+"]"}catch(e){}console.warn("[dsh-service-md] MarkdownText is an unexpected value ("+e+") — falling back to plain text")}else console.warn("[dsh-service-md] ui-primitives seed present, but MarkdownText unavailable ("+typeof a+") — falling back to plain text")}catch(e){console.warn("[dsh-service-md] ui-primitives require failed: "+(e&&e.message?e.message:String(e)))}function va(){const e=O(),{useState:a,useEffect:s,useRef:n}=r,[i,l]=ue.useEnabled(),o=ua.archived,[d,u]=a(void 0!==o?o:null),[p,m]=a(void 0===o),[g,h]=a(""),[b,v]=a(Object.fromEntries(pa)),f=n(new Set),[y,k]=a("archived"),[x,w]=a("createdDesc"),[E,S]=a([]),[q,C]=a(!1),[T,A]=a([]),[I,R]=a(""),[z,M]=a(!1),[j,H]=a(!1),[$,W]=a(null),[B,F]=a(null),[P,_]=a(!1),[U,V]=a(""),[K,G]=a({}),Y=n(null),J=()=>y+"\0"+x+"\0"+I+"\0"+(z?1:0),[Q,X]=a(""),[Z,ee]=a(""),[te,ae]=a(""),[re,se]=a(""),[ne,ie]=a(""),[le,oe]=a(null),[de,ce]=a(!1),[pe,me]=a(""),[ge,he]=a(0),[be,ve]=a(""),[fe,ye]=a(""),ke={color:"var(--dsw-alias-label-secondary)",fontSize:"12px",marginTop:"8px",lineHeight:1.5},xe=N(),we=Object.assign({},xe,{background:"transparent",borderColor:"var(--dsw-alias-state-error-primary)",color:"var(--dsw-alias-state-error-primary)"}),Ee=Object.assign({},xe,{background:"var(--dsw-alias-state-error-primary)",borderColor:"transparent",color:"var(--dsh-svc-brand-text)"}),Se=e=>"archived"===e?"archived":"deleted"===e?"deleted":"all",qe=n(y);qe.current=y;const Ce=async(t,a={})=>{const r=void 0!==t?t:Se(y),s=ua[r],n=!a.force&&void 0!==s;if(n){if(u(s),h(""),m(!1),!0!==a.silent)return}else m(!0);try{const t=await c("sessions-list",{scope:r});t.ok?(ua[r]=t.value,Se(qe.current)===r&&(u(t.value),h(""))):n&&a.silent||h(ca(e,t.error||"unknown"))}catch(t){n&&a.silent||h(e("sessions.error.network"))}finally{n&&a.silent||m(!1)}};s(()=>{Ce("archived",{silent:!0})},[]),s(()=>{if(null===d)return;const e=Array.isArray(d.items)?d.items:[],t=[];for(const a of e){const e=a.id;void 0!==b[e]||f.current.has(e)||(f.current.add(e),t.push(e))}if(0===t.length)return;let a=!1;const r=async e=>{try{const t=await c("sessions-bytes",{ids:e});if(a)return;const r=t&&t.ok&&t.value&&"object"==typeof t.value.bytes?t.value.bytes:{};if(Object.keys(r).length>0){for(const t of e)void 0!==r[t]&&pa.set(t,r[t]);v(t=>{const a={...t};for(const t of e)void 0!==r[t]&&(a[t]=r[t]);return a})}}catch(e){}finally{if(!a)for(const t of e)f.current.delete(t)}};for(let e=0;e<t.length;e+=100)r(t.slice(e,e+100));return()=>{a=!0;for(const e of t)f.current.delete(e)}},[d]),s(()=>{if("deleted"!==y){if(""!==I.trim())return t.timer.timeout(()=>{(async e=>{if(""!==e.trim()){H(!0);try{const t=await c("sessions-search",{query:e.trim(),scope:z?"archived":"all"});t.ok?W(t.value):W({available:!0,query:e,scope:"all",hits:[],error:t.error})}catch(t){W({available:!0,query:e,scope:z?"archived":"all",hits:[],error:"network"})}finally{H(!1)}}else W(null)})(I)},300);W(null)}},[I,z,y]);const Te=(e,t,a,r,s)=>{C(!1),A([]),se(""),ie("");const n=function(e){let t=null!=e&&e.currentTarget?e.currentTarget:null;const a="undefined"!=typeof document?document:null;for(;null!=t&&1===t.nodeType;){let e="";if(null!==a&&a.defaultView&&"function"==typeof a.defaultView.getComputedStyle)try{const r=a.defaultView.getComputedStyle(t);e=r?String(r.overflowY||""):""}catch(e){}else t.style&&(e=String(t.style.overflowY||t.style.overflow||""));if(("auto"===e||"scroll"===e||"overlay"===e)&&"number"==typeof t.scrollHeight&&"number"==typeof t.clientHeight&&t.scrollHeight>t.clientHeight+1)return t;t=t.parentNode}return null}(r);if(null!==n&&(Y.current={key:J(),container:n,scrollTop:n.scrollTop}),G({}),F({sessionId:e,view:t||"events",cursor:void 0,items:[],total:0,hitItems:a||null,loadedTitle:"",centerSeq:void 0}),V(""),_(!1),"search"===(t||"events")&&Array.isArray(a)&&a.length>0){const t=Number.isSafeInteger(s)?Number(s):Number(a[0].seq);Ie(e,Number.isSafeInteger(t)?t:0)}else Ae(e,void 0,t||"events")},Ae=async(t,a,r)=>{_(!0);try{const s=await c("sessions-view",{id:t,cursor:a});s.ok?(F(e=>{const n=null===e?{}:e,i=void 0===a?s.value.items||[]:[...n.items||[],...s.value.items||[]];return{...n,sessionId:t,view:r||n.view||"events",cursor:s.value.nextCursor,items:i,total:s.value.total,loadedTitle:n.loadedTitle||(s.value.session&&s.value.session.id,"")}}),V("")):V(ca(e,s.error||"unknown"))}catch(t){V(e("sessions.error.network"))}finally{_(!1)}},Ie=async(t,a)=>{_(!0),V("");try{const r=await c("sessions-view",{id:t,center:a});r.ok?(F(e=>{const s=null===e?{}:e;return{...s,sessionId:t,view:"search",cursor:r.value.nextCursor,items:r.value.items||[],total:r.value.total,centerSeq:Number.isSafeInteger(r.value.centerSeq)?r.value.centerSeq:a,loadedTitle:s.loadedTitle||""}}),V("")):V(ca(e,r.error||"unknown"))}catch(t){V(e("sessions.error.network"))}finally{_(!1)}},Re=async t=>{try{const a=await c("sessions-export",{id:t});if(!a.ok)return{ok:!1,error:ca(e,a.error||"unknown")};const r=a.value.url,s=await fetch(r,{method:"HEAD"});if(!s.ok)return{ok:!1,error:e("sessions.error.export-failed",{error:"HTTP "+s.status})};const n=document.createElement("a");return n.href=r,n.download="dsh-session-"+t.replace(/[^A-Za-z0-9_-]/g,"_")+".zip",n.click(),{ok:!0}}catch(t){return{ok:!1,error:e("sessions.error.network")}}},ze=async e=>{X(e),ee("");const t=await Re(e);return t.ok||ee(t.error),X(""),t},Me=async t=>{try{const a=await c("sessions-archive",{id:t});return a.ok?((e=>{const t=ua.all;void 0!==t&&Array.isArray(t.items)&&(ua.all={...t,items:t.items.map(t=>t.id===e?{...t,archived:!0}:t)});const a=ua.archived;if(void 0!==a&&Array.isArray(a.items)){const r=a.items.some(t=>t.id===e),s=t?.items?.find(t=>t.id===e);ua.archived=r?{...a,items:a.items.map(t=>t.id===e?{...t,archived:!0}:t)}:void 0!==s?{...a,items:[{...s,archived:!0},...a.items]}:a}u(t=>null!==t&&Array.isArray(t.items)?{...t,items:t.items.map(t=>t.id===e?{...t,archived:!0}:t)}:t)})(t),{ok:!0}):{ok:!1,error:ca(e,a.error||"unknown")}}catch(t){return{ok:!1,error:e("sessions.error.network")}}},je=e=>{const t=e?.id??"";if(""===t)return;const a=null!==d&&Array.isArray(d.items)?d.items.find(e=>e.id===t):void 0,r={id:t,title:"string"==typeof e?.title?e.title:a?.title??"",cwd:e?.cwd??a?.cwd??null,deletedAt:Date.now()};for(const e of["all","archived"]){const a=ua[e];void 0!==a&&Array.isArray(a.items)&&(ua[e]={...a,items:a.items.filter(e=>e.id!==t)})}const s=ua.deleted;void 0!==s&&(ua.deleted={...s,deleted:[r,...(Array.isArray(s.deleted)?s.deleted:[]).filter(e=>e.id!==t)]}),pa.delete(t),u(e=>{if(null===e)return e;const a=Array.isArray(e.items)?e.items:[];return{...e,items:a.filter(e=>e.id!==t),deleted:[r,...(Array.isArray(e.deleted)?e.deleted:[]).filter(e=>e.id!==t)]}}),v(e=>{const a={...e};return delete a[t],a}),f.current.delete(t)};s(()=>{ge>0&&F(null)},[ge]),s(()=>{if(null!==B)return;const e=Y.current;if(Y.current=null,null===e)return;if(e.key!==J())return;if(null===e.container||void 0===e.container)return;const t="number"==typeof e.scrollTop?e.scrollTop:0;try{"number"==typeof e.container.scrollTop&&(e.container.scrollTop=t)}catch(e){}},[B]);const Oe=null!==B&&"search"===B.view?B.centerSeq:null,He=null!==B&&"search"===B.view&&Array.isArray(B.items)?B.items.length:0;s(()=>{if(null!==Oe&&"number"==typeof Oe)return function(e){if("undefined"==typeof document||null===document)return()=>{};try{const a=document.querySelector('[data-testid="sessions-jump-target-'+e+'"]');if(null==a)return()=>{};try{a.scrollIntoView({behavior:"smooth",block:"center"})}catch(e){try{a.scrollIntoView()}catch(e){}}if(a.classList&&"function"==typeof a.classList.add){a.classList.add("dshsv-locate-flash");const e=t.timer.timeout(()=>{try{a.classList&&"function"==typeof a.classList.remove&&a.classList.remove("dshsv-locate-flash")}catch(e){}},2e3);return()=>{e();try{a.classList&&"function"==typeof a.classList.remove&&a.classList.remove("dshsv-locate-flash")}catch(e){}}}}catch(e){}return()=>{}}(Oe)},[Oe,He]);const De=(()=>{if(null===d)return[];if("deleted"===y)return(Array.isArray(d.deleted)?d.deleted:[]).slice().sort((e,t)=>(t.deletedAt||0)-(e.deletedAt||0)).map(e=>({...e,_deleted:!0,archived:!0}));let e=(Array.isArray(d.items)?d.items:[]).slice();return"createdAsc"===x?e.sort((e,t)=>(e.createdAt||0)-(t.createdAt||0)):"title"===x?e.sort((e,t)=>String(e.title||"").localeCompare(String(t.title||""))):"project"===x?e.sort((e,t)=>String(e.cwd||"").localeCompare(String(t.cwd||""))||(t.createdAt||0)-(e.createdAt||0)):e.sort((e,t)=>(t.createdAt||0)-(e.createdAt||0)),e})(),Ne="deleted"===y||""!==I.trim()?[]:De.filter(e=>!0!==e._deleted).map(e=>e.id),Le=new Set(T),$e=De.filter(e=>Le.has(e.id)),We=$e.filter(e=>!0!==e._deleted),Be=$e.filter(e=>!0!==e._deleted&&!0!==e.live&&!0!==e.archived),Fe=$e.filter(e=>!0!==e._deleted&&!0!==e.live&&!0===e.archived),Pe=Ne.length>0&&Ne.every(e=>Le.has(e));s(()=>{if(!q)return;const e=new Set(Ne);A(t=>{const a=t.filter(t=>e.has(t));return a.length===t.length?t:a})},[d,y,q]);const _e=()=>{C(!1),A([]),se(""),ie("")},Ue=e=>{A(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},Ve=t=>{const a=!0===t._deleted,s=t.id,n=a?t.title||e("sessions.row.noTitle"):""!==t.title?t.title:e("sessions.row.noTitle"),i=!0===t.live,l=a||!0===t.archived,o=Le.has(s),d=(()=>{const e=b[s];return"number"==typeof e&&e>0?oa(e):null})(),u=[i?e("sessions.row.live"):l?e("sessions.row.archived"):null,a?e("sessions.row.deleted"):null,t.cwd?e("sessions.detail.cwd",{cwd:t.cwd}):null,a?t.deletedAt?da(t.deletedAt,e):null:d].filter(Boolean),p=[];return a||(p.push(r.createElement("button",{key:"view",type:"button","data-testid":"sessions-row-view-"+s,style:xe,onClick:e=>Te(s,"events",null,e)},e("sessions.action.view"))),p.push(r.createElement("button",{key:"export",type:"button","data-testid":"sessions-row-export-"+s,style:xe,disabled:Q===s,onClick:()=>{ze(s)}},e(Q===s?"sessions.detail.exporting":"sessions.action.export"))),i||l||p.push(r.createElement("button",{key:"archive",type:"button","data-testid":"sessions-row-archive-"+s,style:xe,disabled:be===s,onClick:()=>{(async e=>{ve(e),ye("");const t=await Me(e);t.ok||ye(t.error),ve("")})(s)}},e(be===s?"sessions.status.working":"sessions.action.archive"))),!i&&l&&p.push(r.createElement("button",{key:"delete",type:"button","data-testid":"sessions-row-delete-"+s,style:we,onClick:()=>{(async t=>{if(null===le&&!de){me("");try{const a=await c("sessions-delete-plan",{id:t});a.ok?oe(a.value):me(ca(e,a.error||"unknown"))}catch(t){me(e("sessions.error.network"))}}})(s)}},e("sessions.action.delete")))),r.createElement("div",{key:s,"data-testid":"sessions-row-"+s,"data-selected":q&&o?"true":void 0,onClick:q&&!a?()=>Ue(s):void 0,style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px",padding:q?"9px 2px 9px 8px":"9px 2px",borderBottom:"1px solid var(--dsh-svc-border)",background:"transparent",borderRadius:"4px",boxShadow:q&&o?"inset 3px 0 0 var(--dsw-alias-brand-primary)":"none",cursor:q&&!a?"pointer":"default"}},r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"9px",minWidth:0,flex:"1 1 auto"}},q&&!a?r.createElement("input",{type:"checkbox","data-testid":"sessions-select-"+s,"aria-label":e("sessions.batch.selectRow",{title:n}),checked:o,onClick:e=>e.stopPropagation(),onChange:()=>Ue(s),style:{width:"16px",height:"16px",flexShrink:0,accentColor:"var(--dsw-alias-brand-primary)",cursor:"pointer"}}):null,r.createElement("div",{style:{minWidth:0}},r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"6px",flexWrap:"wrap"}},r.createElement("span",{style:{fontSize:"13px",fontWeight:600,color:"var(--dsw-alias-label-primary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},n),i?r.createElement("span",{"data-testid":"sessions-tag-live-"+s,style:L("success")},e("sessions.row.live")):null,l?r.createElement("span",{"data-testid":"sessions-tag-archived-"+s,style:L("warning")},e("sessions.row.archived")):null,a?r.createElement("span",{style:L("danger")},e("sessions.row.deleted")):null),r.createElement("div",{"data-testid":"sessions-meta-"+s,style:{fontSize:"11.5px",color:"var(--dsw-alias-label-tertiary)",marginTop:"3px"}},u.join(" · ")))),q?null:r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"6px",flexShrink:0,flexWrap:"wrap",justifyContent:"flex-end"}},...p))},Ke=(t,a)=>{const s=!0===t.noise,n="string"==typeof t.text&&""!==t.text?r.createElement("div",{"data-testid":"sessions-event-text-"+t.seq,style:{marginTop:"4px"}},null!==ha?r.createElement(ha,{text:t.text,labels:ba(e)}):r.createElement("div",{style:{fontSize:"12px",lineHeight:1.55,color:"var(--dsw-alias-label-primary)",whiteSpace:"pre-wrap",wordBreak:"break-word"}},t.text)):null;return r.createElement("div",{key:String(t.seq),"data-testid":"sessions-event-"+t.seq,style:{padding:"8px 10px",borderRadius:"8px",border:"1px solid var(--dsw-alias-border-l1)",background:s?"transparent":"var(--dsw-alias-bg-layer-3)",marginBottom:"5px"}},r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"11px",color:"var(--dsw-alias-label-tertiary)"}},r.createElement("span",{"data-testid":"sessions-event-type-"+t.seq,style:{fontWeight:600,color:s?"inherit":"var(--dsw-alias-label-secondary)"}},s?e("sessions.detail.noise"):t.type),t.time?r.createElement("span",null,da(t.time,e)):null),n)};return r.createElement("div",null,r.createElement("div",{style:{fontSize:"14px",fontWeight:700,margin:"0 0 8px",color:"var(--dsw-alias-label-primary)"}},e("sessions.title")),r.createElement("p",{style:ke},e("sessions.hint")),r.createElement("div",{"data-testid":"sessions-nav-toggle",style:{margin:"2px 0 8px"}},r.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px"}},r.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"2px"}},r.createElement("span",{style:{fontSize:"13px",color:"var(--dsw-alias-label-primary)"}},e("sessions.navToggle")),r.createElement("span",{style:ke},e("sessions.navToggleHint"))),r.createElement("button",{type:"button",role:"switch","data-testid":"sessions-nav-switch","aria-checked":String(i),onClick:()=>l(!i),style:{width:"34px",height:"20px",borderRadius:"10px",padding:0,flexShrink:0,position:"relative",border:"1px solid "+(i?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-border-l2)"),background:i?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-bg-layer-2)",cursor:"pointer",lineHeight:0}},r.createElement("span",{style:{position:"absolute",top:"1px",left:i?"15px":"1px",width:"16px",height:"16px",borderRadius:"50%",background:i?"#fff":"var(--dsw-alias-label-tertiary)"}})))),r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap",margin:"0 0 10px"}},["all","archived","deleted"].map(t=>r.createElement("button",{key:t,type:"button","data-testid":"sessions-filter-"+t,style:{...xe,background:y===t?"var(--dsh-svc-tab-active-bg)":"transparent",color:y===t?"var(--dsh-svc-tab-active-text)":"var(--dsw-alias-label-primary)",fontWeight:y===t?650:400},onClick:()=>(e=>{e!==y&&(k(e),C(!1),A([]),se(""),ie(""),R(""),W(null),F(null),Ce(e))})(t)},e("sessions.filter."+t))),r.createElement("select",{"data-testid":"sessions-sort",style:{fontSize:"12px",padding:"4px 8px",borderRadius:"6px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)",maxWidth:"100%"},value:x,onChange:e=>w(e.target.value)},r.createElement("option",{value:"createdDesc"},e("sessions.sort.createdDesc")),r.createElement("option",{value:"createdAsc"},e("sessions.sort.createdAsc")),r.createElement("option",{value:"title"},e("sessions.sort.title")),r.createElement("option",{value:"project"},e("sessions.sort.project"))),r.createElement("button",{type:"button","data-testid":"sessions-refresh","data-variant":"neutral",style:Object.assign({},D("neutral"),{minHeight:"28px",padding:"4px 10px",fontSize:"12px"}),onClick:()=>{Ce(void 0,{force:!0})}},e("sessions.refresh")),null===B&&"deleted"!==y&&""===I.trim()?r.createElement("button",{type:"button","data-testid":"sessions-batch-toggle","data-variant":q?"primary":"neutral",style:Object.assign({},D(q?"primary":"neutral"),{minHeight:"28px",padding:"4px 10px",fontSize:"12px"}),onClick:q?_e:()=>{C(!0),A([]),se(""),ie("")}},e(q?"sessions.batch.exit":"sessions.batch.enter")):null),null===B&&q?r.createElement("div",{"data-testid":"sessions-batch-bar",style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap",margin:"0 0 10px",padding:"8px 10px",border:"1px solid var(--dsw-alias-border-l1)",borderRadius:"8px",background:"var(--dsw-alias-bg-layer-3)"}},r.createElement("button",{type:"button","data-testid":"sessions-select-all",style:xe,disabled:0===Ne.length||""!==te||de,onClick:()=>{A(Pe?[]:Ne.slice())}},e(Pe?"sessions.batch.clearAll":"sessions.batch.selectAll")),r.createElement("span",{"data-testid":"sessions-selected-count",style:{fontSize:"12px",color:"var(--dsw-alias-label-secondary)",marginRight:"auto"}},e("sessions.batch.selected",{count:T.length})),r.createElement("button",{type:"button","data-testid":"sessions-batch-export",style:xe,disabled:0===We.length||""!==te||de,onClick:()=>{(async()=>{if(""!==te||0===We.length)return;ae("export"),se(""),ie("");let t=0,a="";for(const e of We){const r=await Re(e.id);r.ok?t+=1:""===a&&(a=r.error)}""===a?se(e("sessions.batch.completed",{action:e("sessions.action.export"),count:t})):ie(e("sessions.batch.failed",{action:e("sessions.action.export"),done:t,total:We.length,error:a})),ae("")})()}},"export"===te?e("sessions.status.working"):e("sessions.batch.export",{count:We.length})),r.createElement("button",{type:"button","data-testid":"sessions-batch-archive",style:xe,disabled:0===Be.length||""!==te||de,onClick:()=>{(async()=>{if(""!==te||0===Be.length)return;ae("archive"),se(""),ie("");let t=0,a="";const r=Be.map(e=>e.id),s=[];for(const e of r){const r=await Me(e);r.ok?(t+=1,s.push(e)):""===a&&(a=r.error)}s.length>0&&A(e=>e.filter(e=>!s.includes(e))),""===a?se(e("sessions.batch.completed",{action:e("sessions.action.archive"),count:t})):ie(e("sessions.batch.failed",{action:e("sessions.action.archive"),done:t,total:r.length,error:a})),ae("")})()}},"archive"===te?e("sessions.status.working"):e("sessions.batch.archive",{count:Be.length})),r.createElement("button",{type:"button","data-testid":"sessions-batch-delete",style:we,disabled:0===Fe.length||""!==te||de,onClick:()=>{(async()=>{if(""!==te||null!==le||0===Fe.length)return;ae("delete-plan"),se(""),ie("");const t=[];let a="";for(const r of Fe)try{const s=await c("sessions-delete-plan",{id:r.id});s.ok?t.push(s.value):""===a&&(a=ca(e,s.error||"unknown"))}catch(t){""===a&&(a=e("sessions.error.network"))}ae(""),""===a&&t.length===Fe.length?oe({batch:!0,plans:t,sessions:t.map(e=>e.session),consequences:["deletes-session-log"]}):ie(e("sessions.batch.failed",{action:e("sessions.action.delete"),done:t.length,total:Fe.length,error:a||e("sessions.error.network")}))})()}},"delete-plan"===te?e("sessions.status.working"):e("sessions.batch.delete",{count:Fe.length}))):null,null===B&&"deleted"!==y?r.createElement("div",{style:{display:"flex",gap:"8px",alignItems:"center",marginBottom:"10px"}},r.createElement("input",{"data-testid":"sessions-search-input",type:"text",placeholder:e("sessions.search.placeholder"),value:I,onChange:e=>{q&&_e(),R(e.target.value)},style:{fontSize:"12px",padding:"6px 10px",borderRadius:"7px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)",width:"100%",boxSizing:"border-box"}}),r.createElement("label",{style:{display:"flex",alignItems:"center",gap:"5px",fontSize:"12px",color:"var(--dsw-alias-label-secondary)",whiteSpace:"nowrap"}},r.createElement("input",{type:"checkbox","data-testid":"sessions-search-archived",checked:z,onChange:e=>M(e.target.checked)}),e("sessions.search.archivedOnly"))):null,""!==fe?r.createElement("p",{style:{...ke,color:"var(--dsw-alias-state-error-primary)"}},fe+" · "+e("sessions.oneWayHint")):null,""!==Z?r.createElement("p",{style:{...ke,color:"var(--dsw-alias-state-error-primary)"}},Z):null,""!==re?r.createElement("p",{"data-testid":"sessions-batch-result",style:{...ke,color:"var(--dsw-alias-state-success-primary)"}},re):null,""!==ne?r.createElement("p",{"data-testid":"sessions-batch-error",style:{...ke,color:"var(--dsw-alias-state-error-primary)"}},ne):null,(()=>{if(null===B)return null;const a=null!==d&&Array.isArray(d.items)?d.items.find(e=>e.id===B.sessionId):void 0,s=""!==I&&"search"===B.view&&null!==$?$.hits.find(e=>e.sessionId===B.sessionId)?.title||"":void 0!==a&&""!==a.title?a.title:"",n=null!==d&&Array.isArray(d.items)?d.items.find(e=>e.id===B.sessionId):void 0,i="search"===B.view&&Array.isArray(B.hitItems)?B.hitItems.map(e=>Number(e.seq)).filter(e=>Number.isSafeInteger(e)):[],l="search"===B.view&&"number"==typeof B.centerSeq?i.indexOf(B.centerSeq):-1,o=l>0?i[l-1]:void 0,c=l>=0&&l<i.length-1?i[l+1]:void 0,u=new Set(i),p=(t,a)=>function(e){const t=[];for(const a of Array.isArray(e)?e:[])if(!0===a.noise){const e=t[t.length-1];void 0!==e&&!0===e._noiseBlock?(e.count+=1,e.lastSeq=a.seq):t.push({_noiseBlock:!0,count:1,firstSeq:a.seq,lastSeq:a.seq})}else t.push(a);return t}(t).map((s,n)=>{if(!0===s._noiseBlock){const a=!0===K[s.firstSeq],n=a&&Array.isArray(t)?t.filter(e=>!0===e.noise&&e.seq>=s.firstSeq&&e.seq<=s.lastSeq):[];return r.createElement("div",{key:"noise-"+s.firstSeq,"data-testid":"sessions-noisewall-"+s.firstSeq,style:{padding:"6px 10px",borderRadius:"8px",border:"1px solid var(--dsw-alias-border-l1)",background:"transparent",marginBottom:"5px"}},r.createElement("button",{type:"button","data-testid":"sessions-noisewall-toggle-"+s.firstSeq,style:{...xe,border:0,padding:0,color:"var(--dsw-alias-label-tertiary)",fontSize:"11px"},onClick:()=>{return e=s.firstSeq,G(t=>({...t,[e]:!t[e]}));var e}},e(a?"sessions.glyph.collapse":"sessions.glyph.expand")+" "+e(a?"sessions.detail.noiseCollapse":"sessions.detail.noiseBlock",{count:s.count})),a&&n.length>0?r.createElement("div",{style:{marginTop:"6px"}},n.map(e=>Ke(e))):null)}return null!==a&&a.has(Number(s.seq))?r.createElement("div",{key:"jump-"+s.seq,"data-testid":"sessions-jump-target-"+s.seq,style:{borderRadius:"8px",border:"1px solid rgba(198,128,0,0.55)",background:"rgba(198,128,0,0.10)",padding:"6px 8px",marginBottom:"6px"}},r.createElement("div",{"data-testid":"sessions-jump-badge-"+s.seq,style:{fontSize:"10.5px",fontWeight:700,color:"var(--dsw-alias-state-warn-primary)",marginBottom:"3px"}},e("sessions.hit.badge")),Ke(s)):Ke(s)});return r.createElement("div",{"data-testid":"sessions-detail"},r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap",marginBottom:"10px"}},r.createElement("button",{type:"button","data-testid":"sessions-detail-back",style:xe,onClick:()=>F(null)},e("sessions.glyph.back")+" "+e("sessions.detail.back")),r.createElement("span",{style:{fontSize:"14px",fontWeight:700,color:"var(--dsw-alias-label-primary)",minWidth:0}},""!==s?s:e("sessions.row.noTitle")),n?.archived?r.createElement("span",{title:e("sessions.detail.archiveDisabled"),style:{fontSize:"11px",color:"var(--dsw-alias-label-tertiary)"}},e("sessions.detail.archiveDisabled")):r.createElement("button",{type:"button","data-testid":"sessions-detail-open",style:xe,onClick:()=>{try{t.sessions?.open?.(B.sessionId)}catch(e){}}},e("sessions.detail.open")),r.createElement("button",{type:"button","data-testid":"sessions-detail-export",style:xe,disabled:Q===B.sessionId,onClick:()=>{ze(B.sessionId)}},Q===B.sessionId?e("sessions.detail.exporting"):e("sessions.detail.exportAll"))),"search"===B.view&&null!==B.hitItems?r.createElement("div",{"data-testid":"sessions-jump-view",style:{marginBottom:"10px"}},r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"6px",flexWrap:"wrap",marginBottom:"6px"}},r.createElement("button",{type:"button","data-testid":"sessions-detail-return-search",style:xe,onClick:()=>F(null)},e("sessions.glyph.back")+" "+e("sessions.hit.return")),r.createElement("span",{style:{fontSize:"11.5px",color:"var(--dsw-alias-label-tertiary)"}},e("sessions.hit.inSession",{count:Array.isArray(B.hitItems)?B.hitItems.length:0})),r.createElement("button",{type:"button","data-testid":"sessions-jump-prev",style:xe,disabled:void 0===o||P,onClick:()=>{void 0!==o&&Ie(B.sessionId,o)}},e("sessions.hit.prev")),r.createElement("button",{type:"button","data-testid":"sessions-jump-next",style:xe,disabled:void 0===c||P,onClick:()=>{void 0!==c&&Ie(B.sessionId,c)}},e("sessions.hit.next"))),r.createElement("div",{style:{display:"flex",gap:"4px",flexWrap:"wrap",marginBottom:"8px"}},i.map(e=>r.createElement("button",{key:e,type:"button","data-testid":"sessions-jump-chip-"+e,style:{...xe,padding:"1px 8px",fontSize:"11px",borderRadius:"999px",background:e===B.centerSeq?"var(--dsh-svc-tab-active-bg)":"transparent",color:e===B.centerSeq?"var(--dsh-svc-tab-active-text)":"var(--dsw-alias-label-secondary)"},onClick:()=>{Ie(B.sessionId,e)}},"#"+e))),P&&0===B.items.length?r.createElement("p",{style:ke},e("sessions.status.loading")):null,p(B.items,u),void 0!==B.cursor&&B.items.length>0?r.createElement("button",{type:"button","data-testid":"sessions-detail-more",style:xe,disabled:P,onClick:()=>{Ae(B.sessionId,B.cursor,B.view)}},e("sessions.detail.loadMore",{remaining:Math.max(0,B.total-B.items.length)})):null,void 0===B.cursor&&B.items.length>0?r.createElement("p",{style:ke},e("sessions.detail.noMore",{total:B.total})):null):null,""!==U?r.createElement("p",{style:{...ke,color:"var(--dsw-alias-state-error-primary)"}},U):null,"search"!==B.view?p(B.items,null):null,"search"!==B.view&&void 0!==B.cursor?r.createElement("button",{type:"button","data-testid":"sessions-detail-more",style:xe,disabled:P,onClick:()=>{Ae(B.sessionId,B.cursor,B.view)}},e("sessions.detail.loadMore",{remaining:Math.max(0,B.total-B.items.length)})):null,"search"!==B.view&&void 0===B.cursor&&B.items.length>0?r.createElement("p",{style:ke},e("sessions.detail.noMore",{total:B.total})):null)})()??(()=>{if(p)return r.createElement("p",{style:ke},e("sessions.status.loading"));if(""!==g)return r.createElement("p",{"data-testid":"sessions-error",style:{...ke,color:"var(--dsw-alias-state-error-primary)"}},g);if(""!==I.trim()&&"deleted"!==y)return null===$?r.createElement("p",{style:ke},e(j?"sessions.status.loading":"sessions.search.placeholder")):$.error?r.createElement("p",{style:{...ke,color:"var(--dsw-alias-state-error-primary)"}},ca(e,$.error)):0===$.hits.length?r.createElement("p",{style:ke},e("sessions.empty.search",{query:I})):$.hits.map(t=>r.createElement("div",{key:t.sessionId,"data-testid":"sessions-hit-"+t.sessionId,style:{padding:"9px 10px",borderRadius:"8px",border:"1px solid var(--dsw-alias-border-l1)",background:"var(--dsw-alias-bg-layer-3)",marginBottom:"6px"}},r.createElement("button",{type:"button","data-testid":"sessions-hit-open-"+t.sessionId,style:{...xe,border:0,padding:0,textAlign:"left",display:"inline",maxWidth:"100%"},onClick:e=>Te(t.sessionId,"search",t.items,e)},r.createElement("span",{style:{fontWeight:600,color:"var(--dsw-alias-label-primary)"}},""!==t.title?t.title:e("sessions.row.noTitle")),r.createElement("span",{style:{color:"var(--dsw-alias-label-secondary)",marginLeft:"6px",fontSize:"11.5px"}},e("sessions.hit.title",{count:t.items.length}))),t.items.length>1?r.createElement("div",{style:{display:"flex",gap:"4px",flexWrap:"wrap",marginTop:"5px"}},t.items.map(e=>r.createElement("button",{key:e.seq,type:"button","data-testid":"sessions-hit-seq-"+t.sessionId+"-"+e.seq,style:{...xe,padding:"1px 8px",fontSize:"11px",borderRadius:"999px",color:"var(--dsw-alias-label-tertiary)"},onClick:a=>Te(t.sessionId,"search",t.items,a,Number(e.seq))},"#"+e.seq))):null,t.items.slice(0,1).map((e,a)=>r.createElement("div",{key:a,"data-testid":"sessions-hit-snippet-"+t.sessionId,style:{fontSize:"12px",color:"var(--dsw-alias-label-secondary)",marginTop:"5px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},function(e,t,a){const s="string"==typeof e?e:"",n="string"==typeof t?t.trim().split(/\s+/).filter(Boolean):[];if(""===s||0===n.length)return s;let i;try{i=new RegExp(n.map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("\\s+"),"gi")}catch(e){return s}const l=[];let o,d=0,c=0;for(;null!==(o=i.exec(s));)o.index>d&&l.push(s.slice(d,o.index)),l.push(r.createElement("mark",{key:a+"-"+c,"data-testid":a+"-"+c,style:{background:"rgba(198,128,0,0.24)",color:"inherit",borderRadius:"3px",padding:"0 1px"}},o[0])),d=o.index+o[0].length,c+=1;return 0===l.length?s:(d<s.length&&l.push(s.slice(d)),l)}(e.snippet,$.query||I,"sessions-hit-highlight-"+t.sessionId)))));if(0===De.length){const t="archived"===y?"sessions.empty.archived":"deleted"===y?"sessions.empty.deleted":"sessions.empty.all";return r.createElement("p",{style:ke},e(t))}if("project"!==x||"deleted"===y)return De.map(Ve);const t=[];for(const e of De){const a=String(e.cwd||""),r=t.length>0&&t[t.length-1].project===a?t[t.length-1]:null;null===r?t.push({project:a,items:[e]}):r.items.push(e)}return t.map((t,a)=>{const s=!E.includes(t.project);return r.createElement("div",{key:"project-group-"+(""===t.project?"__none__":t.project),"data-testid":"sessions-project-group-"+a,style:{marginBottom:"14px"}},r.createElement("div",{"data-testid":"sessions-project-header-"+a,"data-project":t.project,"data-collapsed":s?"true":"false",role:"button","aria-expanded":String(!s),onClick:()=>{return e=t.project,S(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]);var e},style:{display:"flex",alignItems:"baseline",gap:"8px",margin:"0 2px 4px",padding:"2px 5px",borderRadius:"6px",cursor:"pointer",userSelect:"none"}},r.createElement("span",{style:{fontSize:"11px",color:"var(--dsw-alias-label-tertiary)",flex:"none"}},e(s?"sessions.glyph.expand":"sessions.glyph.collapse")),r.createElement("span",{style:{fontSize:"11.5px",fontWeight:650,color:"var(--dsw-alias-label-secondary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},""===t.project?e("sessions.projectGroup.noCwd"):t.project),r.createElement("span",{"data-testid":"sessions-project-count-"+a,style:{fontSize:"11px",color:"var(--dsw-alias-label-tertiary)",flexShrink:0}},1===t.items.length?e("sessions.projectGroup.countOne"):e("sessions.projectGroup.countMany",{count:t.items.length}))),s?null:t.items.map(Ve))})})(),(()=>{if(null===le)return null;const t=!0===le.batch&&Array.isArray(le.sessions)?le.sessions:null,a=null===t&&le.session||{};return r.createElement("div",{"data-testid":"sessions-delete-modal",style:{position:"fixed",inset:0,zIndex:1200,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.45)"}},r.createElement("div",{style:{width:"min(480px, calc(100vw - 32px))",background:"var(--dsw-alias-bg-layer-2)",border:"1px solid var(--dsw-alias-border-l2)",borderRadius:"14px",padding:"18px",boxShadow:"0 12px 40px rgba(0,0,0,0.25)"}},r.createElement("div",{style:{fontSize:"15px",fontWeight:700,color:"var(--dsw-alias-label-primary)",marginBottom:"8px"}},null===t?e("sessions.delete.title"):e("sessions.batch.deleteTitle",{count:t.length})),r.createElement("p",{style:{fontSize:"13px",color:"var(--dsw-alias-label-secondary)",lineHeight:1.5,margin:"0 0 10px"}},e(null===t?"sessions.delete.body":"sessions.batch.deleteBody")),null===t?r.createElement("div",{style:{fontSize:"13px",fontWeight:600,color:"var(--dsw-alias-label-primary)",marginBottom:"6px"}},a.title||e("sessions.row.noTitle")):r.createElement("ul",{"data-testid":"sessions-batch-delete-list",style:{margin:"0 0 12px",paddingLeft:"18px",maxHeight:"220px",overflowY:"auto",fontSize:"12px",color:"var(--dsw-alias-label-secondary)",lineHeight:1.7}},t.map(t=>r.createElement("li",{key:t.id},e("sessions.batch.deleteItem",{title:t.title||e("sessions.row.noTitle"),bytes:oa(t.bytes)})))),null===t?r.createElement("ul",{style:{margin:"0 0 12px",paddingLeft:"18px",fontSize:"12px",color:"var(--dsw-alias-label-secondary)",lineHeight:1.7}},r.createElement("li",null,e("sessions.delete.consequence.log",{bytes:oa(a.bytes)})),le.consequences&&le.consequences.includes("hides-from-official-sidebar")?r.createElement("li",null,e("sessions.delete.consequence.sidebar")):null):null,""!==pe?r.createElement("p",{style:{...ke,color:"var(--dsw-alias-state-error-primary)"}},pe):null,r.createElement("div",{style:{display:"flex",justifyContent:"flex-end",gap:"8px"}},r.createElement("button",{type:"button","data-testid":"sessions-delete-cancel",style:xe,disabled:de,onClick:()=>{oe(null),me("")}},e("sessions.delete.cancel")),r.createElement("button",{type:"button","data-testid":"sessions-delete-confirm",style:Ee,disabled:de,onClick:()=>{(async()=>{if(null===le||de)return;ce(!0),me("");const t=!0===le.batch&&Array.isArray(le.plans)?le.plans:[le];let a=0,r="";for(const s of t)try{const t=await c("sessions-delete",{planId:s.planId});t.ok?(a+=1,je(s.session)):""===r&&(r=ca(e,t.error||"unknown"))}catch(t){""===r&&(r=e("sessions.error.network"))}!0===le.batch?(oe(null),he(e=>e+1),""===r?(se(e("sessions.batch.completed",{action:e("sessions.action.delete"),count:a})),ie("")):(se(""),ie(e("sessions.batch.failed",{action:e("sessions.action.delete"),done:a,total:t.length,error:r})))):""===r?(oe(null),he(e=>e+1)):me(r),ce(!1)})()}},e(de?"sessions.status.working":"sessions.delete.confirm")))))})())}function fa(){const e=O(),[t,s]=ce.useEnabled(),n={color:"var(--dsw-alias-label-secondary)",fontSize:"12px",marginTop:"8px",lineHeight:1.5},[i,o]=a(mt.getSnapshot());l(()=>mt.subscribe(()=>o(mt.getSnapshot())),[]),l(()=>(Rt({all:!0}),()=>zt({all:!0})),[]);const[d,u]=a(vt()),[p,m]=a(""),g=i.providers||[],[h,b]=a(null),[v,f]=a(null),[y,k]=a({expiresAt:"",label:""}),[x,w]=a(null),[E,S]=a({name:"",value:""}),[q,C]=a(!1);l(()=>{if(!q)return;const e=setTimeout(()=>C(!1),3e3);return()=>clearTimeout(e)},[q]);const T=()=>{w(null),S({name:"",value:""}),C(!1)},A=t=>{const a=String(t?.error??""),r=["unknown-hint","invalid-value","credentials-unavailable"].includes(a)?e(`quota.credential.${a}`):`${a}${t?.detail?` (${t.detail})`:""}`;return e("quota.credential.saveFailed",{error:r})},I=async()=>{if(null!==h){m("");try{const t={provider:h.provider};""!==y.expiresAt&&(t.expiresAt=y.expiresAt),""!==y.label&&(t.label=y.label);const a=await c("quota-reset-card",t);if(!0!==a?.ok)return void m(e("quota.saveFailed",{error:String(a?.error??"")}));k({expiresAt:"",label:""}),await wt({scope:"all"})}catch(t){const a=t instanceof Error&&"string"==typeof t.message&&""!==t.message.trim()?t.message.trim():"network";m(e("quota.saveFailed",{error:a}))}}},R=async t=>{m("");try{const a=await c("quota-refresh",{provider:t});if(!0!==a?.ok)return void m("unknown-provider"===a?.error?e("quota.unknownProvider"):"not-adapted"===a?.error?e("quota.unadapted"):e("quota.saveFailed",{error:String(a?.error??"")}));await wt({scope:"all"})}catch(t){m(e("quota.saveFailed",{error:"network"}))}},z=async t=>{m("");try{const a=await c("quota-config",t);if(!0!==a?.ok)return void m("unknown-provider"===a?.error?e("quota.unknownProvider"):e("quota.saveFailed",{error:String(a?.error??"")}));await wt({scope:"all"})}catch(t){m(e("quota.saveFailed",{error:"network"}))}},M=(e,t)=>z({provider:e,kind:t}),[j,H]=a(function(){try{const e=JSON.parse(localStorage.getItem(ft)??"null");return Array.isArray(e)?e.filter(e=>"string"==typeof e&&""!==e).slice(0,64):[]}catch(e){return[]}}()),[D,$]=a(!1),W=function(e,t){const a=new Map(t.map((e,t)=>[e,t]));return e.map((e,r)=>({row:e,key:a.has(e.provider)?a.get(e.provider):t.length+r})).sort((e,t)=>e.key-t.key).map(e=>e.row)}(g.filter(e=>!0===e.adapted),j),B=g.filter(e=>!0!==e.adapted),F={fontSize:"12px",padding:"3px 6px",borderRadius:"6px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)"},P=(e,t)=>{const a=W.map(e=>e.provider),r=a.indexOf(e),s=r+t;r<0||s<0||s>=a.length||r===s||(a.splice(s,0,a.splice(r,1)[0]),H(a),function(e){try{localStorage.setItem(ft,JSON.stringify(e.slice(0,64)))}catch(e){}}(a))},[_,U]=a(""),[V,K]=a("");return r.createElement("div",{"data-testid":"remote-quota-card",style:{marginTop:"18px"}},r.createElement("div",{style:{fontSize:"14px",fontWeight:700,margin:"0 0 8px",color:"var(--dsw-alias-label-primary)"}},e("quota.cardTitle")),r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"8px"}},r.createElement("label",{htmlFor:"dsh-service-quota-poll-select",style:{fontSize:"12px",color:"var(--dsw-alias-label-secondary)"}},e("quota.poll")),r.createElement("select",{id:"dsh-service-quota-poll-select","data-testid":"quota-poll-select",value:String(d),onChange:e=>{const t=Number.parseInt(e.target.value,10);ht.includes(t)&&(u(t),function(e){try{localStorage.setItem(gt,String(e))}catch(e){}}(t),null!==Ct.nextDispose&&(Ct.nextDispose(),Ct.nextDispose=null),At())},style:{fontSize:"12px",padding:"3px 6px",borderRadius:"6px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)"}},[{value:0,label:e("quota.poll.manual")}].concat(ht.filter(e=>e>0).map(t=>({value:t,label:e("quota.poll.minute",{count:t})}))).map(e=>r.createElement("option",{key:e.value,value:String(e.value)},e.label)))),r.createElement("div",{style:{marginTop:"12px",paddingTop:"10px",borderTop:"1px solid var(--dsw-alias-border-l1)",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px"}},r.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"2px"}},r.createElement("span",{style:{fontSize:"13px",color:"var(--dsw-alias-label-primary)"}},e("quota.navToggle")),r.createElement("span",{style:n},e("quota.navToggleHint"))),r.createElement("button",{type:"button",role:"switch","data-testid":"quota-nav-switch","aria-checked":String(t),onClick:()=>s(!t),style:{width:"34px",height:"20px",borderRadius:"10px",padding:0,flexShrink:0,position:"relative",border:"1px solid "+(t?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-border-l2)"),background:t?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-bg-layer-2)",cursor:"pointer",lineHeight:0}},r.createElement("span",{style:{position:"absolute",top:"1px",left:t?"15px":"1px",width:"16px",height:"16px",borderRadius:"50%",background:t?"#fff":"var(--dsw-alias-label-tertiary)"}}))),""!==p?r.createElement("p",{"data-testid":"quota-config-error",style:Object.assign({},n,{color:"var(--dsw-alias-state-error-primary)"})},p):null,...W.length>=2?[r.createElement("div",{key:"quota-reorder-row",style:{display:"flex",justifyContent:"flex-end",margin:"2px 0 8px"}},r.createElement("button",{type:"button","data-testid":"quota-reorder-toggle","aria-pressed":String(D),title:e("quota.reorder"),onClick:()=>$(!D),style:{fontSize:"12px",lineHeight:"20px",padding:"2px 12px",borderRadius:999,border:"1px solid "+(D?"var(--dsw-alias-brand-primary)":"var(--dsh-svc-border-strong)"),background:"transparent",color:D?"var(--dsw-alias-brand-primary)":"var(--dsw-alias-label-primary)",cursor:"pointer"}},e("quota.reorder")))]:[],0===W.length?r.createElement("p",{style:n},e("quota.noAdapted")):r.createElement("div",{"data-testid":"quota-card-list",style:{display:"flex",flexDirection:"column",gap:"10px"}},W.map((t,a)=>{const s=r.createElement("span",{style:{fontWeight:600,fontSize:"12px",overflowWrap:"anywhere"}},"string"==typeof t.usageUrl&&""!==t.usageUrl?r.createElement("a",{"data-testid":`quota-usage-link-${t.provider}`,href:t.usageUrl,target:"_blank",rel:"noreferrer",title:e("quota.usageLink"),style:{color:"var(--dsw-alias-brand-primary)",textDecoration:"underline"}},t.displayName||t.provider):t.displayName||t.provider,"auto"===t.kindSource?r.createElement("span",{"data-testid":`quota-auto-tag-${t.provider}`,style:L("neutral",{marginLeft:"6px",verticalAlign:"middle"})},e("quota.kindAuto")):null),n=Array.isArray(t.windows)?t.windows:[],i=v===t.provider,l=n.map(a=>_t(a,e,t.provider));let o;o=!0===t.refreshing&&0===n.length?r.createElement("span",{style:{fontSize:"12px",color:"var(--dsw-alias-label-tertiary)"}},e("quota.refreshing")):void 0!==t.errorCode&&0===n.length?r.createElement("span",{"data-testid":`quota-error-${t.provider}`,style:{fontSize:"12px",color:"var(--dsw-alias-state-error-primary)"}},`${Pt(t.errorCode,e)}${void 0!==t.errorDetail?` (${t.errorDetail})`:""}${"number"==typeof t.nextAllowedAt&&t.nextAllowedAt>Date.now()?` · ${e("quota.retryAt",{time:jt(t.nextAllowedAt)})}`:""}`):n.length>0?r.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"14px"}},l):r.createElement("span",{style:{fontSize:"12px",color:"var(--dsw-alias-label-tertiary)"}},e("quota.empty"));const d=Wt(t,n),u=null!==d?r.createElement(Bt,{key:"peak-timeline",showCaption:!0,schedule:d}):null,p=Array.isArray(t.resetCards)?t.resetCards.map((a,s)=>{const n=Ft(a,e),i="string"==typeof a.id&&""!==a.id?a.id:`idx-${s}`;return r.createElement("div",{key:i,"data-testid":`quota-reset-card-${t.provider}-${i}`,style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"11px",lineHeight:"16px",color:n.expired?"var(--dsw-alias-state-warn-primary)":"var(--dsw-alias-label-tertiary)"}},r.createElement("span",{style:{display:"flex",flexDirection:"column",gap:"2px"}},r.createElement("span",null,n.title),""!==n.expiry?r.createElement("span",null,n.expiry):null),r.createElement("button",{type:"button","data-testid":`quota-remove-${t.provider}-${i}`,onClick:()=>(async(t,a)=>{m("");try{await c("quota-reset-card",{provider:t,remove:!0,id:a}),await wt({scope:"all"})}catch(t){m(e("quota.saveFailed",{error:"network"}))}})(t.provider,i),style:{fontSize:"11px",padding:"2px 10px",borderRadius:999,border:"1px solid var(--dsw-alias-state-error-primary)",background:"transparent",color:"var(--dsw-alias-state-error-primary)",cursor:"pointer",flexShrink:0,whiteSpace:"nowrap"}},e("quota.resetCard.remove")))}):[],g=null!==h&&h.provider===t.provider,j={fontSize:"12px",padding:"3px 6px",borderRadius:"6px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)",width:"130px"},O=(e,t,a,s)=>r.createElement("label",{style:{display:"flex",flexDirection:"column",gap:"2px",fontSize:"11px",color:"var(--dsw-alias-label-secondary)"}},e,r.createElement("input",{type:a,"data-testid":t,value:y[s],onChange:e=>k({...y,[s]:e.target.value}),style:j}));return r.createElement("div",{key:t.provider,"data-testid":`quota-provider-card-${t.provider}`,style:{display:"flex",flexDirection:"column",gap:"8px",padding:"10px 12px 12px",borderRadius:"8px",border:"1px solid var(--dsw-alias-border-l1)",background:"var(--dsh-svc-card-bg)"}},r.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",gap:"10px"}},s,r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"5px"}},...D?[r.createElement("button",{type:"button","data-testid":`quota-move-up-${t.provider}`,"aria-label":e("quota.card.moveUp"),title:e("quota.card.moveUp"),disabled:0===a,onClick:()=>P(t.provider,-1),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"16px",height:"16px",padding:0,border:"none",background:"transparent",color:0===a?"var(--dsw-alias-label-tertiary)":"var(--dsw-alias-label-secondary)",cursor:0===a?"default":"pointer",opacity:0===a?.45:1,fontSize:"12px",lineHeight:"16px"}},"↑"),r.createElement("button",{type:"button","data-testid":`quota-move-down-${t.provider}`,"aria-label":e("quota.card.moveDown"),title:e("quota.card.moveDown"),disabled:a===W.length-1,onClick:()=>P(t.provider,1),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"16px",height:"16px",padding:0,border:"none",background:"transparent",color:a===W.length-1?"var(--dsw-alias-label-tertiary)":"var(--dsw-alias-label-secondary)",cursor:a===W.length-1?"default":"pointer",opacity:a===W.length-1?.45:1,fontSize:"12px",lineHeight:"16px"}},"↓")]:[],r.createElement("button",{type:"button","data-testid":`quota-refresh-${t.provider}`,"aria-label":e("quota.refresh"),title:e("quota.refresh"),disabled:!0===t.refreshing,onClick:()=>R(t.provider),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"2px",border:"none",background:"transparent",color:!0===t.refreshing?"var(--dsw-alias-label-tertiary)":"var(--dsw-alias-label-secondary)",cursor:!0===t.refreshing?"default":"pointer",opacity:!0===t.refreshing?.45:1}},r.createElement("svg",{width:12,height:12,viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0},r.createElement("path",{d:"M17.65 6.35A7.95 7.95 0 0 0 12 4a8 8 0 1 0 7.73 10h-2.08A6 6 0 1 1 12 6c1.66 0 3.14.69 4.22 1.77L13 11h7V4l-2.35 2.35z"}))),"number"==typeof t.fetchedAt?r.createElement("span",{style:{fontSize:"11px",color:"var(--dsw-alias-label-tertiary)"}},e("quota.updated",{time:jt(t.fetchedAt)})):null)),o,...null!==u?[u]:[],r.createElement("div",{key:"advanced-toggle-row",style:{display:"flex",marginTop:"2px"}},r.createElement("button",{type:"button","data-testid":`quota-advanced-toggle-${t.provider}`,"aria-expanded":String(i),onClick:()=>f(i?null:t.provider),style:{fontSize:"11px",lineHeight:"20px",padding:"2px 10px",borderRadius:999,border:"1px solid var(--dsh-svc-border-strong)",background:"transparent",color:"var(--dsw-alias-label-primary)",cursor:"pointer"}},`${i?"▾":"▸"} ${e("quota.advanced")}`)),...i&&"unconfigured"===t.status&&Array.isArray(t.credentialHints)&&t.credentialHints.length>0?(()=>{const a=null!==x&&x.provider===t.provider,s=t.credentialHints,n=s.some(e=>e.name===E.name)?E.name:s[0]?.name??"",i=s.find(e=>e.name===n);return[a?r.createElement("div",{key:"cred-editor","data-testid":`quota-cred-editor-${t.provider}`,style:{display:"flex",flexWrap:"wrap",gap:"10px",alignItems:"flex-end",padding:"8px 10px",borderRadius:"8px",background:"var(--dsh-svc-raised-bg)"}},s.length>1?r.createElement("label",{style:{display:"flex",flexDirection:"column",gap:"2px",fontSize:"11px",color:"var(--dsw-alias-label-secondary)"}},e("quota.credential.nameLabel"),r.createElement("select",{"data-testid":"quota-cred-name-select",value:n,onChange:e=>{S({...E,name:e.target.value}),C(!1)},style:F},s.map((t,a)=>r.createElement("option",{key:t.name,value:t.name},`${t.name}${0===a?` · ${e("quota.credential.primary")}`:""} · ${!0===t.configured?e("quota.credential.configured"):e("quota.credential.notConfigured")}`)))):r.createElement("span",{style:{fontSize:"11px",color:"var(--dsw-alias-label-tertiary)",alignSelf:"center"}},`${n}${!0===i?.configured?` · ${e("quota.credential.configured")}`:""}`),r.createElement("label",{style:{display:"flex",flexDirection:"column",gap:"2px",fontSize:"11px",color:"var(--dsw-alias-label-secondary)"}},e("quota.credential.valueLabel"),r.createElement("input",{type:"password","data-testid":"quota-cred-input-value",value:E.value,onChange:e=>S({...E,value:e.target.value}),autoComplete:"off",style:j})),r.createElement("button",{type:"button","data-testid":"quota-cred-save",onClick:()=>(async t=>{m("");try{const e=await c("quota-credential-set",{provider:t,name:E.name,value:E.value});if(!0!==e?.ok)return void m(A(e));T(),await R(t)}catch(t){m(e("quota.saveFailed",{error:"network"}))}})(t.provider),disabled:""===E.value.trim(),style:{minHeight:"28px",padding:"4px 12px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid var(--dsw-alias-brand-primary)",background:""===E.value.trim()?"transparent":"var(--dsw-alias-brand-primary)",color:""===E.value.trim()?"var(--dsw-alias-label-tertiary)":"var(--dsh-svc-brand-text)",cursor:""===E.value.trim()?"default":"pointer",fontSize:"12px"}},e("quota.credential.save")),...!0===i?.configured&&!1!==i?.writable?[r.createElement("button",{type:"button",key:"cred-clear","data-testid":"quota-cred-clear",title:q?e("quota.credential.clearConfirm"):void 0,onClick:()=>{q?(C(!1),(async(t,a)=>{m("");try{const e=await c("quota-credential-unset",{provider:t,name:a});if(!0!==e?.ok)return void m(A(e));await R(t)}catch(t){m(e("quota.saveFailed",{error:"network"}))}})(t.provider,n)):C(!0)},style:{minHeight:"28px",padding:"4px 12px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid var(--dsw-alias-state-error-primary)",background:q?"var(--dsw-alias-state-error-primary)":"transparent",color:q?"var(--dsh-svc-brand-text)":"var(--dsw-alias-state-error-primary)",cursor:"pointer",fontSize:"12px",whiteSpace:"nowrap"}},e(q?"quota.credential.clearConfirm":"quota.credential.clear"))]:[],r.createElement("button",{type:"button","data-testid":"quota-cred-cancel",onClick:T,style:N()},e("quota.resetCard.cancel"))):r.createElement("div",{key:"cred-entry",style:{display:"flex"}},r.createElement("button",{type:"button","data-testid":`quota-cred-edit-${t.provider}`,onClick:()=>(e=>{const t=Array.isArray(e.credentialHints)?e.credentialHints:[];b(null),w({provider:e.provider}),S({name:(t.find(e=>!0===e.configured)??t[0])?.name??"",value:""}),C(!1)})(t),style:{fontSize:"12px",lineHeight:"20px",padding:"4px 14px",borderRadius:999,border:"1px solid var(--dsw-alias-brand-primary)",background:"transparent",color:"var(--dsw-alias-brand-primary)",cursor:"pointer",width:"auto",minWidth:0,overflow:"visible",flex:"0 0 auto",whiteSpace:"nowrap"}},e(`quota.credential.${"string"==typeof t.credentialEntryKey&&""!==t.credentialEntryKey?t.credentialEntryKey:"edit"}`)))]})():[],...p,...i&&g?[r.createElement("div",{key:"reset-editor","data-testid":`quota-reset-editor-${t.provider}`,style:{display:"flex",flexWrap:"wrap",gap:"10px",alignItems:"flex-end",padding:"8px 10px",borderRadius:"8px",background:"var(--dsh-svc-raised-bg)"}},O(e("quota.resetCard.dateLabel"),"quota-reset-input-date","datetime-local","expiresAt"),O(e("quota.resetCard.nameLabel"),"quota-reset-input-name","text","label"),r.createElement("button",{type:"button","data-testid":"quota-reset-card-save",onClick:I,style:{minHeight:"28px",padding:"4px 12px",borderRadius:"7px",border:"1px solid var(--dsw-alias-brand-primary)",background:"var(--dsw-alias-brand-primary)",color:"var(--dsh-svc-brand-text)",cursor:"pointer",fontSize:"12px"}},e("quota.resetCard.add")),r.createElement("button",{type:"button","data-testid":"quota-reset-cancel",onClick:()=>b(null),style:N()},e("quota.resetCard.cancel")))]:[],...i?[r.createElement("div",{key:"advanced-footer",style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},r.createElement("select",{"data-testid":`quota-kind-select-${t.provider}`,value:t.kind,"aria-label":`${e("quota.adapt")} · ${t.displayName||t.provider}`,onChange:e=>{var a;""===e.target.value?M(t.provider,null):"__auto__"===e.target.value?(a=t.provider,z({provider:a,clear:!0})):M(t.provider,e.target.value)},style:F},bt.map(t=>r.createElement("option",{key:t,value:t},e(`quota.kind.${t}`))),r.createElement("option",{value:"__auto__"},e("quota.followAuto")),r.createElement("option",{value:""},e("quota.disable")))),..."zai-coding-cn"===t.kind?[r.createElement("div",{key:"reset-add-row",style:{display:"flex"}},r.createElement("button",{type:"button","data-testid":`quota-card-edit-${t.provider}`,onClick:()=>(e=>{b({provider:e.provider}),k({expiresAt:"",label:""})})(t),style:{fontSize:"12px",lineHeight:"20px",padding:"4px 14px",borderRadius:999,border:"1px solid var(--dsh-svc-border-strong)",background:"transparent",color:"var(--dsw-alias-label-primary)",cursor:"pointer",width:"auto",minWidth:0,overflow:"visible",flex:"0 0 auto",whiteSpace:"nowrap"}},e("quota.resetCard.edit")))]:[]]:[])})),...B.length>0?[r.createElement("div",{key:"quota-add-adapt","data-testid":"quota-add-adapt",style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:"8px",marginTop:W.length>0?"2px":"4px",paddingTop:"10px",borderTop:"1px solid var(--dsw-alias-border-l1)"}},r.createElement("span",{style:{fontSize:"11px",color:"var(--dsw-alias-label-tertiary)"}},e("quota.addAdapt")),r.createElement("select",{"data-testid":"quota-add-provider",value:_,onChange:e=>U(e.target.value),style:F},r.createElement("option",{value:""},e("quota.addPickProvider")),B.map(e=>r.createElement("option",{key:e.provider,value:e.provider},e.displayName||e.provider))),r.createElement("select",{"data-testid":"quota-add-kind",value:V,onChange:e=>K(e.target.value),style:F},r.createElement("option",{value:""},e("quota.addPickKind")),bt.map(t=>r.createElement("option",{key:t,value:t},e(`quota.kind.${t}`)))),r.createElement("button",{type:"button","data-testid":"quota-add-submit",disabled:""===_||""===V,onClick:()=>{M(_,V),U(""),K("")},style:{fontSize:"12px",padding:"3px 12px",borderRadius:"7px",border:"1px solid var(--dsw-alias-brand-primary)",background:""===_||""===V?"transparent":"var(--dsw-alias-brand-primary)",color:""===_||""===V?"var(--dsw-alias-label-tertiary)":"var(--dsh-svc-brand-text)",cursor:""===_||""===V?"default":"pointer"}},e("quota.adapt")))]:[])}function ya(){const e=O(),{value:s}=j(),[n,i]=a(null),[d,u]=a(null),[p,m]=a(null),[g,h]=a(!1),[b,v]=a(0),[f,y]=a(null),[k,x]=a(null),[w,E]=a(null),[S,q]=a(null),[C,T]=a(!1),[I,R]=a(!1),[z,H]=a(null),[L,P]=a(!1),[_,U]=a(!1),[X,Z]=a(null),[ee,te]=a(!1),[ae,re]=a({items:[],totalBytes:0}),[se,ne]=a(!1),[ie,oe]=a(null),de=o(0),[ce,ue]=a(null),[pe,me]=a(null),[ge,he]=a(null),[be,ve]=a(null),[fe,ye]=a(null),[ke,xe]=a(!1),[we,Ee]=a(!1),[Se,qe]=a(!1),[Ce,Te]=a(!1),[Ae,Ie]=a(null),[ze,Me]=a(null),[je,Oe]=a(null),[He,De]=a(null),[Ne,Le]=a(null),[Be,Pe]=a(!1),[_e,Ue]=a(null),[Ve,Ke]=a(!1),[Ye,Xe]=a(null),[tt,at]=a(!1),[st,nt]=a(!1),[it,lt]=a(null),[ot,ct]=a("all"),[ut,mt]=a(!1),[gt,ht]=a(!1),[bt,vt]=a(!1),[ft,yt]=a("today"),[kt,xt]=a("overview"),[wt,Et]=a(!1),St=Ge(),qt=Qe(),Ct={timezoneOffsetMinutes:(new Date).getTimezoneOffset()};l(()=>{Ze().then(e=>{e&&e.ok&&(Ie(e.value.current),Me(e.value.pluginVersion||null))})},[]),l(()=>{let t=!0;return c("check-update",{}).then(a=>{var r;t&&a&&!1!==a.ok?(Oe(a.value),De(null),r=a.value.dsh&&!a.value.dsh.upToDate?a.value.dsh:null,$e=r,null===r&&(We=!1),Fe()):t&&De(e("update.unavailable"))}).catch(()=>{t&&De(e("update.unavailable"))}),()=>{t=!1}},[]),l(()=>{if(!M("healthDiagnostics"))return()=>{};let t=!0;return c("permissions-plan",{}).then(a=>{t&&(a&&!1!==a.ok?q(a.value):H(e("permissions.error")))}).catch(()=>{t&&H(e("permissions.error"))}),()=>{t=!1}},[s.healthDiagnostics]),l(()=>{if(!M("modelUsage"))return()=>{};let t=!0;return c("usage",Ct).then(async a=>{if(t)if(a&&!1!==a.ok){if(Le(a.value),!(a.value.updatedAt>0&&Date.now()-a.value.updatedAt<=3e5))try{const e=await c("usage-refresh",Ct);t&&e&&e.ok&&Le(e.value)}catch(e){}}else Ue(e("usage.error"))}).catch(()=>{t&&Ue(e("usage.error"))}),()=>{t=!1}},[s.modelUsage]),l(()=>{if(!M("backupMaintenance"))return()=>{};let t=!0;return c("backup-list",{}).then(a=>{t&&(a&&!1!==a.ok?re(a.value):ue(e("backup.error")))}).catch(()=>{t&&ue(e("backup.error"))}),()=>{t=!1}},[s.backupMaintenance]),l(()=>{let a=!0,r=()=>{};const s=async()=>{try{const e=await c("health",{});if(!a)return;if(!e||!1===e.ok)throw new Error(e&&e.error?e.error:"health failed");i(e.value),u(null)}catch(t){if(!a)return;u(e("health.error"))}a&&(r=t.timer.timeout(s,5e3))};return s(),()=>{a=!1,r()}},[]);const Tt=async(t=!1)=>{if(M("healthDiagnostics")&&!(!t&&b>0&&Date.now()-b<=3e4)){h(!0);try{const e=await c("diagnostics",{});if(!e||!1===e.ok)throw new Error("diagnostics failed");m(e.value),v(Date.now())}catch(t){u(e("health.error"))}finally{h(!1)}}},At=async()=>{Pe(!0),Ue(null);try{const e=await c("usage-refresh",Ct);if(!e||!1===e.ok)throw new Error("usage refresh failed");Le(e.value)}catch(t){Ue(e("usage.error"))}finally{Pe(!1)}},It=t=>{const a="backup.error."+String(t||""),r=e(a);return r===a?e("backup.restoreError"):r},Rt=async()=>{if(fe&&!se){ne(!0),ue(null);try{const e=await c("backup-restore-commit",{planId:fe.planId});if(!e||!1===e.ok)throw Object.assign(new Error("backup restore failed"),{code:e?.error});if(he(null),ve(null),ye(null),!0===e.value?.restart?.requiresManualRestart)xe(!0);else{const t=e.value?.restart?.previousInstanceId||e.value?.previousInstanceId;"string"==typeof t&&t.length>0&&rt(t).catch(()=>{})}}catch(e){ye(null),ue(It(e?.code))}finally{ne(!1)}}},zt=()=>{se||(he(null),ve(null),ye(null))},Mt={"active-work":"update.guardActiveWork","link-install":"update.guardLinkInstall","file-install":"update.guardFileInstall","no-newer-version":"update.guardNoNewer","no-profile-found":"update.guardNoProfile","ambiguous-profile":"update.guardAmbiguous","upgrade-stale":"update.guardStale","installed-version-unreadable":"update.guardUnreadable","pnpm-missing":"update.failPnpmMissing","transient-network":"update.failNetwork","fetch-timeout":"update.failFetchTimeout","release-age-violation":"update.failReleaseAge","hoist-pattern-diff":"update.failHoist","adding-to-root":"update.failAddingToRoot","not-a-workspace":"update.failNotWorkspace","ignored-builds":"update.failIgnoredBuilds"},jt=async()=>{if(!et){et=!0;try{let t=qt;if(null===t&&(await Ze(),t=Je),!tt&&null!==t&&!0===t.manualStartLikely)return Xe(null),void at(!0);at(!1),Ke(!0),Xe(null);const a=await Ze(),r=a&&a.ok?a.value.instanceId:void 0,s=await c("upgrade",{});if(!s||!1===s.ok){const t=s&&"string"==typeof s.error?s.error.trim():"",a="string"==typeof t&&t.length>0?Mt[t]:void 0;return void Xe(void 0!==a?e(a):e("update.upgradeErrorDetail",{detail:t||"upgrade failed"}))}if(s.value&&!0===s.value.requiresManualRestart)return void nt(!0);"string"==typeof r&&r.length>0&&rt(r).catch(()=>{})}catch(t){const a=t instanceof Error&&"string"==typeof t.message&&"upgrade failed"!==t.message?t.message.trim():"";console.error("dsh-service: upgrade failed",a||t),Xe(a?e("update.upgradeErrorDetail",{detail:a}):e("update.upgradeError"))}finally{et=!1,Ke(!1)}}},Ot=D(),Ht=(D("primary"),D("brandGhost")),Dt=D("neutral"),Nt=D("danger"),Lt=D("dangerGhost"),$t=D("ghost"),Wt=Object.assign({},Ot,{background:"transparent",color:"var(--dsw-alias-label-primary)",border:0,borderTop:"1px solid var(--dsw-alias-border-l1)",borderRadius:0,padding:"10px 2px",width:"100%",textAlign:"left",fontWeight:600}),Bt={display:"flex",alignItems:"center",gap:"8px",marginTop:"12px",flexWrap:"wrap"},Ft={color:"var(--dsw-alias-label-secondary)",fontSize:"12px",marginTop:"8px",lineHeight:1.5},Pt={padding:"4px 0 14px",marginBottom:"12px",color:"var(--dsw-alias-label-primary)"},_t=$(),Ut={background:"transparent",color:"var(--dsw-alias-label-secondary)",border:0,borderBottom:"2px solid transparent",padding:"8px 10px",cursor:"pointer",fontSize:"13px",fontWeight:550,transition:"color 120ms, border-color 120ms"},Vt={color:"var(--dsw-alias-brand-primary)",borderBottom:"2px solid var(--dsw-alias-brand-primary)",fontWeight:700},Kt=Object.assign({},Ut,{padding:"3px 6px",fontSize:"11px"}),Gt={fontSize:"14px",fontWeight:700,margin:"0 0 8px",color:"var(--dsw-alias-label-primary)"},Yt=e=>{const t=Number(e);return t<1024?t+" B":t<1048576?Math.round(t/102.4)/10+" KB":t<1073741824?Math.round(t/1048576*10)/10+" MB":Math.round(t/1073741824*10)/10+" GB"},Qt=(t,a)=>r.createElement("div",{key:t,style:{padding:"8px 10px",borderRadius:"6px",background:"var(--dsh-svc-raised-bg)",color:"var(--dsw-alias-label-primary)",border:"1px solid var(--dsw-alias-border-l1)"}},r.createElement("div",{style:{color:"var(--dsw-alias-label-secondary)",fontSize:"11px",marginBottom:"2px"}},e(t)),r.createElement("div",{style:{fontSize:"14px",fontWeight:600}},a)),Zt=e=>{const t=e=>String(e).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`},ea=[];for(let e=6;e>=0;e-=1){const t=new Date;t.setHours(0,0,0,0),t.setDate(t.getDate()-e),ea.push({key:Zt(t),label:`${t.getMonth()+1}/${t.getDate()}`})}const ta=[["inputTokens","usage.input","#79aaf7"],["outputTokens","usage.output","#f1b35b"],["cacheTokens","usage.cache","#48c7b0"]],aa=e=>{const t=Ne&&Ne.days?Ne.days[e]:null;if(!t)return{steps:0,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,cacheHitRate:0};if("all"===ot)return t.totals;const a=t.projects.find(e=>e.id===ot);return a?a.totals:{steps:0,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,cacheHitRate:0}},ra=e=>{const t=Number(e.inputTokens||0)+Number(e.cacheReadTokens||0)+Number(e.cacheWriteTokens||0);return 0===t?0:Number(e.cacheReadTokens||0)/t},sa=e=>Number(e.inputTokens||0)+Number(e.outputTokens||0)+Number(e.cacheReadTokens||0)+Number(e.cacheWriteTokens||0),na=(e,t)=>"cacheTokens"===t?e.cacheReadTokens+e.cacheWriteTokens:e[t]||0,la=e=>A(e,{invalid:"0"}),oa=(t,a)=>"cacheHitRate"===a?(100*Number(t)).toFixed(1)+"%":"steps"===a?e("usage.stepsValue",{count:Number(t).toLocaleString()}):la(t),da=ea.map(e=>aa(e.key)),ca=da.map(e=>ta.reduce((t,[a])=>t+na(e,a),0)),ua=Math.max(1,...ca),pa=[ua,.75*ua,.5*ua,.25*ua,0],ma=aa(ea[6].key),ga=ea.reduce((e,t)=>{const a=aa(t.key);return e.steps+=a.steps||0,e.inputTokens+=a.inputTokens||0,e.outputTokens+=a.outputTokens||0,e.cacheReadTokens+=a.cacheReadTokens||0,e.cacheWriteTokens+=a.cacheWriteTokens||0,e},{steps:0,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0}),ha=ga.inputTokens+ga.cacheReadTokens+ga.cacheWriteTokens;ga.cacheHitRate=0===ha?0:ga.cacheReadTokens/ha;const ba="all"===ot?(Ne?.projects||[]).map(e=>e.id):[ot],ya=(e,t)=>{const a=e.get(t.id)||{id:t.id,steps:0,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0};a.steps+=t.totals.steps||0,a.inputTokens+=t.totals.inputTokens||0,a.outputTokens+=t.totals.outputTokens||0,a.cacheReadTokens+=t.totals.cacheReadTokens||0,a.cacheWriteTokens+=t.totals.cacheWriteTokens||0,e.set(t.id,a)},ka=new Map,xa=new Map,wa=new Map,Ea=new Set(ea.map(e=>e.key)),Sa=ea[ea.length-1].key;for(const[e,t]of Object.entries(Ne?.days||{})){const a=[wa];Ea.has(e)&&a.push(xa),e===Sa&&a.push(ka);for(const e of t.projects)if(ba.includes(e.id))for(const t of e.models)for(const e of a)ya(e,t)}const qa=t=>{const a=String(t.detail??"");if("session-storage"===t.id&&"ok"===t.status)return e("health.detail.session-storage.ok",{count:a});if("workspace-registry"===t.id&&"ok"===t.status)return e("health.detail.workspace-registry.ok",{count:a});if("dsh-home"===t.id&&"ok"===t.status)return e("health.detail.dsh-home.ok",{mode:a});if("backup-storage"===t.id){const[t="0",r="0"]=a.split(":");return 0===Number(t)?e("health.detail.backup-storage.empty"):e("health.detail.backup-storage.ok",{count:t,size:Yt(r)})}if("tar"===t.id&&"ok"===t.status)return e("health.detail.tar.ok");if("permissions"===t.id)return e("ok"===t.status?"health.detail.permissions.ok":"health.detail.permissions.warning",{count:a||"0"});if("runtime-env"===t.id)return"manual"===a?e("health.detail.runtime-env.manual"):"declared"===a?e("health.detail.runtime-env.declared"):"unknown"===a?e("health.detail.runtime-env.unknown"):e("health.detail.runtime-env.managed",{kind:e(`env.kind.${a}`)});if("node-version"===t.id){const[r="",s=""]=a.split(":");return e("ok"===t.status?"health.detail.node-version.ok":"health.detail.node-version.warning",{version:r,required:s})}if("plugins"===t.id){if("unavailable"===a)return e("health.detail.plugins.unavailable");const[r,s,n,i]=a.split(":");if("ok"===t.status)return e("health.detail.plugins.ok",{total:r});const l=[];return(Number(s)||0)>0&&l.push(e("plugin.issue.failed",{failed:s})),(Number(n)||0)>0&&l.push(e("plugin.issue.pending",{pending:n})),(Number(i)||0)>0&&l.push(e("plugin.issue.info",{count:i})),l.join(",")}if("plugin-compat"===t.id){if("unavailable"===a)return e("health.detail.plugin-compat.unavailable");const[r,s,n,i]=a.split(":");if("ok"===t.status&&0===(Number(n)||0))return e("health.detail.plugin-compat.ok",{total:r});const l=[];return(Number(s)||0)>0&&l.push(e("plugin.compat.issue.broken",{count:s})),(Number(n)||0)>0&&l.push(e("plugin.compat.issue.declared",{count:n})),(Number(i)||0)>0&&l.push(e("plugin.compat.issue.unknown",{count:i})),l.join(",")}return e("health.detail.generic",{status:e(`health.status.${t.status}`)})},Ca=(t,a,s)=>r.createElement("div",{style:{padding:"10px",borderRadius:"7px",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)"}},r.createElement("div",{style:{fontSize:"12px",fontWeight:700,marginBottom:"5px"}},e(a)),(e=>[["usage.total",la(na(e,"inputTokens")+na(e,"outputTokens")+na(e,"cacheTokens"))],...ta.map(([t,a])=>[a,la(na(e,t))]),["usage.steps",oa(e.steps,"steps")],["usage.hitRate",oa(e.cacheHitRate,"cacheHitRate")]])(s).map(([a,s],n)=>r.createElement("div",{key:a,"data-testid":`usage-summary-${t}-${n}`,style:{display:"flex",justifyContent:"space-between",gap:"12px",padding:"4px 0",fontSize:"12px",borderTop:0===n?0:"1px solid var(--dsw-alias-border-l1)"}},r.createElement("span",{style:{color:"var(--dsw-alias-label-secondary)"}},e(a)),r.createElement("span",{style:{fontWeight:650}},s)))),Ta=[...("today"===ft?ka:"all"===ft?wa:xa).values()].sort((e,t)=>sa(t)-sa(e)||t.steps-e.steps||e.id.localeCompare(t.id)),Aa=bt?Ta:Ta.slice(0,3),Ia=Math.max(0,Ta.length-3),Ra=Math.max(1,...Aa.map(e=>sa(e))),za=e=>(e||[]).filter(e=>"all"===ot||e.projectId===ot).sort((e,t)=>t.count-e.count||e.key.localeCompare(t.key)),Ma=za(Ne?.errors?.models),ja=za(Ne?.errors?.tools),Oa=(t,a)=>r.createElement("div",{key:t,style:{display:"grid",gap:"6px",marginTop:"8px"}},0===a.length?r.createElement("p",{style:Ft},e("model"===t?"usage.errors.empty":"usage.toolErrors.empty")):a.map(a=>r.createElement("div",{key:`${t}:${a.projectId}:${a.key}`,style:{padding:"8px 10px",borderRadius:"6px",background:"var(--dsw-alias-bg-layer-2)",border:"1px solid var(--dsw-alias-state-error-primary)",color:"var(--dsw-alias-label-primary)",fontSize:"12px"}},r.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:"8px",fontWeight:600}},r.createElement("span",null,"model"===t?`${a.provider}/${a.model} · ${a.code}${null===a.status?"":` · ${a.status}`}`:`${a.tool} · ${a.code}`),r.createElement("span",null,e("usage.errors.count",{count:a.count}))),r.createElement("div",{style:{color:"var(--dsw-alias-label-secondary)",marginTop:"3px",overflowWrap:"anywhere"}},a.message)))),Ha=r.createElement("div",{key:"usage-section","data-testid":"usage-card",style:Pt},r.createElement("div",{style:Gt},e("usage.structure")),r.createElement("p",{style:Object.assign({},Ft,{marginTop:"-4px"})},e("usage.structureHint")),Ne&&Ne.projects.length>0?r.createElement("div",{"data-testid":"usage-project-tabs",style:{display:"flex",flexWrap:"wrap",gap:"14px",marginBottom:"12px",borderBottom:"1px solid var(--dsw-alias-border-l1)"}},r.createElement("button",{style:Object.assign({},Ut,"all"===ot?Vt:{color:"var(--dsw-alias-label-secondary)",borderBottom:"2px solid transparent"}),onClick:()=>ct("all")},e("usage.allProjects")),Ne.projects.map(e=>r.createElement("button",{key:e.id,style:Object.assign({},Ut,ot===e.id?Vt:{color:"var(--dsw-alias-label-secondary)",borderBottom:"2px solid transparent"}),onClick:()=>ct(e.id)},e.title))):null,Ne&&Ne.indexedSessions>0?r.createElement("div",{"data-testid":"usage-statistics-region",style:Object.assign({},_t,{padding:"12px",borderRadius:"9px"})},r.createElement("div",{"data-testid":"usage-region-header",style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px",flexWrap:"wrap",marginBottom:"8px"}},r.createElement("div",{style:{display:"flex",gap:"14px",flexWrap:"wrap",fontSize:"11px"}},ta.map(([,t,a])=>r.createElement("span",{key:t,style:{display:"inline-flex",alignItems:"center",gap:"5px"}},r.createElement("span",{style:{width:"9px",height:"9px",borderRadius:"2px",background:a}}),e(t)))),r.createElement("button",{type:"button","data-testid":"usage-refresh","data-variant":"neutral",style:Dt,onClick:At,disabled:Be},e(Be?"usage.refreshing":"usage.refresh"))),r.createElement("div",{"data-testid":"usage-chart",style:{position:"relative",display:"grid",gridTemplateColumns:"42px minmax(0, 1fr)",height:"180px",padding:"12px 10px 4px",borderRadius:"8px",background:"var(--dsh-svc-raised-bg)",color:"var(--dsw-alias-label-primary)",border:"1px solid var(--dsw-alias-border-l1)",borderBottom:"1px solid var(--dsw-alias-border-l2)"}},r.createElement("div",{"data-testid":"usage-y-axis","aria-label":e("usage.axis"),style:{position:"relative",height:"144px",fontSize:"10px",color:"var(--dsw-alias-label-secondary)"}},pa.map((e,t)=>r.createElement("span",{key:t,style:{position:"absolute",right:"7px",top:25*t+"%",transform:4===t?"translateY(-100%)":"translateY(-50%)"}},la(e)))),r.createElement("div",{"data-testid":"usage-plot",style:{position:"relative",height:"164px"}},r.createElement("div",{style:{position:"absolute",inset:"0 0 20px",display:"flex",alignItems:"end",gap:"8px",borderBottom:"1px solid var(--dsw-alias-border-l2)"}},pa.map((e,t)=>r.createElement("div",{key:t,"data-testid":`usage-grid-${t}`,style:{position:"absolute",left:0,right:0,top:25*t+"%",borderTop:"1px solid var(--dsw-alias-border-l1)",pointerEvents:"none"}})),ea.map((t,a)=>r.createElement("div",{key:t.key,"aria-label":e("usage.barDay",{day:t.label,total:la(ca[a])}),style:{position:"relative",zIndex:1,flex:1,minWidth:0,alignSelf:"end"}},r.createElement("div",{"data-testid":`usage-bar-${t.key}`,style:{height:`${Math.max(2,ca[a]/ua*144)}px`,display:"flex",flexDirection:"column-reverse",justifyContent:"flex-start",borderRadius:"4px 4px 0 0",overflow:"hidden"}},ta.map(([e,s,n])=>{const i=na(da[a],e),l=0===ca[a]?0:i/ca[a]*100,o=`${t.key}-${e}`,d=it&&it.id===o;return r.createElement("div",{key:e,"data-testid":`usage-segment-${o}`,"data-value":i,onMouseEnter:e=>lt({id:o,date:t.key,totals:da[a],x:e.clientX,y:e.clientY}),onMouseMove:e=>lt(t=>t&&t.id===o?Object.assign({},t,{x:e.clientX,y:e.clientY}):t),onMouseLeave:()=>lt(null),style:{height:`${l}%`,minHeight:i>0?"2px":0,background:n,opacity:it&&!d?.42:1,cursor:i>0?"pointer":"default",transition:"opacity 120ms ease"}})}))))),r.createElement("div",{"data-testid":"usage-x-axis",style:{position:"absolute",left:0,right:0,bottom:"0",height:"20px",display:"flex",gap:"8px",alignItems:"end"}},ea.map(e=>r.createElement("div",{key:e.key,style:{flex:1,minWidth:0,textAlign:"center",fontSize:"10px",color:"var(--dsw-alias-label-secondary)"}},e.label))))),r.createElement("div",{"data-testid":"usage-chart-summary",style:{position:"absolute",width:"1px",height:"1px",overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap"}},e("usage.chartSummary",{total:la(ca.reduce((e,t)=>e+t,0))})),it?r.createElement("div",{"data-testid":"usage-tooltip",style:{position:"fixed",left:`${it.x+12}px`,top:`${it.y+12}px`,zIndex:1e3,pointerEvents:"none",padding:"7px 9px",borderRadius:"6px",background:"var(--dsw-alias-bg-overlay)",color:"var(--dsw-alias-label-primary)",border:"1px solid var(--dsw-alias-border-l2)",boxShadow:"0 4px 12px rgba(0,0,0,0.2)",fontSize:"12px",fontWeight:600,whiteSpace:"pre-line",textAlign:"left"}},`${e("usage.tooltip.date",{date:it.date})}\n${e("usage.tooltip.input",{value:Number(it.totals.inputTokens||0).toLocaleString()})}\n${e("usage.tooltip.output",{value:Number(it.totals.outputTokens||0).toLocaleString()})}\n${e("usage.tooltip.cache",{value:Number((it.totals.cacheReadTokens||0)+(it.totals.cacheWriteTokens||0)).toLocaleString()})}`):null,r.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:"8px",marginTop:"10px"}},Ca("today","usage.today",ma),Ca("seven","usage.sevenDays",ga)),r.createElement("div",{"data-testid":"usage-model-list",style:{marginTop:"10px",padding:"8px 10px",borderRadius:"8px",background:"var(--dsh-svc-raised-bg)",border:"1px solid var(--dsw-alias-border-l1)"}},r.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:"8px",flexWrap:"wrap",marginBottom:"4px"}},r.createElement("div",{"data-testid":"usage-model-sort-hint",style:{fontSize:"11px",color:"var(--dsw-alias-label-secondary)"}},e(`usage.modelSortHint.${ft}`)),r.createElement("div",{"data-testid":"usage-model-scope-tabs",style:{display:"flex",gap:"2px"}},["today","week","all"].map(t=>r.createElement("button",{key:t,"data-testid":`usage-model-scope-${t}`,style:Object.assign({},Kt,ft===t?Vt:{color:"var(--dsw-alias-label-secondary)",borderBottom:"2px solid transparent"}),onClick:()=>yt(t)},e(`usage.modelScope.${t}`))))),Aa.map((t,a)=>{const s=sa(t),n=Math.round(s/Ra*1e4)/100+"%";return r.createElement("div",{key:t.id,"data-testid":`usage-model-row-${t.id}`,style:{padding:"8px 2px",borderTop:0===a?0:"1px solid var(--dsw-alias-border-l1)"}},r.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:"12px",alignItems:"baseline",fontSize:"12px"}},r.createElement("span",{style:{overflowWrap:"anywhere"}},t.id),r.createElement("span",{style:{fontWeight:650,whiteSpace:"nowrap"}},la(s))),r.createElement("div",{"data-testid":`usage-model-bar-${t.id}`,"data-value":s,"aria-label":e(`usage.modelBar.${ft}`,{model:t.id,total:la(s)}),style:{height:"8px",borderRadius:"4px",marginTop:"6px",overflow:"hidden",background:"var(--dsw-alias-border-l1)"}},r.createElement("div",{style:{display:"flex",height:"100%",width:n}},ta.map(([e,,a])=>{const n=((e,t)=>"cacheTokens"===t?Number(e.cacheReadTokens||0)+Number(e.cacheWriteTokens||0):Number(e[t]||0))(t,e);return n>0?r.createElement("div",{key:e,"data-testid":`usage-model-segment-${t.id}-${e}`,style:{width:n/s*100+"%",background:a}}):null}))),r.createElement("div",{style:{color:"var(--dsw-alias-label-secondary)",fontSize:"11px",marginTop:"4px",textAlign:"right"}},e("usage.modelLine",{steps:Number(t.steps||0).toLocaleString(),hitRate:oa(ra(t),"cacheHitRate"),input:la(t.inputTokens),output:la(t.outputTokens)})))}),Ia>0?r.createElement("button",{style:Object.assign({},Wt,{borderTop:"1px solid var(--dsw-alias-border-l1)",marginTop:"2px"}),onClick:()=>vt(e=>!e)},`${bt?"▾":"▸"} ${e(bt?"usage.models.less":"usage.models.more",{count:Ia})}`):null)):r.createElement("p",{style:Ft},_e||e("usage.empty")),...Ne&&Ne.indexedSessions>0?[]:[r.createElement("div",{key:"usage-refresh-fallback",style:Bt},r.createElement("button",{style:Dt,"data-variant":"neutral",onClick:At,disabled:Be},e(Be?"usage.refreshing":"usage.refresh")))]),Da=n&&"string"==typeof n.platform&&n.platform?`${{win32:"Windows",darwin:"macOS",linux:"Linux",freebsd:"FreeBSD",openbsd:"OpenBSD"}[n.platform]||n.platform}${"string"==typeof n.arch&&n.arch?` · ${n.arch}`:""}`:"—",Na=r.createElement("div",{key:"container-info",style:{marginTop:"18px"}},r.createElement("div",{style:Gt},e("overview.container")),n?r.createElement("div",{"data-testid":"health-display",style:Object.assign({},_t,{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:"8px"})},Qt("health.platform",Da),Qt("health.nodeVersion","string"==typeof n.nodeVersion&&n.nodeVersion?n.nodeVersion:"—"),Qt("health.uptime",(t=>{const a=Math.floor(Number(t)/60);return e("health.uptimeValue",{hours:Math.floor(a/60),minutes:a%60})})(n.uptimeSeconds)),Qt("health.rss",(e=>{const t=Number(e)/1048576;return(Math.round(10*t)/10).toLocaleString(void 0,{maximumFractionDigits:1})+" MB"})(n.rssBytes)),Qt("health.liveSessions",String(n.liveSessions)),Qt("health.persistedSessions",String(n.persistedSessions)),Qt("health.activeAgents",String(n.activeAgents)),Qt("health.activeJobs",String(n.activeJobs))):r.createElement("p",{style:Ft},d||e("version.loading"))),La=r.createElement("div",{key:"overview-errors",style:{marginTop:"18px"}},r.createElement("div",{"data-testid":"overview-errors-title",style:Gt},e("overview.errors")),r.createElement("div",{"data-testid":"overview-errors-region",style:_t},r.createElement("div",{style:Object.assign({},Ft,{margin:"-3px 0 7px"})},e("usage.errors.recent")),r.createElement("div",{style:{display:"grid",gap:"7px"}},r.createElement("div",null,r.createElement("button",{style:Wt,onClick:()=>mt(e=>!e)},`${ut?"▾":"▸"} ${e("usage.errors.toggle",{count:Ma.length})}`),ut?r.createElement("div",{style:{padding:"0 2px 8px"}},Oa("model",Ma)):null),r.createElement("div",null,r.createElement("button",{style:Wt,onClick:()=>ht(e=>!e)},`${gt?"▾":"▸"} ${e("usage.toolErrors.toggle",{count:ja.length})}`),gt?r.createElement("div",{style:{padding:"0 2px 8px"}},Oa("tool",ja)):null)))),$a=r.createElement("div",{"data-testid":"health-diagnostics-region",style:_t},p&&"ok"!==p.status?r.createElement("div",{style:{marginTop:"10px",padding:"9px 11px",borderRadius:"7px",background:"error"===p.status?"rgba(211,51,51,0.1)":"rgba(198,128,0,0.12)",border:"1px solid "+("error"===p.status?"rgba(211,51,51,0.3)":"rgba(198,128,0,0.3)")}},r.createElement("div",{style:{fontSize:"12px",fontWeight:700}},e("health.alert.title")),r.createElement("div",{style:Ft},e("health.alert.diagnostics",{status:e("health.overall."+p.status)}))):null,p?r.createElement("div",{"data-testid":"health-check-list",style:Object.assign({},_t,{marginTop:"10px",padding:"8px 10px"})},p.checks.map((t,a)=>{const s="error"===t.status||"warning"===t.status&&!0!==t.advisory,n="ok"===t.status?"var(--dsh-svc-success)":"warning"===t.status?"var(--dsh-svc-warning)":"info"===t.status?"var(--dsh-svc-info)":"var(--dsh-svc-danger)";return r.createElement("div",{key:t.id,style:{display:"flex",alignItems:"flex-start",gap:"9px",padding:"9px 10px",borderRadius:"6px",borderTop:0===a?0:"1px solid var(--dsh-svc-border)",background:s?"error"===t.status?"rgba(211,51,51,0.08)":"rgba(198,128,0,0.10)":"transparent"}},r.createElement("span",{"aria-hidden":"true",style:{flex:"none",width:"7px",height:"7px",borderRadius:"50%",marginTop:"5px",background:n}}),r.createElement("div",{style:{minWidth:0,flex:1}},r.createElement("div",{style:{fontSize:"12px",fontWeight:s?650:550,color:"var(--dsh-svc-text)"}},e("health.check."+t.id)),r.createElement("div",{style:{fontSize:"11px",lineHeight:1.5,marginTop:"2px",color:"ok"===t.status?"var(--dsh-svc-text-muted)":s?"error"===t.status?"var(--dsh-svc-danger)":"var(--dsh-svc-warning)":"var(--dsh-svc-text-muted)"}},qa(t))))})):null),Wa=Array.isArray(p?.pluginIssues)?p.pluginIssues:[],Ba=0===Wa.length?null:r.createElement("div",{"data-testid":"plugin-issue-list",style:{marginTop:"6px",padding:"8px 10px",borderRadius:"6px",border:"1px solid var(--dsh-svc-border)",background:"var(--dsh-svc-raised-bg)"}},Wa.map((t,a)=>{const s="failed"===t.phase,n="disposed"===t.phase||"unknown"===t.phase,i=s?"var(--dsh-svc-danger)":n?"var(--dsh-svc-info)":"var(--dsh-svc-warning)",l=f===t.entryId,o=k===t.entryId;return r.createElement("div",{key:t.entryId,"data-testid":`plugin-issue-${t.entryId}`,style:{display:"flex",alignItems:"flex-start",gap:"9px",padding:"8px 2px",borderTop:0===a?0:"1px solid var(--dsh-svc-border)"}},r.createElement("span",{"aria-hidden":"true",style:{flex:"none",width:"7px",height:"7px",borderRadius:"50%",marginTop:"6px",background:i}}),r.createElement("div",{style:{minWidth:0,flex:1}},r.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:"8px",flexWrap:"wrap"}},r.createElement("span",{style:{fontFamily:"var(--ds-font-family-code, monospace)",fontSize:"12px",fontWeight:600,overflowWrap:"anywhere",color:"var(--dsw-alias-label-primary)"}},t.moduleName),r.createElement("span",{style:{fontSize:"11px",fontWeight:650,color:i}},e("plugin.state."+t.phase))),void 0!==t.error&&null!==t.error?r.createElement("div",{style:{fontSize:"11px",marginTop:"3px",color:"var(--dsh-svc-danger)",lineHeight:1.5,overflowWrap:"anywhere"}},e("plugin.error",{error:t.error})):null,void 0!==t.missingDeps&&t.missingDeps.length>0?r.createElement("div",{style:{fontSize:"11px",marginTop:"3px",color:"var(--dsh-svc-warning)",lineHeight:1.5,overflowWrap:"anywhere"}},e("plugin.missingDeps",{deps:t.missingDeps.join(", ")})):null,s?r.createElement("div",{style:{marginTop:"6px"}},l?r.createElement("div",{style:{padding:"8px 10px",borderRadius:"6px",border:"1px solid var(--dsw-alias-state-error-primary)",background:"rgba(211,51,51,0.08)"}},r.createElement("p",{style:Object.assign({},Ft,{margin:"0 0 6px",color:"var(--dsw-alias-state-error-primary)"})},e("plugin.restartHint",{name:t.moduleName})),r.createElement("div",{style:{display:"flex",gap:"8px"}},r.createElement("button",{type:"button","data-testid":`plugin-restart-confirm-${t.entryId}`,style:Nt,disabled:o,onClick:()=>(async t=>{if(null!==t&&"object"==typeof t&&null===k){x(t.entryId),E(null);try{const e=await c("plugin-restart",{entryId:t.entryId});if(!e||!0!==e.ok)throw Object.assign(new Error("plugin restart failed"),{code:e?.error});y(null),await Tt(!0)}catch(t){y(null),E((t=>{const a="string"==typeof t&&t.length>0?t:"internal-error";if(a.startsWith("restart-failed:")){const t=a.slice(15).trim(),r=e("plugin.error.restart-failed");return e("plugin.restartFailed",{detail:""===t?r:`${r}(${t})`})}const r={"unknown-plugin":"plugin.error.unknown-plugin","loader-unavailable":"plugin.error.loader-unavailable","plugin-disabled":"plugin.error.plugin-disabled","not-failed":"plugin.error.not-failed"}[a];return e("plugin.restartFailed",{detail:void 0===r?a:e(r)})})(t?.code??String(t?.message||t)))}finally{x(null)}}})(t)},e(o?"plugin.restarting":"plugin.restartConfirm")),r.createElement("button",{type:"button",style:$t,disabled:o,onClick:()=>{y(null),E(null)}},e("plugin.restartCancel")))):r.createElement("button",{type:"button","data-testid":`plugin-restart-${t.entryId}`,style:Lt,disabled:o,onClick:()=>{y(t.entryId),E(null)}},e(o?"plugin.restarting":"plugin.restart"))):null,w?r.createElement("p",{"data-testid":"plugin-restart-error",style:Object.assign({},Ft,{margin:"4px 0 0",color:"var(--dsw-alias-state-error-primary)"})},w):null))})),Fa=null!==p?.pluginCompat&&"object"==typeof p?.pluginCompat?p.pluginCompat:null,Pa=Array.isArray(Fa?.issues)?Fa.issues:[],_a=Array.isArray(Fa?.declaredOnly)?Fa.declaredOnly:[],Ua=Array.isArray(Fa?.unknown)?Fa.unknown:[],Va=[...Pa.map((e,t)=>({key:`broken-${t}`,kind:"broken",moduleName:e.moduleName,breaks:e.breaks})),..._a.map((e,t)=>({key:`declared-${t}`,kind:"declared",moduleName:e.moduleName})),...Ua.map((e,t)=>({key:`unknown-${t}`,kind:"unknown",moduleName:e.moduleName,reason:e.reason}))],Ka=null===Fa||0===Va.length?null:r.createElement("div",{"data-testid":"plugin-compat-list",style:{marginTop:"6px",padding:"8px 10px",borderRadius:"6px",border:"1px solid var(--dsh-svc-border)",background:"var(--dsh-svc-raised-bg)"}},Va.map((t,a)=>{const s="broken"===t.kind,n=s?"var(--dsh-svc-warning)":"var(--dsh-svc-info)",i=s?t.breaks.map(t=>e("plugin.compat.break."+t)).join(";"):"declared"===t.kind?e("plugin.compat.declared"):e(`plugin.compat.unknown.${t.reason}`);return r.createElement("div",{key:t.key,"data-testid":`plugin-compat-${t.key}`,style:{display:"flex",alignItems:"flex-start",gap:"9px",padding:"8px 2px",borderTop:0===a?0:"1px solid var(--dsh-svc-border)"}},r.createElement("span",{"aria-hidden":"true",style:{flex:"none",width:"7px",height:"7px",borderRadius:"50%",marginTop:"6px",background:n}}),r.createElement("div",{style:{minWidth:0,flex:1}},r.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:"8px",flexWrap:"wrap"}},r.createElement("span",{style:{fontFamily:"var(--ds-font-family-code, monospace)",fontSize:"12px",fontWeight:600,overflowWrap:"anywhere",color:"var(--dsw-alias-label-primary)"}},t.moduleName),s?r.createElement("span",{style:{fontSize:"11px",fontWeight:650,color:"var(--dsh-svc-warning)"}},e("plugin.compat.issue.broken",{count:1})):"declared"===t.kind?r.createElement("span",{style:{fontSize:"11px",fontWeight:650,color:"var(--dsh-svc-info)"}},e("plugin.compat.issue.declared",{count:1})):null),r.createElement("div",{style:{fontSize:"11px",marginTop:"3px",lineHeight:1.5,overflowWrap:"anywhere",color:s?"var(--dsh-svc-warning)":"var(--dsh-svc-text-muted)"}},i)))})),Ga=S&&!0===S.supported?S.items.filter(e=>!1===e.writable).length:0,Ya=Ga>0||X&&(X.ownerIssues>0||X.directoryModeIssues>0||X.fileModeIssues>0||X.unreadable>0),Ja=S&&!0===S.supported?r.createElement("div",{key:"permissions-section",style:{marginTop:"18px"}},r.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px",flexWrap:"wrap"}},r.createElement("div",{style:Gt},e("permissions.title")),r.createElement("button",{type:"button","data-testid":"permissions-toggle","aria-expanded":String(_),onClick:()=>U(e=>!e),style:{fontSize:"12px",lineHeight:"20px",padding:"2px 12px",borderRadius:999,border:"1px solid var(--dsh-svc-border-strong)",background:"transparent",color:Ga>0?"var(--dsw-alias-state-warn-primary)":"var(--dsw-alias-label-primary)",cursor:"pointer"}},`${_?"▾":"▸"} ${e(_?"permissions.hide":"permissions.show")}${Ga>0?` · ${Ga}`:""}`)),_?r.createElement("div",{style:Object.assign({},_t,{marginTop:"4px"})},r.createElement("p",{style:Ft},e("permissions.description")),Ga>0?r.createElement("div",{style:{marginTop:"8px",padding:"9px 11px",borderRadius:"7px",background:"rgba(198,128,0,0.12)",border:"1px solid rgba(198,128,0,0.3)"}},r.createElement("div",{style:{fontSize:"12px",fontWeight:700}},e("health.alert.title")),r.createElement("div",{style:Ft},e("permissions.summary.warning",{count:Ga}))):null,r.createElement("p",{style:Object.assign({},Ft,{fontWeight:600,color:Ga>0?"var(--dsw-alias-state-warn-primary)":"var(--dsw-alias-label-primary)"})},e(Ga>0?"permissions.summary.warning":"permissions.summary.ok",{count:Ga>0?Ga:S.items.length})),r.createElement("p",{style:Object.assign({},Ft,{fontWeight:600})},e("permissions.target",{owner:S.targetOwner})),r.createElement("div",{style:{display:"flex",gap:"8px",flexWrap:"wrap"}},r.createElement("button",{style:Dt,onClick:()=>P(e=>!e)},e(L?"permissions.hideDetails":"permissions.showDetails")),r.createElement("button",{style:Dt,"data-variant":"neutral",onClick:async()=>{if(S&&!0===S.supported){te(!0),H(null);try{const e=await c("permissions-deep",{planId:S.planId});if(!e||!1===e.ok)throw new Error("deep permission check failed");Z(e.value)}catch(t){H(e("permissions.error"))}finally{te(!1)}}},disabled:ee},e(ee?"permissions.deepChecking":"permissions.deep"))),X?r.createElement("p",{style:Ft},e("permissions.deepSummary",{scanned:X.scanned,duration:X.durationMs,owner:X.ownerIssues,directories:X.directoryModeIssues,files:X.fileModeIssues,unreadable:X.unreadable})):null,L?r.createElement("div",{style:{display:"grid",gap:"8px",marginTop:"8px"}},S.items.map(e=>r.createElement("div",{key:e.path,style:{padding:"9px 10px",borderRadius:"6px",border:"1px solid var(--dsw-alias-border-l1)",background:"var(--dsh-svc-raised-bg)",color:"var(--dsw-alias-label-primary)"}},r.createElement("div",{style:{fontSize:"12px",fontWeight:600}},e.label),r.createElement("div",{style:{fontFamily:"monospace",fontSize:"11px",color:"var(--dsw-alias-label-secondary)",overflowWrap:"anywhere"}},e.path),r.createElement("div",{style:{fontFamily:"monospace",fontSize:"12px",marginTop:"3px"}},`${e.owner} · ${e.mode}`)))):null,C?r.createElement("div",{style:{marginTop:"10px"}},r.createElement("p",{style:Object.assign({},Ft,{color:"var(--dsw-alias-state-error-primary)"})},e("permissions.confirmHint")),r.createElement("div",{style:{display:"flex",gap:"8px"}},r.createElement("button",{style:Nt,disabled:I,onClick:async()=>{if(S&&!0===S.supported){R(!0),H(null);try{const e=await c("permissions-repair",{planId:S.planId});if(!e||!1===e.ok)throw new Error("permission repair failed");q(e.value),T(!1)}catch(t){H(e("permissions.error"))}finally{R(!1)}}}},e(I?"permissions.repairing":"permissions.confirm")),r.createElement("button",{style:$t,disabled:I,onClick:()=>T(!1)},e("permissions.cancel")))):Ya?r.createElement("button",{style:Object.assign({},Lt,{marginTop:"10px"}),"data-variant":"dangerGhost",disabled:I,onClick:()=>T(!0)},e("permissions.repair")):null,z?r.createElement("p",{style:Object.assign({},Ft,{color:"var(--dsw-alias-state-error-primary)"})},z):null):null):null,Qa=r.createElement("div",{key:"health-section","data-testid":"health-card",style:Pt},$a,Ba,Ka,Ja),Xa=se&&!0===ie?.active,Za=Xa&&ie.phase||"copy",er={copy:1,archive:2,validate:3,publish:4}[Za]||1,tr=(()=>{if(!Xa)return 0;const e=Number(ie.totalBytes)||0;let t;if("copy"===Za)t=e>0?Math.min(30,Math.floor(ie.copiedBytes/e*30)):0;else if("archive"===Za){const a=e>0?Math.min(1,Number(ie.archiveBytes)/e):0;t=Math.min(70,30+Math.floor(40*a))}else t="validate"===Za?70:100;const a=Math.max(de.current,t);return de.current=a,a})(),ar=Xa?"copy"===Za?`${Yt(ie.copiedBytes)} / ${Yt(ie.totalBytes)}`:ie.archiveBytes>0?Yt(ie.archiveBytes):"":"",rr=r.createElement("div",{key:"backup-section"},r.createElement("div",{style:Gt},e("backup.title")),r.createElement("div",{style:Object.assign({},_t,{marginTop:"4px"})},r.createElement("p",{style:Ft},e("backup.description")),r.createElement("div",{style:{display:"flex",gap:"8px",marginTop:"12px",flexWrap:"wrap"}},r.createElement("button",{style:Object.assign({},Ht,{flex:1,minWidth:0,display:"inline-flex",alignItems:"center",justifyContent:"center",textAlign:"center"}),"data-variant":"brandGhost",onClick:async()=>{ne(!0),ue(null),oe(null),de.current=0;let e=!1,a=()=>{};const r=async()=>{if(!e){try{const t=await c("backup-progress",{});!e&&t&&t.ok&&oe(!0===t.value?.active?t.value:null)}catch(e){}e||(a=t.timer.timeout(r,400))}};r();try{const e=await c("backup-create",{});if(!e||!1===e.ok)throw Object.assign(new Error("backup failed"),{code:e?.error});re({items:e.value.items,totalBytes:e.value.totalBytes})}catch(e){ue(It(e?.code))}finally{e=!0,a(),oe(null),ne(!1)}},disabled:se},e(se?"backup.creating":"backup.create")),r.createElement("label",{style:Object.assign({},Dt,{flex:1,minWidth:0,display:"inline-flex",alignItems:"center",justifyContent:"center",textAlign:"center",cursor:Se?"default":"pointer"})},e(Se?"backup.importing":"backup.import"),r.createElement("input",{type:"file",accept:".tar.gz,application/gzip",disabled:Se,onChange:t=>{const a=t.target.files&&t.target.files[0];if(t.target.value="",!a)return;qe(!0),ue(null);const r=new FileReader;r.onload=async()=>{try{const e=new Uint8Array(r.result);let t="";for(let a=0;a<e.length;a+=32768)t+=String.fromCharCode(...e.subarray(a,a+32768));const s=await c("backup-import",{name:a.name,data:btoa(t)});if(!s||!1===s.ok)throw Object.assign(new Error("backup import failed"),{code:s?.error});re(s.value)}catch(t){ue(t?.code?It(t.code):e("backup.error"))}finally{qe(!1)}},r.onerror=()=>{qe(!1),ue(e("backup.error"))},r.readAsArrayBuffer(a)},style:{display:"none"}}))),se&&!0===ie?.active?r.createElement("div",{"data-testid":"backup-progress",style:{marginTop:"10px"}},r.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:"8px",fontSize:"11px",color:"var(--dsw-alias-label-secondary)"}},r.createElement("span",null,e("backup.progress."+Za,{current:er,total:4})),r.createElement("span",null,ar)),r.createElement("div",{style:{marginTop:"5px",height:"6px",borderRadius:"999px",background:"var(--dsh-svc-raised-bg)",border:"1px solid var(--dsw-alias-border-l1)",overflow:"hidden"}},r.createElement("div",{style:{height:"100%",width:tr+"%",background:"var(--dsw-alias-brand-primary)",transition:"width 240ms ease"}}))):null,r.createElement("p",{style:Ft},e("backup.total",{size:Yt(ae.totalBytes)})),ke?r.createElement("div",{"data-testid":"backup-manual-restart",style:{marginTop:"10px",padding:"10px 12px",borderRadius:"8px",border:"1px solid var(--dsw-alias-state-warn-primary)",background:"rgba(198,128,0,0.10)"}},r.createElement("div",{style:{fontWeight:650,color:"var(--dsw-alias-state-warn-primary)"}},e("backup.manualRestartTitle")),r.createElement("p",{style:Object.assign({},Ft,{margin:"4px 0 0"})},e("backup.manualRestartBody"))):null,ce?r.createElement("p",{style:Object.assign({},Ft,{color:"var(--dsw-alias-state-error-primary)"})},ce):null,0===ae.items.length?r.createElement("p",{style:Ft},e("backup.empty")):ae.items.length>10?r.createElement("button",{style:Object.assign({},$t,{marginTop:"8px"}),onClick:()=>Te(e=>!e)},e(Ce?"backup.hideRecords":"backup.showRecords")):null,ae.items.length>0&&(ae.items.length<=10||Ce)?r.createElement("div",{style:{marginTop:"10px",display:"grid",gap:"8px"}},ae.items.map(t=>r.createElement("div",{key:t.id,style:{padding:"9px 2px",borderBottom:"1px solid var(--dsh-svc-border)",color:"var(--dsw-alias-label-primary)"}},r.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:"12px",alignItems:"flex-start"}},r.createElement("div",null,r.createElement("div",{style:{fontFamily:"monospace",fontSize:"12px",overflowWrap:"anywhere"}},t.name),r.createElement("div",{style:{color:"var(--dsw-alias-label-secondary)",fontSize:"11px",marginTop:"3px"}},`${Yt(t.sizeBytes)} · ${new Date(t.createdAt).toLocaleString()}`)),r.createElement("div",{style:{display:"flex",gap:"6px",flexShrink:0}},pe===t.id||ge===t.id?null:r.createElement("button",{style:N(),disabled:we||se,onClick:()=>(async t=>{Ee(!0),ue(null);try{const e=await c("backup-export",{id:t});if(!e||!1===e.ok)throw new Error("export failed");const a=document.createElement("a");a.href=e.value.url,a.download=e.value.name,document.body.appendChild(a),a.click(),document.body.removeChild(a)}catch(t){ue(e("backup.exportError"))}finally{Ee(!1)}})(t.id)},e(we?"backup.exporting":"backup.export")),pe===t.id||ge===t.id?null:r.createElement("button",{style:N(),disabled:se,onClick:()=>(async e=>{ne(!0),ue(null),xe(!1),ve(null),ye(null),he(e);try{const t=await c("backup-inspect",{id:e});if(!t||!1===t.ok)throw Object.assign(new Error("backup inspect failed"),{code:t?.error});if(ve(t.value),!0!==t.value.validForRestore)return;const a=await c("backup-restore-prepare",{id:e});if(!a||!1===a.ok)throw Object.assign(new Error("backup prepare failed"),{code:a?.error});ye(a.value)}catch(e){ue(It(e?.code))}finally{ne(!1)}})(t.id)},e(se&&ge===t.id?"backup.inspecting":"backup.restore")),pe===t.id||ge===t.id?null:r.createElement("button",{style:Object.assign({},Lt,{minHeight:"28px",padding:"4px 9px"}),"data-variant":"dangerGhost",disabled:se,onClick:()=>me(t.id)},e("backup.delete")))),pe===t.id?r.createElement("div",{style:{marginTop:"8px"}},r.createElement("p",{style:Object.assign({},Ft,{color:"var(--dsw-alias-state-error-primary)",margin:"0 0 6px"})},e("backup.confirmHint")),r.createElement("div",{style:{display:"flex",gap:"8px"}},r.createElement("button",{style:Nt,disabled:se,onClick:()=>(async t=>{ne(!0),ue(null);try{const e=await c("backup-delete",{id:t});if(!e||!1===e.ok)throw new Error("backup failed");re(e.value),me(null)}catch(t){ue(e("backup.error"))}finally{ne(!1)}})(t.id)},e("backup.confirm")),r.createElement("button",{style:$t,disabled:se,onClick:()=>me(null)},e("backup.cancel")))):ge===t.id?r.createElement("div",{"data-testid":"backup-restore-preflight",style:{marginTop:"8px",padding:"10px",borderRadius:"8px",border:"1px solid var(--dsh-svc-border)",background:"var(--dsh-svc-raised-bg)"}},se&&null===be?r.createElement("p",{style:Ft},e("backup.inspecting")):null!==be?r.createElement("div",null,r.createElement("div",{style:{fontWeight:650,color:be.validForRestore?"var(--dsh-svc-success)":"var(--dsh-svc-danger)"}},e(be.validForRestore?"backup.integrity.ok":"backup.integrity.invalid")),r.createElement("p",{style:Object.assign({},Ft,{margin:"4px 0 0"})},e("backup.integrity.summary",{entries:be.archive?.entryCount||0,size:Yt(be.archive?.logicalBytes||0),sessions:be.sections?.sessions?.files||0,config:be.sections?.config?.files?.length||0,profiles:be.sections?.profiles?.count||0})),!0!==be.validForRestore?r.createElement("ul",{style:Object.assign({},Ft,{margin:"6px 0 0",paddingLeft:"18px",color:"var(--dsh-svc-danger)"})},(be.issues||[]).map((e,t)=>r.createElement("li",{key:t},It(e.code)))):null):null,null!==fe?r.createElement("div",{style:{marginTop:"8px"}},r.createElement("p",{style:Object.assign({},Ft,{color:"var(--dsw-alias-state-warn-primary)",margin:"0 0 6px"})},e("backup.restoreHint")),r.createElement("ul",{style:Object.assign({},Ft,{margin:"0 0 8px",paddingLeft:"18px"})},r.createElement("li",null,e("backup.plan.sessions")),r.createElement("li",null,e("backup.plan.config",{replace:fe.targets?.config?.replace?.length||0,remove:fe.targets?.config?.remove?.length||0})),r.createElement("li",null,e("backup.plan.profiles",{count:fe.targets?.profiles?.upsert?.length||0}))),r.createElement("p",{style:Object.assign({},Ft,{margin:"0 0 8px"})},e("backup.plan.expires",{time:new Date(fe.expiresAt).toLocaleTimeString()})),r.createElement("div",{style:{display:"flex",gap:"8px"}},r.createElement("button",{style:Nt,disabled:se,onClick:Rt},e("backup.restoreConfirm")),r.createElement("button",{style:$t,disabled:se,onClick:zt},e("backup.cancel")))):r.createElement("button",{style:$t,disabled:se,onClick:zt},e("backup.cancel"))):null))):null)),sr=(t,a,s,n,i,l,o)=>{const d=n?"unpublished"===n.status?e("update.unpublished"):"unavailable"===n.status?e("update.unavailable"):n.upToDate?e("update.current"):e("update.available",{version:n.latest}):He||e("update.checking"),c=n?n.upToDate?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-state-warn-primary)":"var(--dsw-alias-label-secondary)",u=l&&n&&"unpublished"!==n.status&&"unavailable"!==n.status&&!n.upToDate?r.createElement("button",{type:"button",title:e(wt?"update.detailsHide":"update.detailsButton"),style:{background:"transparent",border:0,padding:0,cursor:"pointer",display:"inline-flex",alignItems:"center",gap:"5px",fontSize:"12px",fontWeight:600,color:c},onClick:()=>Et(e=>!e)},(p=wt,r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:12,height:12,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block",transition:"transform 150ms ease",transform:p?"rotate(90deg)":"none"}},r.createElement("path",{d:"M9 6l6 6-6 6"}))),r.createElement("span",null,d)):r.createElement("div",{style:{color:c,fontWeight:600}},d);var p;return r.createElement("div",{key:t,style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:"16px",padding:"10px 2px",borderTop:o?"1px solid var(--dsw-alias-border-l1)":0}},r.createElement("div",{style:{whiteSpace:"nowrap",display:"flex",alignItems:"center",gap:"8px"}},r.createElement("span",{style:{fontSize:"13px",fontWeight:650}},`${a} `),n?.url?r.createElement("a",{"data-testid":`version-${t}-link`,href:n.url,target:"_blank",rel:"noreferrer",style:{color:"var(--dsw-alias-label-primary)",textDecoration:"underline",fontSize:"12px",whiteSpace:"nowrap",marginLeft:"16px"}},n.current||s||e("version.loading")):r.createElement("code",{style:{fontSize:"12px",color:"var(--dsw-alias-label-primary)",marginLeft:"16px"}},n?.current||s||e("version.loading"))),i||null,r.createElement("div",{style:{textAlign:"right",fontSize:"12px"}},u))},nr=je?.dsh,ir=nr&&"unpublished"!==nr.status&&"unavailable"!==nr.status&&!nr.upToDate,lr=!je?.plugin||je.plugin.upToDate||"available"!==je.plugin.status||tt||st?null:r.createElement("button",{style:Object.assign({},Dt,{minHeight:"24px",padding:"2px 8px",fontSize:"11px"}),disabled:Ve,onClick:jt},e(Ve?"update.upgrading":"update.upgrade")),or=r.createElement("div",{key:"version-card","data-testid":"version-card",style:Pt},r.createElement("div",{key:"title",style:Gt},e("version.title")),r.createElement("div",{style:_t},sr("plugin","dsh-service",ze,je?.plugin,lr,!1,!1),sr("dsh","DSH",Ae,nr,null,!0===ir,!0),wt?r.createElement("div",{"data-testid":"version-channel-details",style:{marginTop:"6px",paddingTop:"8px",borderTop:"1px solid var(--dsw-alias-border-l1)",fontSize:"12px",lineHeight:1.7,color:"var(--dsw-alias-label-secondary)",display:"flex",flexDirection:"column",gap:"6px"}},r.createElement("div",null,e("update.details.current",{version:nr?.current||Ae||"—"})),r.createElement("div",null,e("update.details.latest",{version:nr?.latest||"—"})),dt(e,nr?.tags)):null,tt?r.createElement("div",{"data-testid":"upgrade-manual-confirm",style:{marginTop:"10px",padding:"10px 12px",borderRadius:"6px",background:"rgba(211,51,51,0.08)",border:"1px solid rgba(211,51,51,0.3)"}},r.createElement("p",{style:{margin:"0 0 6px",color:"var(--dsw-alias-state-error-primary)",fontSize:"13px",fontWeight:600}},e("update.manualConfirmTitle")),r.createElement("p",{style:Object.assign({},Ft,{margin:"0 0 8px"})},e("update.manualConfirm")),r.createElement("div",{style:Bt},r.createElement("button",{style:Lt,"data-variant":"dangerGhost",disabled:Ve,onClick:jt},e(Ve?"update.upgrading":"update.manualProceed")),r.createElement("button",{style:$t,disabled:Ve,onClick:()=>at(!1)},e("restart.cancel")))):null,st?r.createElement("div",{"data-testid":"upgrade-manual-pending",style:{marginTop:"10px",padding:"10px 12px",borderRadius:"6px",border:"1px solid var(--dsw-alias-state-warn-primary)",background:"var(--dsh-svc-raised-bg)"}},r.createElement("p",{style:{margin:"0 0 4px",color:"var(--dsw-alias-state-warn-primary)",fontSize:"13px",fontWeight:650}},e("update.manualRestartTitle")),r.createElement("p",{style:Object.assign({},Ft,{margin:0})},e("update.manualRestartBody"))):null,Ye?r.createElement("p",{style:Object.assign({},Ft,{color:"var(--dsw-alias-state-error-primary)",margin:"4px 0 0"})},Ye):null)),dr=r.createElement(pt,{showNavToggle:!0}),{enabled:cr,done:ur,input:pr,bell:mr,setEnabled:gr,setDone:hr,setInput:br,setBell:vr}=le(),fr="undefined"!=typeof Notification,yr=fr?Notification.permission:"denied",kr=(e,t,a,s,n,i)=>r.createElement("div",{"data-testid":e,style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px",padding:"5px 0"}},r.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"2px"}},r.createElement("span",{style:{fontSize:"13px",color:"var(--dsw-alias-label-primary)"}},t),a?r.createElement("span",{style:Ft},a):null),((e,t,a)=>r.createElement("button",{type:"button",role:"switch","aria-checked":String(!0===e),"aria-disabled":a?"true":void 0,onClick:a?void 0:()=>t(!e),style:{width:"34px",height:"20px",borderRadius:"10px",padding:0,flexShrink:0,position:"relative",border:"1px solid "+(e?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-border-l2)"),background:e?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-bg-layer-2)",cursor:a?"default":"pointer",opacity:a?.5:1,lineHeight:0}},r.createElement("span",{style:{position:"absolute",top:"1px",left:e?"15px":"1px",width:"16px",height:"16px",borderRadius:"50%",background:e?"#fff":"var(--dsw-alias-label-tertiary)"}})))(s,n,i)),xr=fr?r.createElement("div",{style:{marginTop:"18px"}},r.createElement("div",{style:Gt},e("notification.title")),r.createElement("div",{style:Object.assign({},_t,{marginTop:"4px"})},r.createElement("p",{style:Ft},e("notification.description")),"granted"!==yr?r.createElement("div",{style:{marginTop:"8px",display:"flex",alignItems:"center",gap:"8px"}},r.createElement("button",{style:Dt,onClick:()=>{Notification.requestPermission().then(e=>{"granted"===e&&gr(!0)})}},e("notification.enable")),r.createElement("span",{style:Ft},"denied"===yr?e("notification.denied"):"")):r.createElement("div",{style:{marginTop:"8px",display:"flex",flexDirection:"column"}},kr("notify-row-master",e("notification.master"),null,cr,gr,!1),kr("notify-row-done",e("notification.done"),null,ur,hr,!cr),kr("notify-row-input",e("notification.input"),null,pr,br,!cr),kr("notify-row-bell",e("notification.bellShow"),null,mr,vr,!1)))):null,wr=null!=je&&(je.dsh&&!1===je.dsh.upToDate||je.plugin&&!1===je.plugin.upToDate),Er=null!==ae&&!se&&!ce,Sr=(p?.checks||[]).filter(e=>"error"===e.status||"warning"===e.status&&!0!==e.advisory&&"permissions"!==e.id),qr=[];d&&qr.push({level:"error",text:d}),_e&&qr.push({level:"error",text:_e}),ce&&qr.push({level:"error",text:ce}),St.error&&qr.push({level:"error",text:String(St.error)}),z&&qr.push({level:"error",text:z});for(const t of Sr)qr.push({level:"error"===t.status?"error":"warning",text:e(`health.check.${t.id}`)+":"+qa(t)});Ga>0&&qr.push({level:"warning",text:e("permissions.summary.warning",{count:Ga})}),wr&&qr.push({level:"info",text:e("overview.updateAvailable")}),null!==qt&&!0===qt.manualStartLikely&&qr.push({level:"info",text:e("health.detail.runtime-env.manual")}),Er&&0===ae.items.length&&qr.push({level:"info",text:e("overview.backupEmpty")});const Cr=qr.some(e=>"error"===e.level)?"error":qr.some(e=>"warning"===e.level)?"warning":qr.some(e=>"info"===e.level)?"info":"normal",Tr="normal"===Cr?e("overview.status.normal"):e(`overview.status.${Cr}`,{count:qr.length}),Ar=r.createElement("div",{"data-testid":"overview-status",style:Object.assign({},_t,{display:"flex",alignItems:"center",gap:"10px"})},r.createElement("span",{"aria-hidden":"true",style:{flex:"none",width:"10px",height:"10px",borderRadius:"50%",background:"normal"===Cr?"var(--dsh-svc-success)":"warning"===Cr?"var(--dsh-svc-warning)":"error"===Cr?"var(--dsh-svc-danger)":"var(--dsh-svc-info)"}}),r.createElement("span",{style:{fontSize:"13px",fontWeight:600,color:"var(--dsh-svc-text)"}},Tr)),Ir=0===qr.length?null:r.createElement("div",{"data-testid":"overview-actionables",style:Object.assign({},_t,{marginTop:"10px",padding:"4px 10px"})},qr.map((e,t)=>r.createElement("div",{key:`${e.level}-${t}`,style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 2px",fontSize:"12px",borderTop:0===t?0:"1px solid var(--dsh-svc-border)"}},r.createElement("span",{"aria-hidden":"true",style:{flex:"none",width:"7px",height:"7px",borderRadius:"50%",background:"error"===e.level?"var(--dsh-svc-danger)":"warning"===e.level?"var(--dsh-svc-warning)":"var(--dsh-svc-info)"}}),r.createElement("span",{style:{color:"var(--dsh-svc-text)"}},e.text)))),Rr=[!1!==s.healthDiagnostics?r.createElement("button",{key:"health",type:"button","data-testid":"overview-action-health","data-variant":"brandGhost",style:Ht,onClick:()=>{xt("diagnostics"),Tt(!1)}},e("overview.action.health")):null,!1!==s.quotaLookup?r.createElement("button",{key:"quota",type:"button","data-testid":"overview-action-quota","data-variant":"brandGhost",style:Ht,onClick:()=>xt("quota")},e("tabs.quota")):null,!1!==s.backupMaintenance?r.createElement("button",{key:"backup",type:"button","data-testid":"overview-action-backup","data-variant":"brandGhost",style:Ht,onClick:()=>{xt("maintenance"),Br("backup")}},e("backup.create")):null].filter(e=>null!==e),zr=0===Rr.length?null:r.createElement("div",{"data-testid":"overview-core-actions",style:{display:"flex",flexWrap:"wrap",gap:"8px",marginTop:"18px"}},Rr),Mr=r.createElement("div",null,Ar,Ir,or,Na,zr,Ma.length>0||ja.length>0?La:null),jr=r.createElement("div",{key:"maintenance-card","data-testid":"maintenance-card",style:Pt},rr),Or=!0===p?.checks?.some(e=>"error"===e.status||"warning"===e.status&&!0!==e.advisory),{batch:Hr}=Re(),Dr={overview:!1,usage:Boolean(_e),quota:!1,diagnostics:Boolean(d||z||Or||Ga>0),maintenance:Boolean(ce||St.error),configuration:!1},[Nr,Lr]=a("subagent"),[$r,Wr]=a("features");l(()=>{let e=null;try{e=localStorage.getItem("dsh-service-maintenance-tab")}catch(e){}Lr(null===e?"subagent":K(e,s))},[]);const Br=e=>{Lr(e);try{localStorage.setItem("dsh-service-maintenance-tab",e)}catch(e){}},Fr=((e,t)=>W.filter(t=>void 0===F[t]||!1!==e[F[t]]).map(e=>({id:e,labelKey:B[e],warning:void 0!==t&&!0===t[e]})))(s,Dr),Pr=V(s),_r=Fr.filter(e=>e.warning).map(t=>e(t.labelKey)),Ur=Fr.some(e=>e.id===kt)?kt:"overview",Vr=K(Nr,s),Kr="overview"===Ur?Mr:"usage"===Ur?Ha:"quota"===Ur?r.createElement(fa,null):"diagnostics"===Ur?Qa:"maintenance"===Ur?null===Vr?r.createElement("div",{"data-testid":"maintenance-empty",style:_t},e("maintenance.empty")):"restart"===Vr?dr:"backup"===Vr?jr:"skills"===Vr?r.createElement(ia,null):"subagent"===Vr?r.createElement(Xt,null):r.createElement(va,null):"notifications"===$r?r.createElement("div",{"data-testid":"config-notifications-page",style:!1===s.taskNotifications?{opacity:.55}:void 0},xr,...!1===s.taskNotifications?[r.createElement("p",{key:"notify-off-hint",style:Object.assign({},Ft,{marginTop:"8px"})},e("config.notificationsDisabled"))]:[]):r.createElement(Jt,null);return r.createElement("div",{"data-testid":"service-panel-root","data-dshsvc-root":"","data-dshsvc-page":Ur,className:"dshsvc-page"},_r.length>0?r.createElement("div",{role:"alert",style:{marginBottom:"12px",padding:"11px 13px",borderRadius:"8px",background:"rgba(198,128,0,0.16)",border:"1px solid rgba(198,128,0,0.48)"}},r.createElement("div",{style:{fontSize:"13px",fontWeight:700}},e("tabs.alert.title")),r.createElement("div",{style:Object.assign({},Ft,{marginTop:"3px"})},e("tabs.alert.body",{tabs:_r.join(e("tabs.alert.join"))}))):null,r.createElement(Q,{items:Fr.map(t=>({id:t.id,label:e(t.labelKey),icon:"diagnostics"===t.id?"health":t.id,warning:t.warning,badge:"maintenance"===t.id&&null!==Hr&&"running"===Hr.phase?{testid:"skills-tab-badge",text:Hr.done+"/"+Hr.total}:null})),activeId:Ur,onChange:e=>{xt(e),"diagnostics"===e&&Tt(!1)},testIdPrefix:"service-tab",dotLabel:e("tabs.alert.dot"),ariaLabel:e("nav.label")}),r.createElement(J,{title:e(B[Ur]),description:void 0!==Y[Ur]?e(Y[Ur]):null,action:"diagnostics"===Ur?r.createElement("button",{type:"button","data-testid":"diagnostics-recheck","data-variant":"neutral",style:Dt,onClick:()=>Tt(!0),disabled:g},e(g?"health.checking":p?"health.recheck":"health.check")):null}),"maintenance"===Ur&&Pr.length>0?r.createElement(Q,{items:Pr.map(t=>({id:t.id,label:e(t.labelKey)})),activeId:Vr,onChange:Br,testIdPrefix:"maintenance-tab",variant:"sub",ariaLabel:e("tabs.maintenance")}):null,"configuration"===Ur?r.createElement(Q,{items:G.map(t=>({id:t.id,label:e(t.labelKey)})),activeId:$r,onChange:Wr,testIdPrefix:"config-tab",variant:"sub",ariaLabel:e("tabs.configuration")}):null,r.createElement("div",{"data-testid":"tab-panel",style:{padding:"14px 2px 2px",color:"var(--dsw-alias-label-primary)"}},Kr))}null!==ha&&console.info("[dsh-service-md] session detail markdown renderer ready");const ka=["M10.268 21a2 2 0 0 0 3.464 0","m15 8 2 2 4-4","M16.8607 4.4824A6 6 0 0 0 6 8C6 12.499 4.589 13.956 3.262 15.326","M3.262 15.326A1 1 0 0 0 4 17H20A1 1 0 0 0 20.74 15.327C20.209 14.779 19.665 14.218 19.203 13.454"],xa=["M10.268 21a2 2 0 0 0 3.464 0","M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742","m2 2 20 20","M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05"];function wa(){const{enabled:e,setEnabled:t}=le(),a=O();return r.createElement("button",{type:"button",title:a(e?"notification.bellOn":"notification.bellOff"),style:{background:"transparent",border:0,cursor:"pointer",padding:"2px 4px",color:"inherit",opacity:e?1:.45,lineHeight:0},onClick:()=>{"undefined"!=typeof Notification&&("granted"===Notification.permission?t(!e):Notification.requestPermission().then(e=>{"granted"===e&&t(!0)}))}},(s=e,r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"}},(s?ka:xa).map(function(e,t){return r.createElement("path",{key:t,d:e})}))));var s}t.slots.inject("conversation.input.left",()=>{let e=null;const a=()=>{null!==e&&(e(),e=null),M("taskNotifications")&&te&&(e=t.slots.register({name:"conversation.input.left",id:"dsh-service-notify",order:90,label:()=>C("notification.bellOn")},()=>r.createElement(wa,null)))};a();const s=R.subscribe(a),n=(i=a,re.add(i),()=>re.delete(i));var i;return()=>{s(),n(),null!==e&&e()}}),t.slots.inject("sidebar.footer.action",()=>t.slots.register({name:"sidebar.footer.action",id:"dsh-service-update",order:90,label:()=>C("update.badge")},()=>r.createElement(st,null))),t.slots.inject("settings.plugin.item",()=>t.slots.register({name:"settings.plugin.item",id:"dsh-service",key:"dsh-service",order:40},()=>r.createElement(Gt,null))),t.slots.inject("settings.section",()=>{const e=t.slots.register({name:"settings.section",id:"dsh-service",order:99,label:()=>C("nav.label")},()=>r.createElement(ya,null));de.sync(),ce.sync(),ue.sync();const a=R.subscribe(ce.sync),s=R.subscribe(ue.sync);return()=>{a(),s(),e(),de.disposeEntry(),ce.disposeEntry(),ue.disposeEntry()}}),t.slots.inject("shell.overlay",()=>t.slots.register({name:"shell.overlay",id:"dsh-service-restart",order:100,label:()=>C("overlay.label")},()=>r.createElement(ut,null))),t.slots.inject("conversation.input.right",()=>{let e=null;const a=()=>{null!==e&&(e(),e=null),M("quotaLookup")&&(e=t.slots.register({name:"conversation.input.right",id:"dsh-service-quota-ring",order:95,label:()=>C("quota.ring.label"),inject:e=>{if(null==e)return{};try{const t=je();if(void 0===t||"function"!=typeof t.directoryFor)return{sessionId:e};const a=t.directoryFor(e);return{sessionId:e,directoryStore:a.store,loadDirectory:()=>{try{const e=a.load();e&&"function"==typeof e.catch&&e.catch(()=>{})}catch(e){}}}}catch(t){return{sessionId:e}}}},e=>r.createElement(Kt,e)))};a();const s=R.subscribe(a);return()=>{s(),null!==e&&e()}}),t.slots.inject("conversation.chat.turnTail",()=>{let e=null;const a=()=>{null!==e&&(e(),e=null),M("subagentRoute")&&(e=t.slots.register({name:"conversation.chat.turnTail",id:"dsh-service-subagent-models",select:v},e=>r.createElement(E,e)))};a();const s=R.subscribe(a);return()=>{s(),null!==e&&e()}}),t.slots.inject("conversation.composer.dock",()=>{let e=null;const a=()=>{null!==e&&(e(),e=null),M("subagentRoute")&&M("subagentModelsDock")&&(e=t.slots.register({name:"conversation.composer.dock",id:"dsh-service-subagent-models-dock",order:60,label:()=>C("subagent.turnTail.label"),inject:e=>({sessionId:e})},e=>r.createElement(S,e)))};a();const s=R.subscribe(a);return()=>{s(),null!==e&&e()}});const Ea=(()=>{const e={observer:null,btn:null,styleTag:null,retryTimer:null,retryLeft:0,scrollHandler:null,rafId:null,slotRO:null},a=(()=>{const e=e=>{if("function"==typeof e.hasAttribute)try{return e.hasAttribute("data-conversation-scroll")}catch(e){return!1}try{return null!==e.attributes&&"function"==typeof e.attributes.getNamedItem&&null!==e.attributes.getNamedItem("data-conversation-scroll")}catch(e){return!1}};return{toBottomSlot:()=>{try{return document.querySelector('[class*="_toBottomSlot"]')}catch(e){return null}},toBottomButton:e=>{try{return e.querySelector('[class*="_toBottom"]:not([class*="Slot"])')}catch(e){return null}},scrollportOf:t=>{try{let a=t;for(;null!==a&&a!==document.documentElement&&!e(a);)a=a.parentNode;return null!==a&&a!==document.documentElement?a:t.parentNode}catch(e){return null}},officialTurnNavigatorVisible:e=>{try{if("function"!=typeof getComputedStyle)return!1;if(null===e||"function"!=typeof e.querySelector)return!1;const t=e.querySelector('[class*="_rail"]');return null!==t&&"none"!==getComputedStyle(t).display}catch(e){return!1}},userRows:e=>{const t=[];try{if("function"!=typeof e.querySelectorAll)return t;for(const a of e.querySelectorAll('[data-chat-flow-kind="user"]'))t.push(a)}catch(e){}return t},flowTopOf:(e,t)=>{try{return t.getBoundingClientRect().top-e.getBoundingClientRect().top}catch(e){return 0}},loadOlderButton:e=>{try{return"function"==typeof e.querySelector?e.querySelector('[class*="_older"] button'):null}catch(e){return null}}}})(),r=()=>{if(null!==e.retryTimer){try{e.retryTimer()}catch(e){}e.retryTimer=null}},s=()=>{if(null!==e.btn&&e.btn.isConnected)try{const t=a.toBottomSlot();if(null===t)return;const r=a.scrollportOf(t);if(null===r||"function"!=typeof r.querySelectorAll)return;let s=!1;for(const e of a.userRows(r))if(a.flowTopOf(r,e)<4){s=!0;break}const i=null!==a.loadOlderButton(r);e.btn.style.display=s||i?"flex":"none",n()}catch(e){}},n=()=>{if(null!==e.btn&&e.btn.isConnected)try{const t=a.toBottomSlot();if(null===t||"function"!=typeof t.querySelector)return;const r=a.toBottomButton(t);let s=0;if(null!==r){const e=t.getBoundingClientRect().right,a=r.getBoundingClientRect().right;s=Math.max(0,Math.round(e-a))}const n=`${s}px`;e.btn.style.right!==n&&(e.btn.style.right=n)}catch(e){}},i=()=>{if(null===e.btn||!e.btn.isConnected)try{const i=a.toBottomSlot();if(null===i||"function"!=typeof i.appendChild||"function"!=typeof i.querySelector)return;const l=a.toBottomButton(i),o=document.createElement("button");o.type="button",o.setAttribute("data-dshsvc-user-jump",""),o.setAttribute("aria-label",C("conversation.jump.previousReply"));let d=0;try{if(null!==l){const e=i.getBoundingClientRect().right,t=l.getBoundingClientRect().right;d=Math.max(0,Math.round(e-t))}}catch(e){}Object.assign(o.style,{position:"absolute",right:`${d}px`,bottom:"42px",zIndex:"1",width:"34px",height:"34px",padding:"0",cursor:"pointer",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-button-floating-fill)",color:"var(--dsw-alias-label-primary)",boxShadow:"var(--dsw-shadow-lv2)",borderRadius:"100px",display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"auto"}),o.innerHTML=(e=>{try{const t=a.toBottomButton(e),r=null!==t?t.querySelector("svg"):null;if(null!==r&&"string"==typeof r.outerHTML)return r.outerHTML.replace(/<svg/i,'<svg style="transform:rotate(180deg)"')}catch(e){}return'<svg width="14" height="14" viewBox="0 0 14 14" fill="none" aria-hidden="true"><path d="M7 10.5V3.5M3.5 7 7 3.5 10.5 7" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>'})(i),o.addEventListener("click",()=>{const s=a.scrollportOf(i);if(null===s||"function"!=typeof s.querySelectorAll)return;const n=Number(s.scrollTop)||0,l=()=>{e.retryTimer=null;const r=Number(s.scrollTop)||0;if(Math.abs(r-n)>40)try{s.scrollTop=n}catch(e){}const i=a.userRows(s);let o=null;for(let e=i.length-1;e>=0;e-=1)if(a.flowTopOf(s,i[e])<4){o=i[e];break}if(null!==o){const e=Math.max(0,n+a.flowTopOf(s,o)-12);try{s.scrollTop=e}catch(e){}return}if(e.retryLeft<=0)return;e.retryLeft-=1;const d=a.loadOlderButton(s);if(null!==d){if(!0!==d.disabled)try{d.click()}catch(e){}e.retryTimer=t.timer.timeout(l,220)}};r(),e.retryLeft=20,l()}),i.appendChild(o),e.btn=o,(()=>{if("function"==typeof ResizeObserver){if(null!==e.slotRO){try{e.slotRO.disconnect()}catch(e){}e.slotRO=null}try{const t=a.toBottomSlot();if(null===t)return;const r=new ResizeObserver(()=>{n()});r.observe(t),e.slotRO=r}catch(t){e.slotRO=null}}})(),s()}catch(e){}};return{start:()=>{try{if(null===e.styleTag){const t=document.createElement("style");t.dataset.plugin="@gehennawu/dsh-service",t.dataset.pluginCss="@gehennawu/dsh-service/user-jump.css",t.textContent="[data-dshsvc-user-jump]:hover,[data-dshsvc-user-jump]:active{background:var(--dsw-alias-button-floating-hover)!important}",document.head.appendChild(t),e.styleTag=t}}catch(e){}if(i(),null===e.observer){try{e.observer=new MutationObserver(()=>{i(),s()}),e.observer.observe(document.documentElement,{childList:!0,subtree:!0})}catch(t){e.observer=null}if(null===e.scrollHandler)try{e.scrollHandler=()=>{if("function"==typeof requestAnimationFrame){if(null!==e.rafId)return;e.rafId=requestAnimationFrame(()=>{e.rafId=null,s()})}else s()},document.documentElement.addEventListener("scroll",e.scrollHandler,!0)}catch(t){e.scrollHandler=null}}},stop:()=>{if(r(),null!==e.slotRO){try{e.slotRO.disconnect()}catch(e){}e.slotRO=null}if(null!==e.scrollHandler){try{document.documentElement.removeEventListener("scroll",e.scrollHandler,!0)}catch(e){}e.scrollHandler=null}if(null!==e.rafId){try{cancelAnimationFrame(e.rafId)}catch(e){}e.rafId=null}if(null!==e.observer){try{e.observer.disconnect()}catch(e){}e.observer=null}if(null!==e.btn){try{e.btn.remove()}catch(e){}e.btn=null}if(null!==e.styleTag){try{e.styleTag.remove()}catch(e){}e.styleTag=null}}}})();t.effect(()=>(Ea.start(),()=>Ea.stop()),"dsh-service user reply jump");const Sa=function(){const e={active:!1,mq:null,mqHandler:null,frameObserver:null,mountObserver:null,workspaceObserver:null,errorHandler:null,resizeHandler:null,styleTag:null,backdrop:null,fab:null,debugChip:null,debugEnabled:!1,errorCount:0,drawerOpen:!1,detailsOpen:!1,workspaceOpen:!1,lastFabDisplay:null,lastBackdropDisplay:null,immersive:!1,handle:null,lastHandleDisplay:null,chatAvailable:!1,chatScrollLastY:null,gestureAt:0,immersiveAcc:0,immersiveLockDir:null,zoneArmed:null,arrivalDone:!1,headerEl:null,headerRO:null},a=()=>{try{return"function"==typeof t.get?t.get("layout"):void 0}catch(e){return}},r=()=>{if(e.detailsOpen){const t=a();if(void 0!==t)try{t.closeDetails()}catch(e){}e.detailsOpen=!1}const t=e.drawerOpen||e.workspaceOpen?"none":"flex";null!==e.fab&&e.lastFabDisplay!==t&&(e.lastFabDisplay=t,e.fab.style.display=t);const r=e.drawerOpen?"block":"none";null!==e.backdrop&&e.lastBackdropDisplay!==r&&(e.lastBackdropDisplay=r,e.backdrop.style.display=r),h(),e.debugEnabled&&null!==e.debugChip&&f()};let s=!1;const n=()=>{const t=document.querySelector("[data-dshsvc-frame]");e.drawerOpen=null!==t&&!t.hasAttribute("data-sidebar-collapsed"),e.detailsOpen=null!==t&&!t.hasAttribute("data-details-collapsed"),e.workspaceOpen=!1;try{for(const t of document.querySelectorAll('[class*="nArs4W_panel"]')){const a="string"==typeof t.className?t.className:"";if(/nArs4W_panelHidden/.test(a))continue;const r=t.getBoundingClientRect();if(r.width>0&&r.left<window.innerWidth-2&&"hidden"!==getComputedStyle(t).visibility){e.workspaceOpen=!0;break}}}catch(t){e.workspaceOpen=!1}u()},i=e=>{const t=document.documentElement.style;(e=>"function"==typeof e.setProperty)(t)&&t.setProperty("--dshsvc-header-h",`${Math.max(0,Math.round(e))}px`)},l=(e,t)=>{if(t<=0||null===e||void 0===e.children||null===e.children)return null;for(const a of e.children||[]){if("HEADER"===("string"==typeof a.tagName?a.tagName.toUpperCase():""))return a;const e=l(a,t-1);if(null!==e)return e}return null},o=(e,t)=>{let a=t;for(;null!=a;){if(a===e)return!0;a=a.parentNode}return!1},d=t=>{if(e.active&&e.chatAvailable||(t=!1),e.immersive===t)return;e.immersive=t;const a=document.documentElement;try{t?a.setAttribute("data-dshsvc-immersive",""):a.removeAttribute("data-dshsvc-immersive")}catch(e){}g(),e.debugEnabled&&f()},c=()=>{e.chatScrollLastY=null,e.immersiveAcc=0,e.immersiveLockDir=null,e.zoneArmed=null,e.arrivalDone=!1,d(!1)},u=()=>{const t=(()=>{let e=null;try{e=document.querySelector("[data-conversation-scroll]")}catch(e){return null}if(null===e||!1===e.isConnected)return null;let t=e.parentNode;if(null===t||t===document.documentElement)return null;let a=null;try{a=t.getAttribute("data-phase")}catch(e){}let r=t;for(let e=0;null===a&&e<2&&(r=null==r?null:r.parentNode,null!==r&&r!==document.documentElement);e+=1){try{a=r.getAttribute("data-phase")}catch(e){break}null!==a&&(t=r)}return{scroller:e,rootEl:t,phase:a}})();let a=!1;if(null!==t&&"active"===t.phase){(t=>{const a=null!==t?t.rootEl:null;if(null===a||void 0===a.children)return e.headerEl;if(null!==e.headerEl&&e.headerEl.isConnected){try{e.headerEl.setAttribute("data-dshsvc-chat-header","")}catch(e){}return e.headerEl}let r=null;for(const e of a.children||[])if("HEADER"===("string"==typeof e.tagName?e.tagName.toUpperCase():"")){r=e;break}if(null===r)for(const e of a.children||[]){const t=l(e,3);if(null!==t){r=t;break}}null!==r&&(r.setAttribute("data-dshsvc-chat-header",""),e.headerEl=r,(t=>{if("function"==typeof ResizeObserver&&(null===e.headerRO||e.headerRO.__el!==t)){if(null!==e.headerRO)try{e.headerRO.disconnect()}catch(e){}try{const a=new ResizeObserver(()=>{try{const e=t.offsetHeight;"number"==typeof e&&e>0&&i(e)}catch(e){}});a.__el=t,a.observe(t),e.headerRO=a;const r=t.offsetHeight;"number"==typeof r&&r>0&&i(r)}catch(t){e.headerRO=null}}})(r))})(t);const r=(()=>{try{return document.querySelector("[data-composer-seat]")}catch(e){return null}})();if(null!==r&&o(t.scroller,r)){let e=NaN,r=NaN,s=NaN;try{e=Number(t.scroller.scrollTop),r=Number(t.scroller.scrollHeight),s=Number(t.scroller.clientHeight)}catch(e){}a=Number.isFinite(e)&&Number.isFinite(r)&&Number.isFinite(s)&&r-s>24}}e.chatAvailable=a,a||c()},p=t=>{if(!e.active||!e.chatAvailable)return;let a=NaN,r=NaN,s=NaN;try{a=Number(t.scrollTop),r=Number(t.scrollHeight),s=Number(t.clientHeight)}catch(e){return}if(!Number.isFinite(a)||!Number.isFinite(r)||!Number.isFinite(s))return;h();const n=a-(null===e.chatScrollLastY?a:e.chatScrollLastY);if(e.chatScrollLastY=a,!(()=>{const t=Date.now();return e.gestureAt>0&&t-e.gestureAt<=800})()||Math.abs(n)>200)return void(e.immersiveAcc=0);const i=a+s>=r-80;if(null===e.zoneArmed&&(e.zoneArmed=i),!1===e.zoneArmed&&i&&!e.arrivalDone&&e.immersive&&n>0)return e.arrivalDone=!0,e.immersiveAcc=0,e.immersiveLockDir=1,void d(!1);const l=Math.sign(n);if(0!==l&&null!==e.immersiveLockDir){if(l!==-e.immersiveLockDir)return void(e.immersiveAcc=0);e.immersiveLockDir=null}(e.immersiveAcc>0&&n<0||e.immersiveAcc<0&&n>0)&&(e.immersiveAcc=0),e.immersiveAcc+=n,e.immersiveAcc>240?e.immersiveAcc=240:e.immersiveAcc<-240&&(e.immersiveAcc=-240),e.immersiveAcc>=64?(e.immersiveAcc=0,e.immersiveLockDir=1,d(!0)):e.immersiveAcc<=-24&&(e.immersiveAcc=0,e.immersiveLockDir=-1,d(!1))},m=()=>{e.gestureAt=Date.now(),e.immersiveLockDir=null,e.zoneArmed=null,e.arrivalDone=!1},g=()=>{const t=e.handle;if(null===t)return;const a=e.immersive?'<svg width="12" height="12" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M3.5 10.5 8 6l4.5 4.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>':'<svg width="12" height="12" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M3.5 5.5 8 10l4.5-4.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>';t.__face!==a&&(t.__face=a,t.innerHTML=a);const r=e.immersive?"mobile.immersive.show":"mobile.immersive.hide",s=C(r);t.__label!==s&&(t.__label=s,t.setAttribute("aria-label",s),t.title=s);try{t.setAttribute("aria-expanded",String(!e.immersive))}catch(e){}},h=()=>{const t=e.drawerOpen||e.workspaceOpen,a=e.chatAvailable&&!t?"flex":"none";null!==e.handle&&e.lastHandleDisplay!==a&&(e.lastHandleDisplay=a,e.handle.style.display=a)},b=[["scroll",t=>{if(!e.active)return;let a=t&&t.target;for(let e=0;null!=a&&e<6;e+=1){if("function"==typeof a.hasAttribute)try{if(a.hasAttribute("data-conversation-scroll"))return void p(a)}catch(e){}a=a.parentNode}},{capture:!0,passive:!0}],["touchstart",m,{capture:!0,passive:!0}],["touchmove",m,{capture:!0,passive:!0}],["wheel",m,{capture:!0,passive:!0}],["focusin",t=>{if(!e.active||null===e.handle)return;let a=null;try{a=document.querySelector("[data-composer-seat]")}catch(e){return}null!==a&&o(a,t?.target)&&(e.immersiveAcc=0,e.immersive&&d(!1))},{capture:!0}]];let v=!1;const f=()=>{const t=e.debugChip;if(null===t)return;const a=e=>C(e?"mobile.debug.stateOn":"mobile.debug.stateOff");t.textContent=[`${C("mobile.debug.viewport")} ${window.innerWidth}×${window.innerHeight}`,`≤1023 ${a(e.active)}`,`${C("mobile.debug.drawer")} ${a(e.drawerOpen)}`,`${C("mobile.debug.details")} ${a(e.detailsOpen)}`,`${C("mobile.debug.immersive")} ${a(e.immersive)}`,`${C("mobile.debug.errors")} ${e.errorCount}`].join(" · ")},y=()=>{if(null!==e.fab)return!0;if(!(()=>{const e=document.querySelector("[data-shell-overlay]"),t=null!==e?e.parentNode:null;if(null===t||t===document.documentElement)return!1;t.setAttribute("data-dshsvc-frame","");let a=!1,r=!1,s=!1;for(const e of t.children){const t="string"==typeof e.className?e.className:"";!a&&/sidebarCol/.test(t)?(e.setAttribute("data-dshsvc-sidebar",""),a=!0):!r&&/centerCol/.test(t)?(e.setAttribute("data-dshsvc-center",""),r=!0):!s&&/detailsCol/.test(t)&&(e.setAttribute("data-dshsvc-details",""),s=!0)}return!0})())return!1;e.backdrop=document.createElement("div"),e.backdrop.setAttribute("data-dshsvc-backdrop",""),e.backdrop.setAttribute("aria-hidden","true"),Object.assign(e.backdrop.style,{position:"fixed",inset:"0",zIndex:"31",display:"none",background:"rgba(0,0,0,.42)",backdropFilter:"blur(1px)"}),e.backdrop.addEventListener("click",()=>{const t=a();void 0!==t&&e.drawerOpen&&t.toggleSidebar()}),document.body.appendChild(e.backdrop),e.fab=document.createElement("button"),e.fab.type="button",e.fab.setAttribute("data-dshsvc-fab",""),e.fab.setAttribute("aria-label",C("mobile.fab.label")),Object.assign(e.fab.style,{position:"fixed",left:"calc(env(safe-area-inset-left, 0px) + 10px)",top:"calc(env(safe-area-inset-top, 0px) + 12px)",width:"32px",height:"32px",borderRadius:"16px",zIndex:"33",display:"flex",alignItems:"center",justifyContent:"center",border:"none",background:"transparent",color:"var(--dsw-alias-label-primary)",padding:"0",cursor:"pointer",touchAction:"manipulation"}),e.fab.innerHTML='<svg width="18" height="18" viewBox="0 0 16 16" fill="none" aria-hidden="true"><rect x="1.75" y="2.75" width="12.5" height="10.5" rx="2" stroke="currentColor" stroke-width="1.5"/><line x1="6.25" y1="3.5" x2="6.25" y2="12.5" stroke="currentColor" stroke-width="1.5"/></svg>',e.fab.addEventListener("click",()=>{const e=a();void 0!==e&&e.toggleSidebar()}),document.body.appendChild(e.fab),(()=>{if(null!==e.handle)return;const t=document.createElement("button");t.type="button",t.setAttribute("data-dshsvc-handle",""),Object.assign(t.style,{position:"fixed",left:"50%",marginLeft:"-32px",bottom:"calc(env(safe-area-inset-bottom, 0px) + 8px)",width:"64px",height:"20px",borderRadius:"11px",zIndex:"30",display:"none",alignItems:"center",justifyContent:"center",background:"var(--dshsvc-handle-bg, rgba(127, 127, 127, .16))",border:"1px solid var(--dsw-alias-border-l2)",boxShadow:"var(--dsw-shadow-lv1, 0 1px 4px rgba(0, 0, 0, .18))",backdropFilter:"blur(6px)",WebkitBackdropFilter:"blur(6px)",opacity:".72",transition:"opacity var(--ds-transition-duration-fast, .15s) ease",color:"var(--dsw-alias-label-secondary)",padding:"0",cursor:"pointer",touchAction:"manipulation"}),t.addEventListener("click",()=>{e.active&&e.chatAvailable&&(m(),e.chatScrollLastY=null,e.immersiveAcc=0,d(!e.immersive))}),document.body.appendChild(t),e.handle=t,e.lastHandleDisplay=null,g()})(),n();try{e.workspaceObserver=new MutationObserver(()=>{(()=>{if(!s&&e.active){s=!0,setTimeout(()=>{if(s=!1,e.active)try{n(),r()}catch(e){}},50);for(const t of[400,900])setTimeout(()=>{if(e.active)try{n(),r()}catch(e){}},t)}})()}),e.workspaceObserver.observe(document.body,{attributes:!0,childList:!0,subtree:!0})}catch(t){e.workspaceObserver=null}e.frameObserver=new MutationObserver(()=>{n(),r()});const t=document.querySelector("[data-dshsvc-frame]");return null!==t&&e.frameObserver.observe(t,{attributes:!0,attributeFilter:["data-sidebar-collapsed","data-details-collapsed"]}),null!==e.mountObserver&&(e.mountObserver.disconnect(),e.mountObserver=null),r(),!0},k=()=>{if(!e.active)return;if(e.active=!1,e.drawerOpen=!1,e.detailsOpen=!1,(()=>{if(v){v=!1;for(const[e,t,a]of b)try{document.documentElement.removeEventListener(e,t,a)}catch(e){}}})(),document.documentElement.removeAttribute("data-dshsvc-mobile"),document.documentElement.removeAttribute("data-dshsvc-immersive"),null!==e.headerRO){try{e.headerRO.disconnect()}catch(e){}e.headerRO=null}e.headerEl=null,null!==e.frameObserver&&(e.frameObserver.disconnect(),e.frameObserver=null),null!==e.workspaceObserver&&(e.workspaceObserver.disconnect(),e.workspaceObserver=null),null!==e.mountObserver&&(e.mountObserver.disconnect(),e.mountObserver=null),null!==e.errorHandler&&window.removeEventListener("error",e.errorHandler),null!==e.resizeHandler&&window.removeEventListener("resize",e.resizeHandler),e.errorHandler=null,e.resizeHandler=null;for(const t of[e.styleTag,e.backdrop,e.fab,e.handle,e.debugChip])null!==t&&t.isConnected&&t.remove();for(const e of document.querySelectorAll("[data-dshsvc-frame],[data-dshsvc-sidebar],[data-dshsvc-center],[data-dshsvc-details],[data-dshsvc-chat-header]"))e.removeAttribute("data-dshsvc-frame"),e.removeAttribute("data-dshsvc-sidebar"),e.removeAttribute("data-dshsvc-center"),e.removeAttribute("data-dshsvc-details"),e.removeAttribute("data-dshsvc-chat-header");const t=(()=>{try{return document.documentElement.style}catch(e){return null}})();if(null!==t)try{t.removeProperty("--dshsvc-header-h")}catch(e){t["--dshsvc-header-h"]=""}e.styleTag=null,e.backdrop=null,e.fab=null,e.handle=null,e.lastHandleDisplay=null,e.debugChip=null,e.debugEnabled=!1,c()},x=()=>{M("mobileAdaptation")&&e.mmqMatches()?(()=>{if(e.active)return;if(void 0===a())return;e.active=!0,document.documentElement.setAttribute("data-dshsvc-mobile",""),(()=>{for(const e of document.querySelectorAll('meta[name="viewport"]')){const t=e.getAttribute("content")||"";/(^|,)\s*viewport-fit\s*=/.test(t)||e.setAttribute("content",""===t.trim()?"viewport-fit=cover":t.trim()+", viewport-fit=cover")}})(),e.styleTag=document.createElement("style"),e.styleTag.dataset.plugin="@gehennawu/dsh-service",e.styleTag.dataset.pluginCss="@gehennawu/dsh-service/mobile.css",e.styleTag.textContent='\n/* 侧栏/详情列改 absolute 后会退出 grid 排版流,中列会被自动放置进第 1 轨\n (0px)而整屏变黑 —— 三列必须用 grid-column 显式钉位,绝不依赖子元素顺序。 */\nhtml[data-dshsvc-mobile] [data-dshsvc-frame] { grid-template-columns: 0px minmax(0, 1fr) 0px !important; }\nhtml[data-dshsvc-mobile] [data-dshsvc-sidebar] { grid-column: 1 !important; grid-row: 1 !important; }\nhtml[data-dshsvc-mobile] [data-dshsvc-center] { grid-column: 2 !important; grid-row: 1 !important; }\nhtml[data-dshsvc-mobile] [data-dshsvc-details] { grid-column: 3 !important; grid-row: 1 !important; }\n/* 侧栏/详情列 → overlay 抽屉。两条铁律:\n ① 隐藏禁用 transform —— 设置模态(未 portal)长在本列子树里,\n transform 会成为其 fixed 定位的包含块;\n ② 离屏偏移必须用 vw 长度而非百分比 —— 这些列带显式 grid-column 钉位\n (修中列黑屏所需),绝对定位子项的包含块会变成那格 grid area(0px 宽),\n 百分比对 0 取值全变 0,元素被超约束解算推回屏内盖住会话。 */\nhtml[data-dshsvc-mobile] [data-dshsvc-sidebar] {\n position: absolute !important;\n top: 0 !important;\n bottom: 0 !important;\n left: calc(-100vw - 24px) !important;\n /* 外壳 sidebar slot 的原生展开内容固定 280px;外层也必须同宽,否则右侧\n 会露出一条只有 sidebarCol 背景、没有内容的空带。窄于 280px 时按视口裁切。 */\n width: min(100vw, 280px) !important;\n border-right: none !important;\n z-index: 32;\n transition: left var(--ds-transition-duration-slow, .25s) var(--ds-ease-in-out, ease);\n}\nhtml[data-dshsvc-mobile] [data-dshsvc-frame]:not([data-sidebar-collapsed]) [data-dshsvc-sidebar] {\n left: 0 !important;\n box-shadow: 8px 0 32px rgba(0, 0, 0, .22);\n}\n/* 详情列(预览/文件树)→ 移动端永久离屏。官方 computeColumns 在窄视口恒为\n 0 宽(原生手机本就不显示该列),抽屉化只会用空态盖住会话且关闭路径\n 与 backdrop/抽屉状态纠缠(真机反馈)。引擎在激活与属性观察时会自愈式\n closeDetails(),保证 store 也是干净的关闭态。 */\nhtml[data-dshsvc-mobile] [data-dshsvc-details] {\n position: absolute !important;\n top: 0 !important;\n bottom: 0 !important;\n right: calc(-100vw - 24px) !important;\n width: min(92vw, 420px) !important;\n z-index: 30;\n}\n/* 模态 → 全屏面板:外壳 portal 根是 fixed inset:0 flex 容器(无 transform,\n 无 containing-block 陷阱),dialog 改 absolute 四边拉满即可。\n 真机反馈:底部 sheet 顶部留空难看 → 顶部贴顶、圆角归零;\n 刘海/home 条遮挡由 dialog 自身 env() padding 补回。 */\nhtml[data-dshsvc-mobile] div[role="presentation"]:has(> [role="dialog"][aria-modal="true"]) {\n padding: 0 !important;\n}\nhtml[data-dshsvc-mobile] [role="dialog"][aria-modal="true"] {\n position: absolute !important;\n top: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n left: 0 !important;\n margin: 0 !important;\n width: 100% !important;\n max-width: none !important;\n max-height: none !important;\n height: 100% !important;\n border-radius: 0 !important;\n overflow: hidden auto !important;\n flex-direction: column !important;\n padding-top: env(safe-area-inset-top, 0px) !important;\n padding-bottom: env(safe-area-inset-bottom, 0px) !important;\n}\n/* 插件市场(dshmarket)在 ≤560px 媒体查询里把设置导航 display:none 藏掉\n 独占面板(其自有 CSS:[role=dialog]:has([data-dsh-market-root])>nav),\n 手机上会把用户困在市场分区 —— 用更高优先级把横滑标签条顶回来。 */\nhtml[data-dshsvc-mobile] [role="dialog"]:has([data-dsh-market-root]) > nav { display: flex !important; }\n/* 设置页标签条:nav 从 188px 竖列变顶部横滑条(宽度与列向必须显式推翻)。\n 右侧留 52px 给钉到角落的关闭钮。 */\nhtml[data-dshsvc-mobile] [role="dialog"] nav {\n flex-direction: row !important;\n align-items: center !important;\n gap: 6px !important;\n width: auto !important;\n flex: none !important;\n padding: 8px 52px 0 12px !important;\n overflow-x: auto !important;\n overflow-y: hidden !important;\n border-right: none !important;\n border-bottom: 1px solid var(--dsw-alias-border-l2);\n}\nhtml[data-dshsvc-mobile] [role="dialog"] nav > div { flex: none !important; }\nhtml[data-dshsvc-mobile] [role="dialog"] [class*="navList"] { flex-direction: row !important; }\nhtml[data-dshsvc-mobile] [role="dialog"] [class*="navCell"] { white-space: nowrap !important; flex: none !important; }\n/* 关闭钮钉到设置页右上角并压到面板顶层(原生在内容区头行、导航条下方,\n 会被横滑条/内容重叠遮挡——用户点名要顶层);加不透明圆形底衬保证任何\n 内容上都可辨识,底衬与钮同节点、随之置顶。类哈希 VOzbGW_ 取自\n dsh-client-ui-settings-general SettingsRoot.module.css(rc.2),升级需复核 */\nhtml[data-dshsvc-mobile] [role="dialog"][aria-modal="true"] [class*="VOzbGW_close"] {\n position: absolute !important;\n top: calc(env(safe-area-inset-top, 0px) + 9px) !important;\n right: 10px !important;\n z-index: 60;\n background-color: var(--dsw-specific-menu, var(--dsw-alias-bg-layer-1)) !important;\n border: 1px solid var(--dsw-alias-border-l2) !important;\n border-radius: 999px !important;\n box-shadow: var(--dsw-shadow-lv2, 0 4px 12px rgba(0, 0, 0, .12)) !important;\n}\n/* 设置/任意模态打开时藏抽屉钮与沉浸把手:抽屉列自带 z-index:32 层叠上下文会把模态的\n z1000 封顶在 32,body 级 z33 的钮反而浮在设置页上(真机实测)。:has 不支持时\n 退化为旧行为(钮仍显示),无副作用。 */\nhtml[data-dshsvc-mobile] body:has([role="dialog"][aria-modal="true"]) [data-dshsvc-fab],\nhtml[data-dshsvc-mobile] body:has([role="dialog"][aria-modal="true"]) [data-dshsvc-handle] {\n display: none !important;\n}\n/* composer 底行单行紧凑:外壳原生 flex-wrap:wrap 在窄屏把图标/模型名折成两行。\n 收紧间距 + 禁换行 + 最宽触发钮限宽省略。类哈希 uV2eYG_/Sh0Q9G_/pXSMma_ 取自\n dsh-client-ui-conversation composer(rc.2),升级需复核。 */\nhtml[data-dshsvc-mobile] [class*="uV2eYG_row"] {\n flex-wrap: nowrap !important;\n column-gap: 4px !important;\n padding-left: 10px !important;\n padding-right: 10px !important;\n}\nhtml[data-dshsvc-mobile] [class*="uV2eYG_row"] > * { min-width: 0 !important; }\nhtml[data-dshsvc-mobile] [class*="uV2eYG_tools"],\nhtml[data-dshsvc-mobile] [class*="uV2eYG_modes"],\nhtml[data-dshsvc-mobile] [class*="uV2eYG_trailing"] { gap: 6px !important; min-width: 0 !important; }\nhtml[data-dshsvc-mobile] [class*="uV2eYG_trailing"] { margin-left: auto !important; }\nhtml[data-dshsvc-mobile] [class*="Sh0Q9G_trigger"] { max-width: 38vw !important; }\nhtml[data-dshsvc-mobile] [class*="pXSMma_workspace"] { max-width: 30vw !important; }\n/* 工作区侧板(fixed z25 层内的 nArs4W_panel z40)开屏后会盖住它自己的外部\n 开关钮(tab bar 行 nArs4W_toggleButton)——手机上抽屉一开就再没有任何\n 可点的关闭入口(真机反馈「关不上」本体)。把开关钮提到面板之上,\n 恢复「同一颗钮开/关」语义。 */\nhtml[data-dshsvc-mobile] [class*="nArs4W_toggleButton"] {\n position: relative !important;\n z-index: 45 !important;\n}\n/* 会话底部统计条:外壳原生 white-space:nowrap + ellipsis 截断(StatsLine),\n 改横向滑动查看全文。哈希前缀随包拆分漂移:0.1.1-rc.2 在 dsh-client-ui-conversation\n (FJxK0a_),0.1.2-alpha.2 迁入 dsh-client-ui-chat(-NDN2W_root,前缀带横线);按\n 稳定的词干后缀 *_root 无法区分行(同名冲突风险),退化为按当前哈希复核。 */\nhtml[data-dshsvc-mobile] [class*="NDN2W_root"] {\n overflow-x: auto !important;\n overflow-y: hidden !important;\n text-overflow: clip !important;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none !important;\n}\nhtml[data-dshsvc-mobile] [class*="NDN2W_root"]::-webkit-scrollbar { display: none !important; }\n/* Assistant 回合尾部的运行元信息行(MessageIconActions)使用官方目录属性\n data-chat-flow-kind="turn-tail" 定位,内层兜底走回合尾节点自带的稳定\n data-turn-tail(0.1.2-alpha.2 起 data-time-hover-root 已删除):\n 「带 data-turn-tail 的节点」的最后一个子项 = actions 行,其最后一个 span =\n end-clock 时间文本(bundle 源码核实:clock:"end" 渲染在 children 末位)。\n 行容器 min-width:0、时间文本可收缩并省略,以免移动端时间信息把复制/分支\n 按钮挤出可视区域。 */\nhtml[data-dshsvc-mobile] [data-chat-flow-kind="turn-tail"] [data-turn-tail] > :last-child {\n min-width: 0 !important;\n max-width: 100% !important;\n}\nhtml[data-dshsvc-mobile] [data-chat-flow-kind="turn-tail"] [data-turn-tail] > :last-child > span:last-child {\n flex: 1 1 auto !important;\n min-width: 0 !important;\n white-space: nowrap !important;\n overflow: hidden !important;\n text-overflow: ellipsis !important;\n padding-inline: 2px !important;\n}\n/* 回到底部按钮簇(官方 *_toBottom 词干后缀,rc.2 Md3f7G_ → 0.1.2-alpha.2 EvIC1a_,\n 自有上箭头 data-dshsvc-user-jump):\n 移动端右侧还有约一行留白(scroll 的 --dsh-composer-side-clearance 侧清理),\n 纯位移右移贴边(transform 只动绘制不动布局,sticky 定位不受影响)。\n :not([class*="Slot"]) 排除命名含 Slot 的 sticky 槽层,只移按钮本体。\n 方向:正 translateX 向右;位移量 = 侧清理 +16(scroll 右 padding)再留 4px 缓冲。 */\nhtml[data-dshsvc-mobile] [class*="_toBottom"]:not([class*="Slot"]),\nhtml[data-dshsvc-mobile] [data-dshsvc-user-jump] {\n transform: translateX(calc(var(--dsh-composer-side-clearance, 16px) + 16px - 4px)) !important;\n}\n/* 左上角抽屉钮:悬停/按压用外壳交互底色;会话头部预留按钮位防遮面包屑 */\nhtml[data-dshsvc-mobile] [data-dshsvc-fab]:hover,\nhtml[data-dshsvc-mobile] [data-dshsvc-fab]:active { background: var(--dsw-alias-interactive-bg-hover) !important; }\nhtml[data-dshsvc-mobile] [data-dshsvc-frame] > :nth-child(2) header { padding-left: 46px !important; }\n/* 刘海安全区:viewport-fit=cover 后由 env() 补回遮挡区 */\nhtml[data-dshsvc-mobile] body {\n padding-top: env(safe-area-inset-top, 0px);\n padding-bottom: env(safe-area-inset-bottom, 0px);\n box-sizing: border-box;\n}\n/* 双击缩放与 iOS 聚焦放大 */\nhtml[data-dshsvc-mobile] button,\nhtml[data-dshsvc-mobile] a,\nhtml[data-dshsvc-mobile] [role="button"],\nhtml[data-dshsvc-mobile] input,\nhtml[data-dshsvc-mobile] textarea,\nhtml[data-dshsvc-mobile] select { touch-action: manipulation; }\nhtml[data-dshsvc-mobile] input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]),\nhtml[data-dshsvc-mobile] textarea { font-size: max(16px, 1em) !important; }\n/* composer 防挤压:保守规则,真机反馈后迭代 */\nhtml[data-dshsvc-mobile] [class*="toolbar" i] { flex-wrap: wrap !important; min-width: 0 !important; max-width: 100% !important; }\nhtml[data-dshsvc-mobile] [class*="composer" i] { min-width: 0 !important; max-width: 100% !important; }\nhtml[data-dshsvc-mobile] [class*="inputTriggers" i] > *,\nhtml[data-dshsvc-mobile] [class*="toolbar" i] button { flex: none !important; }\n/* —— 滑动沉浸(v0.36)——\n composer 座是滚动体内的 sticky 子项:transform 滑出后由滚动体自身 overflow:hidden\n 裁掉,布局零变化、scrollTop 不跳、外壳 ResizeObserver 维护的 --dsh-composer-height\n 与「回到底部」浮钮偏移不受任何影响。容器包含块陷阱不触发:composer 工具行本就带\n container-type:inline-size(fixed 后代已被圈在里面,圆环才在移动端 portal 出去)。 */\nhtml[data-dshsvc-mobile] [data-composer-seat] {\n transition: transform var(--ds-transition-duration-slow, .25s) var(--ds-ease-in-out, ease) !important;\n}\nhtml[data-dshsvc-mobile][data-dshsvc-immersive] [data-composer-seat] {\n transform: translateY(115%) !important;\n}\n/* 会话头部(面包屑+视图标签)在滚动体外面,藏在根列里:translateY(-100%) 上滑出\n data-phase=active 根的 overflow:hidden 裁剪区,负 margin-top 用引擎测得的高度\n (--dshsvc-header-h,ResizeObserver 实时校正;老内核无 RO 时回退常量)补位,\n 否则留一条空带。 */\nhtml[data-dshsvc-mobile] [data-dshsvc-chat-header] {\n transition: transform var(--ds-transition-duration-slow, .25s) var(--ds-ease-in-out, ease),\n margin-top var(--ds-transition-duration-slow, .25s) var(--ds-ease-in-out, ease);\n}\nhtml[data-dshsvc-mobile][data-dshsvc-immersive] [data-dshsvc-chat-header] {\n transform: translateY(-100%) !important;\n margin-top: calc(0px - var(--dshsvc-header-h, 76px)) !important;\n}\n@media (prefers-reduced-motion: reduce) {\n html[data-dshsvc-mobile][data-dshsvc-immersive] [data-composer-seat],\n html[data-dshsvc-mobile][data-dshsvc-immersive] [data-dshsvc-chat-header],\n html[data-dshsvc-mobile] [data-dshsvc-chat-header] { transition: none !important; }\n}\n/* 常驻底部小把手:沉浸态点它展开头部与输入框,未沉浸态也可先收起再读。\n 真机反馈改半透明磨砂(悬停/按压复原不透明),触摸目标不打折。\n z-index 30 低于 backdrop 31——抽屉/设置打开时被自然盖住,无需额外互斥。 */\nhtml[data-dshsvc-mobile] [data-dshsvc-handle]:hover,\nhtml[data-dshsvc-mobile] [data-dshsvc-handle]:active {\n background: var(--dsw-alias-interactive-bg-hover, rgba(127, 127, 127, .2)) !important;\n color: var(--dsw-alias-label-primary) !important;\n opacity: 1 !important;\n}\n',document.head.appendChild(e.styleTag),y()||(()=>{if(null===e.mountObserver&&"function"==typeof MutationObserver)try{e.mountObserver=new MutationObserver(()=>{y()}),e.mountObserver.observe(document.documentElement,{childList:!0,subtree:!0})}catch(t){e.mountObserver=null}})(),(()=>{if(!v){v=!0;for(const[e,t,a]of b)try{document.documentElement.addEventListener(e,t,a)}catch(e){}}})(),u();let t=!1;try{t=new URLSearchParams(window.location.search).has("dshsvc-mobile-debug")}catch(e){}t&&(e.debugEnabled=!0,e.errorHandler=()=>{e.errorCount+=1,f()},window.addEventListener("error",e.errorHandler),e.resizeHandler=()=>f(),window.addEventListener("resize",e.resizeHandler),e.debugChip=document.createElement("div"),e.debugChip.setAttribute("data-dshsvc-debug",""),Object.assign(e.debugChip.style,{position:"fixed",left:"8px",bottom:"calc(env(safe-area-inset-bottom, 0px) + 8px)",zIndex:"60",maxWidth:"94vw",padding:"4px 8px",borderRadius:"8px",font:"11px/1.5 var(--ds-font-family-code, monospace)",background:"var(--dsw-alias-bg-layer-2, #333)",color:"var(--dsw-alias-label-primary, #eee)",pointerEvents:"none",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}),e.debugChip.title=C("mobile.debug.title"),document.body.appendChild(e.debugChip),f()),r()})():k()};try{e.mq=window.matchMedia("(max-width: 1023px)")}catch(t){e.mq=null}return e.mmqMatches=()=>{try{return null!==e.mq&&!0===e.mq.matches}catch(e){return!1}},null!==e.mq&&(e.mqHandler=()=>x(),"function"==typeof e.mq.addEventListener?e.mq.addEventListener("change",e.mqHandler):"function"==typeof e.mq.addListener&&e.mq.addListener(e.mqHandler)),{evaluate:x,dispose:()=>{k(),null!==e.mq&&null!==e.mqHandler&&("function"==typeof e.mq.removeEventListener?e.mq.removeEventListener("change",e.mqHandler):"function"==typeof e.mq.removeListener&&e.mq.removeListener("change",e.mqHandler)),e.mqHandler=null}}}();t.effect(()=>{const e=R.subscribe(()=>Sa.evaluate());return Sa.evaluate(),()=>{e(),Sa.dispose()}},"dsh-service mobile adaptation")},a.subagentTurnTail={aggregateSubagentRoutes:f,selectSubagentModelsTurnTail:v,subagentRouteListText:y},t}});
1
+ window.__ModuleLoader__.load({id:"@gehennawu/dsh-service",factory:e=>{var t={},a=t;Object.defineProperty(a,Symbol.toStringTag,{value:"Module"});const r=e("react"),s="dsh-service",n={"nav.label":"服务控制","nav.restart":"重启","features.cardTitle":"服务控制(dsh-service)","features.cardHint":"控制可选功能和外部能力。开关立即生效,无需重启。","features.external":"外部能力","features.healthDiagnostics":"健康诊断","features.modelUsage":"模型统计","features.quotaLookup":"额度查询","features.backupMaintenance":"备份维护","features.taskNotifications":"任务通知","features.healthz":"/healthz 探活端点","features.skillManager":"技能管理","features.readOnly":"当前设置不可写。","tabs.skills":"技能","tabs.subagent":"子代理","tabs.sessions":"会话管理","features.subagentRoute":"子代理模型","features.mobileAdaptation":"移动端适配","features.sessionManager":"会话管理","sessions.title":"会话管理","sessions.hint":"查看、导出、归档与会话搜索;删除仅限已归档。","sessions.filter.all":"全部","sessions.filter.archived":"仅归档","sessions.filter.deleted":"已删除","sessions.refresh":"刷新","sessions.batch.enter":"批量选择","sessions.batch.exit":"退出批量","sessions.batch.selectAll":"全选","sessions.batch.clearAll":"取消全选","sessions.batch.selected":"已选择 {count} 项","sessions.batch.selectRow":"选择会话:{title}","sessions.batch.export":"导出 ({count})","sessions.batch.archive":"归档 ({count})","sessions.batch.delete":"删除 ({count})","sessions.batch.completed":"已完成{action}:{count} 项","sessions.batch.failed":"{action}完成 {done}/{total} 项;{error}","sessions.batch.deleteTitle":"删除 {count} 个会话","sessions.batch.deleteBody":"将永久删除以下已归档会话的日志文件,删除后不可恢复。","sessions.batch.deleteItem":"{title}({bytes})","sessions.status.loading":"加载中…","sessions.status.working":"处理中…","sessions.status.unavailableTime":"时间未知","sessions.glyph.expand":"▸","sessions.glyph.collapse":"▾","sessions.glyph.back":"←","sessions.search.placeholder":"搜索对话内容…","sessions.search.archivedOnly":"仅搜归档","sessions.sort.createdDesc":"创建时间倒序","sessions.sort.createdAsc":"创建时间正序","sessions.sort.title":"按标题","sessions.sort.project":"按项目","sessions.projectGroup.countOne":"1 个会话","sessions.projectGroup.countMany":"{count} 个会话","sessions.projectGroup.noCwd":"(无工作区)","sessions.row.live":"运行中","sessions.row.archived":"已归档","sessions.row.deleted":"已删除","sessions.row.events":"{count} 条事件","sessions.row.noTitle":"(无标题)","sessions.action.view":"查看","sessions.action.export":"导出","sessions.action.archive":"归档","sessions.action.delete":"删除","sessions.empty.all":"没有会话","sessions.empty.archived":"没有归档会话","sessions.empty.deleted":"暂无删除记录","sessions.empty.search":"没有命中「{query}」","sessions.error.load":"加载失败:{error}","sessions.error.feature-disabled":"会话管理功能已在设置中关闭","sessions.error.network":"网络错误:无法连接宿主","sessions.error.session-not-found":"会话不存在或已被删除","sessions.error.live-session-rejected":"会话正在运行,无法删除","sessions.error.session-not-archived":"仅已归档会话可以删除","sessions.error.unknown-delete-plan":"删除请求已失效,请重新发起","sessions.error.export-failed":"导出失败:{error}","sessions.detail.back":"返回列表","sessions.detail.open":"在官方会话中打开","sessions.detail.archiveDisabled":"归档会话/空白会话无法在官方界面打开","sessions.detail.exportAll":"导出全部 ZIP","sessions.detail.exporting":"正在导出…","sessions.detail.loadMore":"加载更多({remaining})","sessions.detail.noMore":"已加载全部 {total} 条事件","sessions.detail.noise":"系统事件","sessions.detail.noiseBlock":"{count} 条系统事件","sessions.detail.noiseExpand":"展开全部","sessions.detail.noiseCollapse":"收起","sessions.detail.cwd":"{cwd}","sessions.detail.created":"创建于 {time}","sessions.md.copy":"复制","sessions.md.copied":"已复制","sessions.md.footnotes":"脚注","sessions.hit.title":"命中 {count} 条","sessions.hit.return":"返回搜索结果","sessions.hit.badge":"命中","sessions.hit.prev":"◀ 上一个","sessions.hit.next":"下一个 ▶","sessions.hit.inSession":"本会话 {count} 处命中","sessions.delete.title":"删除会话","sessions.delete.body":"将永久删除以下会话的日志文件,删除后不可恢复。","sessions.delete.consequence.log":"删除会话日志({bytes})","sessions.delete.consequence.sidebar":"会话从官方侧栏隐藏","sessions.delete.confirm":"确认删除","sessions.delete.cancel":"取消","sessions.delete.done":"已删除","sessions.export.includes":"含子代理与附件","sessions.navToggle":"设置页左列显示「会话管理」入口","sessions.navToggleHint":"默认关闭;开启后在设置页左侧标签列显示会话管理入口","sessions.oneWay":"归档不可恢复","sessions.oneWayHint":"归档后会话从官方侧栏隐藏;官方不支持恢复归档,只能通过本面板删除。","mobile.fab.label":"打开侧栏菜单","mobile.debug.title":"移动端诊断","mobile.debug.viewport":"视口","mobile.debug.drawer":"抽屉","mobile.debug.details":"预览列","mobile.debug.errors":"JS 错误","mobile.debug.stateOn":"开","mobile.debug.stateOff":"关","mobile.immersive.hide":"收起头部与输入框","mobile.immersive.show":"展开头部与输入框","mobile.debug.immersive":"沉浸","conversation.jump.previousReply":"上一条用户回复","subagent.title":"子代理模型","subagent.hint":"控制未显式指定模型的子代理所用模型;显式指定的不受影响。","subagent.mode.label":"模式","subagent.mode.inherit":"初始(不干预)","subagent.mode.inherit.desc":"不注入任何路由,保持宿主原生继承行为:子代理使用会话创建时烘焙的默认模型。","subagent.mode.follow":"跟随主模型","subagent.mode.follow.desc":"每次派生时读取主对话当前实际使用的模型(最近一次请求的渠道)并注入。","subagent.mode.custom":"自定义","subagent.mode.custom.desc":"所有未显式指定模型的子代理固定使用下方选择的模型。","subagent.provider":"供应商","subagent.model":"模型","subagent.reasoningEffort":"思考等级","subagent.reasoningEffort.default":"使用模型默认(不指定)","subagent.reasoningEffort.unavailable":"该模型未声明可选思考等级","subagent.modelsEmpty":"模型清单为空:无法解析宿主 LLM 渠道。","subagent.save":"保存","subagent.saved":"已保存","subagent.reset":"重置回初始配置","subagent.saving":"保存中…","subagent.unavailable":"宿主未提供子代理注册表(subagents 服务缺席),配置不会生效。","subagent.error":"操作失败:{error}","subagent.error.feature-disabled":"子代理模型功能已在设置中关闭","subagent.error.llm-unavailable":"宿主 LLM 服务不可用","subagent.error.unknown-mode":"未知模式","subagent.error.invalid-model-route":"供应商或模型不在宿主清单内","subagent.error.invalid-reasoning-effort":"思考等级不受该模型支持,请重新选择","subagent.error.network":"网络错误:无法连接宿主","subagent.fallback.title":"回退模型(按顺序)","subagent.fallback.item":"回退 {index}","subagent.fallback.hint":"第一路由不可用时(渠道已卸载、额度查询判定不可服务)依次尝试回退;全部不可用则回落原生继承,不让派生失败。","subagent.fallback.add":"添加回退","subagent.fallback.sort":"调整排序","subagent.fallback.sort.done":"完成排序","subagent.fallback.remove":"移除","subagent.fallback.up":"上移","subagent.fallback.down":"下移","subagent.fallback.empty":"未添加回退:第一路由不可用时子代理回落到原生继承。","subagent.fallback.limit":"已达上限({max} 个)","subagent.error.invalid-fallback-route":"回退条目不在宿主清单内,请重新选择","subagent.turnTail.label":"子代理模型:","subagent.turnTail.countOne":"子代理 ×1","subagent.turnTail.countMany":"子代理 ×{count}","subagent.turnTail.unknown":"(模型未记录)","subagent.dock.title":"输入框底部显示子代理信息","subagent.dock.desc":"在对话页输入框下方常驻一行本会话子代理实际使用的模型(20 秒刷新,不受事件折叠影响)。关闭后仅保留回合尾部小字行。","skills.error":"操作失败:{error}","skills.error.feature-disabled":"技能管理功能已在设置中关闭","skills.error.network":"网络错误,请稍后重试","skills.error.read-only-source":"该条目位于只读来源,无法修改","skills.error.unknown-skill":"技能未找到,列表可能已变化,请刷新重试","skills.error.invalid-skill":"条目当前无效:{reason}","skills.error.invalid-field":"开关字段无效","skills.error.invalid-enable":"开关值无效","skills.error.invalid-model-route":"模型路由无效,请重新选择模型","skills.error.invalid-description":"描述不能为空","skills.error.describe-timeout":"模型生成超时(90 秒)","skills.error.empty-output":"模型未产出正文(结束原因:{kind})","skills.error.batch-cancelled":"已取消","skills.error.entry-changed":"条目在运行中发生变化,已跳过","skills.error.unknown-batch-plan":"批量计划已失效,请重新生成","skills.error.batch-already-done":"该批量计划已完成","skills.error.batch-already-cancelled":"该批量计划已取消","skills.error.annotated-confirm-required":"已注释技能需再次确认后才能被覆盖","skills.empty":"未发现任何技能","skills.filter":"按名称过滤…","skills.colon":":","skills.group.auto":"自动加载","skills.group.manual":"仅手动调用","skills.group.disabled":"完全停用","skills.source.project-dsh":"项目 .dsh","skills.source.project-agents":"项目 .agents","skills.source.user-dsh":"用户 DSH","skills.source.user-agents":"用户 .agents","skills.source.bundled":"内置","skills.source.custom":"自定义目录","skills.badge.shadowed":"被同名遮蔽","skills.badge.readonly":"只读","skills.badge.annotated":"已注释","skills.note.stale":"正文已变更,待重新补全","skills.note.remove":"移除 AI 注释","skills.note.panelOnly":"注释仅保存在本面板展示,不写入 SKILL.md。","skills.log.title":"运行日志","skills.log.located":"已定位技能 {name}(文件 {chars} 字符)","skills.log.attempt":"第 {n}/{total} 次生成:调用 {route}","skills.log.received":"输出接收完成({chars} 字符),解析 JSON…","skills.log.parsed":"解析成功,草稿就绪","skills.log.failed-retry":"失败:{message},自动重试","skills.log.failed":"失败:{message}","skills.log.wait":"等待模型输出… {secs}s","skills.log.first-delta":"模型已开始返回","skills.log.first-reasoning":"模型已开始返回(先输出推理)","skills.log.progress":"已接收 {chars} 字符","skills.log.finish-reasoning-only":"模型结束:{kind}(仅推理 {chars} 字符,未产出正文)","skills.log.finish-empty":"模型结束:{kind}(无任何输出)","skills.log.block-extract":"从整块输出提取正文({chars} 字符)","skills.log.item-start":"开始生成注释…","skills.batch.toggle":"批量注释","skills.batch.collapse":"收起","skills.batch.already":"已有批量任务在进行中,请等待完成或先取消","skills.invalid.legacy":"存在旧版调用键,已从模型目录剔除","skills.invalid.other":"无效条目:{reason}","skills.fix.legacy":"一键修复旧键","skills.switch.model":"对模型可见","skills.switch.user":"可被 / 调用","skills.switch.confirm":"再次点击生效","skills.describe.button":"AI 补全说明","skills.describe.title":"AI 补全说明 — {name}","skills.describe.model":"模型","skills.describe.models.loading":"获取模型列表…","skills.describe.models.empty":"未发现已配置模型","skills.describe.run":"生成草稿","skills.describe.running":"生成中…","skills.apply.title":"保存 AI 注释 — {name}","skills.apply.description":"描述","skills.apply.usage":"用法","skills.apply.old":"旧","skills.apply.new":"新","skills.apply.confirm":"保存注释","skills.apply.done":"注释已保存","skills.apply.keepusage":"(保留现有)","skills.llm.unavailable":"宿主 LLM 服务不可用,无法 AI 补全。","skills.batch.title":"批量补全技能说明","skills.batch.hint":"逐条调用所选模型为未注释或正文有变的技能生成说明;已注释技能在计划中单列,再次确认后才会被覆盖。结果仅存插件内并展示在条目下方。","skills.batch.plan":"生成计划","skills.batch.candidates":"候选 {count} 项","skills.batch.estBytes":"约发送 {size} 内容","skills.batch.skipped":"跳过 {count} 项(无效 / 被遮蔽)","skills.batch.annotated":"已注释将覆盖 {count} 项","skills.batch.annotatedList":"将覆盖清单","skills.batch.forceConfirm":"确认强制补全(覆盖 {count} 项已注释)","skills.skippedList":"跳过清单","skills.skip.shadowed":"被遮蔽","skills.skip.invalid":"无效({reason})","skills.skip.reason.missing-frontmatter":"缺 frontmatter","skills.skip.reason.missing-name":"缺 name","skills.skip.reason.invalid-name":"name 不合法","skills.skip.reason.missing-description":"缺 description","skills.skip.reason.too-large":"文件过大","skills.skip.reason.legacy-invocation-key":"旧版调用键","skills.batch.start":"开始批量补全","skills.batch.progress":"进度 {done}/{total}","skills.batch.current":"当前:{name}","skills.batch.cancel":"取消","skills.batch.phase.idle":"空闲","skills.batch.phase.planned":"待开始(核对候选后点击「开始批量补全」)","skills.batch.phase.running":"进行中","skills.batch.phase.done":"已完成","skills.batch.phase.cancelled":"已取消","skills.batch.failures":"失败 {count} 项","skills.batch.no-candidates":"没有需要补全的候选","skills.batch.model":"模型","overlay.label":"服务重启状态","recovery.waiting.title":"服务重启中…","recovery.waiting.body":"正在等待新的 DSH Web 进程启动,已等待 {seconds} 秒。","recovery.timeout.title":"服务尚未恢复","recovery.timeout.body":"已等待 60 秒。请确认外部进程管理器已正确配置,或手动刷新页面重试。","recovery.manual":"手动刷新","health.title":"运行状况","health.uptime":"运行时间","health.rss":"内存 RSS","health.platform":"平台","health.nodeVersion":"Node 版本","health.liveSessions":"存活会话","health.persistedSessions":"持久化会话","health.activeAgents":"活跃 Agent","health.activeJobs":"后台任务","health.uptimeValue":"{hours} 小时 {minutes} 分钟","health.error":"无法读取运行状况","health.check":"立即健康检查","health.checking":"检查中…","health.overall.ok":"正常","health.overall.warning":"警告","health.overall.error":"错误","health.alert.title":"健康提醒","health.alert.diagnostics":"检查结果存在{status},请查看下方异常项。","health.status.ok":"正常","health.status.warning":"警告","health.status.error":"错误","health.status.info":"信息","health.check.session-storage":"会话存储","health.check.workspace-registry":"工作区注册表","health.check.dsh-home":"DSH_HOME","health.check.backup-storage":"备份存储","health.check.tar":"tar","health.check.permissions":"文件权限","health.check.runtime-env":"运行环境","health.check.node-version":"Node 运行时","health.detail.runtime-env.managed":"由{kind}管理,重启后会自动拉起","health.detail.runtime-env.declared":"已通过 DSH_SERVICE_RUNTIME_ENV 声明由外部进程管理器管理","health.detail.runtime-env.manual":"疑似终端手动启动,重启后不会自动拉起;一键升级已改为不自动退出","health.detail.runtime-env.unknown":"未检测到进程管理器,无法确认重启后是否自动拉起;如实际有,可设置 DSH_SERVICE_RUNTIME_ENV=managed 声明","health.detail.node-version.ok":"{version},满足 ≥{required} 要求","health.detail.node-version.warning":"{version} 低于插件要求的 {required}.x,建议升级 Node","health.detail.session-storage.ok":"可用,共 {count} 个会话快照","health.detail.workspace-registry.ok":"可用,共 {count} 个工作区","health.detail.dsh-home.ok":"目录可访问,权限模式 {mode}","health.detail.backup-storage.empty":"备份目录可用,当前暂无备份","health.detail.backup-storage.ok":"备份目录可用,共 {count} 个备份,占用 {size}","health.detail.tar.ok":"tar 可执行文件可用","health.detail.permissions.ok":"文件权限检查正常,未发现异常","health.detail.permissions.warning":"发现 {count} 个文件或目录权限异常","health.detail.generic":"{status}","health.check.plugins":"插件","health.detail.plugins.unavailable":"插件体检不可用(宿主未暴露 Loader)","health.detail.plugins.ok":"共 {total} 个插件,状态正常","plugin.issue.failed":"{failed} 个插件失败","plugin.issue.pending":"{pending} 个插件未就绪","plugin.issue.info":"{count} 个插件状态需确认","plugin.state.pending":"等待依赖","plugin.state.loading":"加载中","plugin.state.failed":"失败","plugin.state.disposed":"已释放","plugin.state.unknown":"未知状态","plugin.state.unloading":"卸载中","plugin.missingDeps":"依赖缺失:{deps}","plugin.error":"错误:{error}","plugin.restart":"重新加载","plugin.restarting":"重新加载中…","plugin.restartConfirm":"确认重新加载","plugin.restartHint":"重新加载「{name}」,其启动逻辑将重新执行,失败状态会随之刷新。","plugin.restartCancel":"取消","plugin.restartFailed":"重新加载失败:{detail}","plugin.error.unknown-plugin":"未找到该插件","plugin.error.loader-unavailable":"宿主 Loader 不可用","plugin.error.plugin-disabled":"插件已停用,无法重新加载","plugin.error.not-failed":"该插件未处于失败状态","plugin.error.restart-failed":"重新加载后仍然失败","health.check.plugin-compat":"插件兼容性","health.detail.plugin-compat.unavailable":"插件兼容性检查不可用(宿主未暴露 Loader)","health.detail.plugin-compat.ok":"已扫描 {total} 个插件,未发现对已变更接口的引用","plugin.compat.issue.broken":"{count} 个插件可能不兼容","plugin.compat.issue.declared":"{count} 个插件仅声明残留(代码未引用)","plugin.compat.issue.unknown":"{count} 个插件未能扫描","plugin.compat.declared":"声明了已移除的接口但代码未引用——官方加载器对缺失供应商静默跳过,当前无害,可提示作者清理","plugin.compat.break.client-runtime":"声明了已移除的客户端供应商 @deepseek-ai/dsh-client-runtime(0.1.2-alpha.2 起官方 roster 移除,浏览器半可能无法挂载)","plugin.compat.break.sqlite-persistence":"依赖已移除的会话持久化后端 @deepseek-ai/dsh-session-persistence-sqlite(0.1.2-alpha.3 起官方仅交付 JSONL)","plugin.compat.break.chat-hash":"引用已迁移的聊天界面旧样式前缀(Md3f7G_,0.1.2-alpha.2 起漂移至 EvIC1a_)","plugin.compat.break.stats-hash":"引用已迁移的统计条旧样式前缀(FJxK0a_,0.1.2-alpha.2 起漂移至 -NDN2W_)","plugin.compat.break.time-hover-root":"使用已移除的元素属性 data-time-hover-root(0.1.2-alpha.2 起由 data-turn-tail 取代)","plugin.compat.unknown.unresolved":"包清单不可解析","plugin.compat.unknown.missing-entry":"未找到可扫描的入口文件","plugin.compat.unknown.too-large":"入口文件超过扫描上限(4 MiB)","tabs.overview":"概览","tabs.notify":"通知","tabs.health":"健康诊断","tabs.usage":"模型统计","tabs.quota":"额度查询","overview.container":"进程与运行环境","overview.errors":"报错信息","overview.status.normal":"所有系统运行正常","overview.status.info":"有 {count} 条提示","overview.status.warning":"有 {count} 项需要注意","overview.status.error":"有 {count} 项需要处理","overview.backupEmpty":"还没有备份,建议创建一份","overview.updateAvailable":"检测到新版本可用","overview.action.health":"健康检查","tabs.backup":"备份维护","tabs.restart":"重启","tabs.maintenance":"维护","tabs.configuration":"配置","tabs.features":"功能","tabs.notifications":"通知","maintenance.empty":"所有维护子页均已关闭。可在「配置 → 功能」中开启备份、技能、子代理或会话管理。","config.notificationsDisabled":"任务通知功能已在「功能」页关闭,以下设置仅作展示;重新开启后通知才会生效。","features.group.runtime":"运行与观测","features.group.maintenance":"维护","features.group.interaction":"交互","page.quota.desc":"查询各供应商额度、余额与重置时间;额度圆环跟随会话模型供应商,查询由宿主节流。","page.diagnostics.desc":"健康检查与运行环境诊断,异常时给出处理建议。","page.configuration.desc":"功能开关与任务通知设置。","tabs.alert.title":"服务控制提醒","tabs.alert.body":"以下功能需要处理:{tabs}","tabs.alert.join":"、","tabs.alert.dot":"此标签存在故障提醒","permissions.title":"文件权限","permissions.description":"检查 Agent 能否读写并进入 DSH_HOME 与工作区。深检跳过 .git;修复补充当前用户所需权限并保留执行位。","permissions.target":"目标属主:{owner}","permissions.repair":"修复权限","permissions.repairing":"修复中…","permissions.confirm":"确认修复","permissions.confirmHint":"跳过 .git,递归恢复当前用户属主并补充 Agent 读写权限,保留已有执行位。","permissions.cancel":"取消","permissions.show":"权限与修复","permissions.hide":"收起","permissions.error":"权限操作失败","permissions.summary.ok":"{count} 个根目录检查正常","permissions.summary.warning":"发现 {count} 个根目录异常","permissions.showDetails":"查看详情","permissions.hideDetails":"隐藏详情","permissions.deep":"深度检查","permissions.deepChecking":"扫描中…","permissions.deepSummary":"扫描 {scanned} 项,用时 {duration} ms;目录不可编辑 {directories},文件不可编辑 {files},无法读取 {unreadable}。","backup.title":"备份管理","backup.description":"备份会话、配置与插件 profile 清单,不含 node_modules 与凭据;不自动清理。","backup.create":"创建备份","backup.creating":"创建中…","backup.progress.copy":"正在复制会话数据({current}/{total})…","backup.progress.archive":"正在打包归档({current}/{total})…","backup.progress.validate":"正在校验归档({current}/{total})…","backup.progress.publish":"正在发布备份({current}/{total})…","backup.total":"总体积:{size}","backup.empty":"还没有备份。","backup.delete":"删除","backup.confirm":"确认删除","backup.confirmHint":"确认删除这个备份?此操作无法撤销。","backup.cancel":"取消","backup.error":"备份操作失败","backup.export":"导出","backup.exporting":"导出中…","backup.exportError":"备份导出失败","backup.restore":"恢复","backup.inspecting":"检查中…","backup.restoreConfirm":"确认恢复","backup.restoreHint":"完整性检查通过。确认后会按下方计划覆盖数据;提交前宿主会再次检查归档和当前目标是否发生变化。","backup.restoreError":"备份恢复失败","backup.integrity.ok":"完整性检查通过","backup.integrity.invalid":"归档不可恢复","backup.integrity.summary":"共 {entries} 个条目,解压后 {size};会话文件 {sessions},配置文件 {config},profile 清单 {profiles}。","backup.plan.sessions":"会话目录将整体替换","backup.plan.config":"配置覆盖 {replace} 项,移除 {remove} 项","backup.plan.profiles":"覆盖 {count} 个 profile 的 package.json,保留 node_modules 与其他文件","backup.plan.expires":"恢复计划有效至 {time}","backup.manualRestartTitle":"恢复完成,需要手动重启","backup.manualRestartBody":"数据已恢复,但当前进程仍在运行旧状态。请在运行 dsh 的终端按 Ctrl+C,然后重新启动 dsh。","backup.error.backup-gzip-invalid":"归档不是有效的 gzip 文件或已损坏。","backup.error.backup-tar-invalid":"tar 结构或校验和无效。","backup.error.backup-entry-traversal":"归档含越界或不安全路径。","backup.error.backup-entry-absolute":"归档含绝对路径。","backup.error.backup-entry-link":"归档含符号链接或硬链接。","backup.error.backup-entry-type":"归档含不支持的特殊条目。","backup.error.backup-entry-platform":"归档包含其他系统不兼容的文件名。","backup.error.backup-entry-unexpected":"归档含备份范围外的文件。","backup.error.backup-profile-invalid":"profile package.json 无效。","backup.error.backup-section-missing":"归档缺少必要分区。","backup.error.backup-size-limit":"归档超过安全大小或条目限制。","backup.error.backup-archive-invalid":"归档未通过完整性检查。","backup.error.backup-source-changed":"会话正在写入,备份未完成,请稍后重试。","backup.error.backup-source-unsafe":"备份源含符号链接或特殊文件,已拒绝创建。","backup.error.tar-failed":"归档工具执行失败,请检查 tar/gzip 是否可用。","backup.error.active-work":"检测到运行中的工作,暂不能恢复。","backup.error.restore-plan-expired":"恢复计划已过期,请重新检查。","backup.error.restore-source-changed":"备份归档在确认前发生变化,请重新检查。","backup.error.restore-target-changed":"当前数据在确认前发生变化,请重新检查。","backup.error.restore-target-unsafe":"当前目标含不安全的链接或特殊文件。","backup.import":"导入备份","backup.importing":"导入中…","backup.showRecords":"展开备份记录","backup.hideRecords":"收起备份记录","version.title":"版本信息","version.current":"DSH:","version.plugin":"dsh-service:","version.loading":"加载中…","update.check":"检查更新","update.checking":"检查中…","update.current":"已是最新版本","update.available":"有新版本:{version}","update.detailsButton":"查看详情","update.detailsHide":"收起","update.unavailable":"暂时无法检查最新版本","update.unpublished":"尚未发布可检查版本","health.recheck":"重新诊断","update.badge":"DSH 有更新","update.details.title":"DSH 更新可用","update.details.current":"当前版本:{version}","update.details.latest":"最新版本:{version}","update.channelStable":"正式版","update.channelPreview":"预览版","update.channelAlpha":"Alpha 版","update.details.close":"关闭","update.upgrade":"升级插件","update.upgrading":"升级中…","update.upgradeError":"插件升级失败","update.upgradeErrorDetail":"插件升级失败({detail})","update.upgradeSuccess":"升级成功,服务重启中…","update.guardActiveWork":"有活动中的会话或后台任务,请处理完毕后再升级","update.guardLinkInstall":"插件通过 link: 安装(开发模式),不能从 registry 一键升级;请更新源码仓库后重启","update.guardFileInstall":"插件通过 file: 安装,不能从 registry 一键升级","update.guardNoNewer":"registry 最新版不高于当前版本,已拒绝可能回退的升级","update.guardNoProfile":"没有找到安装了本插件的 profile,无法定位升级目标","update.guardAmbiguous":"多个 profile 都安装了本插件且无法确定当前加载的副本,已中止","update.guardStale":"命令报告成功但安装版本没有变化(可能被 pnpm 安全等待期拦下),保持当前版本不重启","update.guardUnreadable":"命令成功但无法确认安装后的版本,已中止重启","update.failPnpmMissing":"找不到 pnpm,无法执行升级;请先安装 pnpm 再重试","update.failNetwork":"拉取依赖时网络临时失败,请稍后重试","update.failFetchTimeout":"下载超时(网络较慢或安装包较大),请稍后重试","update.failReleaseAge":"新版本被 pnpm 安全等待期拦截,已自动放行重试仍失败","update.failHoist":"profile 的 node_modules 由不同版本的 pnpm 创建,已重建重试仍失败","update.failAddingToRoot":"pnpm 拒绝在 workspace 根目录安装(缺少 -w)","update.failNotWorkspace":"profile 不是 pnpm workspace 却传入了 -w","update.failIgnoredBuilds":"依赖构建脚本被 pnpm 默认拦截,无法完成升级","env.kind.docker":"Docker 容器","env.kind.container":"容器(containerd/Kubernetes)","env.kind.systemd":"systemd 服务","env.kind.pm2":"pm2","env.kind.supervisord":"supervisord","env.kind.kubernetes":"Kubernetes","env.kind.declared":"外部进程管理器(手动指定)","update.manualConfirmTitle":"升级前请确认:当前疑似手动启动环境","update.manualConfirm":"未检测到进程管理器。升级完成后 DSH 不会自动重启。","update.manualProceed":"仍要升级","update.manualRestartTitle":"升级完成,需要手动重启","update.manualRestartBody":"新版本已安装,但当前进程仍在运行旧版本。请在运行 dsh 的终端窗口按 Ctrl+C(或直接关闭窗口),然后重新启动 dsh。","restart.title":"服务重启","restart.description":"重启 dsh web 进程。运行中的工作会中断,持久化会话可恢复。","restart.button":"重启 dsh web","restart.sending":"发送中…","restart.confirm":"确认重启","restart.force":"仍要重启","restart.cancel":"取消","restart.sent":"重启指令已发出。","restart.sentHint":"页面连接即将断开,服务恢复后将自动刷新。","restart.idleHint":"当前没有检测到运行中的工作。确认后将断开连接,等待服务自动重启。","restart.manualWarn":"当前疑似终端手动启动环境:确认后进程将退出且不会自动拉起,需要你手动重新运行 dsh。","restart.sentManualHint":"当前为手动启动环境,服务不会自动拉起;请在原终端重新运行 dsh 后刷新。","restart.navToggle":"设置页左列显示「重启」入口","restart.navToggleHint":"默认关闭;开启后在设置页左侧标签列底部显示快捷重启入口","activity.agent":"Agent","activity.job":"后台任务","activity.terminal":"终端","activity.warning":"检测到 {count} 项运行中的工作,重启将中断。","activity.item":"{type}:{label} ({status})","error.update":"检查失败","error.activity":"检查运行状态失败","error.restart":"重启失败","error.instance":"重启响应缺少进程实例标识","usage.title":"模型使用","usage.structure":"token 结构","usage.structureHint":"按日期展示输入、输出和缓存 token。","usage.tooltip.date":"日期:{date}","usage.tooltip.input":"输入 {value} token","usage.tooltip.output":"输出 {value} token","usage.tooltip.cache":"缓存命中 {value} token","usage.axis":"token 纵轴","usage.models.more":"展开其余 {count} 个模型","usage.models.less":"收起模型列表","usage.modelScope.today":"今日","usage.modelScope.week":"近 7 天","usage.modelScope.all":"累计","usage.modelSortHint.today":"按今日 token 从多到少排列","usage.modelSortHint.week":"按近 7 天 token 从多到少排列","usage.modelSortHint.all":"按累计 token 从多到少排列","usage.modelBar.today":"{model}:今日 {total} token","usage.modelBar.week":"{model}:近 7 天 {total} token","usage.modelBar.all":"{model}:累计 {total} token","usage.refresh":"刷新统计","usage.refreshing":"刷新中…","usage.empty":"尚未建立使用统计索引。点击刷新统计开始只读建立索引。","usage.error":"无法读取模型使用统计","usage.allProjects":"全部项目","usage.chartSummary":"七天内累计用量 {total} token","usage.barDay":"{day} 总用量 {total} token","usage.total":"token 总量","usage.steps":"成功模型步骤","usage.stepsValue":"{count} 次","usage.modelLine":"{steps}次 · 缓存命中 {hitRate} · 输入 {input} token · 输出 {output} token","usage.input":"输入 token","usage.output":"输出 token","usage.cache":"缓存 token","usage.hitRate":"缓存命中率","usage.today":"今天","usage.sevenDays":"近 7 天","usage.errors.title":"模型报错","usage.errors.toggle":"模型报错({count} 类)","usage.errors.recent":"最近 24 小时","usage.errors.empty":"最近 24 小时没有记录到模型报错。","usage.toolErrors.title":"工具报错","usage.toolErrors.toggle":"工具报错({count} 类)","usage.toolErrors.empty":"最近 24 小时没有记录到工具报错。","usage.errors.count":"{count} 次","notification.title":"通知","notification.description":"主会话任务结束,或会话需要授权、抉择时发送浏览器通知;子代理完成任务不通知。","notification.enable":"开启通知","notification.enabled":"通知已开启","notification.disable":"关闭通知","notification.denied":"通知权限被拒绝","notification.master":"通知总开关","notification.done":"任务结束通知","notification.input":"授权与提问通知","notification.doneTitle":"任务完成","notification.doneBody":"{title} 已完成本轮任务","notification.inputTitle":"需要你的确认","notification.inputBody":"{title}({kind})","notification.kind.approval":"等待授权","notification.kind.plan-review":"等待审阅计划","notification.kind.question":"等待选择答案","notification.bellOn":"通知开启","notification.bellOff":"通知关闭","notification.bellShow":"显示输入框旁的铃铛图标","quota.cardTitle":"额度查询","quota.navToggle":"设置页左列显示「额度查询」入口","quota.navToggleHint":"默认关闭;开启后在设置页左侧标签列底部显示「额度查询」快捷入口","quota.poll":"自动查询","quota.poll.manual":"仅手动","quota.poll.minute":"{count} 分钟","quota.window.rolling":"滚动 5 小时","quota.window.tokens-limit-u3-n5":"5 小时 Token","quota.window.tokens-limit-u6-n1":"本周 Token","quota.window.tokens-limit":"Token 额度","quota.window.time-limit-u5-n1":"MCP 配额","quota.window.time-limit":"MCP 配额","quota.window.credit-limit":"点数额度","quota.window.credits":"已用额度","quota.window.balance":"余额","quota.window.weekly":"本周","quota.window.monthly":"本月","quota.window.codex-5h":"Codex 5 小时窗","quota.window.codex-day":"Codex 日窗口","quota.window.codex-week":"Codex 本周窗","quota.window.codex-month":"Codex 本月窗口","quota.window.gemini-5h":"Gemini 5 小时窗","quota.window.gemini-week":"Gemini 本周窗","quota.window.claude-5h":"Claude 5 小时窗","quota.window.claude-week":"Claude 本周窗","quota.panel.title":"额度用量","quota.panel.used":"已用","quota.panel.remaining":"剩余","quota.ring.label":"额度查询","quota.filter.showAll":"查看全部额度 ({count})","quota.filter.currentOnly":"仅看当前模型","quota.updated":"更新于 {time}","quota.refreshing":"刷新中…","quota.empty":"暂无数据","quota.resetIn":"重置于 {time}","quota.resetCard.title":"重置卡","quota.resetCard.expires":"{date} 到期","quota.resetCard.expired":"已过期","quota.resetCard.edit":"添加重置卡","quota.advanced":"高级配置","quota.resetCard.dateLabel":"到期日期","quota.resetCard.nameLabel":"名称(可选)","quota.resetCard.add":"添加","quota.resetCard.cancel":"取消","quota.resetCard.remove":"移除","quota.retryAt":"{time} 后可重试","quota.refresh":"刷新","quota.card.moveUp":"上移","quota.card.moveDown":"下移","quota.reorder":"调整排序","quota.usageLink":"打开官网用量页","quota.adapt":"适配","quota.kind.opencode-go":"OpenCode Go","quota.kind.zai-coding-cn":"智谱 GLM Coding Plan","quota.kind.openrouter":"OpenRouter","quota.kind.kimi":"Kimi / Moonshot","quota.kind.siliconflow":"硅基流动","quota.kind.deepseek":"DeepSeek 开放平台","quota.kind.stepfun":"StepFun 余额","quota.kind.stepfun-step-plan":"StepFun Step Plan 订阅","quota.kind.cliproxy":"CLIProxyAPI 账号额度","quota.kind.xiaomi-token-plan-cn":"小米 MiMo Token Plan","quota.window.total_token":"套餐总额度","quota.window.compensation_total_token":"补偿积分","quota.window.plan-name":"订阅套餐","quota.window.credit-pool":"月度 Credit 池","quota.window.topup-credit":"加油包 Credit","quota.window.five-hour":"5 小时额度","quota.error.no-subscription":"当前账号没有生效中的订阅额度","quota.error.credential-rejected":"控制台登录态已失效,请重新从浏览器复制","quota.credential.editCookie":"填写控制台 Cookie(网页登录态)","quota.credential.editToken":"填写控制台令牌(Oasis-Token,浏览器登录态)","quota.kindAuto":"自动识别","quota.noAdapted":"暂无已适配的供应商,可在下方手动适配","quota.disable":"停用查询","quota.followAuto":"跟随自动识别","quota.addAdapt":"手动适配:","quota.addPickProvider":"选择供应商","quota.addPickKind":"选择类型","quota.saveFailed":"保存失败:{error}","quota.unknownProvider":"未知供应商","quota.error.credential-missing":"凭据未配置(请在 DSH 凭据中设置对应 API key)","quota.error.no-base-url":"该供应商未配置 baseURL","quota.error.credentials-unavailable":"凭据服务不可用","quota.error.http-status":"上游返回错误状态","quota.error.network":"网络错误","quota.error.network-transient":"网络不稳定(已自动重试)","quota.error.timeout":"请求超时","quota.error.bad-payload":"响应格式异常","quota.error.mgmt-disabled":"CLIProxyAPI 管理面未启用(未设置 remote-management secret-key)","quota.error.host-not-pinned":"baseURL 与适配时记录的域名不一致,请重新保存适配","quota.error.upstream-status":"上游官方接口返回错误状态","quota.credential.edit":"填写 API 密钥","quota.credential.editManagement":"填写管理密钥(网页登录的 key)","quota.credential.nameLabel":"凭据名称","quota.credential.valueLabel":"密钥值","quota.credential.save":"保存","quota.credential.primary":"主名(别名存一即可)","quota.credential.clear":"清除已存","quota.credential.clearConfirm":"再次点击清除","quota.credential.configured":"已配置","quota.credential.notConfigured":"未配置","quota.credential.saveFailed":"凭据保存失败:{error}","quota.credential.unknown-hint":"未知凭据名","quota.credential.invalid-value":"密钥值不能为空","quota.credential.credentials-unavailable":"凭据服务不可用","quota.error.unknown":"未知错误","quota.unadapted":"该供应商未适配,请先在下方选择类型","quota.unit.day":"{count} 天","quota.unit.hour":"{count} 小时","quota.unit.minute":"{count} 分钟","quota.window.granted-balance":"赠送余额(未过期)","quota.peak.nowIdle":"当前空闲时段 · 半价计费","quota.peak.nowPeak":"当前高峰时段 · 标准价","quota.peak.untilIdle":"{time} 转空闲({dur}后)","quota.peak.untilPeak":"{time} 转高峰({dur}后)","quota.peak.tag.peak":"忙时","quota.peak.tag.idle":"闲时","quota.peak.caption":"空闲时段价格为高峰时段的一半。高峰时段:北京时间周一至周五 09:00–12:00、14:00–18:00;其余时间为空闲时段,周六和周日全天空闲。","quota.peak.caption.zai":"非高峰时段模型调用按基础积分的 50% 抵扣。高峰时段:每周一至周五 14:00–18:00(UTC+8);其余时间为非高峰时段,周六和周日全天空闲。"},i={"nav.label":"Service Control","nav.restart":"Restart","features.cardTitle":"Service control (dsh-service)","features.cardHint":"Controls optional features and external capabilities. Switches apply instantly without restart.","features.external":"External capabilities","features.healthDiagnostics":"Health diagnostics","features.modelUsage":"Model statistics","features.quotaLookup":"Quota lookup","features.backupMaintenance":"Backup maintenance","features.taskNotifications":"Task notifications","features.healthz":"/healthz liveness endpoint","features.skillManager":"Skill manager","features.readOnly":"These settings are read-only.","tabs.skills":"Skills","tabs.subagent":"Subagents","tabs.sessions":"Sessions","features.subagentRoute":"Subagent model","features.mobileAdaptation":"Mobile adaptation","features.sessionManager":"Session manager","sessions.title":"Session manager","sessions.hint":"View, export, archive, and search sessions; deletion is limited to archived ones.","sessions.filter.all":"All","sessions.filter.archived":"Archived","sessions.filter.deleted":"Deleted","sessions.refresh":"Refresh","sessions.batch.enter":"Select multiple","sessions.batch.exit":"Exit selection","sessions.batch.selectAll":"Select all","sessions.batch.clearAll":"Clear all","sessions.batch.selected":"{count} selected","sessions.batch.selectRow":"Select session: {title}","sessions.batch.export":"Export ({count})","sessions.batch.archive":"Archive ({count})","sessions.batch.delete":"Delete ({count})","sessions.batch.completed":"{action} completed for {count}","sessions.batch.failed":"{action} completed for {done}/{total}; {error}","sessions.batch.deleteTitle":"Delete {count} sessions","sessions.batch.deleteBody":"This permanently deletes the logs of the archived sessions below. This cannot be undone.","sessions.batch.deleteItem":"{title} ({bytes})","sessions.status.loading":"Loading…","sessions.status.working":"Working…","sessions.status.unavailableTime":"Time unavailable","sessions.glyph.expand":"▸","sessions.glyph.collapse":"▾","sessions.glyph.back":"←","sessions.search.placeholder":"Search conversation content…","sessions.search.archivedOnly":"Search archived only","sessions.sort.createdDesc":"Created (newest first)","sessions.sort.createdAsc":"Created (oldest first)","sessions.sort.title":"By title","sessions.sort.project":"By project","sessions.projectGroup.countOne":"1 session","sessions.projectGroup.countMany":"{count} sessions","sessions.projectGroup.noCwd":"(no workspace)","sessions.row.live":"Running","sessions.row.archived":"Archived","sessions.row.deleted":"Deleted","sessions.row.events":"{count} events","sessions.row.noTitle":"(No title)","sessions.action.view":"View","sessions.action.export":"Export","sessions.action.archive":"Archive","sessions.action.delete":"Delete","sessions.empty.all":"No sessions","sessions.empty.archived":"No archived sessions","sessions.empty.deleted":"No deleted sessions yet","sessions.empty.search":"No matches for “{query}”","sessions.error.load":"Load failed: {error}","sessions.error.feature-disabled":"Session manager is disabled in settings","sessions.error.network":"Network error: cannot reach the host","sessions.error.session-not-found":"Session not found or already deleted","sessions.error.live-session-rejected":"Session is running and cannot be deleted","sessions.error.session-not-archived":"Only archived sessions can be deleted","sessions.error.unknown-delete-plan":"Delete request expired, please retry","sessions.error.export-failed":"Export failed: {error}","sessions.detail.back":"Back to list","sessions.detail.open":"Open in official view","sessions.detail.archiveDisabled":"Archived or blank sessions cannot be opened in the official view","sessions.detail.exportAll":"Export full ZIP","sessions.detail.exporting":"Exporting…","sessions.detail.loadMore":"Load more ({remaining})","sessions.detail.noMore":"All {total} events loaded","sessions.detail.noise":"System events","sessions.detail.noiseBlock":"{count} system events","sessions.detail.noiseExpand":"Expand all","sessions.detail.noiseCollapse":"Collapse","sessions.detail.cwd":"{cwd}","sessions.detail.created":"Created {time}","sessions.md.copy":"Copy","sessions.md.copied":"Copied","sessions.md.footnotes":"Footnotes","sessions.hit.title":"{count} hits","sessions.hit.return":"Back to search results","sessions.hit.badge":"HIT","sessions.hit.prev":"◀ Prev","sessions.hit.next":"Next ▶","sessions.hit.inSession":"{count} matches in this session","sessions.delete.title":"Delete session","sessions.delete.body":"This permanently deletes the session log below. This cannot be undone.","sessions.delete.consequence.log":"Delete session log ({bytes})","sessions.delete.consequence.sidebar":"Session disappears from the official sidebar","sessions.delete.confirm":"Delete","sessions.delete.cancel":"Cancel","sessions.delete.done":"Deleted","sessions.export.includes":"Includes subagents and attachments","sessions.navToggle":"Show “Sessions” entry in the settings sidebar","sessions.navToggleHint":"Disabled by default; shows the session manager entry at the bottom of the settings sidebar when enabled","sessions.oneWay":"Archiving cannot be undone","sessions.oneWayHint":"Archived sessions are hidden from the official sidebar; the official UI cannot unarchive, deletion here is the only way out.","mobile.fab.label":"Open sidebar menu","mobile.debug.title":"Mobile diagnostics","mobile.debug.viewport":"Viewport","mobile.debug.drawer":"Drawer","mobile.debug.details":"Details","mobile.debug.errors":"JS errors","mobile.debug.stateOn":"on","mobile.debug.stateOff":"off","mobile.immersive.hide":"Hide header and composer","mobile.immersive.show":"Show header and composer","mobile.debug.immersive":"Immersive","conversation.jump.previousReply":"Previous user message","subagent.title":"Subagent model","subagent.hint":"Controls the model used by subagents without an explicit model; explicitly specified ones are unaffected.","subagent.mode.label":"Mode","subagent.mode.inherit":"Default (no override)","subagent.mode.inherit.desc":"Injects nothing and keeps the native inheritance: subagents use the model baked in when the session was created.","subagent.mode.follow":"Follow main model","subagent.mode.follow.desc":"Each delegation reads the model the main conversation actually uses right now (route of its latest request) and injects it.","subagent.mode.custom":"Custom","subagent.mode.custom.desc":"Every delegation without an explicit model uses the model selected below.","subagent.provider":"Provider","subagent.model":"Model","subagent.reasoningEffort":"Reasoning effort","subagent.reasoningEffort.default":"Use model default (unspecified)","subagent.reasoningEffort.unavailable":"This model does not declare selectable reasoning levels","subagent.modelsEmpty":"Model list is empty: host LLM channels cannot be resolved.","subagent.save":"Save","subagent.saved":"Saved","subagent.reset":"Reset to default","subagent.saving":"Saving…","subagent.unavailable":"The host exposes no subagents registry (service missing); this configuration has no effect.","subagent.error":"Operation failed: {error}","subagent.error.feature-disabled":"Subagent model is switched off in settings","subagent.error.llm-unavailable":"Host LLM service is unavailable","subagent.error.unknown-mode":"Unknown mode","subagent.error.invalid-model-route":"Provider or model is not in the host catalog","subagent.error.invalid-reasoning-effort":"This reasoning effort is not supported by the selected model; choose another","subagent.error.network":"Network error: cannot reach the host","subagent.fallback.title":"Fallback models (in order)","subagent.fallback.item":"Fallback {index}","subagent.fallback.hint":"When the primary route is unavailable (channel unloaded, or quota state marks it unserviceable), try fallbacks in order; if none works, fall back to native inheritance instead of failing the delegation.","subagent.fallback.add":"Add fallback","subagent.fallback.sort":"Reorder","subagent.fallback.sort.done":"Done","subagent.fallback.remove":"Remove","subagent.fallback.up":"Move up","subagent.fallback.down":"Move down","subagent.fallback.empty":"No fallbacks: delegations fall back to native inheritance when the primary route is unavailable.","subagent.fallback.limit":"Limit reached ({max})","subagent.error.invalid-fallback-route":"Fallback entry is not in the host catalog, please choose again","subagent.turnTail.label":"Subagent models: ","subagent.turnTail.countOne":"1 subagent","subagent.turnTail.countMany":"{count} subagents","subagent.turnTail.unknown":" (models not recorded)","subagent.dock.title":"Show subagent info under the composer","subagent.dock.desc":"Keeps a session-level line under the composer listing the models your subagents actually used (20s refresh, unaffected by compaction). When off, only the per-turn tail line remains.","skills.error":"Operation failed: {error}","skills.error.feature-disabled":"Skill manager is switched off in settings","skills.error.network":"Network error, try again later","skills.error.read-only-source":"This entry lives in a read-only source","skills.error.unknown-skill":"Skill not found; the list may have changed, refresh and retry","skills.error.invalid-skill":"Entry is currently invalid: {reason}","skills.error.invalid-field":"Invalid switch field","skills.error.invalid-enable":"Invalid switch value","skills.error.invalid-model-route":"Invalid model route; pick a model again","skills.error.invalid-description":"Description cannot be empty","skills.error.describe-timeout":"Model generation timed out (90s)","skills.error.empty-output":"Model produced no body output (finish: {kind})","skills.error.batch-cancelled":"Cancelled","skills.error.entry-changed":"Entry changed during the run; skipped","skills.error.unknown-batch-plan":"Batch plan is stale; regenerate it","skills.error.batch-already-done":"That batch already finished","skills.error.batch-already-cancelled":"That batch was already cancelled","skills.error.annotated-confirm-required":"Annotated skills need an explicit confirm before being overwritten","skills.empty":"No skills found","skills.filter":"Filter by name…","skills.colon":": ","skills.group.auto":"Auto-loaded","skills.group.manual":"Manual only","skills.group.disabled":"Fully disabled","skills.source.project-dsh":"Project .dsh","skills.source.project-agents":"Project .agents","skills.source.user-dsh":"User DSH","skills.source.user-agents":"User .agents","skills.source.bundled":"Bundled","skills.source.custom":"Custom dir","skills.badge.shadowed":"Shadowed","skills.badge.readonly":"Read-only","skills.badge.annotated":"Annotated","skills.note.stale":"Body changed; refill needed","skills.note.remove":"Remove AI note","skills.note.panelOnly":"Notes are stored and shown in this panel only; SKILL.md is never modified.","skills.log.title":"Run log","skills.log.located":"Located skill {name} ({chars} chars)","skills.log.attempt":"Attempt {n}/{total}: calling {route}","skills.log.received":"Output received ({chars} chars), parsing JSON…","skills.log.parsed":"Parsed OK, draft ready","skills.log.failed-retry":"Failed: {message}, retrying","skills.log.failed":"Failed: {message}","skills.log.wait":"Waiting for model output… {secs}s","skills.log.first-delta":"Model started returning","skills.log.first-reasoning":"Model started returning (reasoning first)","skills.log.progress":"Received {chars} chars","skills.log.finish-reasoning-only":"Finished: {kind} (only {chars} reasoning chars, no body)","skills.log.finish-empty":"Finished: {kind} (no output)","skills.log.block-extract":"Extracted body from whole block ({chars} chars)","skills.log.item-start":"Generating note…","skills.batch.toggle":"Batch annotate","skills.batch.collapse":"Collapse","skills.batch.already":"A batch is already running; wait for it or cancel first","skills.invalid.legacy":"Legacy invocation keys present; excluded from the model catalog","skills.invalid.other":"Invalid entry: {reason}","skills.fix.legacy":"Fix legacy keys","skills.switch.model":"Visible to model","skills.switch.user":"Invocable via /","skills.switch.confirm":"Click again to apply","skills.describe.button":"Fill with AI","skills.describe.title":"Fill metadata with AI — {name}","skills.describe.model":"Model","skills.describe.models.loading":"Loading models…","skills.describe.models.empty":"No configured models found","skills.describe.run":"Generate draft","skills.describe.running":"Generating…","skills.apply.title":"Save AI note — {name}","skills.apply.description":"Description","skills.apply.usage":"Usage","skills.apply.old":"Old","skills.apply.new":"New","skills.apply.confirm":"Save note","skills.apply.done":"Note saved","skills.apply.keepusage":"(keep existing)","skills.llm.unavailable":"Host LLM service unavailable; AI fill disabled.","skills.batch.title":"Batch-fill skill descriptions","skills.batch.hint":"Call the selected model per skill to draft explanations for uncommented or changed skills; annotated skills are listed separately and are only overwritten after an explicit confirm. Results stay in the plugin and render below the entry.","skills.batch.plan":"Plan batch","skills.batch.candidates":"{count} candidates","skills.batch.estBytes":"~{size} of content will be sent","skills.batch.skipped":"{count} skipped (invalid / shadowed)","skills.batch.annotated":"{count} annotated will be overwritten","skills.batch.annotatedList":"To be overwritten","skills.batch.forceConfirm":"Confirm forced refill ({count} annotated)","skills.skippedList":"Skipped","skills.skip.shadowed":"shadowed","skills.skip.invalid":"invalid ({reason})","skills.skip.reason.missing-frontmatter":"no frontmatter","skills.skip.reason.missing-name":"missing name","skills.skip.reason.invalid-name":"invalid name","skills.skip.reason.missing-description":"missing description","skills.skip.reason.too-large":"file too large","skills.skip.reason.legacy-invocation-key":"legacy invocation keys","skills.batch.start":"Start batch","skills.batch.progress":"Progress {done}/{total}","skills.batch.current":"Current: {name}","skills.batch.cancel":"Cancel","skills.batch.phase.idle":"Idle","skills.batch.phase.planned":"Planned — review candidates, then press Start","skills.batch.phase.running":"Running","skills.batch.phase.done":"Done","skills.batch.phase.cancelled":"Cancelled","skills.batch.failures":"{count} failed","skills.batch.no-candidates":"Nothing to fill","skills.batch.model":"Model","overlay.label":"Service restart status","recovery.waiting.title":"Restarting service…","recovery.waiting.body":"Waiting for a new DSH Web process. Elapsed: {seconds} seconds.","recovery.timeout.title":"Service has not recovered","recovery.timeout.body":"Waited 60 seconds. Check the external process manager, or refresh the page manually.","recovery.manual":"Manual reload","health.title":"Health","health.uptime":"Uptime","health.rss":"Memory RSS","health.platform":"Platform","health.nodeVersion":"Node version","health.liveSessions":"Live sessions","health.persistedSessions":"Persisted sessions","health.activeAgents":"Active agents","health.activeJobs":"Background jobs","health.uptimeValue":"{hours} h {minutes} min","health.error":"Could not read health metrics","health.check":"Run health check","health.checking":"Checking…","health.overall.ok":"Healthy","health.overall.warning":"Warning","health.overall.error":"Error","health.alert.title":"Health alert","health.alert.diagnostics":"The health check reported {status}. Review the affected items below.","health.status.ok":"Healthy","health.status.warning":"Warning","health.status.error":"Error","health.status.info":"Info","health.check.session-storage":"Session storage","health.check.workspace-registry":"Workspace registry","health.check.dsh-home":"DSH_HOME","health.check.backup-storage":"Backup storage","health.check.tar":"tar","health.check.permissions":"File permissions","health.check.runtime-env":"Runtime environment","health.check.node-version":"Node runtime","health.detail.runtime-env.managed":"Managed by {kind}; the process restarts automatically after exit","health.detail.runtime-env.declared":"Declared externally managed via DSH_SERVICE_RUNTIME_ENV","health.detail.runtime-env.manual":"Likely a manual terminal launch — nothing restarts the process after exit; one-click upgrade already keeps it running","health.detail.runtime-env.unknown":"No process manager detected, so automatic restart cannot be confirmed; set DSH_SERVICE_RUNTIME_ENV=managed if one exists","health.detail.node-version.ok":"{version}, meets the >={required} requirement","health.detail.node-version.warning":"{version} is below the required {required}.x; upgrading Node is recommended","health.detail.session-storage.ok":"Available, with {count} session snapshots","health.detail.workspace-registry.ok":"Available, with {count} workspaces","health.detail.dsh-home.ok":"Directory is accessible with mode {mode}","health.detail.backup-storage.empty":"Backup directory is available; no backups exist yet","health.detail.backup-storage.ok":"Backup directory is available, with {count} backups using {size}","health.detail.tar.ok":"The tar executable is available","health.detail.permissions.ok":"Permission check passed with no anomalies","health.detail.permissions.warning":"Found {count} file or directory permission anomalies","health.detail.generic":"{status}","health.check.plugins":"Plugins","health.detail.plugins.unavailable":"Plugin health check unavailable (host loader is not exposed)","health.detail.plugins.ok":"{total} plugins healthy","plugin.issue.failed":"{failed} failed plugin(s)","plugin.issue.pending":"{pending} pending plugin(s)","plugin.issue.info":"{count} plugin state(s) need review","plugin.state.pending":"Waiting","plugin.state.loading":"Loading","plugin.state.failed":"Failed","plugin.state.disposed":"Disposed","plugin.state.unknown":"Unknown state","plugin.state.unloading":"Unloading","plugin.missingDeps":"Missing deps: {deps}","plugin.error":"Error: {error}","plugin.restart":"Reload","plugin.restarting":"Reloading…","plugin.restartConfirm":"Confirm reload","plugin.restartHint":'Reloading "{name}" re-runs its startup logic; the failure state refreshes afterwards.',"plugin.restartCancel":"Cancel","plugin.restartFailed":"Reload failed: {detail}","plugin.error.unknown-plugin":"Plugin not found","plugin.error.loader-unavailable":"Host loader unavailable","plugin.error.plugin-disabled":"The plugin is disabled and cannot be reloaded","plugin.error.not-failed":"The plugin is not in a failed state","plugin.error.restart-failed":"Still failed after reload","health.check.plugin-compat":"Plugin compatibility","health.detail.plugin-compat.unavailable":"Plugin compatibility check unavailable (host loader is not exposed)","health.detail.plugin-compat.ok":"Scanned {total} plugins; no references to changed interfaces","plugin.compat.issue.broken":"{count} plugin(s) possibly incompatible","plugin.compat.issue.declared":"{count} plugin(s) with stale declarations only (not referenced in code)","plugin.compat.issue.unknown":"{count} plugin(s) could not be scanned","plugin.compat.declared":"Declares a removed interface but never references it in code — the official loader silently skips missing suppliers, so this is harmless today and only signals the author to clean up","plugin.compat.break.client-runtime":"Declares the removed client supplier @deepseek-ai/dsh-client-runtime (dropped from the official roster in 0.1.2-alpha.2; the browser half may fail to mount)","plugin.compat.break.sqlite-persistence":"Depends on the removed session persistence backend @deepseek-ai/dsh-session-persistence-sqlite (JSONL is the only official provider since 0.1.2-alpha.3)","plugin.compat.break.chat-hash":"References the old chat UI style prefix (Md3f7G_, migrated to EvIC1a_ since 0.1.2-alpha.2)","plugin.compat.break.stats-hash":"References the old status-line style prefix (FJxK0a_, migrated to -NDN2W_ since 0.1.2-alpha.2)","plugin.compat.break.time-hover-root":"Uses the removed attribute data-time-hover-root (replaced by data-turn-tail in 0.1.2-alpha.2)","plugin.compat.unknown.unresolved":"Package manifest could not be resolved","plugin.compat.unknown.missing-entry":"No scannable entry file found","plugin.compat.unknown.too-large":"Entry file exceeds the 4 MiB scan limit","tabs.overview":"Overview","tabs.notify":"Notifications","tabs.health":"Health","tabs.usage":"Models","tabs.quota":"Quota lookup","overview.container":"Process and runtime","overview.errors":"Errors","overview.status.normal":"All systems nominal","overview.status.info":"You have {count} note(s)","overview.status.warning":"You have {count} item(s) to review","overview.status.error":"You have {count} item(s) needing attention","overview.backupEmpty":"No backups yet — consider creating one","overview.updateAvailable":"A new version is available","overview.action.health":"Health check","tabs.backup":"Backup","tabs.restart":"Restart","tabs.maintenance":"Maintenance","tabs.configuration":"Configuration","tabs.features":"Features","tabs.notifications":"Notifications","maintenance.empty":"All maintenance pages are disabled. Enable backup, skills, subagents, or session management under “Configuration → Features”.","config.notificationsDisabled":"Task notifications are turned off on the Features page; these settings are shown for reference only until re-enabled.","features.group.runtime":"Runtime and observation","features.group.maintenance":"Maintenance","features.group.interaction":"Interaction","page.quota.desc":"Quota, balance, and reset times across providers; the ring follows the session provider and queries are host-throttled.","page.diagnostics.desc":"Health checks and runtime environment diagnostics.","page.configuration.desc":"Feature switches and task notification settings.","tabs.alert.title":"Service control alert","tabs.alert.body":"These areas need attention: {tabs}","tabs.alert.join":", ","tabs.alert.dot":"Alert on this tab","permissions.title":"File permissions","permissions.description":"Checks whether the Agent can read, write, and enter DSH_HOME and workspaces. Deep scans skip .git; repair adds only the needed permissions and keeps execute bits.","permissions.target":"Target owner: {owner}","permissions.repair":"Repair permissions","permissions.repairing":"Repairing…","permissions.confirm":"Confirm repair","permissions.confirmHint":"Skips .git, restores ownership to the current user, adds Agent read/write access, and keeps existing execute bits.","permissions.cancel":"Cancel","permissions.show":"Permissions & repair","permissions.hide":"Collapse","permissions.error":"Permission operation failed","permissions.summary.ok":"{count} root path(s) passed the check","permissions.summary.warning":"{count} root path(s) need attention","permissions.showDetails":"Show details","permissions.hideDetails":"Hide details","permissions.deep":"Deep check","permissions.deepChecking":"Scanning…","permissions.deepSummary":"Scanned {scanned} entries in {duration} ms; non-editable directories {directories}, non-editable files {files}, unreadable {unreadable}.","backup.title":"Backup management","backup.description":"Backs up sessions, config, and plugin profiles — no node_modules or credentials; never auto-pruned.","backup.create":"Create backup","backup.creating":"Creating…","backup.progress.copy":"Copying session data ({current}/{total})…","backup.progress.archive":"Packing archive ({current}/{total})…","backup.progress.validate":"Verifying archive ({current}/{total})…","backup.progress.publish":"Publishing backup ({current}/{total})…","backup.total":"Total size: {size}","backup.empty":"No backups yet.","backup.delete":"Delete","backup.confirm":"Confirm delete","backup.confirmHint":"Delete this backup? This cannot be undone.","backup.cancel":"Cancel","backup.error":"Backup operation failed","backup.export":"Export","backup.exporting":"Exporting…","backup.exportError":"Backup export failed","backup.restore":"Restore","backup.inspecting":"Inspecting…","backup.restoreConfirm":"Confirm restore","backup.restoreHint":"The integrity check passed. Confirm to apply the plan below; the host will recheck the archive and current targets immediately before committing.","backup.restoreError":"Backup restore failed","backup.integrity.ok":"Integrity check passed","backup.integrity.invalid":"Archive cannot be restored","backup.integrity.summary":"{entries} entries, {size} expanded; {sessions} session file(s), {config} config file(s), {profiles} profile manifest(s).","backup.plan.sessions":"The sessions directory will be replaced in full","backup.plan.config":"Replace {replace} config file(s), remove {remove}","backup.plan.profiles":"Replace package.json for {count} profile(s); keep node_modules and all other files","backup.plan.expires":"Restore plan expires at {time}","backup.manualRestartTitle":"Restore completed — manual restart required","backup.manualRestartBody":"The data is restored, but the current process is still running its old state. Press Ctrl+C in the terminal running dsh, then start dsh again.","backup.error.backup-gzip-invalid":"The archive is not a valid gzip file or is damaged.","backup.error.backup-tar-invalid":"The tar structure or checksum is invalid.","backup.error.backup-entry-traversal":"The archive contains an unsafe path traversal.","backup.error.backup-entry-absolute":"The archive contains an absolute path.","backup.error.backup-entry-link":"The archive contains a symbolic or hard link.","backup.error.backup-entry-type":"The archive contains an unsupported special entry.","backup.error.backup-entry-platform":"The archive contains a filename incompatible with another platform.","backup.error.backup-entry-unexpected":"The archive contains files outside the backup scope.","backup.error.backup-profile-invalid":"A profile package.json is invalid.","backup.error.backup-section-missing":"The archive is missing a required section.","backup.error.backup-size-limit":"The archive exceeds a safe size or entry limit.","backup.error.backup-archive-invalid":"The archive failed its integrity check.","backup.error.backup-source-changed":"A session is being written; the backup was not completed. Try again shortly.","backup.error.backup-source-unsafe":"The backup source contains a link or special file, so creation was refused.","backup.error.tar-failed":"The archive tool failed. Check that tar and gzip are available.","backup.error.active-work":"Running work was detected; restore is blocked for now.","backup.error.restore-plan-expired":"The restore plan expired. Inspect the backup again.","backup.error.restore-source-changed":"The backup changed before confirmation. Inspect it again.","backup.error.restore-target-changed":"Current data changed before confirmation. Inspect it again.","backup.error.restore-target-unsafe":"A restore target contains an unsafe link or special file.","backup.import":"Import backup","backup.importing":"Importing…","backup.showRecords":"Show backup records","backup.hideRecords":"Hide backup records","version.title":"Version information","version.current":"DSH: ","version.plugin":"dsh-service: ","version.loading":"Loading…","update.check":"Check for updates","update.checking":"Checking…","update.current":"Up to date","update.available":"New version: {version}","update.detailsButton":"View details","update.detailsHide":"Collapse","update.unavailable":"Latest version is temporarily unavailable","update.unpublished":"No published version is available to check","health.recheck":"Run again","update.badge":"DSH update","update.details.title":"DSH update available","update.details.current":"Current version: {version}","update.details.latest":"Latest version: {version}","update.channelStable":"Stable","update.channelPreview":"Preview","update.channelAlpha":"Alpha","update.details.close":"Close","update.upgrade":"Upgrade plugin","update.upgrading":"Upgrading…","update.upgradeError":"Plugin upgrade failed","update.upgradeErrorDetail":"Plugin upgrade failed ({detail})","update.upgradeSuccess":"Upgrade successful, restarting…","update.guardActiveWork":"Active sessions or background tasks are running; resolve them before upgrading","update.guardLinkInstall":"Installed via link: (development mode) — cannot one-click upgrade from the registry; update the source checkout and restart","update.guardFileInstall":"Installed via file: — cannot one-click upgrade from the registry","update.guardNoNewer":"The registry latest is not higher than the current version; refused a possible downgrade","update.guardNoProfile":"No profile with this plugin installed was found to target the upgrade at","update.guardAmbiguous":"Several profiles install this plugin and the loaded copy could not be determined; aborted","update.guardStale":"The command reported success but the installed version did not change (pnpm safety wait likely blocked it); keeping the current version without restarting","update.guardUnreadable":"The command succeeded but the installed version could not be confirmed; the restart was cancelled","update.failPnpmMissing":"pnpm was not found, so the upgrade cannot run; install pnpm first and retry","update.failNetwork":"A transient network failure occurred while fetching dependencies; please retry shortly","update.failFetchTimeout":"Download timed out (slow network or large package); please retry later","update.failReleaseAge":"The new release is blocked by pnpm's fresh-release safety wait; one automatic bypass retry also failed","update.failHoist":"This profile's node_modules was created by a different pnpm major; the rebuild retry also failed","update.failAddingToRoot":"pnpm refused to add at the workspace root (missing -w)","update.failNotWorkspace":"-w was passed but the profile is not a pnpm workspace","update.failIgnoredBuilds":"Dependency build scripts are blocked by pnpm by default, so the upgrade could not finish","env.kind.docker":"Docker container","env.kind.container":"Container (containerd/Kubernetes)","env.kind.systemd":"systemd service","env.kind.pm2":"pm2","env.kind.supervisord":"supervisord","env.kind.kubernetes":"Kubernetes","env.kind.declared":"External process manager (declared manually)","update.manualConfirmTitle":"Confirm before upgrading: manual launch suspected","update.manualConfirm":"No process manager detected. DSH will not restart automatically after the upgrade.","update.manualProceed":"Upgrade anyway","update.manualRestartTitle":"Upgrade finished — manual restart required","update.manualRestartBody":"The new version is installed, but the current process still runs the old one. Press Ctrl+C in the terminal running dsh (or simply close the window), then start dsh again.","restart.title":"Service restart","restart.description":"Restarts the dsh web process. Running work is interrupted; persisted sessions recover.","restart.button":"Restart dsh web","restart.sending":"Sending…","restart.confirm":"Confirm restart","restart.force":"Force restart","restart.cancel":"Cancel","restart.sent":"Restart request sent.","restart.sentHint":"The connection will close shortly. The page will reload automatically after recovery.","restart.idleHint":"No active work was detected. Confirm to disconnect and wait for the service to restart.","restart.manualWarn":"This looks like a manual terminal launch: once confirmed the process exits and nothing restarts it — you must run dsh again yourself.","restart.sentManualHint":"Manual start detected — the service will not relaunch itself. Rerun dsh in the original terminal, then refresh.","restart.navToggle":'Show "Restart" entry in settings left nav',"restart.navToggleHint":"Off by default; when enabled, a quick-restart entry appears at the bottom of the settings left navigation","activity.agent":"Agent","activity.job":"Background job","activity.terminal":"Terminal","activity.warning":"Detected {count} active items; restart interrupts them.","activity.item":"{type}: {label} ({status})","error.update":"Update check failed","error.activity":"Could not check active work","error.restart":"Restart failed","error.instance":"Restart response is missing the process instance ID","usage.title":"Model usage","usage.structure":"token structure","usage.structureHint":"Input, output, and cache token by date.","usage.tooltip.date":"Date: {date}","usage.tooltip.input":"Input {value} token","usage.tooltip.output":"Output {value} token","usage.tooltip.cache":"Cache hit {value} token","usage.axis":"token vertical axis","usage.models.more":"Show {count} more models","usage.models.less":"Collapse model list","usage.modelScope.today":"Today","usage.modelScope.week":"Last 7 days","usage.modelScope.all":"All time","usage.modelSortHint.today":"Sorted by tokens used today, largest first","usage.modelSortHint.week":"Sorted by tokens in the last 7 days, largest first","usage.modelSortHint.all":"Sorted by all-time tokens, largest first","usage.modelBar.today":"{model}: {total} tokens today","usage.modelBar.week":"{model}: {total} tokens in the last 7 days","usage.modelBar.all":"{model}: {total} tokens in total","usage.refresh":"Refresh usage","usage.refreshing":"Refreshing…","usage.empty":"No usage index yet. Select Refresh usage to build the read-only index.","usage.error":"Could not read model usage","usage.allProjects":"All projects","usage.chartSummary":"Total usage over seven days: {total} tokens","usage.barDay":"{day} total {total} tokens","usage.total":"Total tokens","usage.steps":"Successful model steps","usage.stepsValue":"{count} times","usage.modelLine":"{steps} times · Cache hit {hitRate} · Input {input} token · Output {output} token","usage.input":"Input token","usage.output":"Output token","usage.cache":"Cache token","usage.hitRate":"Cache hit rate","usage.today":"Today","usage.sevenDays":"Last 7 days","usage.errors.title":"Model errors","usage.errors.toggle":"Model errors ({count} types)","usage.errors.recent":"Last 24 hours","usage.errors.empty":"No model errors were recorded in the last 24 hours.","usage.toolErrors.title":"Tool errors","usage.toolErrors.toggle":"Tool errors ({count} types)","usage.toolErrors.empty":"No tool errors were recorded in the last 24 hours.","usage.errors.count":"{count} occurrence(s)","notification.title":"Notifications","notification.description":"Browser notifications when a root task finishes or approval/choice is needed; subagent completion stays silent.","notification.enable":"Enable notifications","notification.enabled":"Notifications enabled","notification.disable":"Disable notifications","notification.denied":"Notification permission denied","notification.master":"Master switch","notification.done":"Task completion","notification.input":"Approvals & questions","notification.doneTitle":"Task complete","notification.doneBody":"{title} has finished its turn","notification.inputTitle":"Your attention needed","notification.inputBody":"{title} — {kind}","notification.kind.approval":"approval requested","notification.kind.plan-review":"plan review requested","notification.kind.question":"answer requested","notification.bellOn":"Notifications on","notification.bellOff":"Notifications off","notification.bellShow":"Show composer bell icon","quota.cardTitle":"Quota lookup","quota.navToggle":'Show "Quota lookup" entry in settings left nav',"quota.navToggleHint":'Off by default; when enabled, a "Quota lookup" entry appears at the bottom of the settings left navigation',"quota.poll":"Auto query","quota.poll.manual":"Manual only","quota.poll.minute":"{count} min","quota.window.rolling":"5h rolling","quota.window.tokens-limit-u3-n5":"5-hour tokens","quota.window.tokens-limit-u6-n1":"Weekly tokens","quota.window.tokens-limit":"Token quota","quota.window.time-limit-u5-n1":"MCP quota","quota.window.time-limit":"MCP quota","quota.window.credit-limit":"Credit quota","quota.window.credits":"Credits used","quota.window.balance":"Balance","quota.window.weekly":"This week","quota.window.monthly":"This month","quota.window.codex-5h":"Codex 5-hour window","quota.window.codex-day":"Codex daily window","quota.window.codex-week":"Codex weekly window","quota.window.codex-month":"Codex monthly window","quota.window.gemini-5h":"Gemini 5-hour window","quota.window.gemini-week":"Gemini weekly window","quota.window.claude-5h":"Claude 5-hour window","quota.window.claude-week":"Claude weekly window","quota.panel.title":"Quota usage","quota.panel.used":"Used","quota.panel.remaining":"Remaining","quota.ring.label":"Quota lookup","quota.filter.showAll":"Show all quotas ({count})","quota.filter.currentOnly":"Current model only","quota.updated":"Updated {time}","quota.refreshing":"Refreshing…","quota.empty":"No data yet","quota.resetIn":"Resets in {time}","quota.resetCard.title":"Reset card","quota.resetCard.expires":"expires {date}","quota.resetCard.expired":"expired","quota.resetCard.edit":"Add reset card","quota.advanced":"Advanced","quota.resetCard.dateLabel":"Expiry date","quota.resetCard.nameLabel":"Name (optional)","quota.resetCard.add":"Add","quota.resetCard.cancel":"Cancel","quota.resetCard.remove":"Remove","quota.retryAt":"Retry allowed after {time}","quota.refresh":"Refresh","quota.card.moveUp":"Move up","quota.card.moveDown":"Move down","quota.reorder":"Reorder","quota.usageLink":"Open the official usage page","quota.adapt":"Adapt","quota.kind.opencode-go":"OpenCode Go","quota.kind.zai-coding-cn":"Zhipu GLM Coding Plan","quota.kind.openrouter":"OpenRouter","quota.kind.kimi":"Kimi / Moonshot","quota.kind.siliconflow":"SiliconFlow","quota.kind.cliproxy":"CLIProxyAPI accounts","quota.kind.deepseek":"DeepSeek Platform","quota.kind.stepfun":"StepFun Balance","quota.kind.stepfun-step-plan":"StepFun Step Plan","quota.kind.xiaomi-token-plan-cn":"Xiaomi MiMo Token Plan","quota.window.total_token":"Plan total quota","quota.window.compensation_total_token":"Compensation credits","quota.window.plan-name":"Subscription plan","quota.window.credit-pool":"Monthly credit pool","quota.window.topup-credit":"Top-up credit","quota.window.five-hour":"5-hour quota","quota.error.no-subscription":"No active quota subscription on this account","quota.error.credential-rejected":"Console session expired; copy it from the browser again","quota.credential.editCookie":"Set console cookie (web session)","quota.credential.editToken":"Set console token (Oasis-Token, browser session)","quota.kindAuto":"Auto-detected","quota.noAdapted":"No adapted providers yet — adapt manually below","quota.disable":"Disable","quota.followAuto":"Follow auto-detect","quota.addAdapt":"Manual adapt:","quota.addPickProvider":"Pick provider","quota.addPickKind":"Pick type","quota.saveFailed":"Save failed: {error}","quota.unknownProvider":"Unknown provider","quota.error.credential-missing":"Credential missing (set the API key in DSH credentials)","quota.error.no-base-url":"This provider has no baseURL configured","quota.error.credentials-unavailable":"Credential service unavailable","quota.error.http-status":"Upstream returned an error status","quota.error.network":"Network error","quota.error.network-transient":"Unstable network (auto-retried)","quota.error.timeout":"Request timed out","quota.error.bad-payload":"Unexpected response format","quota.error.mgmt-disabled":"CLIProxyAPI management API disabled (remote-management secret-key not set)","quota.error.host-not-pinned":"baseURL differs from the domain recorded when adapting; save the adapter again","quota.error.upstream-status":"Upstream official API returned an error status","quota.credential.edit":"Set API credential","quota.credential.editManagement":"Set management key (web login key)","quota.credential.nameLabel":"Credential name","quota.credential.valueLabel":"Secret value","quota.credential.save":"Save","quota.credential.primary":"primary (one alias is enough)","quota.credential.clear":"Clear stored","quota.credential.clearConfirm":"Click again to clear","quota.credential.configured":"configured","quota.credential.notConfigured":"not set","quota.credential.saveFailed":"Failed to save credential: {error}","quota.credential.unknown-hint":"Unknown credential name","quota.credential.invalid-value":"Secret value must not be empty","quota.credential.credentials-unavailable":"Credential service unavailable","quota.error.unknown":"Unknown error","quota.unadapted":"Not adapted: pick a provider kind below first","quota.unit.day":"{count} d","quota.unit.hour":"{count} h","quota.unit.minute":"{count} min","quota.window.granted-balance":"Granted balance (unexpired)","quota.peak.nowIdle":"Off-peak now · half price","quota.peak.nowPeak":"Peak now · standard price","quota.peak.untilIdle":"Half price from {time} (in {dur})","quota.peak.untilPeak":"Peak pricing from {time} (in {dur})","quota.peak.tag.peak":"Peak","quota.peak.tag.idle":"Off-peak","quota.peak.caption":"Off-peak price is half the peak price. Peak hours (GMT+8): Mon–Fri 09:00–12:00 and 14:00–18:00. All other times are off-peak, including all day Saturday and Sunday.","quota.peak.caption.zai":"Off-peak calls deduct 50% of the base credits. Peak hours: Mon–Fri 14:00–18:00 (UTC+8). All other times are off-peak, including all day Saturday and Sunday."},l="%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2724%27 height=%2724%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E",o="%3C/svg%3E",d=e=>'-webkit-mask:url("data:image/svg+xml,'+l+e+o+'") center/contain no-repeat;mask:url("data:image/svg+xml,'+l+e+o+'") center/contain no-repeat',c={service:[["path",{d:"M4 8h16"}],["path",{d:"M4 16h16"}],["circle",{cx:"9",cy:"8",r:"2.5",fill:"black"}],["circle",{cx:"15",cy:"16",r:"2.5",fill:"black"}]],overview:[["rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}],["rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}],["rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}],["rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"}]],notify:[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0"}],["path",{d:"M16.8607 4.4824A6 6 0 0 0 6 8C6 12.499 4.589 13.956 3.262 15.326"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17H20A1 1 0 0 0 20.74 15.327C20.209 14.779 19.665 14.218 19.203 13.454"}]],health:[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"m9 12 2 2 4-4"}]],usage:[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16"}],["path",{d:"M18 17V9"}],["path",{d:"M13 17V5"}],["path",{d:"M8 17v-3"}]],quota:[["path",{d:"m12 14 4-4"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0"}]],backup:[["rect",{x:"2",y:"3",width:"20",height:"5",rx:"1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8"}],["path",{d:"M10 12h4"}]],skills:[["path",{d:"M4 19.5A2.5 2.5 0 0 1 6.5 17H20"}],["path",{d:"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"}]],subagent:[["path",{d:"M12 8V4H8"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2"}],["path",{d:"M2 14h2"}],["path",{d:"M20 14h2"}],["path",{d:"M15 13v2"}],["path",{d:"M9 13v2"}]],sessions:[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"}],["path",{d:"m9 10 2 2 4-4"}]],restart:[["path",{d:"M12 2v10"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04"}]],maintenance:[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"}]],configuration:[["path",{d:"M20 7h-9"}],["path",{d:"M14 17H5"}],["circle",{cx:"17",cy:"17",r:"3"}],["circle",{cx:"7",cy:"7",r:"3"}]]},u=e=>e.map(([e,t])=>"%3C"+e+Object.entries(t).map(([e,t])=>` ${e}=%27${t}%27`).join("")+"/%3E").join(""),p=u(c.service),m=u(c.quota),g=u(c.restart),h=u(c.sessions);function b({name:e}){const t=c[e];return void 0===t?null:r.createElement("svg",{viewBox:"0 0 24 24",width:13,height:13,fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",style:{flexShrink:0,display:"block"}},t.map(([e,t],a)=>r.createElement(e,Object.assign({key:a},t))))}function v(e){const t=e?.turn?.data?.get?.("turn-process");if("string"!=typeof t)return null;const a=t.split("|");if(""===a[0])return null;const r=Number(a[0]),s=Number(a[8]);return!Number.isFinite(r)||!Number.isFinite(s)||s<=0?null:{turn:r,subagentCount:s}}function f(e){if(!Array.isArray(e))return[];const t=[],a=new Map;for(const r of e){if(null===r||"object"!=typeof r)continue;const e="string"==typeof r.provider&&""!==r.provider?r.provider:void 0,s="string"==typeof r.model&&""!==r.model?r.model:void 0;if(void 0===e||void 0===s)continue;const n="string"==typeof r.reasoningEffort&&""!==r.reasoningEffort?r.reasoningEffort:void 0,i=e+"\0"+s+"\0"+(n??"");let l=a.get(i);void 0===l&&(l={provider:e,model:s,...void 0!==n?{reasoningEffort:n}:{},count:0},a.set(i,l),t.push(l)),l.count+=1}return t}function y(e){return(Array.isArray(e)?e:[]).map(e=>{if(null===e||"object"!=typeof e)return"";const t="string"==typeof e.provider?e.provider:"",a="string"==typeof e.model?e.model:"",r="string"==typeof e.reasoningEffort&&""!==e.reasoningEffort?e.reasoningEffort:void 0;return`${t}/${a}${void 0!==r?` (${r})`:""}${Number.isFinite(e.count)&&e.count>1?` ×${e.count}`:""}`}).filter(e=>""!==e).join(" · ")}return a.inject=["slots","connection","timer","locale","sessions","settingsScope"],a.apply=function(t){const{useState:a,useEffect:l,useRef:o}=r,c=(e,a)=>Promise.resolve(t.connection.rpc.call("/dsh-service",e,a)),u=new Map,k=new Map,x=new Map,w=(e,t=!1)=>{if("string"!=typeof e||""===e)return Promise.resolve(new Map);const a=Date.now();if(!t&&a-(k.get(e)??0)<1e4)return Promise.resolve((e=>{const t=u.get(e);return void 0===t?new Map:t.byTurn})(e));let r=x.get(e);return void 0===r&&(r=c("subagent-dispatches",{parentId:e,limit:400}).then(t=>{const a=t&&!0===t.ok&&Array.isArray(t.value?.records)?t.value.records:[],r=new Map,s=[];for(const e of a){if(null===e||"object"!=typeof e)continue;s.push(e);const t="number"==typeof e.turn&&Number.isFinite(e.turn)?e.turn:void 0;if(void 0===t)continue;let a=r.get(t);void 0===a&&(a=[],r.set(t,a)),a.push(e)}return u.set(e,{byTurn:r,records:s}),k.set(e,Date.now()),r}).catch(()=>(k.set(e,Date.now()),null)),x.set(e,r),r.finally(()=>x.delete(e)).catch(()=>{})),r};function E(e){const t=j(),[s,n]=a("");return l(()=>{let a=!1;const r=e.matched&&"number"==typeof e.matched.turn?e.matched.turn:void 0,s="string"==typeof e.sessionId?e.sessionId:void 0;if(void 0!==r&&void 0!==s)return w(s).then(i=>{if(a)return;const l=u.get(s),o=(null===i?void 0===l?new Map:l.byTurn:i).get(r),d=f(o);if(0===d.length){if(null===i&&void 0===l)return void n("");const a=Number.isFinite(e.matched.subagentCount)&&e.matched.subagentCount>0?String(e.matched.subagentCount):String(o?.length??1);return void n(`${t("1"===a?"subagent.turnTail.countOne":"subagent.turnTail.countMany",{count:a})}${t("subagent.turnTail.unknown")}`)}n(`${t("subagent.turnTail.label")}${y(d)}`)}).catch(()=>{a||n("")}),()=>{a=!0};n("")},[e.matched&&e.matched.turn,e.sessionId]),""===s?null:r.createElement("div",{"data-testid":"subagent-models-turn-tail","data-dsh-service-subagent-models":!0,style:{fontSize:"12px",lineHeight:"18px",color:"var(--dsh-svc-text-muted, var(--dsw-alias-label-secondary, #6b7280))",padding:"2px 0",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"}},s)}function S(e){const s=j(),[n,i]=a("");return l(()=>{let a=!1;const r="string"==typeof e.sessionId?e.sessionId:void 0;if(void 0===r)return void i("");const n=()=>{const e=u.get(r),t=f(void 0===e?[]:e.records);i(0===t.length?"":`${s("subagent.turnTail.label")}${y(t)}`)},l=()=>w(r).then(e=>!a&&(n(),null!==e)).catch(()=>(a||i(""),!1));l();const o=()=>{a||(w(r,!0).then(e=>{a||n()}).catch(()=>{a||i("")}),d=t.timer?.timeout?.(o,2e4))};let d;return Promise.resolve(l()).then(e=>{!a&&e&&(d=t.timer?.timeout?.(o,2e4))}),()=>{a=!0,"function"==typeof d&&d()}},[e.sessionId]),""===n?null:r.createElement("div",{"data-testid":"subagent-models-dock","data-dsh-service-subagent-models-dock":!0,style:{fontSize:"12px",lineHeight:"18px",color:"var(--dsh-svc-text-muted, var(--dsw-alias-label-secondary, #6b7280))",padding:"2px 4px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"}},n)}let q;"undefined"!=typeof document&&document.head&&(q=document.createElement("style"),q.textContent=["body{--dsh-svc-page-bg:#f4f5f7;--dsh-svc-content-bg:var(--dsw-alias-bg-layer-2,#ffffff);--dsh-svc-raised-bg:var(--dsw-alias-bg-layer-3,#ffffff);--dsh-svc-text:var(--dsw-alias-label-primary,#202124);--dsh-svc-text-muted:var(--dsw-alias-label-secondary,#6b7280);--dsh-svc-border:var(--dsw-alias-border-l1,#e5e7eb);--dsh-svc-brand:var(--dsw-alias-brand-primary,#2563eb);--dsh-svc-brand-text:var(--dsw-alias-label-primary-foreground,#ffffff);--dsh-svc-info:#2563eb;--dsh-svc-success:var(--dsw-alias-state-success-primary,#16a34a);--dsh-svc-warning:var(--dsw-alias-state-warn-primary,#d97706);--dsh-svc-danger:var(--dsw-alias-state-error-primary,#dc2626)}","body{--dsh-svc-card-bg:#eceef1}","body{--dsh-svc-border-strong:#b9c0ca}","body[data-ds-dark-theme]{--dsh-svc-border-strong:#52565f}","body[data-ds-dark-theme]{--dsh-svc-card-bg:var(--dsw-alias-bg-layer-2,#202126)}","body[data-ds-dark-theme]{--dsh-svc-page-bg:var(--dsw-alias-bg-layer-1,#17181c);--dsh-svc-content-bg:var(--dsw-alias-bg-layer-2,#202126);--dsh-svc-raised-bg:var(--dsw-alias-bg-layer-3,#292a31);--dsh-svc-text:var(--dsw-alias-label-primary,#f3f4f6);--dsh-svc-text-muted:var(--dsw-alias-label-secondary,#a1a1aa);--dsh-svc-border:var(--dsw-alias-border-l1,#3f414a)}","body[data-ds-dark-theme]{--dsh-svc-brand-text:#111318}",":root{--dsh-svc-space-1:4px;--dsh-svc-space-2:8px;--dsh-svc-space-3:12px;--dsh-svc-space-4:16px;--dsh-svc-space-5:20px;--dsh-svc-space-6:24px;--dsh-svc-space-8:32px;--dsh-svc-radius-control:8px;--dsh-svc-radius-card:12px;--dsh-svc-radius-panel:16px;--dsh-svc-radius-pill:999px;--dsh-svc-control-h:36px;--dsh-svc-control-h-compact:32px;--dsh-svc-control-h-primary:40px;--dsh-svc-content-max:800px;--dsh-svc-dur-fast:120ms;--dsh-svc-dur-view:170ms;--dsh-svc-font-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}","body{--dsh-svc-surface-bg:var(--dsh-svc-card-bg);--dsh-svc-tab-active-bg:var(--dsh-svc-text);--dsh-svc-tab-active-danger:var(--dsh-svc-text);--dsh-svc-tab-active-text:#ffffff}","body[data-ds-dark-theme]{--dsh-svc-tab-active-text:#111318}","[data-dsh-service-nav]>svg:first-child,[data-dsh-service-quota-nav]>svg:first-child,[data-dsh-service-restart-nav]>svg:first-child,[data-dsh-service-sessions-nav]>svg:first-child{display:none}","[data-dsh-service-nav]::before,[data-dsh-service-quota-nav]::before,[data-dsh-service-restart-nav]::before,[data-dsh-service-sessions-nav]::before{content:'';flex:none;width:16px;height:16px;background:currentColor}","[data-dsh-service-nav]::before{"+d(p)+"}","[data-dsh-service-quota-nav]::before{"+d(m)+"}","[data-dsh-service-sessions-nav]::before{"+d(h)+"}","[data-dsh-service-restart-nav]::before{"+d(g)+"}","@media (max-width:640px){","[data-dshsvc-root] .dshsvc-tabs{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:3px}","[data-dshsvc-root] .dshsvc-tabs::-webkit-scrollbar{display:none}","[data-dshsvc-root] .dshsvc-tab{padding:9px 13px;min-height:36px;box-sizing:border-box;font-size:13px;white-space:nowrap;flex:none}","[data-dshsvc-root] .dshsvc-tab svg{flex:none}","}","@keyframes dshsv-locate-flash{0%,100%{background-color:rgba(198,128,0,0.10)}30%,70%{background-color:rgba(198,128,0,0.45)}}.dshsv-locate-flash{animation:dshsv-locate-flash 2s ease}","[data-dshsvc-root]{color:var(--dsh-svc-text);font-size:14px;line-height:1.55;background:var(--dsh-svc-page-bg);border-radius:var(--dsh-svc-radius-card);padding:2px}","[data-dshsvc-root] .dshsvc-page{width:100%;max-width:var(--dsh-svc-content-max);margin:0 auto}",'[data-dshsvc-root] button:focus-visible,[data-dshsvc-root] [role="switch"]:focus-visible,[data-dshsvc-root] select:focus-visible,[data-dshsvc-root] input:focus-visible{outline:2px solid var(--dsh-svc-brand);outline-offset:2px;border-radius:var(--dsh-svc-radius-control)}',"@media (prefers-reduced-motion:reduce){[data-dshsvc-root] *,[data-dshsvc-root] *::before,[data-dshsvc-root] *::after{transition-duration:0.01ms !important;animation-duration:0.01ms !important}}",'[data-testid^="sessions-project-header-"]{transition:background var(--dsh-svc-dur-fast,120ms)}','[data-testid^="sessions-project-header-"]:hover{background:var(--dsw-alias-bg-layer-3,#f2f3f5)}',"[data-dshsvc-root] .dshsvc-tabs{display:flex;align-items:center;flex-wrap:wrap;gap:2px;width:100%;box-sizing:border-box;border:0.5px solid var(--dsh-svc-border);border-radius:var(--dsh-svc-radius-card);overflow:hidden}","[data-dshsvc-root] .dshsvc-tab{position:relative;display:inline-flex;align-items:center;gap:5px;padding:8px 12px;margin:0;border:0;border-radius:0;background:transparent;color:var(--dsh-svc-text-muted);font:inherit;font-size:12px;font-weight:550;line-height:16px;cursor:pointer;transition:color var(--dsh-svc-dur-fast) ease,background var(--dsh-svc-dur-fast) ease}",'[data-dshsvc-root] .dshsvc-tab[aria-selected="true"]{background:var(--dsh-svc-tab-active-bg);color:var(--dsh-svc-tab-active-text);font-weight:650;border-radius:8px}',"[data-dshsvc-root] .dshsvc-subtabs{display:flex;flex-wrap:wrap;gap:2px;margin:10px 0 0;border-bottom:1px solid var(--dsh-svc-border)}","[data-dshsvc-root] .dshsvc-subtab{appearance:none;background:transparent;border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 10px;font:inherit;font-size:13px;font-weight:550;color:var(--dsh-svc-text-muted);cursor:pointer;transition:color var(--dsh-svc-dur-fast) ease,border-color var(--dsh-svc-dur-fast) ease}",'[data-dshsvc-root] .dshsvc-subtab[aria-selected="true"]{color:var(--dsh-svc-brand);border-bottom-color:var(--dsh-svc-brand);font-weight:700}',"[data-dshsvc-root] .dshsvc-page-header{margin:14px 2px 2px}","[data-dshsvc-root] .dshsvc-page-header-row{display:flex;align-items:center;justify-content:space-between;gap:var(--dsh-svc-space-3);flex-wrap:wrap}"].join(""),document.head.appendChild(q)),t.effect(()=>()=>{q&&q.remove()},"dsh-service theme styles"),t.effect(()=>t.locale.register(s,{zh:n,en:i}),"dsh-service dictionaries");const C=t.locale.bind(s),T=()=>"zh"===t.locale?.getSnapshot?.()?.active?"zh":"en",A=(e,t={})=>{const a=Number(e);return Number.isFinite(a)?!0===t.billions&&a>=1e9?Math.round(a/1e8)/10+"B":a>=1e6?Math.round(a/1e5)/10+"M":a>=1e3?Math.round(a/100)/10+"K":a.toLocaleString():t.invalid??""},I={healthDiagnostics:!0,modelUsage:!0,quotaLookup:!0,backupMaintenance:!0,taskNotifications:!0,healthz:!0,skillManager:!0,subagentRoute:!0,subagentModelsDock:!0,mobileAdaptation:!1,sessionManager:!0},R=t.settingsScope.bind({namespace:s}),z=()=>R.getSnapshot(),M=e=>!1!==Object.assign({},I,z().value||{})[e],O=()=>{const[e,t]=r.useState(z());return r.useEffect(()=>R.subscribe(()=>t(z())),[]),{snapshot:e,value:Object.assign({},I,e.value||{})}};t.effect(()=>function(e){if("undefined"==typeof document||!document.body)return()=>{};let t=!1,a=null,r=null,s=null;const n=()=>{t||null!==a||("function"==typeof requestAnimationFrame?a=requestAnimationFrame(()=>{a=null,i()}):i())},i=()=>{if(t)return;const a="function"==typeof document.querySelector?document.querySelector('[role="dialog"] nav'):null;if(a!==r&&(null!==s&&s.disconnect(),s=null,r=a,null!==r&&(s=new MutationObserver(n),s.observe(r,{childList:!0,subtree:!0,characterData:!0}))),null===r)return;const i="function"==typeof r.querySelectorAll?r.querySelectorAll("button"):document.querySelectorAll('[role="dialog"] nav button');for(const t of i){const a=(t.textContent||"").trim();for(const r of e){const e=String(r.label()||"").trim();e&&a===e?t.setAttribute(r.attr,""):t.removeAttribute(r.attr)}}};i();const l=new MutationObserver(n);return l.observe(document.body,{childList:!0,subtree:!0}),()=>{t=!0,l.disconnect(),null!==s&&s.disconnect(),s=null,r=null,null!==a&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(a),a=null;for(const t of e)for(const e of document.querySelectorAll("["+t.attr+"]"))e.removeAttribute(t.attr)}}([{attr:"data-dsh-service-nav",label:()=>C("nav.label")},{attr:"data-dsh-service-quota-nav",label:()=>C("tabs.quota")},{attr:"data-dsh-service-restart-nav",label:()=>C("nav.restart")},{attr:"data-dsh-service-sessions-nav",label:()=>C("tabs.sessions")}]),"dsh-service settings nav icons");const j=()=>{const[,e]=a(t.locale.getSnapshot());return l(()=>t.locale.subscribe(()=>e(t.locale.getSnapshot())),[]),C},H={minHeight:"var(--dsh-svc-control-h, 36px)",padding:"6px 14px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid transparent",cursor:"pointer",fontSize:"13px",fontWeight:550,transition:"border-color 120ms ease, color 120ms ease, background 120ms ease",lineHeight:"20px"},D=e=>"primary"===e?{...H,background:"var(--dsh-svc-brand)",borderColor:"var(--dsh-svc-brand)",color:"var(--dsh-svc-brand-text)"}:"danger"===e?{...H,background:"var(--dsh-svc-danger)",borderColor:"var(--dsh-svc-danger)",color:"var(--dsh-svc-brand-text)"}:"dangerGhost"===e?{...H,background:"transparent",color:"var(--dsh-svc-danger)",borderColor:"var(--dsh-svc-danger)"}:"brandGhost"===e?{...H,background:"transparent",color:"var(--dsh-svc-brand)",borderColor:"var(--dsh-svc-brand)"}:"ghost"===e?{...H,background:"transparent",color:"var(--dsh-svc-text)",borderColor:"var(--dsh-svc-border-strong)"}:"neutral"===e?{...H,background:"var(--dsh-svc-page-bg)",color:"var(--dsh-svc-text)",borderColor:"var(--dsh-svc-border-strong)"}:{...H,background:"var(--dsh-svc-content-bg)",color:"var(--dsh-svc-text)",borderColor:"var(--dsh-svc-border-strong)"},N=e=>Object.assign({},H,{background:"transparent",color:"var(--dsh-svc-text)",borderColor:"var(--dsh-svc-border-strong)",minHeight:"28px",padding:"4px 10px",fontSize:"12px",borderRadius:"var(--dsh-svc-radius-control)"},e),L=(e,t)=>Object.assign({display:"inline-flex",alignItems:"center",flex:"none",fontSize:"10px",lineHeight:"16px",padding:"1px 6px",borderRadius:999,whiteSpace:"nowrap",...{success:{background:"rgba(16,185,129,0.16)",color:"var(--dsh-svc-success)"},warning:{background:"rgba(198,128,0,0.14)",color:"var(--dsh-svc-warning)"},danger:{background:"rgba(220,38,38,0.12)",color:"var(--dsh-svc-danger)"},info:{background:"rgba(37,99,235,0.10)",color:"var(--dsh-svc-info)"},neutral:{background:"var(--dsh-svc-page-bg)",color:"var(--dsh-svc-text-muted)"}}[e]||{}},t),$=e=>Object.assign({background:"var(--dsh-svc-surface-bg)",color:"var(--dsh-svc-text)",border:"1px solid var(--dsh-svc-border)",borderRadius:"var(--dsh-svc-radius-control)",padding:"10px"},e),W=["overview","usage","quota","diagnostics","maintenance","configuration"],B={overview:"tabs.overview",usage:"tabs.usage",quota:"tabs.quota",diagnostics:"tabs.health",maintenance:"tabs.maintenance",configuration:"tabs.configuration"},F={usage:"modelUsage",quota:"quotaLookup",diagnostics:"healthDiagnostics"},P=["sessions","skills","subagent","backup","restart"],_={sessions:"tabs.sessions",skills:"tabs.skills",subagent:"tabs.subagent",backup:"tabs.backup",restart:"tabs.restart"},U={sessions:"sessionManager",skills:"skillManager",subagent:"subagentRoute",backup:"backupMaintenance"},V=e=>P.filter(t=>void 0===U[t]||!1!==e[U[t]]).map(e=>({id:e,labelKey:_[e]})),K=(e,t)=>{const a=V(t);return 0===a.length?null:a.some(t=>t.id===e)?e:a[0].id},G=[{id:"features",labelKey:"tabs.features"},{id:"notifications",labelKey:"tabs.notifications"}],Y={quota:"page.quota.desc",diagnostics:"page.diagnostics.desc",configuration:"page.configuration.desc"};function J({title:e,description:t,action:a,secondary:s}){return r.createElement("header",{"data-testid":"svc-page-header",className:"dshsvc-page-header"},r.createElement("div",{className:"dshsvc-page-header-row"},r.createElement("h2",{className:"dshsvc-page-title",style:{margin:0,fontSize:"18px",fontWeight:700,lineHeight:1.4,color:"var(--dsh-svc-text)"}},e),null!=a?a:null,null!=s?r.createElement("div",{className:"dshsvc-page-secondary",style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},s):null),t?r.createElement("p",{className:"dshsvc-page-desc",style:{margin:"2px 0 0",fontSize:"12px",color:"var(--dsh-svc-text-muted)",lineHeight:1.5}},t):null)}function Q({items:e,activeId:t,onChange:a,testIdPrefix:s,variant:n,dotLabel:i,ariaLabel:l}){const o="sub"===n;return r.createElement("div",{role:"tablist","aria-label":l,className:o?"dshsvc-subtabs":"dshsvc-tabs","data-testid":s+"-list"},e.map(e=>{const n=e.id===t,l=o?n?{color:"var(--dsh-svc-brand)",borderBottom:"2px solid var(--dsh-svc-brand)",fontWeight:700}:null:n?{background:"var(--dsh-svc-tab-active-bg)",color:"var(--dsh-svc-tab-active-text)",fontWeight:650,borderRadius:"8px"}:null;return r.createElement("button",{key:e.id,type:"button",role:"tab","aria-selected":String(n),"data-testid":s+"-"+e.id,className:o?"dshsvc-subtab":"dshsvc-tab",style:l,onClick:()=>a(e.id)},void 0!==e.icon?r.createElement(b,{name:e.icon}):null,e.label,e.warning?r.createElement("span",{"data-testid":"tab-dot-"+e.id,"aria-label":i,style:{position:"absolute",top:"-3px",right:"-3px",width:"8px",height:"8px",borderRadius:"50%",background:"var(--dsw-alias-state-warn-primary)",boxShadow:"0 0 0 2px var(--dsw-alias-bg-layer-1)"}}):null,e.badge?r.createElement("span",{"data-testid":e.badge.testid,style:{position:"absolute",top:"-7px",right:"-10px",fontSize:"9px",lineHeight:"14px",padding:"0 4px",borderRadius:"999px",background:"var(--dsw-alias-state-warn-primary)",color:"var(--dsh-svc-brand-text)",fontWeight:700}},e.badge.text):null)}))}let X=!1,Z=!0,ee=!0,te=!0;try{X="true"===localStorage.getItem("dsh-service-notify")}catch(e){}try{Z="false"!==localStorage.getItem("dsh-service-notify-done")}catch(e){}try{ee="false"!==localStorage.getItem("dsh-service-notify-input")}catch(e){}try{te="false"!==localStorage.getItem("dsh-service-notify-bell")}catch(e){}const ae=new Set,re=new Set,se=(e,t)=>{try{localStorage.setItem(e,t?"true":"false")}catch(e){}},ne=()=>{for(const e of ae)e()},ie=e=>{te=!0===e,se("dsh-service-notify-bell",te),(()=>{for(const e of re)e()})()},le=()=>{const[,e]=a(0),[t,s]=a(X),[n,i]=a(Z),[l,o]=a(ee),[d,c]=a(te);return r.useEffect(()=>{const t=()=>{s(X),i(Z),o(ee),c(te),e(e=>e+1)};return ae.add(t),re.add(t),()=>{ae.delete(t),re.delete(t)}},[]),{enabled:t,done:n,input:l,bell:d,setEnabled:e=>{return X=t=e,se("dsh-service-notify",t),void ne();var t},setDone:e=>{return Z=t=e,se("dsh-service-notify-done",t),void ne();var t},setInput:e=>{return ee=t=e,se("dsh-service-notify-input",t),void ne();var t},setBell:ie}},oe=({storageKey:e,legacyStorageKey:r,sectionId:s,order:n,labelKey:i,feature:o,renderContent:d})=>{let c=!1;try{let t=localStorage.getItem(e);if(null===t&&void 0!==r){const a=localStorage.getItem(r);if(null!==a){try{localStorage.setItem(e,a)}catch(e){}t=a}}c="true"===t}catch(e){}let u=null;const p=new Set,m=()=>{u&&(u(),u=null),c&&(void 0===o||M(o))&&(u=t.slots.register({name:"settings.section",id:s,order:n,label:()=>C(i)},d))},g=t=>{c=!0===t;try{localStorage.setItem(e,c?"true":"false")}catch(e){}m();for(const e of p)e()};return{sync:m,setEnabled:g,useEnabled:()=>{const[e,t]=a(c);return l(()=>{const e=()=>t(c);return p.add(e),t(c),()=>p.delete(e)},[]),[e,g]},disposeEntry:()=>{u&&(u(),u=null)}}},de=oe({storageKey:"dsh-service-shortcut-restart",legacyStorageKey:"dsh-service-restart-nav",sectionId:"dsh-service-restart",order:499,labelKey:"nav.restart",renderContent:()=>r.createElement(pt,null)}),ce=oe({storageKey:"dsh-service-shortcut-quota",legacyStorageKey:"dsh-service-quota-nav",sectionId:"dsh-service-quota",order:498,labelKey:"tabs.quota",feature:"quotaLookup",renderContent:()=>r.createElement(la,null)}),ue=oe({storageKey:"dsh-service-shortcut-sessions",legacyStorageKey:"dsh-service-sessions-nav",sectionId:"dsh-service-sessions",order:495,labelKey:"tabs.sessions",feature:"sessionManager",renderContent:()=>r.createElement(va,null)});let pe=null,me=null,ge=null,he=null,be="",ve=!1,fe=null,ye=null,ke=!1;const xe="dsh-service-skills-batch-pending",we=new Set,Ee=()=>{for(const e of we)e()},Se=e=>{try{e?localStorage.setItem(xe,"true"):localStorage.removeItem(xe)}catch(e){}},qe=e=>{Se("planned"===e||"running"===e)},Ce=()=>{null!==fe&&(clearInterval(fe),fe=null)},Te=(e=!0)=>{if(null!==pe&&"running"===pe.phase&&M("skillManager")&&null===fe){const t=async()=>{try{const e=await c("skills-batch-status",{});if(!e.ok)return;const t=null!==pe?pe.phase:null;pe=e.value,qe(e.value.phase),"running"===t&&"running"!==e.value.phase&&(Ce(),ve=!0),Ee()}catch(e){}};e&&t(),fe=setInterval(()=>{t()},2e3)}},Ae=async()=>{if(null!==ge)return ge;try{const e=await c("skills-models",{});if(!e.ok)return ge=[],ge;ge=e.value.models??[],null===he&&(he=ra(ge,e.value.current))}catch(e){ge=[]}return ge},Ie=()=>ke?Promise.resolve(pe):(null!==ye||(ye=(async()=>{try{const e=await c("skills-batch-status",{});e.ok&&(ke=!0,qe(e.value.phase),"idle"!==e.value.phase&&(pe=e.value,Te(!1),Ee()))}catch(e){}return pe})().finally(()=>{ye=null})),ye),Re=()=>{const[,e]=a(0);return l(()=>{const t=()=>e(e=>e+1);return we.add(t),()=>we.delete(t)},[]),{batch:pe,plan:me,models:ge,modelItem:he,error:be}};t.effect(()=>{const e=R.subscribe(()=>{M("skillManager")||Ce()});return()=>{e(),Ce()}},"dsh-service skills batch polling lifecycle"),(()=>{try{return"true"===localStorage.getItem(xe)}catch(e){return!1}})()&&Ie();const ze={approval:"notification.kind.approval","plan-review":"notification.kind.plan-review",question:"notification.kind.question"},Me=(e,t)=>{if("undefined"!=typeof Notification&&"granted"===Notification.permission)try{const a=new Notification(e,{body:t});a.onclick=()=>{try{window.focus()}catch(e){}try{a.close()}catch(e){}}}catch(e){}},Oe=()=>{try{if("function"==typeof t.get)return t.get("modelDirectories")}catch(e){}},je={anyRunning:!1,runningSessionIds:new Set};if(t.sessions&&"function"==typeof t.sessions.list?.subscribe){const e=new Map;let a=!1,r=null,s=null;const n=()=>{const r=t.sessions.list.getSnapshot();if(r&&r.byId)if(je.runningSessionIds=new Set(Object.entries(r.byId).filter(([,e])=>!0===e.running).map(([e])=>e)),je.anyRunning=je.runningSessionIds.size>0,a){for(const[t,a]of Object.entries(r.byId)){const r={running:!0===a.running,pending:void 0!==a.pendingInteraction},s=e.get(t);if(void 0!==s&&(s.running&&!r.running&&"subagent"!==a.origin&&M("taskNotifications")&&X&&Z&&Me(C("notification.doneTitle"),C("notification.doneBody",{title:a.displayTitle||t})),!s.pending&&r.pending&&M("taskNotifications")&&X&&ee)){const e=ze[a.pendingInteraction],r=e?C(e):String(a.pendingInteraction);Me(C("notification.inputTitle"),C("notification.inputBody",{title:a.displayTitle||t,kind:r}))}e.set(t,r)}for(const t of[...e.keys()])t in r.byId||e.delete(t);je.anyRunning&&At()}else{a=!0;for(const[t,a]of Object.entries(r.byId))e.set(t,{running:!0===a.running,pending:void 0!==a.pendingInteraction})}},i=()=>{null!==r&&(r(),r=null),null!==s&&(s(),s=null),e.clear(),a=!1,je.anyRunning=!1,je.runningSessionIds=new Set},l=()=>{M("taskNotifications")||M("quotaLookup")?null===r&&(r=t.sessions.list.subscribe(()=>n()),s=t.on("connection/reset",()=>{e.clear(),a=!1}),n()):i()};l();const o=R.subscribe(l);t.effect(()=>()=>{o(),i()},"dsh-service: shared session observation")}const He=new Set,De=new Set;let Ne={status:"idle",elapsedMs:0},Le=0,$e=null,We=!1;const Be=e=>{Ne=e;for(const t of He)t(e)},Fe=()=>{const e={update:$e,open:We};for(const t of De)t(e)},Pe=e=>{We=!0===e,Fe()},_e=()=>{const[e,t]=a({update:$e,open:We});return l(()=>(De.add(t),t({update:$e,open:We}),()=>De.delete(t)),[]),e},Ue=new Set;let Ve={stage:0,activity:null,busy:!1,error:null};const Ke=e=>{Ve=e;for(const t of Ue)t(e)},Ge=()=>{const[e,t]=a(Ve);return l(()=>(Ue.add(t),t(Ve),()=>Ue.delete(t)),[]),e},Ye=new Set;let Je=null;const Qe=()=>{const[e,t]=a(Je);return l(()=>(Ye.add(t),t(Je),()=>Ye.delete(t)),[]),e};let Xe=null;const Ze=()=>(null===Xe&&(Xe=c("version",{}).then(e=>(e&&e.ok&&(e=>{const t=e?e.runtimeEnv:void 0;null!==t&&"object"==typeof t&&"boolean"==typeof t.manualStartLikely&&(void 0!==t.supervisorKind&&null!==t.supervisorKind&&"string"!=typeof t.supervisorKind||(e=>{Je=e;for(const t of Ye)t(e)})({platform:"string"==typeof t.platform?t.platform:"",supervisorKind:void 0===t.supervisorKind||null===t.supervisorKind?null:t.supervisorKind,manualStartLikely:t.manualStartLikely}))})(e.value),e)).catch(()=>(Xe=null,null))),Xe);let et=!1;const tt=async()=>{Ke({...Ve,busy:!0,error:null});try{const e=await c("activity",{});if(e&&!1===e.ok)throw console.error("dsh-service: activity check failed",e.error),new Error(C("error.activity"));const t=e&&e.value?e.value:{hasActive:!1,items:[]};Ke({...Ve,activity:t,stage:t.hasActive?3:1,busy:!1,error:null})}catch(e){Ke({...Ve,error:e&&e.message?String(e.message):String(e),stage:0,busy:!1})}},at=async e=>{Ke({...Ve,busy:!0,error:null});try{const t=await c("web",{force:!0===e});if(t&&!1===t.ok){if("active-work"===t.error&&t.value)return void Ke({...Ve,activity:t.value,stage:3,busy:!1,error:null});throw console.error("dsh-service: restart failed",t.error),new Error(C("error.restart"))}const a=t&&t.value?t.value.instanceId:void 0;if("string"!=typeof a||0===a.length)throw new Error(C("error.instance"));Ke({...Ve,stage:2,busy:!1,error:null}),rt(a).catch(e=>console.error("dsh-service: recovery failed",e))}catch(e){Ke({...Ve,error:e&&e.message?String(e.message):String(e),stage:0,busy:!1})}},rt=async e=>{const a=++Le;let r=0,s=1e3;for(Be({status:"waiting",elapsedMs:r});r<6e4&&a===Le;){const n=Math.min(s,6e4-r);try{await t.timer.timeout(n)}catch(e){return}if(a!==Le)return;r+=n,Be({status:"waiting",elapsedMs:r});try{const t=await c("version",{}),a=t&&t.ok?t.value&&t.value.instanceId:void 0;if("string"==typeof a&&a.length>0&&a!==e)return void window.location.reload()}catch(e){}if(r>=6e4)return void Be({status:"timeout",elapsedMs:r});s=Math.min(2*s,1e4)}};function st(){const e=_e(),t=j();return null===e.update?null:r.createElement("button",{type:"button",onClick:()=>Pe(!0),style:{margin:"4px",padding:"5px 8px",borderRadius:"999px",border:0,background:"var(--dsh-svc-warning)",color:"var(--dsh-svc-brand-text)",cursor:"pointer",fontSize:"11px",fontWeight:600}},t("update.badge"))}t.effect(()=>()=>{Le+=1,He.clear(),Ue.clear(),Ye.clear(),De.clear()},"dsh-service recovery");const nt="@deepseek-ai/dsh",it=(e,t)=>"string"==typeof t&&0!==t.length&&/^[0-9A-Za-z.+_-]+$/.test(t)?`${e}${t}`:null,lt=(e,t,a)=>{const s=`version-dsh-channel-${e}-${t}`;return a?r.createElement("a",{"data-testid":s,href:a,target:"_blank",rel:"noreferrer",style:{color:"var(--dsw-alias-brand-primary)",textDecoration:"underline",marginLeft:"10px"}},t):r.createElement("span",{"data-testid":s,style:{marginLeft:"10px"}},t)},ot=(e,t,a)=>r.createElement("div",{style:{whiteSpace:"nowrap",lineHeight:1.7}},e("latest"===t?"update.channelStable":"next"===t?"update.channelPreview":"update.channelAlpha")," ",r.createElement("span",{"data-testid":`version-dsh-channel-${t}`,style:{marginLeft:"4px"}},a||"—"),lt(t,"npmjs",it(`https://www.npmjs.com/package/${nt}/v/`,a)),lt(t,"npmmirror",it(`https://www.npmmirror.com/package/${nt}/home?version=`,a))),dt=(e,t)=>r.createElement("div",{style:{margin:"4px 0",fontSize:"12px",lineHeight:1.7,color:"var(--dsw-alias-label-secondary)",display:"flex",flexDirection:"column",gap:"6px"}},ot(e,"latest",t&&t.latest),ot(e,"next",t&&t.next),...t&&Object.prototype.hasOwnProperty.call(t,"alpha")?[ot(e,"alpha",t.alpha)]:[]);function ct(){const e=(()=>{const[e,t]=a(Ne);return l(()=>(He.add(t),t(Ne),()=>He.delete(t)),[]),e})(),t=_e(),s=j();if("idle"===e.status&&!t.open)return null;if("idle"===e.status){const e=t.update;return null===e?null:r.createElement("div",{style:{position:"fixed",inset:0,zIndex:1e4,display:"flex",alignItems:"center",justifyContent:"center",padding:"24px",background:"rgba(12, 14, 20, 0.72)",backdropFilter:"blur(4px)",pointerEvents:"auto"}},r.createElement("div",{style:{width:"min(420px, 100%)",padding:"24px",borderRadius:"12px",background:"var(--dsw-alias-bg-overlay)",color:"var(--dsw-alias-label-primary)",border:"1px solid var(--dsw-alias-border-l2)",boxShadow:"0 18px 60px rgba(0,0,0,0.35)",textAlign:"center"}},r.createElement("div",{style:{fontSize:"18px",fontWeight:700,marginBottom:"10px"}},s("update.details.title")),r.createElement("p",{style:{margin:"4px 0",fontSize:"13px"}},s("update.details.current",{version:e.current})),r.createElement("p",{style:{margin:"4px 0",fontSize:"13px"}},s("update.details.latest",{version:e.latest})),dt(s,e.tags),r.createElement("button",{style:Object.assign({},N(),{marginTop:"16px",padding:"7px 16px"}),onClick:()=>Pe(!1)},s("update.details.close"))))}const n="timeout"===e.status;return r.createElement("div",{style:{position:"fixed",inset:0,zIndex:1e4,display:"flex",alignItems:"center",justifyContent:"center",padding:"24px",background:"rgba(12, 14, 20, 0.72)",backdropFilter:"blur(4px)",pointerEvents:"auto"}},r.createElement("div",{style:{width:"min(420px, 100%)",padding:"24px",borderRadius:"12px",background:"var(--dsw-alias-bg-overlay)",color:"var(--dsw-alias-label-primary)",border:"1px solid var(--dsw-alias-border-l2)",boxShadow:"0 18px 60px rgba(0,0,0,0.35)",textAlign:"center"}},r.createElement("div",{style:{fontSize:"18px",fontWeight:700,marginBottom:"10px"}},s(n?"recovery.timeout.title":"recovery.waiting.title")),r.createElement("p",{style:{margin:0,fontSize:"13px",lineHeight:1.7,color:"var(--dsw-alias-label-secondary)"}},n?s("recovery.timeout.body"):s("recovery.waiting.body",{seconds:Math.floor(e.elapsedMs/1e3)})),n?r.createElement("button",{style:Object.assign({},N(),{marginTop:"16px",padding:"7px 16px"}),onClick:()=>window.location.reload()},s("recovery.manual")):null))}function ut(){return r.createElement(ct,null)}function pt({showNavToggle:e}){const t=j(),a=Ge(),s=Qe();l(()=>{Ze()},[]);const[n,i]=de.useEnabled(),o=D("danger"),d=D("dangerGhost"),c=D("ghost"),u={color:"var(--dsw-alias-label-secondary)",fontSize:"12px",marginTop:"8px",lineHeight:1.5},p={padding:"4px 0 14px",marginBottom:"12px",color:"var(--dsw-alias-label-primary)"},m=$(),g={fontSize:"14px",fontWeight:700,margin:"0 0 8px",color:"var(--dsw-alias-label-primary)"};if(2===a.stage)return r.createElement("div",{"data-testid":"restart-card",style:p},r.createElement("div",{style:g},t("restart.title")),r.createElement("p",{style:{margin:0,fontSize:"13px"}},t("restart.sent")),r.createElement("p",{style:u},t(null!==s&&!0===s.manualStartLikely?"restart.sentManualHint":"restart.sentHint")));const h={agent:t("activity.agent"),job:t("activity.job"),terminal:t("activity.terminal")},b=a.activity&&Array.isArray(a.activity.items)?a.activity.items:[],v=null!==s&&!0===s.manualStartLikely?r.createElement("p",{"data-testid":"restart-manual-warn",style:Object.assign({},u,{color:"var(--dsw-alias-state-warn-primary)",margin:"6px 0 0"})},t("restart.manualWarn")):null,f=3===a.stage?r.createElement("div",{style:{marginTop:"12px",padding:"10px 12px",borderRadius:"6px",background:"rgba(211,51,51,0.1)",border:"1px solid rgba(211,51,51,0.35)"}},r.createElement("p",{style:{margin:"0 0 8px",color:"var(--dsw-alias-state-error-primary)",fontSize:"13px",fontWeight:600}},t("activity.warning",{count:b.length})),r.createElement("ul",{style:{margin:0,paddingLeft:"20px",fontSize:"12px",lineHeight:1.7}},b.map(e=>r.createElement("li",{key:e.type+":"+e.id},t("activity.item",{type:h[e.type]||e.type,label:e.label,status:e.status}))))):null;return r.createElement("div",{"data-testid":"restart-card",style:p},r.createElement("div",{style:g},t("restart.title")),r.createElement("div",{"data-testid":"restart-region",style:m},r.createElement("p",{style:{margin:0,fontSize:"13px"}},t("restart.description")),v,f,r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginTop:"12px",flexWrap:"wrap"}},0===a.stage?r.createElement("button",{style:d,"data-variant":"dangerGhost",onClick:tt,disabled:a.busy},t(a.busy?"update.checking":"restart.button")):1===a.stage?[r.createElement("button",{key:"confirm",style:o,"data-variant":"danger",onClick:()=>at(!1),disabled:a.busy},t(a.busy?"restart.sending":"restart.confirm")),r.createElement("button",{key:"cancel",style:c,onClick:()=>Ke({...Ve,activity:null,stage:0,busy:!1,error:null}),disabled:a.busy},t("restart.cancel"))]:3===a.stage?[r.createElement("button",{key:"force",style:o,"data-variant":"danger",onClick:()=>at(!0),disabled:a.busy},t(a.busy?"restart.sending":"restart.force")),r.createElement("button",{key:"cancel",style:c,onClick:()=>Ke({...Ve,activity:null,stage:0,busy:!1,error:null}),disabled:a.busy},t("restart.cancel"))]:null),1===a.stage?r.createElement("p",{style:u},t("restart.idleHint")):null,a.error?r.createElement("p",{style:Object.assign({},u,{color:"var(--dsw-alias-state-error-primary)"})},String(a.error)):null,e?r.createElement("div",{style:{marginTop:"12px",paddingTop:"10px",borderTop:"1px solid var(--dsw-alias-border-l1)",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px"}},r.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"2px"}},r.createElement("span",{style:{fontSize:"13px",color:"var(--dsw-alias-label-primary)"}},t("restart.navToggle")),r.createElement("span",{style:u},t("restart.navToggleHint"))),r.createElement("button",{type:"button",role:"switch","data-testid":"restart-nav-switch","aria-checked":String(n),onClick:()=>i(!n),style:{width:"34px",height:"20px",borderRadius:"10px",padding:0,flexShrink:0,position:"relative",border:"1px solid "+(n?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-border-l2)"),background:n?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-bg-layer-2)",cursor:"pointer",lineHeight:0}},r.createElement("span",{style:{position:"absolute",top:"1px",left:n?"15px":"1px",width:"16px",height:"16px",borderRadius:"50%",background:n?"#fff":"var(--dsw-alias-label-tertiary)"}}))):null))}const mt={snapshot:{providers:[],serverTime:0},listeners:new Set,subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)},getSnapshot(){return this.snapshot},publish(e){this.snapshot=e;for(const e of[...this.listeners])try{e()}catch(e){}}},gt="dsh-service-quota-poll",ht=[0,1,2,5,10],bt=["opencode-go","zai-coding-cn","openrouter","kimi","siliconflow","deepseek","stepfun","stepfun-step-plan","xiaomi-token-plan-cn","cliproxy"];function vt(){try{const e=Number.parseInt(localStorage.getItem(gt),10);return ht.includes(e)?e:0}catch(e){return 0}}const ft="dsh-service-quota-card-order";let yt=null,kt=null;function xt(e){return"all"===e?.scope?{scope:"all"}:{providers:Array.isArray(e?.providers)?[...new Set(e.providers.filter(e=>"string"==typeof e&&""!==e))].sort():[]}}async function wt(e={providers:[]}){const a=xt(e);return null!==yt?(r=kt,s=a,kt="all"===r?.scope||"all"===s?.scope?{scope:"all"}:xt({providers:[...r?.providers??[],...s?.providers??[]]}),yt):(yt=Promise.resolve().then(async()=>{try{const e=await c("quota",a);if(!0===e?.ok&&e.value&&"object"==typeof e.value&&Array.isArray(e.value.providers))return mt.publish(e.value),function(e,a={providers:[]}){Array.isArray(e?.providers)&&e.providers.some(e=>!0===e.adapted&&!0===e.refreshing)&&0!==Ct.refs?null!==St.dispose||St.pulls>=qt.length||(St.dispose=t.timer.timeout(()=>{St.dispose=null,wt(a)},qt[St.pulls]),St.pulls+=1):St.pulls=0}(e.value,a),!0}catch(e){}return!1}).finally(()=>{yt=null;const e=kt;kt=null,null!==e&&wt(e)}),yt);var r,s}function Et(){const e=Oe();if(void 0===e||"function"!=typeof e.directoryFor)return[];const t=[];for(const a of je.runningSessionIds)try{const r=e.directoryFor(a)?.store?.getSnapshot?.()?.current;"string"==typeof r?.provider&&""!==r.provider&&t.push(r.provider)}catch(e){}return[...new Set(t)]}const St={pulls:0,dispose:null},qt=[800,2400,4800,8e3,12e3],Ct={refs:0,allRefs:0,nextDispose:null,running:!1,onVisible:void 0},Tt=()=>"undefined"!=typeof document&&"hidden"===document.visibilityState;function At(){if(!M("quotaLookup")||0===Ct.refs||null!==Ct.nextDispose||vt()<=0)return;const e=vt();Ct.nextDispose=t.timer.timeout(()=>{Ct.nextDispose=null,It()},6e4*e)}function It(){if(!M("quotaLookup")||0===Ct.refs||Ct.running)return;const e=Ct.allRefs>0?{scope:"all"}:{providers:Et()};"all"!==e.scope&&0===e.providers.length||(Ct.running=!0,Promise.resolve(wt(e)).catch(()=>!1).then(()=>{Ct.running=!1,At()}))}function Rt(e={}){M("quotaLookup")&&(Ct.refs+=1,!0===e.all&&(Ct.allRefs+=1),!0===e.all?wt({scope:"all"}):It(),At(),1===Ct.refs&&void 0===Ct.onVisible&&"undefined"!=typeof document&&(Ct.onVisible=()=>{Tt()||It()},document.addEventListener("visibilitychange",Ct.onVisible)))}function zt(e={}){(M("quotaLookup")||0!==Ct.refs)&&(Ct.refs=Math.max(0,Ct.refs-1),!0===e.all&&(Ct.allRefs=Math.max(0,Ct.allRefs-1)),Ct.refs>0||(null!==Ct.nextDispose&&(Ct.nextDispose(),Ct.nextDispose=null),null!==St.dispose&&(St.dispose(),St.dispose=null),void 0!==Ct.onVisible&&"undefined"!=typeof document&&(document.removeEventListener("visibilitychange",Ct.onVisible),Ct.onVisible=void 0)))}function Mt(e,t){const a=Math.max(0,Math.floor(e/6e4)),r=Math.floor(a/1440),s=Math.floor(a%1440/60),n=a%60,i=[];return r>0&&i.push(t("quota.unit.day",{count:r})),s>0&&i.push(t("quota.unit.hour",{count:s})),n>0&&i.push(t("quota.unit.minute",{count:n})),0===i.length&&i.push(t("quota.unit.minute",{count:0})),i.slice(0,2).join(" ")}function Ot(e){try{return new Date(e).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hourCycle:"h23"})}catch(e){return""}}function jt(e){const t=new Date(e),a=e=>String(e).padStart(2,"0");return`${t.getFullYear()}-${a(t.getMonth()+1)}-${a(t.getDate())}`}t.effect(()=>()=>{null!==Ct.nextDispose&&Ct.nextDispose(),null!==St.dispose&&St.dispose(),void 0!==Ct.onVisible&&"undefined"!=typeof document&&document.removeEventListener("visibilitychange",Ct.onVisible)},"dsh-service quota poller disposal");const Ht=Object.assign(Object.create(null),{deepseek:{segments:[[540,720],[840,1080]],captionKey:"quota.peak.caption"},"zai-coding-cn":{segments:[[840,1080]],captionKey:"quota.peak.caption.zai"}}),Dt="#f0952f",Nt="var(--dsw-alias-state-success-primary)",Lt=3e4;function $t(e){const t=new Date(e+288e5),a=e=>String(e).padStart(2,"0");return`${a(t.getUTCHours())}:${a(t.getUTCMinutes())}`}function Wt(e,t){return!1===Array.isArray(t)||0===t.length?null:Ht[e?.kind]??null}function Bt({showCaption:e,schedule:s}){const n=j(),[i,o]=a(Date.now());l(()=>{let e=!1,a=null;const r=()=>{e||(a=t.timer.timeout(()=>{o(Date.now()),r()},Lt))};return r(),()=>{e=!0,null!=a&&a()}},[]);const d=function(e){const t=new Date(e+288e5);return{dayIndex:t.getUTCDay(),minutesOfDay:60*t.getUTCHours()+t.getUTCMinutes()}}(i),c=(u=s.segments,p=d.dayIndex,m=d.minutesOfDay,0!==p&&6!==p&&u.some(([e,t])=>m>=e&&m<t));var u,p,m;const g=function(e,t){const a=new Date(t+288e5);a.setUTCHours(0,0,0,0);const r=a.getTime()-288e5,s=[];for(let a=0;a<=6&&s.length<2;a++){const n=r+864e5*a,i=new Date(n+288e5).getUTCDay();if(0!==i&&6!==i)for(const a of e.flat()){const e=n+6e4*a;if(!(e<=t)&&(s.push(e),s.length>=2))return s}}return s}(s.segments,i),h=g[0]??null,b=c?Dt:Nt,v=e=>Math.round(e/1440*1e6)/1e4;return r.createElement("div",{"data-testid":"quota-peak-timeline",style:{display:"flex",flexDirection:"column",gap:"4px"}},r.createElement("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:"6px",minHeight:"16px"}},r.createElement("span",{"data-testid":"quota-peak-state","data-in-peak":String(c),style:{display:"inline-flex",alignItems:"center",gap:"5px",fontSize:"12px",lineHeight:"16px",color:b,whiteSpace:"nowrap",flexShrink:0}},r.createElement("span",{style:{width:"7px",height:"7px",borderRadius:"50%",background:b,flexShrink:0}}),n(c?"quota.peak.nowPeak":"quota.peak.nowIdle")),null!==h?r.createElement("span",{"data-testid":"quota-peak-next",style:{marginLeft:"auto",fontSize:"11px",lineHeight:"16px",color:"var(--dsw-alias-label-tertiary)",whiteSpace:"nowrap"}},n(c?"quota.peak.untilIdle":"quota.peak.untilPeak",{time:$t(h),dur:Mt(h-i,n)})):null),r.createElement("div",{"data-testid":"quota-peak-bar",style:{position:"relative",height:"14px",borderRadius:999,overflow:"hidden",background:"var(--dsw-alias-interactive-bg-hover)"}},(g.length>0?[{peak:c,weight:g[0]-i},...g.length>1?[{peak:!c,weight:g[1]-g[0]}]:[]]:[{peak:c,weight:1}]).map((e,t,a)=>{const s=a.reduce((e,t)=>e+t.weight,0),i=v(e.weight/s*1440);return r.createElement("span",{key:t,"data-testid":`quota-peak-segment-${t}`,"data-peak":String(e.peak),style:{position:"absolute",top:0,bottom:0,left:`${0===t?0:v(a[0].weight/s*1440)}%`,width:`${i}%`,background:e.peak?Dt:Nt,overflow:"hidden"}},i>=11?r.createElement("span",{style:{position:"absolute",inset:0,textAlign:"center",fontSize:"9px",lineHeight:"14px",fontWeight:500,color:"rgba(255,255,255,0.95)"}},n(e.peak?"quota.peak.tag.peak":"quota.peak.tag.idle")):null)}),r.createElement("span",{"data-testid":"quota-peak-now",style:{position:"absolute",top:0,bottom:0,left:0,width:"3px",borderRadius:"3px",background:"var(--dsw-specific-menu)"}})),!0===e?r.createElement("div",{"data-testid":"quota-peak-caption",style:{fontSize:"11px",lineHeight:1.6,color:"var(--dsw-alias-label-tertiary)",marginTop:"2px"}},n(s.captionKey)):null)}function Ft(e,t){const a="string"==typeof e.expiresAt&&""!==e.expiresAt.trim()?e.expiresAt.trim():"",r=""!==a?Date.parse(a):NaN,s=Number.isFinite(r)&&r<Date.now();let n="";if(""!==a){let e=a;Number.isFinite(r)&&(e=a.length>10?`${jt(r)} ${Ot(r)}`:jt(r),e=s?`${e} ${t("quota.resetCard.expired")}`:t("quota.resetCard.expires",{date:e})),n=e}const i="string"==typeof e.label&&""!==e.label?` · ${e.label}`:"";return{expired:s,title:`${t("quota.resetCard.title")}${i}`,expiry:n}}function Pt(e,t){const a=`quota.error.${e}`,r=t(a);return r===a?t("quota.error.unknown"):r}function _t(e,t,a){const s=null!=a,n=function(e,t){const a="string"==typeof e.kindKey&&""!==e.kindKey,r=a?e.kindKey:e.id;let s=t(`quota.window.${r}`);if(s===`quota.window.${r}`)if(a){const a=t(`quota.window.${e.id}`);s=a!==`quota.window.${e.id}`?a:r}else s=function(e,t){const a=t(`quota.window.${e}`);if(a!==`quota.window.${e}`)return a;const r=String(e).split("-"),s=r.length>=2?`${r[0]}-${r[1]}`:r[0],n=t(`quota.window.${s}`);return n===`quota.window.${s}`?e:n}(e.id,t);const n="string"==typeof e.label?e.label.trim():"";return""!==n?`${n} · ${s}`:s}(e,t),i={color:"var(--dsw-alias-label-secondary)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},l={color:"var(--dsw-alias-label-primary)",fontWeight:500,fontVariantNumeric:"tabular-nums",whiteSpace:"nowrap",flexShrink:0};if("string"==typeof e.text)return r.createElement("div",{key:e.id,...s?{"data-testid":`quota-card-window-${a}-${e.id}`}:{},style:{display:"flex",justifyContent:"space-between",gap:"10px",fontSize:"12px",lineHeight:"18px"}},r.createElement("span",{style:i,title:n},n),r.createElement("span",{"data-testid":s?`quota-card-text-${a}-${e.id}`:`quota-text-${e.id}`,style:l},e.text));let o=null;if("string"==typeof e.resetsAt){const n=Date.parse(e.resetsAt);Number.isFinite(n)&&n>Date.now()&&(o=r.createElement("div",{"data-testid":s?`quota-card-reset-${a}-${e.id}`:`quota-reset-${e.id}`,style:{fontSize:"11px",lineHeight:"16px",color:"var(--dsw-alias-label-tertiary)"}},t("quota.resetIn",{time:Mt(n-Date.now(),t)})))}return r.createElement("div",{key:e.id,...s?{"data-testid":`quota-card-window-${a}-${e.id}`}:{}},r.createElement("div",{"data-value":e.percent,style:{display:"flex",justifyContent:"space-between",gap:"10px",fontSize:"12px",lineHeight:"18px"}},r.createElement("span",{style:i,title:n},n),r.createElement("span",{style:l},function(e){const t=`${e.percent}%`,a=Number(e.used),r=Number(e.limit);return!Number.isFinite(a)||!Number.isFinite(r)||r<=0?t:`${t} · ${A(a,{billions:!0})} / ${A(r,{billions:!0})}`}(e))),function(e,t,a,s){const n=!0===s?t<=20:t>=80;return r.createElement("div",{"data-testid":e,style:{height:"4px",borderRadius:999,background:"var(--dsw-alias-interactive-bg-hover)",overflow:"hidden"}},r.createElement("div",{style:{height:"100%",width:`${Math.max(0,Math.min(100,t))}%`,borderRadius:999,background:n?"var(--dsw-alias-state-warn-primary)":"var(--dsw-alias-state-success-primary)"}}))}(s?`quota-card-bar-${a}-${e.id}`:`quota-window-bar-${e.id}`,e.percent,0,!0===e.remaining),o)}let Ut=null;try{const t=e("react-dom");null!=t&&"function"==typeof t.createPortal&&(Ut=t.createPortal)}catch(e){Ut=null}function Vt(){if("undefined"==typeof window||null===window)return!1;if("function"==typeof window.matchMedia){const e=window.matchMedia("(max-width: 1023px)");return"boolean"==typeof e.matches&&e.matches}return"number"==typeof window.innerWidth&&window.innerWidth<=1023}function Kt(e){const s=j(),[n,i]=a(mt.getSnapshot());l(()=>mt.subscribe(()=>i(mt.getSnapshot())),[]);const d=e&&e.directoryStore,c=e&&"string"==typeof e.sessionId&&""!==e.sessionId?e.sessionId:void 0,[u,p]=a(null),m=null!=d?d:u;l(()=>{if(null!=d)return;if(void 0===c)return;let e=!1,a=null;const r=[250,500,1e3,2e3,4e3,8e3,15e3],s=n=>{if(e)return;let i=null;try{i=Oe()}catch(e){i=null}if(null==i||"function"!=typeof i.directoryFor)return;let l=null;try{l=i.directoryFor(c)}catch(e){l=null}if(null==l||void 0===l.store||null===l.store)n>=r.length||(a=t.timer.timeout(()=>{a=null,s(n+1)},r[n]));else{p(l.store);try{const e=l.load();e&&"function"==typeof e.catch&&e.catch(()=>{})}catch(e){}}};return s(0),()=>{e=!0,null!==a&&a()}},[d,c]),l(()=>{if(m)return Rt(),zt},[m]);const[g,h]=a(m?m.getSnapshot():null);l(()=>{if(m)return h(m.getSnapshot()),m.subscribe(()=>h(m.getSnapshot()))},[m]),l(()=>{m&&(null===g||null==g?.current)&&e&&"function"==typeof e.loadDirectory&&e.loadDirectory()},[m,g,e&&e.loadDirectory]);const[b,v]=a(!1),f=o(null),y=o(null),[k,x]=a(Vt);l(()=>{if("undefined"==typeof window||null===window||"function"!=typeof window.matchMedia)return;const e=window.matchMedia("(max-width: 1023px)"),t=()=>x(e.matches);return t(),"function"==typeof e.addEventListener?e.addEventListener("change",t):"function"==typeof e.addListener&&e.addListener(t),()=>{"function"==typeof e.removeEventListener?e.removeEventListener("change",t):"function"==typeof e.removeListener&&e.removeListener(t)}},[]);const[w,E]=a(!1),S=g?.current?.provider??null,q=g?.current?.model??null,C=null!==S?(n.providers||[]).find(e=>e.provider===S&&!0===e.adapted):null,T=Array.isArray(C?.windows)?C.windows:[],A="cliproxy"===C?.kind?function(e){if("string"!=typeof e||""===e.trim())return null;const t=e.trim().toLowerCase();return t.includes("claude")||t.includes("gpt-oss")?"claude":t.includes("gemini")?"gemini":t.includes("codex")||t.includes("gpt")||t.includes("chatgpt")||/(?:^|[-_/])o[134](?:[-_/]|$)/.test(t)?"codex":null}(q):null,I="claude"===A?"Claude":"gemini"===A?"Gemini":"codex"===A?"Codex":null,R=null!==A?T.filter(e=>function(e,t){if(!t)return!0;const a=String(e.kindKey??e.id??"").toLowerCase();return"claude"===t?a.includes("claude"):"gemini"===t?a.includes("gemini"):"codex"!==t||a.includes("codex")}(e,A)):T,z=R.length>0&&!w?R:T,M=(R.length>0?R:T).filter(e=>"number"==typeof e.percent),O=e=>!0===e.remaining?100-e.percent:e.percent,H=M.length>0?M.reduce((e,t)=>O(t)>O(e)?t:e,M[0]):null;l(()=>{E(!1)},[S,q,b]);const D=o(new Set);if(l(()=>{if(null===S)return;const e=(n.providers||[]).find(e=>e.provider===S&&!0===e.adapted);(void 0===e||!1===Array.isArray(e.windows)&&!0!==e.refreshing&&void 0===e.errorCode)&&!D.current.has(S)&&(D.current.add(S),wt({providers:[S]}))},[S,n]),l(()=>{if(!b||"undefined"==typeof document)return;const e=e=>{f.current&&e.target instanceof Node&&f.current.contains(e.target)||y.current&&e.target instanceof Node&&y.current.contains(e.target)||v(!1)},t=e=>{"Escape"===e.key&&v(!1)};return document.addEventListener("pointerdown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("pointerdown",e),document.removeEventListener("keydown",t)}},[b]),null==C)return null;const N=null===H?0:H.percent,L=null!==H,$=!L||!0===H.remaining,W=s($?"quota.panel.remaining":"quota.panel.used"),B=($?N<=20:N>=80)?"var(--dsw-alias-state-warn-primary)":"var(--dsw-alias-state-success-primary)",F=2*Math.PI*5.5,P=C?.displayName||S,_=I?`${P} · ${I}`:P,U=L?`${s("quota.ring.label")} · ${_} · ${W} ${N}%`:`${s("quota.ring.label")} · ${_}`,V="number"==typeof C.nextAllowedAt&&C.nextAllowedAt>Date.now()?` · ${s("quota.retryAt",{time:Ot(C.nextAllowedAt)})}`:"",K=void 0!==C.errorCode?r.createElement("div",{style:{marginTop:"8px",fontSize:"12px",lineHeight:"18px",color:"var(--dsw-alias-state-error-primary)"}},`${Pt(C.errorCode,s)}${void 0!==C.errorDetail?` (${C.errorDetail})`:""}${V}`):null,G=!0===C.refreshing||"number"==typeof C.fetchedAt?r.createElement("div",{style:{marginTop:"8px",fontSize:"11px",color:"var(--dsw-alias-label-tertiary)"}},!0===C.refreshing?s("quota.refreshing"):s("quota.updated",{time:Ot(C.fetchedAt)})):null,Y=b&&k&&null!==Ut&&"undefined"!=typeof document&&null!==document.body&&void 0!==document.body,J=Wt(C,T),Q=r.createElement("button",{type:"button","data-testid":"quota-ring-trigger","aria-label":U,"aria-haspopup":"dialog","aria-expanded":b,title:U,onClick:()=>{const e=!b;v(e),e&&wt({providers:null===S?[]:[S]})},style:{width:"28px",height:"28px",border:"none",borderRadius:"999px",background:"transparent",cursor:"pointer",display:"grid",placeItems:"center",padding:0,color:"var(--dsw-alias-label-secondary)"}},r.createElement("svg",{viewBox:"0 0 14 14",width:"14",height:"14","aria-hidden":!0},r.createElement("circle",{cx:"7",cy:"7",r:5.5,fill:"none",stroke:"var(--dsw-alias-border-l3)",strokeWidth:"2"}),r.createElement("circle",{cx:"7",cy:"7",r:5.5,fill:"none",stroke:B,strokeWidth:"2",strokeLinecap:"round",strokeDasharray:`${F*N/100} ${F}`,transform:"rotate(-90 7 7)"}))),X=b?r.createElement("div",{ref:y,role:"dialog","aria-label":s("quota.panel.title"),"data-testid":"quota-ring-panel",style:Y?{position:"fixed",left:"50%",top:"75%",transform:"translate(-50%, -50%)",zIndex:1e3,boxSizing:"border-box",width:"min(280px, calc(100vw - 32px))",maxHeight:"min(560px, calc(100dvh - 176px))",overflowY:"auto",padding:"12px",borderRadius:"12px",background:"var(--dsw-specific-menu)",border:"1px solid var(--dsw-alias-border-inverted)",boxShadow:"var(--dsw-shadow-lv3)"}:{position:"absolute",bottom:"calc(100% + 8px)",right:0,zIndex:100,boxSizing:"border-box",width:"max-content",minWidth:"240px",maxWidth:"min(480px, calc(100vw - 32px))",padding:"12px",borderRadius:"12px",background:"var(--dsw-specific-menu)",border:"1px solid var(--dsw-alias-border-inverted)",boxShadow:"var(--dsw-shadow-lv3)"}},r.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:"6px"}},r.createElement("span",{style:{fontSize:"12px",color:"var(--dsw-alias-label-tertiary)"}},W),r.createElement("span",{style:{marginLeft:"auto",fontSize:"11px",color:"var(--dsw-alias-label-secondary)"}},_)),r.createElement("div",{style:{marginTop:"10px",display:"flex",flexDirection:"column",gap:"8px"}},z.map(e=>_t(e,s,null))),T.length>R.length&&R.length>0?r.createElement("div",{style:{marginTop:"6px",textAlign:"center"}},r.createElement("button",{type:"button","data-testid":"quota-ring-toggle-all",onClick:()=>E(!w),style:{fontSize:"11px",color:"var(--dsw-alias-brand-primary)",background:"transparent",border:"none",cursor:"pointer",padding:"2px 6px",textDecoration:"underline"}},w?s("quota.filter.currentOnly"):s("quota.filter.showAll",{count:T.length}))):null,...null!==J?[r.createElement(Bt,{key:"panel-peak-timeline",showCaption:!1,schedule:J})]:[],...Array.isArray(C.resetCards)&&C.resetCards.length>0?[r.createElement("div",{key:"panel-reset-cards",style:{marginTop:"8px",display:"flex",flexDirection:"column",gap:"4px"}},C.resetCards.map((e,t)=>{const a=Ft(e,s);return r.createElement("div",{key:t,"data-testid":`quota-panel-reset-card-${t}`,style:{display:"flex",flexDirection:"column",gap:"2px",fontSize:"11px",lineHeight:"16px",color:a.expired?"var(--dsw-alias-state-warn-primary)":"var(--dsw-alias-label-tertiary)"}},r.createElement("span",null,a.title),""!==a.expiry?r.createElement("span",null,a.expiry):null)}))]:[],K,G):null;return r.createElement("span",{ref:f,style:{position:"relative",display:"inline-flex"}},Q,Y?Ut(X,document.body):X)}function Gt(){const e=j(),{snapshot:t}=O(),[a,s]=r.useState(!1),n="ready"===t.status&&!0===t.writable;return r.createElement("li",{style:{listStyle:"none",border:"1px solid "+(a?"var(--dsw-alias-label-dimmed)":"var(--dsw-alias-border-l2)"),borderRadius:"12px",color:"var(--dsw-alias-label-primary)",background:a?"var(--dsw-alias-bg-layer-2)":"var(--dsw-alias-bg-layer-3)"}},r.createElement("button",{type:"button","data-testid":"feature-card-toggle","aria-expanded":String(a),onClick:()=>s(!a),style:{appearance:"none",width:"100%",display:"flex",alignItems:"center",gap:"12px",padding:"14px 16px",border:0,borderRadius:"12px",background:"transparent",color:"inherit",font:"inherit",textAlign:"left",cursor:"pointer"}},r.createElement("span",{style:{display:"flex",minWidth:0,flex:1,flexDirection:"column",gap:"4px"}},r.createElement("span",{style:{fontSize:"15px",fontWeight:600,lineHeight:1.4}},e("features.cardTitle")),r.createElement("span",{style:{fontSize:"13px",lineHeight:1.5,color:"var(--dsw-alias-label-tertiary)"}},e("features.cardHint"))),r.createElement("svg",{viewBox:"0 0 14 14",width:14,height:14,"aria-hidden":"true",style:{flex:"none",color:"var(--dsw-alias-label-tertiary)",transform:a?"rotate(180deg)":"none",transition:"transform .16s"}},r.createElement("path",{d:"M3 5.25 7 9l4-3.75",fill:"none",stroke:"currentColor",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round"}))),a?r.createElement("div",{style:{margin:"0 16px",padding:"12px 0 8px",borderTop:"1px solid var(--dsw-alias-border-l2)"}},r.createElement(Jt,null),n?null:r.createElement("p",{style:{margin:"6px 0 0",fontSize:"11px",color:"var(--dsw-alias-label-tertiary)"}},e("features.readOnly"))):null)}const Yt=[["features.group.runtime",["healthDiagnostics","modelUsage","quotaLookup"],!0],["features.group.maintenance",["backupMaintenance","skillManager","subagentRoute","sessionManager"],!0],["features.group.interaction",["taskNotifications","mobileAdaptation"],!0],["features.external",["healthz"],!1]];function Jt(){const e=j(),{snapshot:t,value:s}=O(),[n,i]=a(""),l="ready"===t.status&&!0===t.writable,o=t=>r.createElement("div",{key:t,style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"14px",padding:"7px 0"}},r.createElement("span",{style:{fontSize:"13px",color:"var(--dsw-alias-label-primary)"}},e("features."+t)),r.createElement("button",{type:"button",role:"switch","data-testid":"feature-switch-"+t,"aria-checked":String(!1!==s[t]),disabled:!l||n===t,onClick:async()=>{i(t);try{await R.set(t,!1===s[t])}catch(e){}i("")},style:{width:"34px",height:"20px",borderRadius:"10px",padding:0,flexShrink:0,position:"relative",border:"1px solid "+(!1!==s[t]?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-border-l2)"),background:!1!==s[t]?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-bg-layer-2)",cursor:l&&""===n?"pointer":"default",opacity:l?1:.5,lineHeight:0}},r.createElement("span",{style:{position:"absolute",top:"1px",left:!1!==s[t]?"15px":"1px",width:"16px",height:"16px",borderRadius:"50%",background:!1!==s[t]?"#fff":"var(--dsw-alias-label-tertiary)"}})));return r.createElement("div",null,Yt.map(([t,a])=>r.createElement("div",{key:t,style:{marginTop:"10px"}},r.createElement("div",{style:{fontSize:"12px",fontWeight:700,marginBottom:"2px"}},e(t)),a.map(o))))}const Qt=["inherit","follow","custom"];function Xt(){const e=j(),{useState:t,useEffect:a}=r,s=!1!==O().value.subagentModelsDock,[n,i]=t(null),[l,o]=t("inherit"),[d,u]=t(""),[p,m]=t(""),[g,h]=t(!0),[b,v]=t(!1),[f,y]=t(0),[k,x]=t(""),[w,E]=t(""),[S,q]=t([]),[C,T]=t(!1),A={color:"var(--dsw-alias-label-secondary)",fontSize:"12px",marginTop:"8px",lineHeight:1.5},I={fontSize:"12px",padding:"4px 8px",borderRadius:"6px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)",maxWidth:"100%"},z=async()=>{h(!0);try{const e=await c("subagent-route",{});e.ok?(i(e.value),o(e.value.mode),q(Array.isArray(e.value.fallbacks)?e.value.fallbacks:[]),"custom"===e.value.mode?(u("string"==typeof e.value.provider?e.value.provider:""),m("string"==typeof e.value.model?e.value.model:""),E("string"==typeof e.value.reasoningEffort?e.value.reasoningEffort:"")):E(""),x("")):x(e.error||"unknown")}catch(e){x("network")}finally{h(!1)}};a(()=>{z()},[]);const M=null!==n&&Array.isArray(n.models)?n.models:[],H=[],D={};for(const e of M)void 0===D[e.provider]&&(D[e.provider]=e.providerName,H.push(e.provider));const L=e=>M.filter(t=>t.provider===e),$=e=>{const t=[],a=new Set;for(const r of e?.reasoning?.efforts??[]){if(null===r||"object"!=typeof r)continue;const e="string"==typeof r.id?r.id:"";""===e||a.has(e)||(a.add(e),t.push({id:e,name:"string"==typeof r.name&&""!==r.name?r.name:e,description:"string"==typeof r.description&&""!==r.description?r.description:void 0}))}return t},W=L(d),B=W.find(e=>e.id===p)??null,F=$(B);a(()=>{""===w||F.some(e=>e.id===w)||E("")},[d,p]),a(()=>{""===d||W.some(e=>e.id===p)||m(W[0]?.id??"")},[d]);const P=H.includes(d)?d:H[0]??"";a(()=>{d!==P&&u(P)},[P,d]);const _=(e,t)=>{q(a=>a.map((a,r)=>r===e?{...a,...t}:a))},U=(e,t)=>{q(a=>{const r=e+t;if(r<0||r>=a.length)return a;const s=[...a],n=s.splice(e,1)[0];return s.splice(r,0,n),s})};a(()=>{C&&S.length<2&&T(!1)},[S.length]);const V=async e=>{v(!0),x("");try{const t=("custom"===e||"follow"===e)&&S.length>0?{fallbacks:S}:{},a="custom"===e?{mode:"custom",provider:P,model:p,...""!==w?{reasoningEffort:w}:{},...t}:{mode:e,...t},r=await c("subagent-route-save",a);r.ok?(y(e=>e+1),await z()):x(r.error||"unknown")}catch(e){x("network")}finally{v(!1)}},K=(e,t,a,s)=>r.createElement("button",{type:"button","data-testid":e,disabled:t||b,onClick:a,style:{fontSize:"12px",lineHeight:"14px",width:"24px",height:"24px",padding:0,borderRadius:"6px",border:"1px solid var(--dsh-svc-border-strong)",background:"transparent",color:"var(--dsh-svc-text)",cursor:t||b?"default":"pointer",opacity:t||b?.55:1}},s),G={fontSize:"12px",color:"var(--dsw-alias-label-secondary)",width:"88px",flexShrink:0};return r.createElement("div",{"data-testid":"subagent-section",style:{padding:"4px 0 14px",marginBottom:"12px",color:"var(--dsw-alias-label-primary)"}},r.createElement("div",{style:{fontSize:"14px",fontWeight:700}},e("subagent.title")),r.createElement("p",{style:A},e("subagent.hint")),r.createElement("div",{"data-testid":"subagent-dock-toggle-row",style:{display:"flex",alignItems:"center",gap:"10px",marginTop:"12px",padding:"10px 12px",border:"1px solid var(--dsh-svc-border)",borderRadius:"8px",background:"var(--dsh-svc-raised-bg)"}},r.createElement("div",{style:{flex:1,minWidth:0}},r.createElement("div",{style:{fontSize:"13px",fontWeight:600,color:"var(--dsw-alias-label-primary)"}},e("subagent.dock.title")),r.createElement("p",{style:{...A,marginTop:"2px",marginBottom:0}},e("subagent.dock.desc"))),r.createElement("button",{type:"button",role:"switch","aria-checked":String(s),"data-testid":"subagent-dock-toggle",onClick:()=>{R.set("subagentModelsDock",!s).catch(()=>{})},style:{width:"34px",height:"20px",borderRadius:"10px",padding:0,flexShrink:0,position:"relative",border:"1px solid "+(s?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-border-l2)"),background:s?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-bg-layer-2)",cursor:"pointer",lineHeight:0}},r.createElement("span",{style:{position:"absolute",top:"1px",left:s?"15px":"1px",width:"16px",height:"16px",borderRadius:"50%",background:s?"#fff":"var(--dsw-alias-label-tertiary)",transition:"left 150ms ease"}}))),null!==n&&!1===n.available?r.createElement("p",{"data-testid":"subagent-unavailable",style:{...A,color:"var(--dsw-alias-state-warn-primary)"}},e("subagent.unavailable")):null,r.createElement("div",{"data-testid":"subagent-modes",style:{display:"flex",gap:"8px",marginTop:"12px",flexWrap:"wrap"}},Qt.map(t=>r.createElement("button",{type:"button",key:t,"data-testid":"subagent-mode-"+t,"aria-pressed":String(l===t),disabled:g,onClick:()=>o(t),style:Object.assign({},N(),{cursor:g?"default":"pointer",background:l===t?"var(--dsh-svc-tab-active-bg)":"transparent",color:l===t?"var(--dsh-svc-tab-active-text)":"var(--dsh-svc-text)",opacity:g?.55:1})},e("subagent.mode."+t)))),r.createElement("p",{"data-testid":"subagent-mode-desc",style:{...A,marginTop:"8px"}},e("subagent.mode."+l+".desc")),"custom"===l?r.createElement("div",{"data-testid":"subagent-custom",style:{marginTop:"8px"}},r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"10px",marginTop:"4px"}},r.createElement("span",{style:G},e("subagent.provider")),r.createElement("select",{"data-testid":"subagent-provider",value:P,disabled:0===H.length||b,onChange:e=>u(e.target.value),style:I},H.map(e=>r.createElement("option",{key:e,value:e},D[e]??e)))),r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"10px",marginTop:"4px"}},r.createElement("span",{style:G},e("subagent.model")),r.createElement("select",{"data-testid":"subagent-model",value:p,disabled:0===W.length||b,onChange:e=>m(e.target.value),style:I},W.map(e=>r.createElement("option",{key:e.id,value:e.id},e.name??e.id)))),""!==p?r.createElement("div",{"data-testid":"subagent-reasoning-row",style:{display:"flex",alignItems:"center",gap:"10px",marginTop:"4px",flexWrap:"wrap"}},r.createElement("span",{style:G},e("subagent.reasoningEffort")),r.createElement("select",{"data-testid":"subagent-reasoning-effort",value:w,disabled:b||0===F.length,onChange:e=>E(e.target.value),style:I},r.createElement("option",{value:""},e("subagent.reasoningEffort.default")),...F.map(e=>r.createElement("option",{key:e.id,value:e.id,...void 0!==e.description?{title:e.description}:{}},e.name))),0===F.length?r.createElement("span",{"data-testid":"subagent-reasoning-effort-unavailable",style:{fontSize:"12px",color:"var(--dsw-alias-state-warn-primary)"}},e("subagent.reasoningEffort.unavailable")):null):null):null,"custom"!==l||0!==M.length||g?null:r.createElement("p",{"data-testid":"subagent-models-empty",style:{...A,color:"var(--dsw-alias-state-warn-primary)"}},e("subagent.modelsEmpty")),"custom"===l||"follow"===l?r.createElement("div",{"data-testid":"subagent-fallback-block",style:{marginTop:"14px",borderTop:"1px solid var(--dsh-svc-border)",paddingTop:"12px"}},r.createElement("div",{style:{fontSize:"13px",fontWeight:700}},e("subagent.fallback.title")),r.createElement("p",{style:A},e("subagent.fallback.hint")),0===S.length?r.createElement("p",{"data-testid":"subagent-fallback-empty",style:{...A,color:"var(--dsw-alias-label-secondary)"}},e("subagent.fallback.empty")):null,S.map((t,a)=>{const s=H.includes(t.provider),n=s?L(t.provider):[],i=n.find(e=>e.id===t.model)??null,l=$(i),o=l.map(e=>e.id);return r.createElement("div",{key:a,"data-testid":"subagent-fallback-row",style:{marginTop:"8px",border:"1px solid var(--dsh-svc-border)",borderRadius:"8px",padding:"7px 10px 8px"}},r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"2px"}},r.createElement("span",{style:{fontSize:"12px",fontWeight:600,color:"var(--dsw-alias-label-primary)"}},e("subagent.fallback.item",{index:String(a+1)})),r.createElement("span",{style:{marginLeft:"auto"}}),((e,t,a,s,n=!1)=>r.createElement("button",{type:"button","data-testid":e,disabled:t||b,onClick:a,style:{fontSize:"12px",padding:"3px 8px",borderRadius:"6px",border:"1px solid "+(n?"var(--dsw-alias-state-error-primary)":"var(--dsh-svc-border-strong)"),background:"transparent",color:n?"var(--dsw-alias-state-error-primary)":"var(--dsh-svc-text)",cursor:t||b?"default":"pointer",opacity:t||b?.55:1}},s))("subagent-fallback-remove-"+a,!1,()=>(e=>{q(t=>t.filter((t,a)=>a!==e))})(a),e("subagent.fallback.remove"),!0),C?K("subagent-fallback-up-"+a,0===a,()=>U(a,-1),"▲"):null,C?K("subagent-fallback-down-"+a,a===S.length-1,()=>U(a,1),"▼"):null),r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"10px",marginTop:"4px"}},r.createElement("span",{style:G},e("subagent.provider")),r.createElement("select",{"data-testid":"subagent-fallback-provider-"+a,value:s?t.provider:"",disabled:b,onChange:e=>{const t=e.target.value;_(a,{provider:t,model:L(t)[0]?.id??""})},style:I},r.createElement("option",{value:""},""),H.map(e=>r.createElement("option",{key:e,value:e},D[e]??e)))),r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"10px",marginTop:"4px"}},r.createElement("span",{style:G},e("subagent.model")),r.createElement("select",{"data-testid":"subagent-fallback-model-"+a,value:n.some(e=>e.id===t.model)?t.model:"",disabled:0===n.length||b,onChange:e=>{const r=e.target.value,s=n.find(e=>e.id===r)??null,i=$(s).map(e=>e.id);_(a,{model:r,..."string"!=typeof t.reasoningEffort||""===t.reasoningEffort||i.includes(t.reasoningEffort)?{}:{reasoningEffort:void 0}})},style:I},n.map(e=>r.createElement("option",{key:e.id,value:e.id},e.name??e.id)))),l.length>0?r.createElement("div",{"data-testid":"subagent-fallback-reasoning-row",style:{display:"flex",alignItems:"center",gap:"10px",marginTop:"4px"}},r.createElement("span",{style:G},e("subagent.reasoningEffort")),r.createElement("select",{"data-testid":"subagent-fallback-effort-"+a,value:o.includes(t.reasoningEffort)?t.reasoningEffort:"",disabled:b,onChange:e=>_(a,{reasoningEffort:""===e.target.value?void 0:e.target.value}),style:I},r.createElement("option",{value:""},e("subagent.reasoningEffort.default")),...l.map(e=>r.createElement("option",{key:e.id,value:e.id,...void 0!==e.description?{title:e.description}:{}},e.name)))):r.createElement("span",{"data-testid":"subagent-fallback-effort-unavailable-"+a,style:{display:"inline-block",marginTop:"4px",fontSize:"12px",color:"var(--dsw-alias-state-warn-primary)"}},e("subagent.reasoningEffort.unavailable")))}),S.length>=10?r.createElement("p",{"data-testid":"subagent-fallback-limit",style:{...A,color:"var(--dsw-alias-state-warn-primary)"}},e("subagent.fallback.limit",{max:String(10)})):r.createElement("div",{style:{display:"flex",gap:"10px",marginTop:"8px",flexWrap:"wrap"}},r.createElement("button",{type:"button","data-testid":"subagent-fallback-add",disabled:b||0===H.length,onClick:()=>{q(e=>{if(e.length>=10)return e;const t=H[0]??"";return[...e,{provider:t,model:L(t)[0]?.id??""}]})},style:{fontSize:"12px",padding:"5px 12px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px dashed var(--dsh-svc-border-strong)",background:"transparent",color:"var(--dsh-svc-text)",cursor:b||0===H.length?"default":"pointer",opacity:b||0===H.length?.55:1}},e("subagent.fallback.add")),S.length>1?r.createElement("button",{type:"button","data-testid":"subagent-fallback-sort",disabled:b,onClick:()=>T(e=>!e),style:{fontSize:"12px",padding:"5px 12px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid var(--dsh-svc-border-strong)",background:C?"var(--dsh-svc-tab-active-bg)":"transparent",color:C?"var(--dsh-svc-tab-active-text)":"var(--dsh-svc-text)",cursor:b?"default":"pointer",opacity:b?.55:1}},e(C?"subagent.fallback.sort.done":"subagent.fallback.sort")):null)):null,""!==k?r.createElement("p",{"data-testid":"subagent-error",style:{...A,color:"var(--dsw-alias-state-error-primary)"}},function(e,t){return"feature-disabled"===t?e("subagent.error.feature-disabled"):"llm-unavailable"===t?e("subagent.error.llm-unavailable"):"unknown-mode"===t?e("subagent.error.unknown-mode"):"invalid-model-route"===t?e("subagent.error.invalid-model-route"):"invalid-reasoning-effort"===t?e("subagent.error.invalid-reasoning-effort"):"network"===t?e("subagent.error.network"):t}(e,k)):null,f>0&&""===k?r.createElement("p",{"data-testid":"subagent-saved",style:{...A,color:"var(--dsw-alias-state-success-primary)"}},"✓ "+e("subagent.saved")):null,r.createElement("div",{style:{display:"flex",gap:"10px",marginTop:"12px",flexWrap:"wrap"}},r.createElement("button",{type:"button","data-testid":"subagent-save",disabled:b||g||"custom"===l&&(""===P||""===p),onClick:()=>{V(l)},style:{fontSize:"12px",padding:"6px 16px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid transparent",background:"var(--dsw-alias-brand-primary)",color:"var(--dsh-svc-brand-text)",cursor:b?"default":"pointer",opacity:b||g||"custom"===l&&(""===P||""===p)?.55:1}},e(b?"subagent.saving":"subagent.save")),"inherit"!==l?r.createElement("button",{type:"button","data-testid":"subagent-reset",disabled:b||g,onClick:()=>{o("inherit"),V("inherit")},style:{fontSize:"12px",padding:"6px 14px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid var(--dsw-alias-state-error-primary)",background:"transparent",color:"var(--dsw-alias-state-error-primary)",cursor:b?"default":"pointer",opacity:b||g?.55:1}},e("subagent.reset")):null))}const Zt="dsh-service-skills-model",ea=(e,t)=>c(e,t);function ta(e){return e.provider+"\0"+e.id}function aa(){try{const e=JSON.parse(localStorage.getItem(Zt)||"null");if(e&&"string"==typeof e.provider&&"string"==typeof e.model)return e}catch(e){}return null}const ra=(e,t)=>{let a=function(e,t){const a="object"==typeof t&&null!==t?t:aa();if(null!==a){const t=e.find(e=>e.provider===a.provider&&e.id===a.model);if(void 0!==t)return t}return e[0]??null}(e,aa());return null===a&&void 0!==t&&(a=e.find(e=>e.provider===t.provider&&e.id===t.model)??null),a},sa=(e,t)=>{if(null===t||"object"!=typeof t)return String(t);const a=new Date(t.at),r=e=>String(e).padStart(2,"0"),s=Number.isFinite(a.getTime())?r(a.getHours())+":"+r(a.getMinutes())+":"+r(a.getSeconds()):"--:--:--",n="skills.log."+t.code,i=e(n,t.params??{});return"["+s+"]"+(void 0!==t.name?" ["+t.name+"]":"")+" "+(i===n?t.code:i)};function na(e,t){if("models-empty"===t)return e("skills.describe.models.empty");if("llm-unavailable"===t)return e("skills.llm.unavailable");if("batch-already-running"===t)return e("skills.batch.already");if("feature-disabled"===t)return e("skills.error.feature-disabled");if("network"===t)return e("skills.error.network");if("read-only-source"===t)return e("skills.error.read-only-source");if("unknown-skill"===t)return e("skills.error.unknown-skill");if("invalid-field"===t)return e("skills.error.invalid-field");if("invalid-enable"===t)return e("skills.error.invalid-enable");if("invalid-model-route"===t)return e("skills.error.invalid-model-route");if("invalid-description"===t)return e("skills.error.invalid-description");if("describe-timeout"===t)return e("skills.error.describe-timeout");if("batch-cancelled"===t)return e("skills.error.batch-cancelled");if("entry-changed"===t)return e("skills.error.entry-changed");if("unknown-batch-plan"===t)return e("skills.error.unknown-batch-plan");if("batch-already-done"===t)return e("skills.error.batch-already-done");if("batch-already-cancelled"===t)return e("skills.error.batch-already-cancelled");if("annotated-confirm-required"===t)return e("skills.error.annotated-confirm-required");if("string"==typeof t&&t.startsWith("empty-output")){const a=t.slice(13);return e("skills.error.empty-output",{kind:""===a?"?":a})}return"string"==typeof t&&t.startsWith("invalid-skill")?e("skills.error.invalid-skill",{reason:t.startsWith("invalid-skill:")?t.slice(14):""}):e("skills.error",{error:t})}function ia(){const e=j(),[t,s]=a(null),[n,i]=a(""),[o,d]=a(!0),[u,p]=a(""),[m,g]=a(null),[h,b]=a(null),[v,f]=a(!1),[y,k]=a([]),[x,w]=a(!1),[E,S]=a(!1),[q,C]=a(!1),[A,I]=a(!1),{batch:R,plan:z,models:M,modelItem:O,error:H}=Re(),$=null!==R?R.phase:null;l(()=>{w("running"===$)},[$]);const W=async()=>{d(!0);try{const e=await ea("skills-list",{});e.ok?(s(e.value),i("")):i(e.error||"unknown")}catch(e){i("network")}finally{d(!1)}};l(()=>{W(),Ie(),Ae().then(Ee)},[]),l(()=>{null===R||"done"!==R.phase&&"cancelled"!==R.phase||!ve||(ve=!1,W())},[null!==R&&R.phase]),l(()=>{if(null===h||!h.busy)return;const e=h.entry.id;let t;const a=async()=>{try{const t=await ea("skills-describe-log",{id:e});t.ok&&k(t.value.logs??[])}catch(e){}};return a(),t=setInterval(()=>{a()},800),()=>clearInterval(t)},[null!==h&&h.busy]),l(()=>{if(null===h||h.busy)return;const e=h.entry.id;(async()=>{try{const t=await ea("skills-describe-log",{id:e});t.ok&&k(t.value.logs??[])}catch(e){}})()},[null!==h&&h.busy]);const B=e=>{s(t=>null===t?t:{...t,entries:t.entries.map(t=>t.id===e.id?e:t)})};l(()=>{if(null===m)return;const e=setTimeout(()=>g(null),3e3);return()=>clearTimeout(e)},[m]),l(()=>{if(!q)return;const e=setTimeout(()=>C(!1),3e3);return()=>clearTimeout(e)},[q]),l(()=>{C(!1)},[$,z]);const F=async(e,t)=>{const a=e.id+":"+t;if(m!==a)return void g(a);g(null);const r="model"===t?!0!==e.invocation.model:!0!==e.invocation.user;try{const a=await ea("skills-toggle",{id:e.id,field:t,enable:r});a.ok?B(a.value.entry):i(a.error+(a.detail?":"+a.detail:"")||"unknown")}catch(e){i("network")}},P={color:"var(--dsw-alias-label-secondary)",fontSize:"12px",marginTop:"8px",lineHeight:1.5},_=(e,t)=>r.createElement("span",{key:e,style:L("warn"===t?"warning":"danger"===t?"danger":"neutral",{marginLeft:"6px",padding:"1px 7px",verticalAlign:"middle"})},e),U=(e,t)=>r.createElement("button",{type:"button",role:"switch","data-testid":t.testid,"aria-checked":String(e),title:t.title,disabled:t.disabled,onClick:t.onClick,style:{width:"34px",height:"20px",borderRadius:"10px",padding:0,flexShrink:0,position:"relative",cursor:t.disabled?"default":"pointer",lineHeight:0,border:"1px solid "+(t.armed?"var(--dsw-alias-state-warn-primary)":e?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-border-l2)"),background:t.armed?"transparent":e?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-bg-layer-2)",opacity:t.disabled?.5:1}},r.createElement("span",{style:{position:"absolute",top:"1px",left:e&&!t.armed?"15px":"1px",width:"16px",height:"16px",borderRadius:"50%",background:t.armed?"var(--dsw-alias-state-warn-primary)":e?"#fff":"var(--dsw-alias-label-tertiary)"}})),V={border:"1px solid var(--dsh-alias-border-l2)",borderRadius:"10px",padding:"11px 13px",marginBottom:"8px",background:"var(--dsh-svc-card-bg)"},K=a=>{const s="string"==typeof a.invalid&&a.invalid.startsWith("legacy-invocation-key:"),n=r.createElement("div",{style:{fontSize:"14px",fontWeight:650,color:"var(--dsw-alias-label-primary)",overflowWrap:"anywhere"}},a.name,_(e("skills.source."+a.source)==="skills.source."+a.source?a.source:e("skills.source."+a.source)),a.shadowed?_(e("skills.badge.shadowed"),"warn"):null,a.writable?null:_(e("skills.badge.readonly"),"danger"),a.annotated?_(e("skills.badge.annotated")):null),l=r.createElement("div",{style:{fontSize:"12px",color:"var(--dsw-alias-label-secondary)",marginTop:"3px",lineHeight:1.45,overflowWrap:"anywhere"}},a.description),o=""===a.usage?null:r.createElement("div",{style:{fontSize:"12px",color:"var(--dsw-alias-label-tertiary)",marginTop:"2px",lineHeight:1.45,overflowWrap:"anywhere"}},e("skills.apply.usage")+":"+a.usage),d=void 0!==a.note?r.createElement("div",{"data-testid":"skill-note-"+a.name,style:{marginTop:"5px",padding:"6px 9px",borderRadius:"7px",background:"var(--dsh-svc-raised-bg)",border:"1px solid var(--dsw-alias-border-l2)",fontSize:"11.5px",lineHeight:1.55,color:"var(--dsw-alias-label-secondary)",display:"flex",gap:"8px",alignItems:"flex-start"}},r.createElement("div",{style:{minWidth:0,flex:1}},!0===a.note.stale?r.createElement("div",{style:{marginBottom:"3px",color:"var(--dsw-alias-state-warn-primary)"}},"⚠ "+e("skills.note.stale")):null,r.createElement("div",{style:{overflowWrap:"anywhere"}},r.createElement("span",{style:{fontWeight:700,color:"var(--dsw-alias-label-primary)"}},e("skills.apply.description")+":"),r.createElement("span",null,a.note.description)),""===a.note.usage?null:r.createElement("div",{style:{overflowWrap:"anywhere",marginTop:"3px"}},r.createElement("span",{style:{fontWeight:700,color:"var(--dsw-alias-label-primary)"}},e("skills.apply.usage")+":"),r.createElement("span",null,a.note.usage))),r.createElement("button",{type:"button","data-testid":"skill-note-remove-"+a.name,onClick:()=>{(async e=>{const t=await ea("skills-note-clear",{id:e.id});t.ok?B(t.value.entry):i(t.error||"unknown")})(a)},title:e("skills.note.remove"),style:{border:0,background:"transparent",color:"var(--dsw-alias-label-tertiary)",cursor:"pointer",fontSize:"13px",flexShrink:0,lineHeight:1}},"✕")):null,c=void 0!==a.invalid?r.createElement("div",{style:{fontSize:"12px",color:"var(--dsw-alias-state-warn-primary)",marginTop:"4px",display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},"⚠ ",s?e("skills.invalid.legacy"):e("skills.invalid.other",{reason:a.invalid}),s&&a.writable?r.createElement("button",{type:"button","data-testid":"skill-fix-"+a.name,onClick:()=>{(async e=>{const t=e.id+":fix";if(m===t){g(null);try{const t=await ea("skills-fix-keys",{id:e.id});t.ok?B(t.value.entry):i(t.error+(t.detail?":"+t.detail:"")||"unknown")}catch(e){i("network")}}else g(t)})(a)},title:m===a.id+":fix"?e("skills.switch.confirm"):void 0,style:{fontSize:"11px",padding:"2px 9px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid var(--dsw-alias-state-warn-primary)",background:m===a.id+":fix"?"rgba(198,128,0,0.14)":"transparent",color:"var(--dsw-alias-state-warn-primary)",cursor:"pointer"}},m===a.id+":fix"?e("skills.switch.confirm"):e("skills.fix.legacy")):null):null,u=void 0===a.invalid?r.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"7px",alignItems:"flex-end",flexShrink:0}},r.createElement("label",{style:{display:"flex",alignItems:"center",gap:"7px",fontSize:"11.5px",color:"var(--dsw-alias-label-secondary)"}},e("skills.switch.model"),U(a.invocation.model,{testid:"skill-switch-model-"+a.name,disabled:!a.writable,armed:m===a.id+":model",title:m===a.id+":model"?e("skills.switch.confirm"):void 0,onClick:()=>{F(a,"model")}})),r.createElement("label",{style:{display:"flex",alignItems:"center",gap:"7px",fontSize:"11.5px",color:"var(--dsw-alias-label-secondary)"}},e("skills.switch.user"),U(a.invocation.user,{testid:"skill-switch-user-"+a.name,disabled:!a.writable,armed:m===a.id+":user",title:m===a.id+":user"?e("skills.switch.confirm"):void 0,onClick:()=>{F(a,"user")}})),null!==t&&t.llmAvailable?r.createElement("button",{type:"button","data-testid":"skill-describe-"+a.name,onClick:()=>{(async e=>{const t=aa();b({entry:e,models:null,modelItem:null,draft:null,busy:!1,error:"",applied:!1,preferred:t}),k([]);const a=await ea("skills-models",{});if(!a.ok)return void b(e=>({...e,error:a.error||"unknown"}));const r=a.value.models??[];b(e=>({...e,models:r,modelItem:ra(r,a.value.current)}))})(a)},style:Object.assign({},N(),{fontSize:"11px",padding:"3px 10px"})},"✨ "+e("skills.describe.button")):null):null;return r.createElement("div",{key:a.id,"data-testid":"skill-entry-"+a.name,style:V},r.createElement("div",{style:{display:"flex",gap:"12px",alignItems:"flex-start",justifyContent:"space-between"}},r.createElement("div",{style:{minWidth:0,flex:1}},n,l,o,c),u),d)},G=(t,a,s)=>0===a.length?null:r.createElement("div",{"data-testid":t,style:{marginTop:"9px",padding:"7px 10px",borderRadius:"7px",background:"var(--dsw-alias-bg-layer-3)",border:"1px solid var(--dsw-alias-border-l2)",maxHeight:"130px",overflowY:"auto"}},s?r.createElement("div",{style:{fontSize:"11px",fontWeight:700,color:"var(--dsw-alias-label-secondary)",marginBottom:"3px"}},e("skills.log.title")):null,...a.map((e,t)=>r.createElement("div",{key:t,style:{fontSize:"11px",lineHeight:1.6,color:"var(--dsw-alias-label-tertiary)",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",overflowWrap:"anywhere"}},e))),[Y,J]=a(!1);return l(()=>{null===R||"running"!==R.phase&&"planned"!==R.phase||J(!0)},[null!==R&&R.phase]),r.createElement("div",{"data-testid":"skills-section"},r.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px",flexWrap:"wrap"}},r.createElement("input",{"data-testid":"skills-filter",value:u,placeholder:e("skills.filter"),onChange:e=>p(e.target.value),style:{fontSize:"12px",padding:"6px 10px",borderRadius:"7px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)",width:"200px"}}),r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"10px",flexWrap:"wrap"}},r.createElement("button",{type:"button","data-testid":"skills-refresh","data-variant":"neutral",style:Object.assign({},D("neutral"),{minHeight:"28px",padding:"4px 10px",fontSize:"12px"}),onClick:()=>{W()}},"↻"))),o&&null===t?r.createElement("p",{style:P},"…"):null,""!==n||""!==H?r.createElement("p",{"data-testid":"skills-error",style:{...P,color:"var(--dsw-alias-state-error-primary)"}},na(e,""!==n?n:H)):null,null!==t&&t.llmAvailable?r.createElement("button",{type:"button","data-testid":"skills-batch-toggle","aria-expanded":String(Y),onClick:()=>J(e=>!e),style:{margin:"0 0 12px",fontSize:"12px",padding:"6px 14px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid "+(Y?"var(--dsw-alias-label-dimmed)":"var(--dsh-svc-border-strong)"),background:"transparent",color:"var(--dsw-alias-label-primary)",cursor:"pointer"}},(Y?"▾ ":"▸ ")+e("skills.batch.toggle")):null,Y&&null!==t&&t.llmAvailable?(()=>{const t=null!==R&&"planned"===R.phase&&null===z?"idle":null!==R?R.phase:"idle",a=t,s=null!==R&&R.total>0?Math.round(R.done/R.total*100):0,n=Array.isArray(z?.annotated)?z.annotated.length:0;return r.createElement("div",{"data-testid":"skills-batch-card",style:{border:"1px solid var(--dsw-alias-border-l2)",borderRadius:"12px",padding:"13px 15px",margin:"14px 0"}},r.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px"}},r.createElement("div",{style:{fontSize:"13.5px",fontWeight:700}},e("skills.batch.title")),r.createElement("button",{type:"button","data-testid":"skills-batch-collapse",onClick:()=>J(!1),style:{border:0,background:"transparent",color:"var(--dsw-alias-label-tertiary)",cursor:"pointer",fontSize:"12px"}},e("skills.batch.collapse")+" ▴")),r.createElement("p",{style:{...P,marginTop:"4px"}},e("skills.batch.hint")),r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"10px",marginTop:"9px",flexWrap:"wrap"}},null!==M&&M.length>0?r.createElement("label",{style:{display:"flex",alignItems:"center",gap:"6px",fontSize:"12px",color:"var(--dsw-alias-label-secondary)"}},e("skills.batch.model"),r.createElement("select",{"data-testid":"skills-batch-model",value:null===O?"":ta(O),disabled:v||null!==R&&"running"===R.phase,onChange:e=>(e=>{const t=(ge??[]).find(t=>ta(t)===e)??null;if(he=t,null!==t)try{localStorage.setItem(Zt,JSON.stringify({provider:t.provider,model:t.id}))}catch(e){}Ee()})(e.target.value),style:{fontSize:"12px",padding:"4px 8px",borderRadius:"6px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)",maxWidth:"100%"}},M.map(e=>r.createElement("option",{key:ta(e),value:ta(e)},e.providerName+" / "+e.name)))):null,"idle"===t||"done"===t||"cancelled"===t?r.createElement("button",{type:"button","data-testid":"skills-batch-plan",disabled:v,onClick:()=>{(async()=>{f(!0);try{await(async()=>{if(be="",Ee(),0===(await Ae()).length||null===he)return be="models-empty",Ee(),!1;try{localStorage.setItem(Zt,JSON.stringify({provider:he.provider,model:he.id}))}catch(e){}const e=await c("skills-batch-plan",{provider:he.provider,model:he.id});if(!e.ok)return be=e.error||"unknown",Ee(),!1;me={...e.value,modelItem:he};const t=Array.isArray(e.value.annotated)?e.value.annotated.length:0;return pe={phase:"planned",total:e.value.candidates.length+t,done:0,failures:[],current:null,estBytes:e.value.estBytes,logs:[]},qe("planned"),Te(),Ee(),!0})()}finally{f(!1)}})()},style:Object.assign({},D("neutral"),{cursor:v?"default":"pointer",opacity:v?.55:1})},e("skills.batch.plan")):null,null!==z?r.createElement("span",{"data-testid":"skills-batch-candidates",style:{fontSize:"12px",color:"var(--dsw-alias-label-secondary)"}},e("skills.batch.candidates",{count:z.candidates.length})+(z.estBytes>0?" · "+e("skills.batch.estBytes",{size:(i=z.estBytes,i>=1048576?(i/1024/1024).toFixed(1)+" MB":i>=1024?(i/1024).toFixed(1)+" KB":String(i)+" B")}):"")+(n>0?" · "+e("skills.batch.annotated",{count:n}):"")+" · "+e("skills.batch.skipped",{count:z.skipped.length})):null,null!==z&&"planned"===t?r.createElement("button",{type:"button","data-testid":"skills-batch-start",disabled:v||0===z.candidates.length&&0===n,onClick:()=>{(async()=>{const e=Array.isArray(z?.annotated)?z.annotated.length:0;if(e>0&&!q)C(!0);else{C(!1),f(!0);try{await(async(e=!1)=>{if(null===me||null===pe)return!1;const t=await c("skills-batch-run",{planId:me.planId,lang:T(),...!0===e?{forceAnnotated:!0}:{}});return t.ok?(pe={...pe,phase:"running"},qe("running"),Te(),Ee(),!0):(be=t.error||"unknown",Ee(),!1)})(e>0)}finally{f(!1)}}})()},title:q?e("skills.switch.confirm"):void 0,style:{fontSize:"12px",padding:"5px 14px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid transparent",background:q?"var(--dsh-svc-warning)":"var(--dsw-alias-brand-primary)",color:"var(--dsh-svc-brand-text)",cursor:v?"default":"pointer",opacity:v?.55:1}},q&&n>0?e("skills.batch.forceConfirm",{count:n}):e("skills.batch.start")):null,null!==R&&"running"===R.phase?r.createElement("button",{type:"button","data-testid":"skills-batch-cancel",onClick:()=>{(async()=>{await(async()=>{try{await c("skills-batch-cancel",{}),Se(!1)}catch(e){}})()})()},style:{fontSize:"12px",padding:"4px 12px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid var(--dsw-alias-state-error-primary)",background:"transparent",color:"var(--dsw-alias-state-error-primary)",cursor:"pointer"}},e("skills.batch.cancel")):null,null!==R?r.createElement("span",{"data-testid":"skills-batch-phase",style:{fontSize:"12px",color:"var(--dsw-alias-label-tertiary)"}},e("skills.batch.phase."+a)):null),null!==z&&0===z.candidates.length&&0===n?r.createElement("p",{style:P},e("skills.batch.no-candidates")):null,null===z||0===z.skipped.length?null:r.createElement("div",{"data-testid":"skills-batch-skipped",style:{marginTop:"6px"}},r.createElement("button",{type:"button","data-testid":"skills-batch-skipped-toggle",onClick:()=>S(e=>!e),style:{border:0,background:"transparent",color:"var(--dsw-alias-label-tertiary)",cursor:"pointer",fontSize:"11.5px",padding:0}},(E?"▾ ":"▸ ")+e("skills.skippedList")+"("+z.skipped.length+")"),E?r.createElement("div",{style:{marginTop:"4px",fontSize:"11.5px",lineHeight:1.6,color:"var(--dsw-alias-label-tertiary)"}},z.skipped.map((t,a)=>r.createElement("div",{key:t.id??a,"data-testid":"skills-batch-skipped-item"},(""===t.name?t.id:t.name)+e("skills.colon")+(t=>{if("shadowed"===t)return e("skills.skip.shadowed");if("string"==typeof t&&t.startsWith("legacy-invocation-key"))return e("skills.skip.reason.legacy-invocation-key");const a=e("skills.skip.reason."+t);return a==="skills.skip.reason."+t?t:a})(t.reason)))):null),(()=>{const t=Array.isArray(z?.annotated)?z.annotated:[];return null===z||0===t.length?null:r.createElement("div",{"data-testid":"skills-batch-annotated",style:{marginTop:"6px"}},r.createElement("button",{type:"button","data-testid":"skills-batch-annotated-toggle",onClick:()=>I(e=>!e),style:{border:0,background:"transparent",color:"var(--dsw-alias-label-tertiary)",cursor:"pointer",fontSize:"11.5px",padding:0}},(A?"▾ ":"▸ ")+e("skills.batch.annotatedList")+"("+t.length+")"),A?r.createElement("div",{style:{marginTop:"4px",fontSize:"11.5px",lineHeight:1.6,color:"var(--dsh-svc-warning)"}},t.map((e,t)=>r.createElement("div",{key:e.id??t,"data-testid":"skills-batch-annotated-item"},""===e.name?e.id:e.name))):null)})(),null!==R&&R.total>0&&"idle"!==t?(()=>{const t=Array.isArray(R.failures)&&R.failures.length>0?r.createElement("div",{"data-testid":"skills-batch-failures",style:{marginTop:"7px",fontSize:"11.5px",color:"var(--dsw-alias-state-error-primary)",lineHeight:1.5}},e("skills.batch.failures",{count:R.failures.length})+":"+R.failures.map(e=>e.name+"("+e.reason+")").join("、")):null,a=Array.isArray(R.logs)?R.logs:[],n=0===a.length?null:r.createElement("div",null,r.createElement("button",{type:"button","data-testid":"skills-batch-log-toggle",onClick:()=>w(e=>!e),style:{marginTop:"7px",border:0,background:"transparent",color:"var(--dsw-alias-label-tertiary)",cursor:"pointer",fontSize:"11.5px",padding:0}},(x?"▾ ":"▸ ")+e("skills.log.title")+"("+a.length+")"),x?G("skills-batch-log",a.slice(-30).map(t=>sa(e,t)),!1):null);return r.createElement("div",{style:{marginTop:"10px"}},r.createElement("div",{"data-testid":"skills-batch-progress",style:{fontSize:"12px",color:"var(--dsw-alias-label-secondary)",marginBottom:"4px"}},e("skills.batch.progress",{done:R.done,total:R.total})+(null!==R.current?" · "+e("skills.batch.current",{name:R.current}):"")),r.createElement("div",{style:{height:"6px",borderRadius:"3px",background:"var(--dsw-alias-bg-layer-3)",overflow:"hidden"}},r.createElement("div",{style:{height:"100%",width:s+"%",background:"var(--dsw-alias-state-success-primary)",transition:"width .3s"}})),t,n)})():null);var i})():null,(()=>{if(null===h)return null;const{entry:t,models:a,modelItem:s,draft:n,busy:i,error:l,applied:o}=h,d=null===n?null:[["description",void 0!==t.note?t.note.description:"",n.description],["usage",void 0!==t.note?t.note.usage:"",""===n.usage?null:n.usage]].map(([t,a,s])=>r.createElement("div",{key:t,"data-testid":"skill-diff-"+t,style:{marginBottom:"9px"}},r.createElement("div",{style:{fontSize:"12px",fontWeight:700,marginBottom:"3px"}},e("skills.apply."+t)),r.createElement("div",{style:{fontSize:"12px",color:"var(--dsw-alias-label-tertiary)",textDecoration:"line-through",lineHeight:1.45}},e("skills.apply.old")+":"+(""===a?"—":a)),r.createElement("div",{style:{fontSize:"12px",color:"var(--dsw-alias-label-primary)",lineHeight:1.45}},e("skills.apply.new")+":"+(null===s?e("skills.apply.keepusage"):s))));return r.createElement("div",{"data-testid":"skill-describe-dialog",style:{border:"1px solid var(--dsw-alias-border-l1)",borderRadius:"12px",padding:"14px 16px",marginBottom:"14px",background:"var(--dsh-svc-raised-bg)"}},r.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px"}},r.createElement("div",{style:{fontSize:"14px",fontWeight:700}},e("skills.describe.title",{name:t.name})),r.createElement("button",{type:"button",onClick:()=>b(null),style:{border:0,background:"transparent",color:"var(--dsw-alias-label-tertiary)",cursor:"pointer",fontSize:"15px"}},"✕")),null===a&&""===l?r.createElement("p",{style:P},e("skills.describe.models.loading")):null,null!==a&&0===a.length?r.createElement("p",{style:P},e("skills.describe.models.empty")):null,null!==a&&a.length>0?r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginTop:"10px",flexWrap:"wrap"}},r.createElement("span",{style:{fontSize:"12px",color:"var(--dsw-alias-label-secondary)"}},e("skills.describe.model")),r.createElement("select",{"data-testid":"skill-describe-model",value:null===s?"":ta(s),onChange:e=>b(t=>null===t?t:{...t,modelItem:a.find(t=>ta(t)===e.target.value)??null}),style:{fontSize:"12px",padding:"4px 8px",borderRadius:"6px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)",maxWidth:"100%"}},a.map(e=>r.createElement("option",{key:ta(e),value:ta(e)},e.providerName+" / "+e.name))),null===n?r.createElement("button",{type:"button","data-testid":"skill-describe-run",disabled:i||null===s,onClick:()=>{(async()=>{if(null===h||null===h.modelItem)return;const{entry:e,modelItem:t}=h;b(e=>({...e,busy:!0,error:""}));const a=await ea("skills-describe",{id:e.id,provider:t.provider,model:t.id,lang:T()});if(a.ok){try{localStorage.setItem(Zt,JSON.stringify({provider:t.provider,model:t.id}))}catch(e){}b(e=>({...e,draft:a.value.draft,busy:!1}))}else b(e=>({...e,busy:!1,error:a.error+(a.detail?":"+a.detail:"")}))})()},style:Object.assign({},D("neutral"),{fontSize:"12px",minHeight:"28px",padding:"4px 12px",cursor:i?"default":"pointer",opacity:i||null===s?.55:1})},e(i?"skills.describe.running":"skills.describe.run")):null):null,""!==l?r.createElement("p",{"data-testid":"skill-describe-error",style:{...P,color:"var(--dsw-alias-state-error-primary)"}},na(e,l)):null,G("skill-describe-log",y.map(t=>sa(e,t))),d,o?r.createElement("p",{"data-testid":"skill-apply-done",style:{...P,color:"var(--dsw-alias-state-success-primary)"}},"✓ "+e("skills.apply.done")):null,null===n||o?null:r.createElement("p",{"data-testid":"skill-note-disclaimer",style:{...P,fontSize:"11px"}},e("skills.note.panelOnly")),null===n||o?null:r.createElement("button",{type:"button","data-testid":"skill-apply-confirm",disabled:i,onClick:()=>{(async()=>{if(null===h||null===h.draft||null===h.modelItem)return;const{entry:e,draft:t,modelItem:a}=h;b(e=>({...e,busy:!0}));const r=await ea("skills-note-save",{id:e.id,patch:{description:t.description,usage:t.usage},model:a.provider+"/"+a.id});r.ok?(B(r.value.entry),b(e=>({...e,busy:!1,applied:!0}))):b(e=>({...e,busy:!1,error:r.error||"unknown"}))})()},style:{fontSize:"12px",padding:"6px 16px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid transparent",background:"var(--dsw-alias-brand-primary)",color:"var(--dsh-svc-brand-text)",cursor:i?"default":"pointer",opacity:i?.55:1}},e("skills.apply.confirm")))})(),(()=>{if(null===t||0===t.entries.length)return r.createElement("p",{style:P},e("skills.empty"));const a=u.trim().toLowerCase(),s=""===a?t.entries:t.entries.filter(e=>e.name.toLowerCase().includes(a)),n=s.filter(e=>void 0!==e.invalid),i=s.filter(e=>void 0===e.invalid),l=[["skills.group.auto",i.filter(e=>e.invocation.model)],["skills.group.manual",i.filter(e=>!e.invocation.model&&e.invocation.user)],["skills.group.disabled",i.filter(e=>!e.invocation.model&&!e.invocation.user)]];return r.createElement("div",null,n.length>0?r.createElement("div",{"data-testid":"skills-invalid-group",style:{marginBottom:"12px"}},n.map(K)):null,l.map(([t,a])=>0===a.length?null:r.createElement("div",{key:t,"data-testid":"skills-group-"+t.split(".").pop(),style:{marginBottom:"14px"}},r.createElement("div",{style:{fontSize:"12px",fontWeight:700,margin:"0 0 7px",color:"var(--dsw-alias-label-secondary)"}},e(t)+" · "+a.length),a.map(K))))})())}function la(){return r.createElement(fa,null)}function oa(e){if("number"!=typeof e||!Number.isFinite(e)||e<0)return"";if(0===e)return"0 B";const t=["B","KB","MB","GB"];let a=e,r=0;for(;a>=1024&&r<t.length-1;)a/=1024,r+=1;return(0===r?String(a):a.toFixed(1))+" "+t[r]}function da(e,t){if("number"!=typeof e||e<=0)return t("sessions.status.unavailableTime");try{return new Date(e).toLocaleString()}catch(t){return String(e)}}function ca(e,t){return"feature-disabled"===t?e("sessions.error.feature-disabled"):"session-not-found"===t?e("sessions.error.session-not-found"):"live-session-rejected"===t?e("sessions.error.live-session-rejected"):"session-not-archived"===t?e("sessions.error.session-not-archived"):"unknown-delete-plan"===t?e("sessions.error.unknown-delete-plan"):"network"===t?e("sessions.error.network"):t}const ua={all:void 0,archived:void 0,deleted:void 0},pa=new Map,ma=[Symbol.for("react.memo"),Symbol.for("react.forward_ref"),Symbol.for("react.lazy")],ga=e=>"function"==typeof e||null!==e&&"object"==typeof e&&"symbol"==typeof e.$$typeof&&ma.includes(e.$$typeof);let ha=null;const ba=e=>{const t=e("sessions.md.copy"),a=e("sessions.md.copied"),r=e("sessions.md.footnotes");return{code:{copyLabel:"string"==typeof t&&""!==t?t:"Copy",copiedLabel:"string"==typeof a&&""!==a?a:"Copied"},footnotes:"string"==typeof r&&""!==r?r:"Footnotes"}};try{const t=e("@deepseek-ai/dsh-client-ui-primitives");let a=null==t?null:t.MarkdownText;if(ga(a))ha=a;else if(null!==a&&"object"==typeof a)if(a="function"==typeof a.default?a.default:"function"==typeof a.MarkdownText?a.MarkdownText:null,ga(a))ha=a;else{let e=String(typeof a);try{e+=" keys=["+Object.keys(a).join(",")+"]"}catch(e){}console.warn("[dsh-service-md] MarkdownText is an unexpected value ("+e+") — falling back to plain text")}else console.warn("[dsh-service-md] ui-primitives seed present, but MarkdownText unavailable ("+typeof a+") — falling back to plain text")}catch(e){console.warn("[dsh-service-md] ui-primitives require failed: "+(e&&e.message?e.message:String(e)))}function va(){const e=j(),{useState:a,useEffect:s,useRef:n}=r,[i,l]=ue.useEnabled(),o=ua.archived,[d,u]=a(void 0!==o?o:null),[p,m]=a(void 0===o),[g,h]=a(""),[b,v]=a(Object.fromEntries(pa)),f=n(new Set),[y,k]=a("archived"),[x,w]=a("createdDesc"),[E,S]=a([]),[q,C]=a(!1),[T,A]=a([]),[I,R]=a(""),[z,M]=a(!1),[O,H]=a(!1),[$,W]=a(null),[B,F]=a(null),[P,_]=a(!1),[U,V]=a(""),[K,G]=a({}),Y=n(null),J=()=>y+"\0"+x+"\0"+I+"\0"+(z?1:0),[Q,X]=a(""),[Z,ee]=a(""),[te,ae]=a(""),[re,se]=a(""),[ne,ie]=a(""),[le,oe]=a(null),[de,ce]=a(!1),[pe,me]=a(""),[ge,he]=a(0),[be,ve]=a(""),[fe,ye]=a(""),ke={color:"var(--dsw-alias-label-secondary)",fontSize:"12px",marginTop:"8px",lineHeight:1.5},xe=N(),we=Object.assign({},xe,{background:"transparent",borderColor:"var(--dsw-alias-state-error-primary)",color:"var(--dsw-alias-state-error-primary)"}),Ee=Object.assign({},xe,{background:"var(--dsw-alias-state-error-primary)",borderColor:"transparent",color:"var(--dsh-svc-brand-text)"}),Se=e=>"archived"===e?"archived":"deleted"===e?"deleted":"all",qe=n(y);qe.current=y;const Ce=async(t,a={})=>{const r=void 0!==t?t:Se(y),s=ua[r],n=!a.force&&void 0!==s;if(n){if(u(s),h(""),m(!1),!0!==a.silent)return}else m(!0);try{const t=await c("sessions-list",{scope:r});t.ok?(ua[r]=t.value,Se(qe.current)===r&&(u(t.value),h(""))):n&&a.silent||h(ca(e,t.error||"unknown"))}catch(t){n&&a.silent||h(e("sessions.error.network"))}finally{n&&a.silent||m(!1)}};s(()=>{Ce("archived",{silent:!0})},[]),s(()=>{if(null===d)return;const e=Array.isArray(d.items)?d.items:[],t=[];for(const a of e){const e=a.id;void 0!==b[e]||f.current.has(e)||(f.current.add(e),t.push(e))}if(0===t.length)return;let a=!1;const r=async e=>{try{const t=await c("sessions-bytes",{ids:e});if(a)return;const r=t&&t.ok&&t.value&&"object"==typeof t.value.bytes?t.value.bytes:{};if(Object.keys(r).length>0){for(const t of e)void 0!==r[t]&&pa.set(t,r[t]);v(t=>{const a={...t};for(const t of e)void 0!==r[t]&&(a[t]=r[t]);return a})}}catch(e){}finally{if(!a)for(const t of e)f.current.delete(t)}};for(let e=0;e<t.length;e+=100)r(t.slice(e,e+100));return()=>{a=!0;for(const e of t)f.current.delete(e)}},[d]),s(()=>{if("deleted"!==y){if(""!==I.trim())return t.timer.timeout(()=>{(async e=>{if(""!==e.trim()){H(!0);try{const t=await c("sessions-search",{query:e.trim(),scope:z?"archived":"all"});t.ok?W(t.value):W({available:!0,query:e,scope:"all",hits:[],error:t.error})}catch(t){W({available:!0,query:e,scope:z?"archived":"all",hits:[],error:"network"})}finally{H(!1)}}else W(null)})(I)},300);W(null)}},[I,z,y]);const Te=(e,t,a,r,s)=>{C(!1),A([]),se(""),ie("");const n=function(e){let t=null!=e&&e.currentTarget?e.currentTarget:null;const a="undefined"!=typeof document?document:null;for(;null!=t&&1===t.nodeType;){let e="";if(null!==a&&a.defaultView&&"function"==typeof a.defaultView.getComputedStyle)try{const r=a.defaultView.getComputedStyle(t);e=r?String(r.overflowY||""):""}catch(e){}else t.style&&(e=String(t.style.overflowY||t.style.overflow||""));if(("auto"===e||"scroll"===e||"overlay"===e)&&"number"==typeof t.scrollHeight&&"number"==typeof t.clientHeight&&t.scrollHeight>t.clientHeight+1)return t;t=t.parentNode}return null}(r);if(null!==n&&(Y.current={key:J(),container:n,scrollTop:n.scrollTop}),G({}),F({sessionId:e,view:t||"events",cursor:void 0,items:[],total:0,hitItems:a||null,loadedTitle:"",centerSeq:void 0}),V(""),_(!1),"search"===(t||"events")&&Array.isArray(a)&&a.length>0){const t=Number.isSafeInteger(s)?Number(s):Number(a[0].seq);Ie(e,Number.isSafeInteger(t)?t:0)}else Ae(e,void 0,t||"events")},Ae=async(t,a,r)=>{_(!0);try{const s=await c("sessions-view",{id:t,cursor:a});s.ok?(F(e=>{const n=null===e?{}:e,i=void 0===a?s.value.items||[]:[...n.items||[],...s.value.items||[]];return{...n,sessionId:t,view:r||n.view||"events",cursor:s.value.nextCursor,items:i,total:s.value.total,loadedTitle:n.loadedTitle||(s.value.session&&s.value.session.id,"")}}),V("")):V(ca(e,s.error||"unknown"))}catch(t){V(e("sessions.error.network"))}finally{_(!1)}},Ie=async(t,a)=>{_(!0),V("");try{const r=await c("sessions-view",{id:t,center:a});r.ok?(F(e=>{const s=null===e?{}:e;return{...s,sessionId:t,view:"search",cursor:r.value.nextCursor,items:r.value.items||[],total:r.value.total,centerSeq:Number.isSafeInteger(r.value.centerSeq)?r.value.centerSeq:a,loadedTitle:s.loadedTitle||""}}),V("")):V(ca(e,r.error||"unknown"))}catch(t){V(e("sessions.error.network"))}finally{_(!1)}},Re=async t=>{try{const a=await c("sessions-export",{id:t});if(!a.ok)return{ok:!1,error:ca(e,a.error||"unknown")};const r=a.value.url,s=await fetch(r,{method:"HEAD"});if(!s.ok)return{ok:!1,error:e("sessions.error.export-failed",{error:"HTTP "+s.status})};const n=document.createElement("a");return n.href=r,n.download="dsh-session-"+t.replace(/[^A-Za-z0-9_-]/g,"_")+".zip",n.click(),{ok:!0}}catch(t){return{ok:!1,error:e("sessions.error.network")}}},ze=async e=>{X(e),ee("");const t=await Re(e);return t.ok||ee(t.error),X(""),t},Me=async t=>{try{const a=await c("sessions-archive",{id:t});return a.ok?((e=>{const t=ua.all;void 0!==t&&Array.isArray(t.items)&&(ua.all={...t,items:t.items.map(t=>t.id===e?{...t,archived:!0}:t)});const a=ua.archived;if(void 0!==a&&Array.isArray(a.items)){const r=a.items.some(t=>t.id===e),s=t?.items?.find(t=>t.id===e);ua.archived=r?{...a,items:a.items.map(t=>t.id===e?{...t,archived:!0}:t)}:void 0!==s?{...a,items:[{...s,archived:!0},...a.items]}:a}u(t=>null!==t&&Array.isArray(t.items)?{...t,items:t.items.map(t=>t.id===e?{...t,archived:!0}:t)}:t)})(t),{ok:!0}):{ok:!1,error:ca(e,a.error||"unknown")}}catch(t){return{ok:!1,error:e("sessions.error.network")}}},Oe=e=>{const t=e?.id??"";if(""===t)return;const a=null!==d&&Array.isArray(d.items)?d.items.find(e=>e.id===t):void 0,r={id:t,title:"string"==typeof e?.title?e.title:a?.title??"",cwd:e?.cwd??a?.cwd??null,deletedAt:Date.now()};for(const e of["all","archived"]){const a=ua[e];void 0!==a&&Array.isArray(a.items)&&(ua[e]={...a,items:a.items.filter(e=>e.id!==t)})}const s=ua.deleted;void 0!==s&&(ua.deleted={...s,deleted:[r,...(Array.isArray(s.deleted)?s.deleted:[]).filter(e=>e.id!==t)]}),pa.delete(t),u(e=>{if(null===e)return e;const a=Array.isArray(e.items)?e.items:[];return{...e,items:a.filter(e=>e.id!==t),deleted:[r,...(Array.isArray(e.deleted)?e.deleted:[]).filter(e=>e.id!==t)]}}),v(e=>{const a={...e};return delete a[t],a}),f.current.delete(t)};s(()=>{ge>0&&F(null)},[ge]),s(()=>{if(null!==B)return;const e=Y.current;if(Y.current=null,null===e)return;if(e.key!==J())return;if(null===e.container||void 0===e.container)return;const t="number"==typeof e.scrollTop?e.scrollTop:0;try{"number"==typeof e.container.scrollTop&&(e.container.scrollTop=t)}catch(e){}},[B]);const je=null!==B&&"search"===B.view?B.centerSeq:null,He=null!==B&&"search"===B.view&&Array.isArray(B.items)?B.items.length:0;s(()=>{if(null!==je&&"number"==typeof je)return function(e){if("undefined"==typeof document||null===document)return()=>{};try{const a=document.querySelector('[data-testid="sessions-jump-target-'+e+'"]');if(null==a)return()=>{};try{a.scrollIntoView({behavior:"smooth",block:"center"})}catch(e){try{a.scrollIntoView()}catch(e){}}if(a.classList&&"function"==typeof a.classList.add){a.classList.add("dshsv-locate-flash");const e=t.timer.timeout(()=>{try{a.classList&&"function"==typeof a.classList.remove&&a.classList.remove("dshsv-locate-flash")}catch(e){}},2e3);return()=>{e();try{a.classList&&"function"==typeof a.classList.remove&&a.classList.remove("dshsv-locate-flash")}catch(e){}}}}catch(e){}return()=>{}}(je)},[je,He]);const De=(()=>{if(null===d)return[];if("deleted"===y)return(Array.isArray(d.deleted)?d.deleted:[]).slice().sort((e,t)=>(t.deletedAt||0)-(e.deletedAt||0)).map(e=>({...e,_deleted:!0,archived:!0}));let e=(Array.isArray(d.items)?d.items:[]).slice();return"createdAsc"===x?e.sort((e,t)=>(e.createdAt||0)-(t.createdAt||0)):"title"===x?e.sort((e,t)=>String(e.title||"").localeCompare(String(t.title||""))):"project"===x?e.sort((e,t)=>String(e.cwd||"").localeCompare(String(t.cwd||""))||(t.createdAt||0)-(e.createdAt||0)):e.sort((e,t)=>(t.createdAt||0)-(e.createdAt||0)),e})(),Ne="deleted"===y||""!==I.trim()?[]:De.filter(e=>!0!==e._deleted).map(e=>e.id),Le=new Set(T),$e=De.filter(e=>Le.has(e.id)),We=$e.filter(e=>!0!==e._deleted),Be=$e.filter(e=>!0!==e._deleted&&!0!==e.live&&!0!==e.archived),Fe=$e.filter(e=>!0!==e._deleted&&!0!==e.live&&!0===e.archived),Pe=Ne.length>0&&Ne.every(e=>Le.has(e));s(()=>{if(!q)return;const e=new Set(Ne);A(t=>{const a=t.filter(t=>e.has(t));return a.length===t.length?t:a})},[d,y,q]);const _e=()=>{C(!1),A([]),se(""),ie("")},Ue=e=>{A(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},Ve=t=>{const a=!0===t._deleted,s=t.id,n=a?t.title||e("sessions.row.noTitle"):""!==t.title?t.title:e("sessions.row.noTitle"),i=!0===t.live,l=a||!0===t.archived,o=Le.has(s),d=(()=>{const e=b[s];return"number"==typeof e&&e>0?oa(e):null})(),u=[i?e("sessions.row.live"):l?e("sessions.row.archived"):null,a?e("sessions.row.deleted"):null,t.cwd?e("sessions.detail.cwd",{cwd:t.cwd}):null,a?t.deletedAt?da(t.deletedAt,e):null:d].filter(Boolean),p=[];return a||(p.push(r.createElement("button",{key:"view",type:"button","data-testid":"sessions-row-view-"+s,style:xe,onClick:e=>Te(s,"events",null,e)},e("sessions.action.view"))),p.push(r.createElement("button",{key:"export",type:"button","data-testid":"sessions-row-export-"+s,style:xe,disabled:Q===s,onClick:()=>{ze(s)}},e(Q===s?"sessions.detail.exporting":"sessions.action.export"))),i||l||p.push(r.createElement("button",{key:"archive",type:"button","data-testid":"sessions-row-archive-"+s,style:xe,disabled:be===s,onClick:()=>{(async e=>{ve(e),ye("");const t=await Me(e);t.ok||ye(t.error),ve("")})(s)}},e(be===s?"sessions.status.working":"sessions.action.archive"))),!i&&l&&p.push(r.createElement("button",{key:"delete",type:"button","data-testid":"sessions-row-delete-"+s,style:we,onClick:()=>{(async t=>{if(null===le&&!de){me("");try{const a=await c("sessions-delete-plan",{id:t});a.ok?oe(a.value):me(ca(e,a.error||"unknown"))}catch(t){me(e("sessions.error.network"))}}})(s)}},e("sessions.action.delete")))),r.createElement("div",{key:s,"data-testid":"sessions-row-"+s,"data-selected":q&&o?"true":void 0,onClick:q&&!a?()=>Ue(s):void 0,style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px",padding:q?"9px 2px 9px 8px":"9px 2px",borderBottom:"1px solid var(--dsh-svc-border)",background:"transparent",borderRadius:"4px",boxShadow:q&&o?"inset 3px 0 0 var(--dsw-alias-brand-primary)":"none",cursor:q&&!a?"pointer":"default"}},r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"9px",minWidth:0,flex:"1 1 auto"}},q&&!a?r.createElement("input",{type:"checkbox","data-testid":"sessions-select-"+s,"aria-label":e("sessions.batch.selectRow",{title:n}),checked:o,onClick:e=>e.stopPropagation(),onChange:()=>Ue(s),style:{width:"16px",height:"16px",flexShrink:0,accentColor:"var(--dsw-alias-brand-primary)",cursor:"pointer"}}):null,r.createElement("div",{style:{minWidth:0}},r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"6px",flexWrap:"wrap"}},r.createElement("span",{style:{fontSize:"13px",fontWeight:600,color:"var(--dsw-alias-label-primary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},n),i?r.createElement("span",{"data-testid":"sessions-tag-live-"+s,style:L("success")},e("sessions.row.live")):null,l?r.createElement("span",{"data-testid":"sessions-tag-archived-"+s,style:L("warning")},e("sessions.row.archived")):null,a?r.createElement("span",{style:L("danger")},e("sessions.row.deleted")):null),r.createElement("div",{"data-testid":"sessions-meta-"+s,style:{fontSize:"11.5px",color:"var(--dsw-alias-label-tertiary)",marginTop:"3px"}},u.join(" · ")))),q?null:r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"6px",flexShrink:0,flexWrap:"wrap",justifyContent:"flex-end"}},...p))},Ke=(t,a)=>{const s=!0===t.noise,n="string"==typeof t.text&&""!==t.text?r.createElement("div",{"data-testid":"sessions-event-text-"+t.seq,style:{marginTop:"4px"}},null!==ha?r.createElement(ha,{text:t.text,labels:ba(e)}):r.createElement("div",{style:{fontSize:"12px",lineHeight:1.55,color:"var(--dsw-alias-label-primary)",whiteSpace:"pre-wrap",wordBreak:"break-word"}},t.text)):null;return r.createElement("div",{key:String(t.seq),"data-testid":"sessions-event-"+t.seq,style:{padding:"8px 10px",borderRadius:"8px",border:"1px solid var(--dsw-alias-border-l1)",background:s?"transparent":"var(--dsw-alias-bg-layer-3)",marginBottom:"5px"}},r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"11px",color:"var(--dsw-alias-label-tertiary)"}},r.createElement("span",{"data-testid":"sessions-event-type-"+t.seq,style:{fontWeight:600,color:s?"inherit":"var(--dsw-alias-label-secondary)"}},s?e("sessions.detail.noise"):t.type),t.time?r.createElement("span",null,da(t.time,e)):null),n)};return r.createElement("div",null,r.createElement("div",{style:{fontSize:"14px",fontWeight:700,margin:"0 0 8px",color:"var(--dsw-alias-label-primary)"}},e("sessions.title")),r.createElement("p",{style:ke},e("sessions.hint")),r.createElement("div",{"data-testid":"sessions-nav-toggle",style:{margin:"2px 0 8px"}},r.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px"}},r.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"2px"}},r.createElement("span",{style:{fontSize:"13px",color:"var(--dsw-alias-label-primary)"}},e("sessions.navToggle")),r.createElement("span",{style:ke},e("sessions.navToggleHint"))),r.createElement("button",{type:"button",role:"switch","data-testid":"sessions-nav-switch","aria-checked":String(i),onClick:()=>l(!i),style:{width:"34px",height:"20px",borderRadius:"10px",padding:0,flexShrink:0,position:"relative",border:"1px solid "+(i?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-border-l2)"),background:i?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-bg-layer-2)",cursor:"pointer",lineHeight:0}},r.createElement("span",{style:{position:"absolute",top:"1px",left:i?"15px":"1px",width:"16px",height:"16px",borderRadius:"50%",background:i?"#fff":"var(--dsw-alias-label-tertiary)"}})))),r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap",margin:"0 0 10px"}},["all","archived","deleted"].map(t=>r.createElement("button",{key:t,type:"button","data-testid":"sessions-filter-"+t,style:{...xe,background:y===t?"var(--dsh-svc-tab-active-bg)":"transparent",color:y===t?"var(--dsh-svc-tab-active-text)":"var(--dsw-alias-label-primary)",fontWeight:y===t?650:400},onClick:()=>(e=>{e!==y&&(k(e),C(!1),A([]),se(""),ie(""),R(""),W(null),F(null),Ce(e))})(t)},e("sessions.filter."+t))),r.createElement("select",{"data-testid":"sessions-sort",style:{fontSize:"12px",padding:"4px 8px",borderRadius:"6px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)",maxWidth:"100%"},value:x,onChange:e=>w(e.target.value)},r.createElement("option",{value:"createdDesc"},e("sessions.sort.createdDesc")),r.createElement("option",{value:"createdAsc"},e("sessions.sort.createdAsc")),r.createElement("option",{value:"title"},e("sessions.sort.title")),r.createElement("option",{value:"project"},e("sessions.sort.project"))),r.createElement("button",{type:"button","data-testid":"sessions-refresh","data-variant":"neutral",style:Object.assign({},D("neutral"),{minHeight:"28px",padding:"4px 10px",fontSize:"12px"}),onClick:()=>{Ce(void 0,{force:!0})}},e("sessions.refresh")),null===B&&"deleted"!==y&&""===I.trim()?r.createElement("button",{type:"button","data-testid":"sessions-batch-toggle","data-variant":q?"primary":"neutral",style:Object.assign({},D(q?"primary":"neutral"),{minHeight:"28px",padding:"4px 10px",fontSize:"12px"}),onClick:q?_e:()=>{C(!0),A([]),se(""),ie("")}},e(q?"sessions.batch.exit":"sessions.batch.enter")):null),null===B&&q?r.createElement("div",{"data-testid":"sessions-batch-bar",style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap",margin:"0 0 10px",padding:"8px 10px",border:"1px solid var(--dsw-alias-border-l1)",borderRadius:"8px",background:"var(--dsw-alias-bg-layer-3)"}},r.createElement("button",{type:"button","data-testid":"sessions-select-all",style:xe,disabled:0===Ne.length||""!==te||de,onClick:()=>{A(Pe?[]:Ne.slice())}},e(Pe?"sessions.batch.clearAll":"sessions.batch.selectAll")),r.createElement("span",{"data-testid":"sessions-selected-count",style:{fontSize:"12px",color:"var(--dsw-alias-label-secondary)",marginRight:"auto"}},e("sessions.batch.selected",{count:T.length})),r.createElement("button",{type:"button","data-testid":"sessions-batch-export",style:xe,disabled:0===We.length||""!==te||de,onClick:()=>{(async()=>{if(""!==te||0===We.length)return;ae("export"),se(""),ie("");let t=0,a="";for(const e of We){const r=await Re(e.id);r.ok?t+=1:""===a&&(a=r.error)}""===a?se(e("sessions.batch.completed",{action:e("sessions.action.export"),count:t})):ie(e("sessions.batch.failed",{action:e("sessions.action.export"),done:t,total:We.length,error:a})),ae("")})()}},"export"===te?e("sessions.status.working"):e("sessions.batch.export",{count:We.length})),r.createElement("button",{type:"button","data-testid":"sessions-batch-archive",style:xe,disabled:0===Be.length||""!==te||de,onClick:()=>{(async()=>{if(""!==te||0===Be.length)return;ae("archive"),se(""),ie("");let t=0,a="";const r=Be.map(e=>e.id),s=[];for(const e of r){const r=await Me(e);r.ok?(t+=1,s.push(e)):""===a&&(a=r.error)}s.length>0&&A(e=>e.filter(e=>!s.includes(e))),""===a?se(e("sessions.batch.completed",{action:e("sessions.action.archive"),count:t})):ie(e("sessions.batch.failed",{action:e("sessions.action.archive"),done:t,total:r.length,error:a})),ae("")})()}},"archive"===te?e("sessions.status.working"):e("sessions.batch.archive",{count:Be.length})),r.createElement("button",{type:"button","data-testid":"sessions-batch-delete",style:we,disabled:0===Fe.length||""!==te||de,onClick:()=>{(async()=>{if(""!==te||null!==le||0===Fe.length)return;ae("delete-plan"),se(""),ie("");const t=[];let a="";for(const r of Fe)try{const s=await c("sessions-delete-plan",{id:r.id});s.ok?t.push(s.value):""===a&&(a=ca(e,s.error||"unknown"))}catch(t){""===a&&(a=e("sessions.error.network"))}ae(""),""===a&&t.length===Fe.length?oe({batch:!0,plans:t,sessions:t.map(e=>e.session),consequences:["deletes-session-log"]}):ie(e("sessions.batch.failed",{action:e("sessions.action.delete"),done:t.length,total:Fe.length,error:a||e("sessions.error.network")}))})()}},"delete-plan"===te?e("sessions.status.working"):e("sessions.batch.delete",{count:Fe.length}))):null,null===B&&"deleted"!==y?r.createElement("div",{style:{display:"flex",gap:"8px",alignItems:"center",marginBottom:"10px"}},r.createElement("input",{"data-testid":"sessions-search-input",type:"text",placeholder:e("sessions.search.placeholder"),value:I,onChange:e=>{q&&_e(),R(e.target.value)},style:{fontSize:"12px",padding:"6px 10px",borderRadius:"7px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)",width:"100%",boxSizing:"border-box"}}),r.createElement("label",{style:{display:"flex",alignItems:"center",gap:"5px",fontSize:"12px",color:"var(--dsw-alias-label-secondary)",whiteSpace:"nowrap"}},r.createElement("input",{type:"checkbox","data-testid":"sessions-search-archived",checked:z,onChange:e=>M(e.target.checked)}),e("sessions.search.archivedOnly"))):null,""!==fe?r.createElement("p",{style:{...ke,color:"var(--dsw-alias-state-error-primary)"}},fe+" · "+e("sessions.oneWayHint")):null,""!==Z?r.createElement("p",{style:{...ke,color:"var(--dsw-alias-state-error-primary)"}},Z):null,""!==re?r.createElement("p",{"data-testid":"sessions-batch-result",style:{...ke,color:"var(--dsw-alias-state-success-primary)"}},re):null,""!==ne?r.createElement("p",{"data-testid":"sessions-batch-error",style:{...ke,color:"var(--dsw-alias-state-error-primary)"}},ne):null,(()=>{if(null===B)return null;const a=null!==d&&Array.isArray(d.items)?d.items.find(e=>e.id===B.sessionId):void 0,s=""!==I&&"search"===B.view&&null!==$?$.hits.find(e=>e.sessionId===B.sessionId)?.title||"":void 0!==a&&""!==a.title?a.title:"",n=null!==d&&Array.isArray(d.items)?d.items.find(e=>e.id===B.sessionId):void 0,i="search"===B.view&&Array.isArray(B.hitItems)?B.hitItems.map(e=>Number(e.seq)).filter(e=>Number.isSafeInteger(e)):[],l="search"===B.view&&"number"==typeof B.centerSeq?i.indexOf(B.centerSeq):-1,o=l>0?i[l-1]:void 0,c=l>=0&&l<i.length-1?i[l+1]:void 0,u=new Set(i),p=(t,a)=>function(e){const t=[];for(const a of Array.isArray(e)?e:[])if(!0===a.noise){const e=t[t.length-1];void 0!==e&&!0===e._noiseBlock?(e.count+=1,e.lastSeq=a.seq):t.push({_noiseBlock:!0,count:1,firstSeq:a.seq,lastSeq:a.seq})}else t.push(a);return t}(t).map((s,n)=>{if(!0===s._noiseBlock){const a=!0===K[s.firstSeq],n=a&&Array.isArray(t)?t.filter(e=>!0===e.noise&&e.seq>=s.firstSeq&&e.seq<=s.lastSeq):[];return r.createElement("div",{key:"noise-"+s.firstSeq,"data-testid":"sessions-noisewall-"+s.firstSeq,style:{padding:"6px 10px",borderRadius:"8px",border:"1px solid var(--dsw-alias-border-l1)",background:"transparent",marginBottom:"5px"}},r.createElement("button",{type:"button","data-testid":"sessions-noisewall-toggle-"+s.firstSeq,style:{...xe,border:0,padding:0,color:"var(--dsw-alias-label-tertiary)",fontSize:"11px"},onClick:()=>{return e=s.firstSeq,G(t=>({...t,[e]:!t[e]}));var e}},e(a?"sessions.glyph.collapse":"sessions.glyph.expand")+" "+e(a?"sessions.detail.noiseCollapse":"sessions.detail.noiseBlock",{count:s.count})),a&&n.length>0?r.createElement("div",{style:{marginTop:"6px"}},n.map(e=>Ke(e))):null)}return null!==a&&a.has(Number(s.seq))?r.createElement("div",{key:"jump-"+s.seq,"data-testid":"sessions-jump-target-"+s.seq,style:{borderRadius:"8px",border:"1px solid rgba(198,128,0,0.55)",background:"rgba(198,128,0,0.10)",padding:"6px 8px",marginBottom:"6px"}},r.createElement("div",{"data-testid":"sessions-jump-badge-"+s.seq,style:{fontSize:"10.5px",fontWeight:700,color:"var(--dsw-alias-state-warn-primary)",marginBottom:"3px"}},e("sessions.hit.badge")),Ke(s)):Ke(s)});return r.createElement("div",{"data-testid":"sessions-detail"},r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap",marginBottom:"10px"}},r.createElement("button",{type:"button","data-testid":"sessions-detail-back",style:xe,onClick:()=>F(null)},e("sessions.glyph.back")+" "+e("sessions.detail.back")),r.createElement("span",{style:{fontSize:"14px",fontWeight:700,color:"var(--dsw-alias-label-primary)",minWidth:0}},""!==s?s:e("sessions.row.noTitle")),n?.archived?r.createElement("span",{title:e("sessions.detail.archiveDisabled"),style:{fontSize:"11px",color:"var(--dsw-alias-label-tertiary)"}},e("sessions.detail.archiveDisabled")):r.createElement("button",{type:"button","data-testid":"sessions-detail-open",style:xe,onClick:()=>{try{t.sessions?.open?.(B.sessionId)}catch(e){}}},e("sessions.detail.open")),r.createElement("button",{type:"button","data-testid":"sessions-detail-export",style:xe,disabled:Q===B.sessionId,onClick:()=>{ze(B.sessionId)}},Q===B.sessionId?e("sessions.detail.exporting"):e("sessions.detail.exportAll"))),"search"===B.view&&null!==B.hitItems?r.createElement("div",{"data-testid":"sessions-jump-view",style:{marginBottom:"10px"}},r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"6px",flexWrap:"wrap",marginBottom:"6px"}},r.createElement("button",{type:"button","data-testid":"sessions-detail-return-search",style:xe,onClick:()=>F(null)},e("sessions.glyph.back")+" "+e("sessions.hit.return")),r.createElement("span",{style:{fontSize:"11.5px",color:"var(--dsw-alias-label-tertiary)"}},e("sessions.hit.inSession",{count:Array.isArray(B.hitItems)?B.hitItems.length:0})),r.createElement("button",{type:"button","data-testid":"sessions-jump-prev",style:xe,disabled:void 0===o||P,onClick:()=>{void 0!==o&&Ie(B.sessionId,o)}},e("sessions.hit.prev")),r.createElement("button",{type:"button","data-testid":"sessions-jump-next",style:xe,disabled:void 0===c||P,onClick:()=>{void 0!==c&&Ie(B.sessionId,c)}},e("sessions.hit.next"))),r.createElement("div",{style:{display:"flex",gap:"4px",flexWrap:"wrap",marginBottom:"8px"}},i.map(e=>r.createElement("button",{key:e,type:"button","data-testid":"sessions-jump-chip-"+e,style:{...xe,padding:"1px 8px",fontSize:"11px",borderRadius:"999px",background:e===B.centerSeq?"var(--dsh-svc-tab-active-bg)":"transparent",color:e===B.centerSeq?"var(--dsh-svc-tab-active-text)":"var(--dsw-alias-label-secondary)"},onClick:()=>{Ie(B.sessionId,e)}},"#"+e))),P&&0===B.items.length?r.createElement("p",{style:ke},e("sessions.status.loading")):null,p(B.items,u),void 0!==B.cursor&&B.items.length>0?r.createElement("button",{type:"button","data-testid":"sessions-detail-more",style:xe,disabled:P,onClick:()=>{Ae(B.sessionId,B.cursor,B.view)}},e("sessions.detail.loadMore",{remaining:Math.max(0,B.total-B.items.length)})):null,void 0===B.cursor&&B.items.length>0?r.createElement("p",{style:ke},e("sessions.detail.noMore",{total:B.total})):null):null,""!==U?r.createElement("p",{style:{...ke,color:"var(--dsw-alias-state-error-primary)"}},U):null,"search"!==B.view?p(B.items,null):null,"search"!==B.view&&void 0!==B.cursor?r.createElement("button",{type:"button","data-testid":"sessions-detail-more",style:xe,disabled:P,onClick:()=>{Ae(B.sessionId,B.cursor,B.view)}},e("sessions.detail.loadMore",{remaining:Math.max(0,B.total-B.items.length)})):null,"search"!==B.view&&void 0===B.cursor&&B.items.length>0?r.createElement("p",{style:ke},e("sessions.detail.noMore",{total:B.total})):null)})()??(()=>{if(p)return r.createElement("p",{style:ke},e("sessions.status.loading"));if(""!==g)return r.createElement("p",{"data-testid":"sessions-error",style:{...ke,color:"var(--dsw-alias-state-error-primary)"}},g);if(""!==I.trim()&&"deleted"!==y)return null===$?r.createElement("p",{style:ke},e(O?"sessions.status.loading":"sessions.search.placeholder")):$.error?r.createElement("p",{style:{...ke,color:"var(--dsw-alias-state-error-primary)"}},ca(e,$.error)):0===$.hits.length?r.createElement("p",{style:ke},e("sessions.empty.search",{query:I})):$.hits.map(t=>r.createElement("div",{key:t.sessionId,"data-testid":"sessions-hit-"+t.sessionId,style:{padding:"9px 10px",borderRadius:"8px",border:"1px solid var(--dsw-alias-border-l1)",background:"var(--dsw-alias-bg-layer-3)",marginBottom:"6px"}},r.createElement("button",{type:"button","data-testid":"sessions-hit-open-"+t.sessionId,style:{...xe,border:0,padding:0,textAlign:"left",display:"inline",maxWidth:"100%"},onClick:e=>Te(t.sessionId,"search",t.items,e)},r.createElement("span",{style:{fontWeight:600,color:"var(--dsw-alias-label-primary)"}},""!==t.title?t.title:e("sessions.row.noTitle")),r.createElement("span",{style:{color:"var(--dsw-alias-label-secondary)",marginLeft:"6px",fontSize:"11.5px"}},e("sessions.hit.title",{count:t.items.length}))),t.items.length>1?r.createElement("div",{style:{display:"flex",gap:"4px",flexWrap:"wrap",marginTop:"5px"}},t.items.map(e=>r.createElement("button",{key:e.seq,type:"button","data-testid":"sessions-hit-seq-"+t.sessionId+"-"+e.seq,style:{...xe,padding:"1px 8px",fontSize:"11px",borderRadius:"999px",color:"var(--dsw-alias-label-tertiary)"},onClick:a=>Te(t.sessionId,"search",t.items,a,Number(e.seq))},"#"+e.seq))):null,t.items.slice(0,1).map((e,a)=>r.createElement("div",{key:a,"data-testid":"sessions-hit-snippet-"+t.sessionId,style:{fontSize:"12px",color:"var(--dsw-alias-label-secondary)",marginTop:"5px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},function(e,t,a){const s="string"==typeof e?e:"",n="string"==typeof t?t.trim().split(/\s+/).filter(Boolean):[];if(""===s||0===n.length)return s;let i;try{i=new RegExp(n.map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("\\s+"),"gi")}catch(e){return s}const l=[];let o,d=0,c=0;for(;null!==(o=i.exec(s));)o.index>d&&l.push(s.slice(d,o.index)),l.push(r.createElement("mark",{key:a+"-"+c,"data-testid":a+"-"+c,style:{background:"rgba(198,128,0,0.24)",color:"inherit",borderRadius:"3px",padding:"0 1px"}},o[0])),d=o.index+o[0].length,c+=1;return 0===l.length?s:(d<s.length&&l.push(s.slice(d)),l)}(e.snippet,$.query||I,"sessions-hit-highlight-"+t.sessionId)))));if(0===De.length){const t="archived"===y?"sessions.empty.archived":"deleted"===y?"sessions.empty.deleted":"sessions.empty.all";return r.createElement("p",{style:ke},e(t))}if("project"!==x||"deleted"===y)return De.map(Ve);const t=[];for(const e of De){const a=String(e.cwd||""),r=t.length>0&&t[t.length-1].project===a?t[t.length-1]:null;null===r?t.push({project:a,items:[e]}):r.items.push(e)}return t.map((t,a)=>{const s=!E.includes(t.project);return r.createElement("div",{key:"project-group-"+(""===t.project?"__none__":t.project),"data-testid":"sessions-project-group-"+a,style:{marginBottom:"14px"}},r.createElement("div",{"data-testid":"sessions-project-header-"+a,"data-project":t.project,"data-collapsed":s?"true":"false",role:"button","aria-expanded":String(!s),onClick:()=>{return e=t.project,S(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]);var e},style:{display:"flex",alignItems:"baseline",gap:"8px",margin:"0 2px 4px",padding:"2px 5px",borderRadius:"6px",cursor:"pointer",userSelect:"none"}},r.createElement("span",{style:{fontSize:"11px",color:"var(--dsw-alias-label-tertiary)",flex:"none"}},e(s?"sessions.glyph.expand":"sessions.glyph.collapse")),r.createElement("span",{style:{fontSize:"11.5px",fontWeight:650,color:"var(--dsw-alias-label-secondary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},""===t.project?e("sessions.projectGroup.noCwd"):t.project),r.createElement("span",{"data-testid":"sessions-project-count-"+a,style:{fontSize:"11px",color:"var(--dsw-alias-label-tertiary)",flexShrink:0}},1===t.items.length?e("sessions.projectGroup.countOne"):e("sessions.projectGroup.countMany",{count:t.items.length}))),s?null:t.items.map(Ve))})})(),(()=>{if(null===le)return null;const t=!0===le.batch&&Array.isArray(le.sessions)?le.sessions:null,a=null===t&&le.session||{};return r.createElement("div",{"data-testid":"sessions-delete-modal",style:{position:"fixed",inset:0,zIndex:1200,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.45)"}},r.createElement("div",{style:{width:"min(480px, calc(100vw - 32px))",background:"var(--dsw-alias-bg-layer-2)",border:"1px solid var(--dsw-alias-border-l2)",borderRadius:"14px",padding:"18px",boxShadow:"0 12px 40px rgba(0,0,0,0.25)"}},r.createElement("div",{style:{fontSize:"15px",fontWeight:700,color:"var(--dsw-alias-label-primary)",marginBottom:"8px"}},null===t?e("sessions.delete.title"):e("sessions.batch.deleteTitle",{count:t.length})),r.createElement("p",{style:{fontSize:"13px",color:"var(--dsw-alias-label-secondary)",lineHeight:1.5,margin:"0 0 10px"}},e(null===t?"sessions.delete.body":"sessions.batch.deleteBody")),null===t?r.createElement("div",{style:{fontSize:"13px",fontWeight:600,color:"var(--dsw-alias-label-primary)",marginBottom:"6px"}},a.title||e("sessions.row.noTitle")):r.createElement("ul",{"data-testid":"sessions-batch-delete-list",style:{margin:"0 0 12px",paddingLeft:"18px",maxHeight:"220px",overflowY:"auto",fontSize:"12px",color:"var(--dsw-alias-label-secondary)",lineHeight:1.7}},t.map(t=>r.createElement("li",{key:t.id},e("sessions.batch.deleteItem",{title:t.title||e("sessions.row.noTitle"),bytes:oa(t.bytes)})))),null===t?r.createElement("ul",{style:{margin:"0 0 12px",paddingLeft:"18px",fontSize:"12px",color:"var(--dsw-alias-label-secondary)",lineHeight:1.7}},r.createElement("li",null,e("sessions.delete.consequence.log",{bytes:oa(a.bytes)})),le.consequences&&le.consequences.includes("hides-from-official-sidebar")?r.createElement("li",null,e("sessions.delete.consequence.sidebar")):null):null,""!==pe?r.createElement("p",{style:{...ke,color:"var(--dsw-alias-state-error-primary)"}},pe):null,r.createElement("div",{style:{display:"flex",justifyContent:"flex-end",gap:"8px"}},r.createElement("button",{type:"button","data-testid":"sessions-delete-cancel",style:xe,disabled:de,onClick:()=>{oe(null),me("")}},e("sessions.delete.cancel")),r.createElement("button",{type:"button","data-testid":"sessions-delete-confirm",style:Ee,disabled:de,onClick:()=>{(async()=>{if(null===le||de)return;ce(!0),me("");const t=!0===le.batch&&Array.isArray(le.plans)?le.plans:[le];let a=0,r="";for(const s of t)try{const t=await c("sessions-delete",{planId:s.planId});t.ok?(a+=1,Oe(s.session)):""===r&&(r=ca(e,t.error||"unknown"))}catch(t){""===r&&(r=e("sessions.error.network"))}!0===le.batch?(oe(null),he(e=>e+1),""===r?(se(e("sessions.batch.completed",{action:e("sessions.action.delete"),count:a})),ie("")):(se(""),ie(e("sessions.batch.failed",{action:e("sessions.action.delete"),done:a,total:t.length,error:r})))):""===r?(oe(null),he(e=>e+1)):me(r),ce(!1)})()}},e(de?"sessions.status.working":"sessions.delete.confirm")))))})())}function fa(){const e=j(),[t,s]=ce.useEnabled(),n={color:"var(--dsw-alias-label-secondary)",fontSize:"12px",marginTop:"8px",lineHeight:1.5},[i,o]=a(mt.getSnapshot());l(()=>mt.subscribe(()=>o(mt.getSnapshot())),[]),l(()=>(Rt({all:!0}),()=>zt({all:!0})),[]);const[d,u]=a(vt()),[p,m]=a(""),g=i.providers||[],[h,b]=a(null),[v,f]=a(null),[y,k]=a({expiresAt:"",label:""}),[x,w]=a(null),[E,S]=a({name:"",value:""}),[q,C]=a(!1);l(()=>{if(!q)return;const e=setTimeout(()=>C(!1),3e3);return()=>clearTimeout(e)},[q]);const T=()=>{w(null),S({name:"",value:""}),C(!1)},A=t=>{const a=String(t?.error??""),r=["unknown-hint","invalid-value","credentials-unavailable"].includes(a)?e(`quota.credential.${a}`):`${a}${t?.detail?` (${t.detail})`:""}`;return e("quota.credential.saveFailed",{error:r})},I=async()=>{if(null!==h){m("");try{const t={provider:h.provider};""!==y.expiresAt&&(t.expiresAt=y.expiresAt),""!==y.label&&(t.label=y.label);const a=await c("quota-reset-card",t);if(!0!==a?.ok)return void m(e("quota.saveFailed",{error:String(a?.error??"")}));k({expiresAt:"",label:""}),await wt({scope:"all"})}catch(t){const a=t instanceof Error&&"string"==typeof t.message&&""!==t.message.trim()?t.message.trim():"network";m(e("quota.saveFailed",{error:a}))}}},R=async t=>{m("");try{const a=await c("quota-refresh",{provider:t});if(!0!==a?.ok)return void m("unknown-provider"===a?.error?e("quota.unknownProvider"):"not-adapted"===a?.error?e("quota.unadapted"):e("quota.saveFailed",{error:String(a?.error??"")}));await wt({scope:"all"})}catch(t){m(e("quota.saveFailed",{error:"network"}))}},z=async t=>{m("");try{const a=await c("quota-config",t);if(!0!==a?.ok)return void m("unknown-provider"===a?.error?e("quota.unknownProvider"):e("quota.saveFailed",{error:String(a?.error??"")}));await wt({scope:"all"})}catch(t){m(e("quota.saveFailed",{error:"network"}))}},M=(e,t)=>z({provider:e,kind:t}),[O,H]=a(function(){try{const e=JSON.parse(localStorage.getItem(ft)??"null");return Array.isArray(e)?e.filter(e=>"string"==typeof e&&""!==e).slice(0,64):[]}catch(e){return[]}}()),[D,$]=a(!1),W=function(e,t){const a=new Map(t.map((e,t)=>[e,t]));return e.map((e,r)=>({row:e,key:a.has(e.provider)?a.get(e.provider):t.length+r})).sort((e,t)=>e.key-t.key).map(e=>e.row)}(g.filter(e=>!0===e.adapted),O),B=g.filter(e=>!0!==e.adapted),F={fontSize:"12px",padding:"3px 6px",borderRadius:"6px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)"},P=(e,t)=>{const a=W.map(e=>e.provider),r=a.indexOf(e),s=r+t;r<0||s<0||s>=a.length||r===s||(a.splice(s,0,a.splice(r,1)[0]),H(a),function(e){try{localStorage.setItem(ft,JSON.stringify(e.slice(0,64)))}catch(e){}}(a))},[_,U]=a(""),[V,K]=a("");return r.createElement("div",{"data-testid":"remote-quota-card",style:{marginTop:"18px"}},r.createElement("div",{style:{fontSize:"14px",fontWeight:700,margin:"0 0 8px",color:"var(--dsw-alias-label-primary)"}},e("quota.cardTitle")),r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"8px"}},r.createElement("label",{htmlFor:"dsh-service-quota-poll-select",style:{fontSize:"12px",color:"var(--dsw-alias-label-secondary)"}},e("quota.poll")),r.createElement("select",{id:"dsh-service-quota-poll-select","data-testid":"quota-poll-select",value:String(d),onChange:e=>{const t=Number.parseInt(e.target.value,10);ht.includes(t)&&(u(t),function(e){try{localStorage.setItem(gt,String(e))}catch(e){}}(t),null!==Ct.nextDispose&&(Ct.nextDispose(),Ct.nextDispose=null),At())},style:{fontSize:"12px",padding:"3px 6px",borderRadius:"6px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)"}},[{value:0,label:e("quota.poll.manual")}].concat(ht.filter(e=>e>0).map(t=>({value:t,label:e("quota.poll.minute",{count:t})}))).map(e=>r.createElement("option",{key:e.value,value:String(e.value)},e.label)))),r.createElement("div",{style:{marginTop:"12px",paddingTop:"10px",borderTop:"1px solid var(--dsw-alias-border-l1)",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px"}},r.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"2px"}},r.createElement("span",{style:{fontSize:"13px",color:"var(--dsw-alias-label-primary)"}},e("quota.navToggle")),r.createElement("span",{style:n},e("quota.navToggleHint"))),r.createElement("button",{type:"button",role:"switch","data-testid":"quota-nav-switch","aria-checked":String(t),onClick:()=>s(!t),style:{width:"34px",height:"20px",borderRadius:"10px",padding:0,flexShrink:0,position:"relative",border:"1px solid "+(t?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-border-l2)"),background:t?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-bg-layer-2)",cursor:"pointer",lineHeight:0}},r.createElement("span",{style:{position:"absolute",top:"1px",left:t?"15px":"1px",width:"16px",height:"16px",borderRadius:"50%",background:t?"#fff":"var(--dsw-alias-label-tertiary)"}}))),""!==p?r.createElement("p",{"data-testid":"quota-config-error",style:Object.assign({},n,{color:"var(--dsw-alias-state-error-primary)"})},p):null,...W.length>=2?[r.createElement("div",{key:"quota-reorder-row",style:{display:"flex",justifyContent:"flex-end",margin:"2px 0 8px"}},r.createElement("button",{type:"button","data-testid":"quota-reorder-toggle","aria-pressed":String(D),title:e("quota.reorder"),onClick:()=>$(!D),style:{fontSize:"12px",lineHeight:"20px",padding:"2px 12px",borderRadius:999,border:"1px solid "+(D?"var(--dsw-alias-brand-primary)":"var(--dsh-svc-border-strong)"),background:"transparent",color:D?"var(--dsw-alias-brand-primary)":"var(--dsw-alias-label-primary)",cursor:"pointer"}},e("quota.reorder")))]:[],0===W.length?r.createElement("p",{style:n},e("quota.noAdapted")):r.createElement("div",{"data-testid":"quota-card-list",style:{display:"flex",flexDirection:"column",gap:"10px"}},W.map((t,a)=>{const s=r.createElement("span",{style:{fontWeight:600,fontSize:"12px",overflowWrap:"anywhere"}},"string"==typeof t.usageUrl&&""!==t.usageUrl?r.createElement("a",{"data-testid":`quota-usage-link-${t.provider}`,href:t.usageUrl,target:"_blank",rel:"noreferrer",title:e("quota.usageLink"),style:{color:"var(--dsw-alias-brand-primary)",textDecoration:"underline"}},t.displayName||t.provider):t.displayName||t.provider,"auto"===t.kindSource?r.createElement("span",{"data-testid":`quota-auto-tag-${t.provider}`,style:L("neutral",{marginLeft:"6px",verticalAlign:"middle"})},e("quota.kindAuto")):null),n=Array.isArray(t.windows)?t.windows:[],i=v===t.provider,l=n.map(a=>_t(a,e,t.provider));let o;o=!0===t.refreshing&&0===n.length?r.createElement("span",{style:{fontSize:"12px",color:"var(--dsw-alias-label-tertiary)"}},e("quota.refreshing")):void 0!==t.errorCode&&0===n.length?r.createElement("span",{"data-testid":`quota-error-${t.provider}`,style:{fontSize:"12px",color:"var(--dsw-alias-state-error-primary)"}},`${Pt(t.errorCode,e)}${void 0!==t.errorDetail?` (${t.errorDetail})`:""}${"number"==typeof t.nextAllowedAt&&t.nextAllowedAt>Date.now()?` · ${e("quota.retryAt",{time:Ot(t.nextAllowedAt)})}`:""}`):n.length>0?r.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"14px"}},l):r.createElement("span",{style:{fontSize:"12px",color:"var(--dsw-alias-label-tertiary)"}},e("quota.empty"));const d=Wt(t,n),u=null!==d?r.createElement(Bt,{key:"peak-timeline",showCaption:!0,schedule:d}):null,p=Array.isArray(t.resetCards)?t.resetCards.map((a,s)=>{const n=Ft(a,e),i="string"==typeof a.id&&""!==a.id?a.id:`idx-${s}`;return r.createElement("div",{key:i,"data-testid":`quota-reset-card-${t.provider}-${i}`,style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"11px",lineHeight:"16px",color:n.expired?"var(--dsw-alias-state-warn-primary)":"var(--dsw-alias-label-tertiary)"}},r.createElement("span",{style:{display:"flex",flexDirection:"column",gap:"2px"}},r.createElement("span",null,n.title),""!==n.expiry?r.createElement("span",null,n.expiry):null),r.createElement("button",{type:"button","data-testid":`quota-remove-${t.provider}-${i}`,onClick:()=>(async(t,a)=>{m("");try{await c("quota-reset-card",{provider:t,remove:!0,id:a}),await wt({scope:"all"})}catch(t){m(e("quota.saveFailed",{error:"network"}))}})(t.provider,i),style:{fontSize:"11px",padding:"2px 10px",borderRadius:999,border:"1px solid var(--dsw-alias-state-error-primary)",background:"transparent",color:"var(--dsw-alias-state-error-primary)",cursor:"pointer",flexShrink:0,whiteSpace:"nowrap"}},e("quota.resetCard.remove")))}):[],g=null!==h&&h.provider===t.provider,O={fontSize:"12px",padding:"3px 6px",borderRadius:"6px",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)",width:"130px"},j=(e,t,a,s)=>r.createElement("label",{style:{display:"flex",flexDirection:"column",gap:"2px",fontSize:"11px",color:"var(--dsw-alias-label-secondary)"}},e,r.createElement("input",{type:a,"data-testid":t,value:y[s],onChange:e=>k({...y,[s]:e.target.value}),style:O}));return r.createElement("div",{key:t.provider,"data-testid":`quota-provider-card-${t.provider}`,style:{display:"flex",flexDirection:"column",gap:"8px",padding:"10px 12px 12px",borderRadius:"8px",border:"1px solid var(--dsw-alias-border-l1)",background:"var(--dsh-svc-card-bg)"}},r.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",gap:"10px"}},s,r.createElement("div",{style:{display:"flex",alignItems:"center",gap:"5px"}},...D?[r.createElement("button",{type:"button","data-testid":`quota-move-up-${t.provider}`,"aria-label":e("quota.card.moveUp"),title:e("quota.card.moveUp"),disabled:0===a,onClick:()=>P(t.provider,-1),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"16px",height:"16px",padding:0,border:"none",background:"transparent",color:0===a?"var(--dsw-alias-label-tertiary)":"var(--dsw-alias-label-secondary)",cursor:0===a?"default":"pointer",opacity:0===a?.45:1,fontSize:"12px",lineHeight:"16px"}},"↑"),r.createElement("button",{type:"button","data-testid":`quota-move-down-${t.provider}`,"aria-label":e("quota.card.moveDown"),title:e("quota.card.moveDown"),disabled:a===W.length-1,onClick:()=>P(t.provider,1),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"16px",height:"16px",padding:0,border:"none",background:"transparent",color:a===W.length-1?"var(--dsw-alias-label-tertiary)":"var(--dsw-alias-label-secondary)",cursor:a===W.length-1?"default":"pointer",opacity:a===W.length-1?.45:1,fontSize:"12px",lineHeight:"16px"}},"↓")]:[],r.createElement("button",{type:"button","data-testid":`quota-refresh-${t.provider}`,"aria-label":e("quota.refresh"),title:e("quota.refresh"),disabled:!0===t.refreshing,onClick:()=>R(t.provider),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"2px",border:"none",background:"transparent",color:!0===t.refreshing?"var(--dsw-alias-label-tertiary)":"var(--dsw-alias-label-secondary)",cursor:!0===t.refreshing?"default":"pointer",opacity:!0===t.refreshing?.45:1}},r.createElement("svg",{width:12,height:12,viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0},r.createElement("path",{d:"M17.65 6.35A7.95 7.95 0 0 0 12 4a8 8 0 1 0 7.73 10h-2.08A6 6 0 1 1 12 6c1.66 0 3.14.69 4.22 1.77L13 11h7V4l-2.35 2.35z"}))),"number"==typeof t.fetchedAt?r.createElement("span",{style:{fontSize:"11px",color:"var(--dsw-alias-label-tertiary)"}},e("quota.updated",{time:Ot(t.fetchedAt)})):null)),o,...null!==u?[u]:[],r.createElement("div",{key:"advanced-toggle-row",style:{display:"flex",marginTop:"2px"}},r.createElement("button",{type:"button","data-testid":`quota-advanced-toggle-${t.provider}`,"aria-expanded":String(i),onClick:()=>f(i?null:t.provider),style:{fontSize:"11px",lineHeight:"20px",padding:"2px 10px",borderRadius:999,border:"1px solid var(--dsh-svc-border-strong)",background:"transparent",color:"var(--dsw-alias-label-primary)",cursor:"pointer"}},`${i?"▾":"▸"} ${e("quota.advanced")}`)),...i&&"unconfigured"===t.status&&Array.isArray(t.credentialHints)&&t.credentialHints.length>0?(()=>{const a=null!==x&&x.provider===t.provider,s=t.credentialHints,n=s.some(e=>e.name===E.name)?E.name:s[0]?.name??"",i=s.find(e=>e.name===n);return[a?r.createElement("div",{key:"cred-editor","data-testid":`quota-cred-editor-${t.provider}`,style:{display:"flex",flexWrap:"wrap",gap:"10px",alignItems:"flex-end",padding:"8px 10px",borderRadius:"8px",background:"var(--dsh-svc-raised-bg)"}},s.length>1?r.createElement("label",{style:{display:"flex",flexDirection:"column",gap:"2px",fontSize:"11px",color:"var(--dsw-alias-label-secondary)"}},e("quota.credential.nameLabel"),r.createElement("select",{"data-testid":"quota-cred-name-select",value:n,onChange:e=>{S({...E,name:e.target.value}),C(!1)},style:F},s.map((t,a)=>r.createElement("option",{key:t.name,value:t.name},`${t.name}${0===a?` · ${e("quota.credential.primary")}`:""} · ${!0===t.configured?e("quota.credential.configured"):e("quota.credential.notConfigured")}`)))):r.createElement("span",{style:{fontSize:"11px",color:"var(--dsw-alias-label-tertiary)",alignSelf:"center"}},`${n}${!0===i?.configured?` · ${e("quota.credential.configured")}`:""}`),r.createElement("label",{style:{display:"flex",flexDirection:"column",gap:"2px",fontSize:"11px",color:"var(--dsw-alias-label-secondary)"}},e("quota.credential.valueLabel"),r.createElement("input",{type:"password","data-testid":"quota-cred-input-value",value:E.value,onChange:e=>S({...E,value:e.target.value}),autoComplete:"off",style:O})),r.createElement("button",{type:"button","data-testid":"quota-cred-save",onClick:()=>(async t=>{m("");try{const e=await c("quota-credential-set",{provider:t,name:E.name,value:E.value});if(!0!==e?.ok)return void m(A(e));T(),await R(t)}catch(t){m(e("quota.saveFailed",{error:"network"}))}})(t.provider),disabled:""===E.value.trim(),style:{minHeight:"28px",padding:"4px 12px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid var(--dsw-alias-brand-primary)",background:""===E.value.trim()?"transparent":"var(--dsw-alias-brand-primary)",color:""===E.value.trim()?"var(--dsw-alias-label-tertiary)":"var(--dsh-svc-brand-text)",cursor:""===E.value.trim()?"default":"pointer",fontSize:"12px"}},e("quota.credential.save")),...!0===i?.configured&&!1!==i?.writable?[r.createElement("button",{type:"button",key:"cred-clear","data-testid":"quota-cred-clear",title:q?e("quota.credential.clearConfirm"):void 0,onClick:()=>{q?(C(!1),(async(t,a)=>{m("");try{const e=await c("quota-credential-unset",{provider:t,name:a});if(!0!==e?.ok)return void m(A(e));await R(t)}catch(t){m(e("quota.saveFailed",{error:"network"}))}})(t.provider,n)):C(!0)},style:{minHeight:"28px",padding:"4px 12px",borderRadius:"var(--dsh-svc-radius-control)",border:"1px solid var(--dsw-alias-state-error-primary)",background:q?"var(--dsw-alias-state-error-primary)":"transparent",color:q?"var(--dsh-svc-brand-text)":"var(--dsw-alias-state-error-primary)",cursor:"pointer",fontSize:"12px",whiteSpace:"nowrap"}},e(q?"quota.credential.clearConfirm":"quota.credential.clear"))]:[],r.createElement("button",{type:"button","data-testid":"quota-cred-cancel",onClick:T,style:N()},e("quota.resetCard.cancel"))):r.createElement("div",{key:"cred-entry",style:{display:"flex"}},r.createElement("button",{type:"button","data-testid":`quota-cred-edit-${t.provider}`,onClick:()=>(e=>{const t=Array.isArray(e.credentialHints)?e.credentialHints:[];b(null),w({provider:e.provider}),S({name:(t.find(e=>!0===e.configured)??t[0])?.name??"",value:""}),C(!1)})(t),style:{fontSize:"12px",lineHeight:"20px",padding:"4px 14px",borderRadius:999,border:"1px solid var(--dsw-alias-brand-primary)",background:"transparent",color:"var(--dsw-alias-brand-primary)",cursor:"pointer",width:"auto",minWidth:0,overflow:"visible",flex:"0 0 auto",whiteSpace:"nowrap"}},e(`quota.credential.${"string"==typeof t.credentialEntryKey&&""!==t.credentialEntryKey?t.credentialEntryKey:"edit"}`)))]})():[],...p,...i&&g?[r.createElement("div",{key:"reset-editor","data-testid":`quota-reset-editor-${t.provider}`,style:{display:"flex",flexWrap:"wrap",gap:"10px",alignItems:"flex-end",padding:"8px 10px",borderRadius:"8px",background:"var(--dsh-svc-raised-bg)"}},j(e("quota.resetCard.dateLabel"),"quota-reset-input-date","datetime-local","expiresAt"),j(e("quota.resetCard.nameLabel"),"quota-reset-input-name","text","label"),r.createElement("button",{type:"button","data-testid":"quota-reset-card-save",onClick:I,style:{minHeight:"28px",padding:"4px 12px",borderRadius:"7px",border:"1px solid var(--dsw-alias-brand-primary)",background:"var(--dsw-alias-brand-primary)",color:"var(--dsh-svc-brand-text)",cursor:"pointer",fontSize:"12px"}},e("quota.resetCard.add")),r.createElement("button",{type:"button","data-testid":"quota-reset-cancel",onClick:()=>b(null),style:N()},e("quota.resetCard.cancel")))]:[],...i?[r.createElement("div",{key:"advanced-footer",style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},r.createElement("select",{"data-testid":`quota-kind-select-${t.provider}`,value:t.kind,"aria-label":`${e("quota.adapt")} · ${t.displayName||t.provider}`,onChange:e=>{var a;""===e.target.value?M(t.provider,null):"__auto__"===e.target.value?(a=t.provider,z({provider:a,clear:!0})):M(t.provider,e.target.value)},style:F},bt.map(t=>r.createElement("option",{key:t,value:t},e(`quota.kind.${t}`))),r.createElement("option",{value:"__auto__"},e("quota.followAuto")),r.createElement("option",{value:""},e("quota.disable")))),..."zai-coding-cn"===t.kind?[r.createElement("div",{key:"reset-add-row",style:{display:"flex"}},r.createElement("button",{type:"button","data-testid":`quota-card-edit-${t.provider}`,onClick:()=>(e=>{b({provider:e.provider}),k({expiresAt:"",label:""})})(t),style:{fontSize:"12px",lineHeight:"20px",padding:"4px 14px",borderRadius:999,border:"1px solid var(--dsh-svc-border-strong)",background:"transparent",color:"var(--dsw-alias-label-primary)",cursor:"pointer",width:"auto",minWidth:0,overflow:"visible",flex:"0 0 auto",whiteSpace:"nowrap"}},e("quota.resetCard.edit")))]:[]]:[])})),...B.length>0?[r.createElement("div",{key:"quota-add-adapt","data-testid":"quota-add-adapt",style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:"8px",marginTop:W.length>0?"2px":"4px",paddingTop:"10px",borderTop:"1px solid var(--dsw-alias-border-l1)"}},r.createElement("span",{style:{fontSize:"11px",color:"var(--dsw-alias-label-tertiary)"}},e("quota.addAdapt")),r.createElement("select",{"data-testid":"quota-add-provider",value:_,onChange:e=>U(e.target.value),style:F},r.createElement("option",{value:""},e("quota.addPickProvider")),B.map(e=>r.createElement("option",{key:e.provider,value:e.provider},e.displayName||e.provider))),r.createElement("select",{"data-testid":"quota-add-kind",value:V,onChange:e=>K(e.target.value),style:F},r.createElement("option",{value:""},e("quota.addPickKind")),bt.map(t=>r.createElement("option",{key:t,value:t},e(`quota.kind.${t}`)))),r.createElement("button",{type:"button","data-testid":"quota-add-submit",disabled:""===_||""===V,onClick:()=>{M(_,V),U(""),K("")},style:{fontSize:"12px",padding:"3px 12px",borderRadius:"7px",border:"1px solid var(--dsw-alias-brand-primary)",background:""===_||""===V?"transparent":"var(--dsw-alias-brand-primary)",color:""===_||""===V?"var(--dsw-alias-label-tertiary)":"var(--dsh-svc-brand-text)",cursor:""===_||""===V?"default":"pointer"}},e("quota.adapt")))]:[])}function ya(){const e=j(),{value:s}=O(),[n,i]=a(null),[d,u]=a(null),[p,m]=a(null),[g,h]=a(!1),[b,v]=a(0),[f,y]=a(null),[k,x]=a(null),[w,E]=a(null),[S,q]=a(null),[C,T]=a(!1),[I,R]=a(!1),[z,H]=a(null),[L,P]=a(!1),[_,U]=a(!1),[X,Z]=a(null),[ee,te]=a(!1),[ae,re]=a({items:[],totalBytes:0}),[se,ne]=a(!1),[ie,oe]=a(null),de=o(0),[ce,ue]=a(null),[pe,me]=a(null),[ge,he]=a(null),[be,ve]=a(null),[fe,ye]=a(null),[ke,xe]=a(!1),[we,Ee]=a(!1),[Se,qe]=a(!1),[Ce,Te]=a(!1),[Ae,Ie]=a(null),[ze,Me]=a(null),[Oe,je]=a(null),[He,De]=a(null),[Ne,Le]=a(null),[Be,Pe]=a(!1),[_e,Ue]=a(null),[Ve,Ke]=a(!1),[Ye,Xe]=a(null),[tt,at]=a(!1),[st,nt]=a(!1),[it,lt]=a(null),[ot,ct]=a("all"),[ut,mt]=a(!1),[gt,ht]=a(!1),[bt,vt]=a(!1),[ft,yt]=a("today"),[kt,xt]=a("overview"),[wt,Et]=a(!1),St=Ge(),qt=Qe(),Ct={timezoneOffsetMinutes:(new Date).getTimezoneOffset()};l(()=>{Ze().then(e=>{e&&e.ok&&(Ie(e.value.current),Me(e.value.pluginVersion||null))})},[]),l(()=>{let t=!0;return c("check-update",{}).then(a=>{var r;t&&a&&!1!==a.ok?(je(a.value),De(null),r=a.value.dsh&&!a.value.dsh.upToDate?a.value.dsh:null,$e=r,null===r&&(We=!1),Fe()):t&&De(e("update.unavailable"))}).catch(()=>{t&&De(e("update.unavailable"))}),()=>{t=!1}},[]),l(()=>{if(!M("healthDiagnostics"))return()=>{};let t=!0;return c("permissions-plan",{}).then(a=>{t&&(a&&!1!==a.ok?q(a.value):H(e("permissions.error")))}).catch(()=>{t&&H(e("permissions.error"))}),()=>{t=!1}},[s.healthDiagnostics]),l(()=>{if(!M("modelUsage"))return()=>{};let t=!0;return c("usage",Ct).then(async a=>{if(t)if(a&&!1!==a.ok){if(Le(a.value),!(a.value.updatedAt>0&&Date.now()-a.value.updatedAt<=3e5))try{const e=await c("usage-refresh",Ct);t&&e&&e.ok&&Le(e.value)}catch(e){}}else Ue(e("usage.error"))}).catch(()=>{t&&Ue(e("usage.error"))}),()=>{t=!1}},[s.modelUsage]),l(()=>{if(!M("backupMaintenance"))return()=>{};let t=!0;return c("backup-list",{}).then(a=>{t&&(a&&!1!==a.ok?re(a.value):ue(e("backup.error")))}).catch(()=>{t&&ue(e("backup.error"))}),()=>{t=!1}},[s.backupMaintenance]),l(()=>{let a=!0,r=()=>{};const s=async()=>{try{const e=await c("health",{});if(!a)return;if(!e||!1===e.ok)throw new Error(e&&e.error?e.error:"health failed");i(e.value),u(null)}catch(t){if(!a)return;u(e("health.error"))}a&&(r=t.timer.timeout(s,5e3))};return s(),()=>{a=!1,r()}},[]);const Tt=async(t=!1)=>{if(M("healthDiagnostics")&&!(!t&&b>0&&Date.now()-b<=3e4)){h(!0);try{const e=await c("diagnostics",{});if(!e||!1===e.ok)throw new Error("diagnostics failed");m(e.value),v(Date.now())}catch(t){u(e("health.error"))}finally{h(!1)}}},At=async()=>{Pe(!0),Ue(null);try{const e=await c("usage-refresh",Ct);if(!e||!1===e.ok)throw new Error("usage refresh failed");Le(e.value)}catch(t){Ue(e("usage.error"))}finally{Pe(!1)}},It=t=>{const a="backup.error."+String(t||""),r=e(a);return r===a?e("backup.restoreError"):r},Rt=async()=>{if(fe&&!se){ne(!0),ue(null);try{const e=await c("backup-restore-commit",{planId:fe.planId});if(!e||!1===e.ok)throw Object.assign(new Error("backup restore failed"),{code:e?.error});if(he(null),ve(null),ye(null),!0===e.value?.restart?.requiresManualRestart)xe(!0);else{const t=e.value?.restart?.previousInstanceId||e.value?.previousInstanceId;"string"==typeof t&&t.length>0&&rt(t).catch(()=>{})}}catch(e){ye(null),ue(It(e?.code))}finally{ne(!1)}}},zt=()=>{se||(he(null),ve(null),ye(null))},Mt={"active-work":"update.guardActiveWork","link-install":"update.guardLinkInstall","file-install":"update.guardFileInstall","no-newer-version":"update.guardNoNewer","no-profile-found":"update.guardNoProfile","ambiguous-profile":"update.guardAmbiguous","upgrade-stale":"update.guardStale","installed-version-unreadable":"update.guardUnreadable","pnpm-missing":"update.failPnpmMissing","transient-network":"update.failNetwork","fetch-timeout":"update.failFetchTimeout","release-age-violation":"update.failReleaseAge","hoist-pattern-diff":"update.failHoist","adding-to-root":"update.failAddingToRoot","not-a-workspace":"update.failNotWorkspace","ignored-builds":"update.failIgnoredBuilds"},Ot=async()=>{if(!et){et=!0;try{let t=qt;if(null===t&&(await Ze(),t=Je),!tt&&null!==t&&!0===t.manualStartLikely)return Xe(null),void at(!0);at(!1),Ke(!0),Xe(null);const a=await Ze(),r=a&&a.ok?a.value.instanceId:void 0,s=await c("upgrade",{});if(!s||!1===s.ok){const t=s&&"string"==typeof s.error?s.error.trim():"",a="string"==typeof t&&t.length>0?Mt[t]:void 0;return void Xe(void 0!==a?e(a):e("update.upgradeErrorDetail",{detail:t||"upgrade failed"}))}if(s.value&&!0===s.value.requiresManualRestart)return void nt(!0);"string"==typeof r&&r.length>0&&rt(r).catch(()=>{})}catch(t){const a=t instanceof Error&&"string"==typeof t.message&&"upgrade failed"!==t.message?t.message.trim():"";console.error("dsh-service: upgrade failed",a||t),Xe(a?e("update.upgradeErrorDetail",{detail:a}):e("update.upgradeError"))}finally{et=!1,Ke(!1)}}},jt=D(),Ht=(D("primary"),D("brandGhost")),Dt=D("neutral"),Nt=D("danger"),Lt=D("dangerGhost"),$t=D("ghost"),Wt=Object.assign({},jt,{background:"transparent",color:"var(--dsw-alias-label-primary)",border:0,borderTop:"1px solid var(--dsw-alias-border-l1)",borderRadius:0,padding:"10px 2px",width:"100%",textAlign:"left",fontWeight:600}),Bt={display:"flex",alignItems:"center",gap:"8px",marginTop:"12px",flexWrap:"wrap"},Ft={color:"var(--dsw-alias-label-secondary)",fontSize:"12px",marginTop:"8px",lineHeight:1.5},Pt={padding:"4px 0 14px",marginBottom:"12px",color:"var(--dsw-alias-label-primary)"},_t=$(),Ut={background:"transparent",color:"var(--dsw-alias-label-secondary)",border:0,borderBottom:"2px solid transparent",padding:"8px 10px",cursor:"pointer",fontSize:"13px",fontWeight:550,transition:"color 120ms, border-color 120ms"},Vt={color:"var(--dsw-alias-brand-primary)",borderBottom:"2px solid var(--dsw-alias-brand-primary)",fontWeight:700},Kt=Object.assign({},Ut,{padding:"3px 6px",fontSize:"11px"}),Gt={fontSize:"14px",fontWeight:700,margin:"0 0 8px",color:"var(--dsw-alias-label-primary)"},Yt=e=>{const t=Number(e);return t<1024?t+" B":t<1048576?Math.round(t/102.4)/10+" KB":t<1073741824?Math.round(t/1048576*10)/10+" MB":Math.round(t/1073741824*10)/10+" GB"},Qt=(t,a)=>r.createElement("div",{key:t,style:{padding:"8px 10px",borderRadius:"6px",background:"var(--dsh-svc-raised-bg)",color:"var(--dsw-alias-label-primary)",border:"1px solid var(--dsw-alias-border-l1)"}},r.createElement("div",{style:{color:"var(--dsw-alias-label-secondary)",fontSize:"11px",marginBottom:"2px"}},e(t)),r.createElement("div",{style:{fontSize:"14px",fontWeight:600}},a)),Zt=e=>{const t=e=>String(e).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`},ea=[];for(let e=6;e>=0;e-=1){const t=new Date;t.setHours(0,0,0,0),t.setDate(t.getDate()-e),ea.push({key:Zt(t),label:`${t.getMonth()+1}/${t.getDate()}`})}const ta=[["inputTokens","usage.input","#79aaf7"],["outputTokens","usage.output","#f1b35b"],["cacheTokens","usage.cache","#48c7b0"]],aa=e=>{const t=Ne&&Ne.days?Ne.days[e]:null;if(!t)return{steps:0,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,cacheHitRate:0};if("all"===ot)return t.totals;const a=t.projects.find(e=>e.id===ot);return a?a.totals:{steps:0,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,cacheHitRate:0}},ra=e=>{const t=Number(e.inputTokens||0)+Number(e.cacheReadTokens||0)+Number(e.cacheWriteTokens||0);return 0===t?0:Number(e.cacheReadTokens||0)/t},sa=e=>Number(e.inputTokens||0)+Number(e.outputTokens||0)+Number(e.cacheReadTokens||0)+Number(e.cacheWriteTokens||0),na=(e,t)=>"cacheTokens"===t?e.cacheReadTokens+e.cacheWriteTokens:e[t]||0,la=e=>A(e,{invalid:"0"}),oa=(t,a)=>"cacheHitRate"===a?(100*Number(t)).toFixed(1)+"%":"steps"===a?e("usage.stepsValue",{count:Number(t).toLocaleString()}):la(t),da=ea.map(e=>aa(e.key)),ca=da.map(e=>ta.reduce((t,[a])=>t+na(e,a),0)),ua=Math.max(1,...ca),pa=[ua,.75*ua,.5*ua,.25*ua,0],ma=aa(ea[6].key),ga=ea.reduce((e,t)=>{const a=aa(t.key);return e.steps+=a.steps||0,e.inputTokens+=a.inputTokens||0,e.outputTokens+=a.outputTokens||0,e.cacheReadTokens+=a.cacheReadTokens||0,e.cacheWriteTokens+=a.cacheWriteTokens||0,e},{steps:0,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0}),ha=ga.inputTokens+ga.cacheReadTokens+ga.cacheWriteTokens;ga.cacheHitRate=0===ha?0:ga.cacheReadTokens/ha;const ba="all"===ot?(Ne?.projects||[]).map(e=>e.id):[ot],ya=(e,t)=>{const a=e.get(t.id)||{id:t.id,steps:0,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0};a.steps+=t.totals.steps||0,a.inputTokens+=t.totals.inputTokens||0,a.outputTokens+=t.totals.outputTokens||0,a.cacheReadTokens+=t.totals.cacheReadTokens||0,a.cacheWriteTokens+=t.totals.cacheWriteTokens||0,e.set(t.id,a)},ka=new Map,xa=new Map,wa=new Map,Ea=new Set(ea.map(e=>e.key)),Sa=ea[ea.length-1].key;for(const[e,t]of Object.entries(Ne?.days||{})){const a=[wa];Ea.has(e)&&a.push(xa),e===Sa&&a.push(ka);for(const e of t.projects)if(ba.includes(e.id))for(const t of e.models)for(const e of a)ya(e,t)}const qa=t=>{const a=String(t.detail??"");if("session-storage"===t.id&&"ok"===t.status)return e("health.detail.session-storage.ok",{count:a});if("workspace-registry"===t.id&&"ok"===t.status)return e("health.detail.workspace-registry.ok",{count:a});if("dsh-home"===t.id&&"ok"===t.status)return e("health.detail.dsh-home.ok",{mode:a});if("backup-storage"===t.id){const[t="0",r="0"]=a.split(":");return 0===Number(t)?e("health.detail.backup-storage.empty"):e("health.detail.backup-storage.ok",{count:t,size:Yt(r)})}if("tar"===t.id&&"ok"===t.status)return e("health.detail.tar.ok");if("permissions"===t.id)return e("ok"===t.status?"health.detail.permissions.ok":"health.detail.permissions.warning",{count:a||"0"});if("runtime-env"===t.id)return"manual"===a?e("health.detail.runtime-env.manual"):"declared"===a?e("health.detail.runtime-env.declared"):"unknown"===a?e("health.detail.runtime-env.unknown"):e("health.detail.runtime-env.managed",{kind:e(`env.kind.${a}`)});if("node-version"===t.id){const[r="",s=""]=a.split(":");return e("ok"===t.status?"health.detail.node-version.ok":"health.detail.node-version.warning",{version:r,required:s})}if("plugins"===t.id){if("unavailable"===a)return e("health.detail.plugins.unavailable");const[r,s,n,i]=a.split(":");if("ok"===t.status)return e("health.detail.plugins.ok",{total:r});const l=[];return(Number(s)||0)>0&&l.push(e("plugin.issue.failed",{failed:s})),(Number(n)||0)>0&&l.push(e("plugin.issue.pending",{pending:n})),(Number(i)||0)>0&&l.push(e("plugin.issue.info",{count:i})),l.join(",")}if("plugin-compat"===t.id){if("unavailable"===a)return e("health.detail.plugin-compat.unavailable");const[r,s,n,i]=a.split(":");if("ok"===t.status&&0===(Number(n)||0))return e("health.detail.plugin-compat.ok",{total:r});const l=[];return(Number(s)||0)>0&&l.push(e("plugin.compat.issue.broken",{count:s})),(Number(n)||0)>0&&l.push(e("plugin.compat.issue.declared",{count:n})),(Number(i)||0)>0&&l.push(e("plugin.compat.issue.unknown",{count:i})),l.join(",")}return e("health.detail.generic",{status:e(`health.status.${t.status}`)})},Ca=(t,a,s)=>r.createElement("div",{style:{padding:"10px",borderRadius:"7px",background:"var(--dsw-alias-bg-layer-2)",color:"var(--dsw-alias-label-primary)"}},r.createElement("div",{style:{fontSize:"12px",fontWeight:700,marginBottom:"5px"}},e(a)),(e=>[["usage.total",la(na(e,"inputTokens")+na(e,"outputTokens")+na(e,"cacheTokens"))],...ta.map(([t,a])=>[a,la(na(e,t))]),["usage.steps",oa(e.steps,"steps")],["usage.hitRate",oa(e.cacheHitRate,"cacheHitRate")]])(s).map(([a,s],n)=>r.createElement("div",{key:a,"data-testid":`usage-summary-${t}-${n}`,style:{display:"flex",justifyContent:"space-between",gap:"12px",padding:"4px 0",fontSize:"12px",borderTop:0===n?0:"1px solid var(--dsw-alias-border-l1)"}},r.createElement("span",{style:{color:"var(--dsw-alias-label-secondary)"}},e(a)),r.createElement("span",{style:{fontWeight:650}},s)))),Ta=[...("today"===ft?ka:"all"===ft?wa:xa).values()].sort((e,t)=>sa(t)-sa(e)||t.steps-e.steps||e.id.localeCompare(t.id)),Aa=bt?Ta:Ta.slice(0,3),Ia=Math.max(0,Ta.length-3),Ra=Math.max(1,...Aa.map(e=>sa(e))),za=e=>(e||[]).filter(e=>"all"===ot||e.projectId===ot).sort((e,t)=>t.count-e.count||e.key.localeCompare(t.key)),Ma=za(Ne?.errors?.models),Oa=za(Ne?.errors?.tools),ja=(t,a)=>r.createElement("div",{key:t,style:{display:"grid",gap:"6px",marginTop:"8px"}},0===a.length?r.createElement("p",{style:Ft},e("model"===t?"usage.errors.empty":"usage.toolErrors.empty")):a.map(a=>r.createElement("div",{key:`${t}:${a.projectId}:${a.key}`,style:{padding:"8px 10px",borderRadius:"6px",background:"var(--dsw-alias-bg-layer-2)",border:"1px solid var(--dsw-alias-state-error-primary)",color:"var(--dsw-alias-label-primary)",fontSize:"12px"}},r.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:"8px",fontWeight:600}},r.createElement("span",null,"model"===t?`${a.provider}/${a.model} · ${a.code}${null===a.status?"":` · ${a.status}`}`:`${a.tool} · ${a.code}`),r.createElement("span",null,e("usage.errors.count",{count:a.count}))),r.createElement("div",{style:{color:"var(--dsw-alias-label-secondary)",marginTop:"3px",overflowWrap:"anywhere"}},a.message)))),Ha=r.createElement("div",{key:"usage-section","data-testid":"usage-card",style:Pt},r.createElement("div",{style:Gt},e("usage.structure")),r.createElement("p",{style:Object.assign({},Ft,{marginTop:"-4px"})},e("usage.structureHint")),Ne&&Ne.projects.length>0?r.createElement("div",{"data-testid":"usage-project-tabs",style:{display:"flex",flexWrap:"wrap",gap:"14px",marginBottom:"12px",borderBottom:"1px solid var(--dsw-alias-border-l1)"}},r.createElement("button",{style:Object.assign({},Ut,"all"===ot?Vt:{color:"var(--dsw-alias-label-secondary)",borderBottom:"2px solid transparent"}),onClick:()=>ct("all")},e("usage.allProjects")),Ne.projects.map(e=>r.createElement("button",{key:e.id,style:Object.assign({},Ut,ot===e.id?Vt:{color:"var(--dsw-alias-label-secondary)",borderBottom:"2px solid transparent"}),onClick:()=>ct(e.id)},e.title))):null,Ne&&Ne.indexedSessions>0?r.createElement("div",{"data-testid":"usage-statistics-region",style:Object.assign({},_t,{padding:"12px",borderRadius:"9px"})},r.createElement("div",{"data-testid":"usage-region-header",style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px",flexWrap:"wrap",marginBottom:"8px"}},r.createElement("div",{style:{display:"flex",gap:"14px",flexWrap:"wrap",fontSize:"11px"}},ta.map(([,t,a])=>r.createElement("span",{key:t,style:{display:"inline-flex",alignItems:"center",gap:"5px"}},r.createElement("span",{style:{width:"9px",height:"9px",borderRadius:"2px",background:a}}),e(t)))),r.createElement("button",{type:"button","data-testid":"usage-refresh","data-variant":"neutral",style:Dt,onClick:At,disabled:Be},e(Be?"usage.refreshing":"usage.refresh"))),r.createElement("div",{"data-testid":"usage-chart",style:{position:"relative",display:"grid",gridTemplateColumns:"42px minmax(0, 1fr)",height:"180px",padding:"12px 10px 4px",borderRadius:"8px",background:"var(--dsh-svc-raised-bg)",color:"var(--dsw-alias-label-primary)",border:"1px solid var(--dsw-alias-border-l1)",borderBottom:"1px solid var(--dsw-alias-border-l2)"}},r.createElement("div",{"data-testid":"usage-y-axis","aria-label":e("usage.axis"),style:{position:"relative",height:"144px",fontSize:"10px",color:"var(--dsw-alias-label-secondary)"}},pa.map((e,t)=>r.createElement("span",{key:t,style:{position:"absolute",right:"7px",top:25*t+"%",transform:4===t?"translateY(-100%)":"translateY(-50%)"}},la(e)))),r.createElement("div",{"data-testid":"usage-plot",style:{position:"relative",height:"164px"}},r.createElement("div",{style:{position:"absolute",inset:"0 0 20px",display:"flex",alignItems:"end",gap:"8px",borderBottom:"1px solid var(--dsw-alias-border-l2)"}},pa.map((e,t)=>r.createElement("div",{key:t,"data-testid":`usage-grid-${t}`,style:{position:"absolute",left:0,right:0,top:25*t+"%",borderTop:"1px solid var(--dsw-alias-border-l1)",pointerEvents:"none"}})),ea.map((t,a)=>r.createElement("div",{key:t.key,"aria-label":e("usage.barDay",{day:t.label,total:la(ca[a])}),style:{position:"relative",zIndex:1,flex:1,minWidth:0,alignSelf:"end"}},r.createElement("div",{"data-testid":`usage-bar-${t.key}`,style:{height:`${Math.max(2,ca[a]/ua*144)}px`,display:"flex",flexDirection:"column-reverse",justifyContent:"flex-start",borderRadius:"4px 4px 0 0",overflow:"hidden"}},ta.map(([e,s,n])=>{const i=na(da[a],e),l=0===ca[a]?0:i/ca[a]*100,o=`${t.key}-${e}`,d=it&&it.id===o;return r.createElement("div",{key:e,"data-testid":`usage-segment-${o}`,"data-value":i,onMouseEnter:e=>lt({id:o,date:t.key,totals:da[a],x:e.clientX,y:e.clientY}),onMouseMove:e=>lt(t=>t&&t.id===o?Object.assign({},t,{x:e.clientX,y:e.clientY}):t),onMouseLeave:()=>lt(null),style:{height:`${l}%`,minHeight:i>0?"2px":0,background:n,opacity:it&&!d?.42:1,cursor:i>0?"pointer":"default",transition:"opacity 120ms ease"}})}))))),r.createElement("div",{"data-testid":"usage-x-axis",style:{position:"absolute",left:0,right:0,bottom:"0",height:"20px",display:"flex",gap:"8px",alignItems:"end"}},ea.map(e=>r.createElement("div",{key:e.key,style:{flex:1,minWidth:0,textAlign:"center",fontSize:"10px",color:"var(--dsw-alias-label-secondary)"}},e.label))))),r.createElement("div",{"data-testid":"usage-chart-summary",style:{position:"absolute",width:"1px",height:"1px",overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap"}},e("usage.chartSummary",{total:la(ca.reduce((e,t)=>e+t,0))})),it?r.createElement("div",{"data-testid":"usage-tooltip",style:{position:"fixed",left:`${it.x+12}px`,top:`${it.y+12}px`,zIndex:1e3,pointerEvents:"none",padding:"7px 9px",borderRadius:"6px",background:"var(--dsw-alias-bg-overlay)",color:"var(--dsw-alias-label-primary)",border:"1px solid var(--dsw-alias-border-l2)",boxShadow:"0 4px 12px rgba(0,0,0,0.2)",fontSize:"12px",fontWeight:600,whiteSpace:"pre-line",textAlign:"left"}},`${e("usage.tooltip.date",{date:it.date})}\n${e("usage.tooltip.input",{value:Number(it.totals.inputTokens||0).toLocaleString()})}\n${e("usage.tooltip.output",{value:Number(it.totals.outputTokens||0).toLocaleString()})}\n${e("usage.tooltip.cache",{value:Number((it.totals.cacheReadTokens||0)+(it.totals.cacheWriteTokens||0)).toLocaleString()})}`):null,r.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:"8px",marginTop:"10px"}},Ca("today","usage.today",ma),Ca("seven","usage.sevenDays",ga)),r.createElement("div",{"data-testid":"usage-model-list",style:{marginTop:"10px",padding:"8px 10px",borderRadius:"8px",background:"var(--dsh-svc-raised-bg)",border:"1px solid var(--dsw-alias-border-l1)"}},r.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:"8px",flexWrap:"wrap",marginBottom:"4px"}},r.createElement("div",{"data-testid":"usage-model-sort-hint",style:{fontSize:"11px",color:"var(--dsw-alias-label-secondary)"}},e(`usage.modelSortHint.${ft}`)),r.createElement("div",{"data-testid":"usage-model-scope-tabs",style:{display:"flex",gap:"2px"}},["today","week","all"].map(t=>r.createElement("button",{key:t,"data-testid":`usage-model-scope-${t}`,style:Object.assign({},Kt,ft===t?Vt:{color:"var(--dsw-alias-label-secondary)",borderBottom:"2px solid transparent"}),onClick:()=>yt(t)},e(`usage.modelScope.${t}`))))),Aa.map((t,a)=>{const s=sa(t),n=Math.round(s/Ra*1e4)/100+"%";return r.createElement("div",{key:t.id,"data-testid":`usage-model-row-${t.id}`,style:{padding:"8px 2px",borderTop:0===a?0:"1px solid var(--dsw-alias-border-l1)"}},r.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:"12px",alignItems:"baseline",fontSize:"12px"}},r.createElement("span",{style:{overflowWrap:"anywhere"}},t.id),r.createElement("span",{style:{fontWeight:650,whiteSpace:"nowrap"}},la(s))),r.createElement("div",{"data-testid":`usage-model-bar-${t.id}`,"data-value":s,"aria-label":e(`usage.modelBar.${ft}`,{model:t.id,total:la(s)}),style:{height:"8px",borderRadius:"4px",marginTop:"6px",overflow:"hidden",background:"var(--dsw-alias-border-l1)"}},r.createElement("div",{style:{display:"flex",height:"100%",width:n}},ta.map(([e,,a])=>{const n=((e,t)=>"cacheTokens"===t?Number(e.cacheReadTokens||0)+Number(e.cacheWriteTokens||0):Number(e[t]||0))(t,e);return n>0?r.createElement("div",{key:e,"data-testid":`usage-model-segment-${t.id}-${e}`,style:{width:n/s*100+"%",background:a}}):null}))),r.createElement("div",{style:{color:"var(--dsw-alias-label-secondary)",fontSize:"11px",marginTop:"4px",textAlign:"right"}},e("usage.modelLine",{steps:Number(t.steps||0).toLocaleString(),hitRate:oa(ra(t),"cacheHitRate"),input:la(t.inputTokens),output:la(t.outputTokens)})))}),Ia>0?r.createElement("button",{style:Object.assign({},Wt,{borderTop:"1px solid var(--dsw-alias-border-l1)",marginTop:"2px"}),onClick:()=>vt(e=>!e)},`${bt?"▾":"▸"} ${e(bt?"usage.models.less":"usage.models.more",{count:Ia})}`):null)):r.createElement("p",{style:Ft},_e||e("usage.empty")),...Ne&&Ne.indexedSessions>0?[]:[r.createElement("div",{key:"usage-refresh-fallback",style:Bt},r.createElement("button",{style:Dt,"data-variant":"neutral",onClick:At,disabled:Be},e(Be?"usage.refreshing":"usage.refresh")))]),Da=n&&"string"==typeof n.platform&&n.platform?`${{win32:"Windows",darwin:"macOS",linux:"Linux",freebsd:"FreeBSD",openbsd:"OpenBSD"}[n.platform]||n.platform}${"string"==typeof n.arch&&n.arch?` · ${n.arch}`:""}`:"—",Na=r.createElement("div",{key:"container-info",style:{marginTop:"18px"}},r.createElement("div",{style:Gt},e("overview.container")),n?r.createElement("div",{"data-testid":"health-display",style:Object.assign({},_t,{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:"8px"})},Qt("health.platform",Da),Qt("health.nodeVersion","string"==typeof n.nodeVersion&&n.nodeVersion?n.nodeVersion:"—"),Qt("health.uptime",(t=>{const a=Math.floor(Number(t)/60);return e("health.uptimeValue",{hours:Math.floor(a/60),minutes:a%60})})(n.uptimeSeconds)),Qt("health.rss",(e=>{const t=Number(e)/1048576;return(Math.round(10*t)/10).toLocaleString(void 0,{maximumFractionDigits:1})+" MB"})(n.rssBytes)),Qt("health.liveSessions",String(n.liveSessions)),Qt("health.persistedSessions",String(n.persistedSessions)),Qt("health.activeAgents",String(n.activeAgents)),Qt("health.activeJobs",String(n.activeJobs))):r.createElement("p",{style:Ft},d||e("version.loading"))),La=r.createElement("div",{key:"overview-errors",style:{marginTop:"18px"}},r.createElement("div",{"data-testid":"overview-errors-title",style:Gt},e("overview.errors")),r.createElement("div",{"data-testid":"overview-errors-region",style:_t},r.createElement("div",{style:Object.assign({},Ft,{margin:"-3px 0 7px"})},e("usage.errors.recent")),r.createElement("div",{style:{display:"grid",gap:"7px"}},r.createElement("div",null,r.createElement("button",{style:Wt,onClick:()=>mt(e=>!e)},`${ut?"▾":"▸"} ${e("usage.errors.toggle",{count:Ma.length})}`),ut?r.createElement("div",{style:{padding:"0 2px 8px"}},ja("model",Ma)):null),r.createElement("div",null,r.createElement("button",{style:Wt,onClick:()=>ht(e=>!e)},`${gt?"▾":"▸"} ${e("usage.toolErrors.toggle",{count:Oa.length})}`),gt?r.createElement("div",{style:{padding:"0 2px 8px"}},ja("tool",Oa)):null)))),$a=r.createElement("div",{"data-testid":"health-diagnostics-region",style:_t},p&&"ok"!==p.status?r.createElement("div",{style:{marginTop:"10px",padding:"9px 11px",borderRadius:"7px",background:"error"===p.status?"rgba(211,51,51,0.1)":"rgba(198,128,0,0.12)",border:"1px solid "+("error"===p.status?"rgba(211,51,51,0.3)":"rgba(198,128,0,0.3)")}},r.createElement("div",{style:{fontSize:"12px",fontWeight:700}},e("health.alert.title")),r.createElement("div",{style:Ft},e("health.alert.diagnostics",{status:e("health.overall."+p.status)}))):null,p?r.createElement("div",{"data-testid":"health-check-list",style:Object.assign({},_t,{marginTop:"10px",padding:"8px 10px"})},p.checks.map((t,a)=>{const s="error"===t.status||"warning"===t.status&&!0!==t.advisory,n="ok"===t.status?"var(--dsh-svc-success)":"warning"===t.status?"var(--dsh-svc-warning)":"info"===t.status?"var(--dsh-svc-info)":"var(--dsh-svc-danger)";return r.createElement("div",{key:t.id,style:{display:"flex",alignItems:"flex-start",gap:"9px",padding:"9px 10px",borderRadius:"6px",borderTop:0===a?0:"1px solid var(--dsh-svc-border)",background:s?"error"===t.status?"rgba(211,51,51,0.08)":"rgba(198,128,0,0.10)":"transparent"}},r.createElement("span",{"aria-hidden":"true",style:{flex:"none",width:"7px",height:"7px",borderRadius:"50%",marginTop:"5px",background:n}}),r.createElement("div",{style:{minWidth:0,flex:1}},r.createElement("div",{style:{fontSize:"12px",fontWeight:s?650:550,color:"var(--dsh-svc-text)"}},e("health.check."+t.id)),r.createElement("div",{style:{fontSize:"11px",lineHeight:1.5,marginTop:"2px",color:"ok"===t.status?"var(--dsh-svc-text-muted)":s?"error"===t.status?"var(--dsh-svc-danger)":"var(--dsh-svc-warning)":"var(--dsh-svc-text-muted)"}},qa(t))))})):null),Wa=Array.isArray(p?.pluginIssues)?p.pluginIssues:[],Ba=0===Wa.length?null:r.createElement("div",{"data-testid":"plugin-issue-list",style:{marginTop:"6px",padding:"8px 10px",borderRadius:"6px",border:"1px solid var(--dsh-svc-border)",background:"var(--dsh-svc-raised-bg)"}},Wa.map((t,a)=>{const s="failed"===t.phase,n="disposed"===t.phase||"unknown"===t.phase,i=s?"var(--dsh-svc-danger)":n?"var(--dsh-svc-info)":"var(--dsh-svc-warning)",l=f===t.entryId,o=k===t.entryId;return r.createElement("div",{key:t.entryId,"data-testid":`plugin-issue-${t.entryId}`,style:{display:"flex",alignItems:"flex-start",gap:"9px",padding:"8px 2px",borderTop:0===a?0:"1px solid var(--dsh-svc-border)"}},r.createElement("span",{"aria-hidden":"true",style:{flex:"none",width:"7px",height:"7px",borderRadius:"50%",marginTop:"6px",background:i}}),r.createElement("div",{style:{minWidth:0,flex:1}},r.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:"8px",flexWrap:"wrap"}},r.createElement("span",{style:{fontFamily:"var(--ds-font-family-code, monospace)",fontSize:"12px",fontWeight:600,overflowWrap:"anywhere",color:"var(--dsw-alias-label-primary)"}},t.moduleName),r.createElement("span",{style:{fontSize:"11px",fontWeight:650,color:i}},e("plugin.state."+t.phase))),void 0!==t.error&&null!==t.error?r.createElement("div",{style:{fontSize:"11px",marginTop:"3px",color:"var(--dsh-svc-danger)",lineHeight:1.5,overflowWrap:"anywhere"}},e("plugin.error",{error:t.error})):null,void 0!==t.missingDeps&&t.missingDeps.length>0?r.createElement("div",{style:{fontSize:"11px",marginTop:"3px",color:"var(--dsh-svc-warning)",lineHeight:1.5,overflowWrap:"anywhere"}},e("plugin.missingDeps",{deps:t.missingDeps.join(", ")})):null,s?r.createElement("div",{style:{marginTop:"6px"}},l?r.createElement("div",{style:{padding:"8px 10px",borderRadius:"6px",border:"1px solid var(--dsw-alias-state-error-primary)",background:"rgba(211,51,51,0.08)"}},r.createElement("p",{style:Object.assign({},Ft,{margin:"0 0 6px",color:"var(--dsw-alias-state-error-primary)"})},e("plugin.restartHint",{name:t.moduleName})),r.createElement("div",{style:{display:"flex",gap:"8px"}},r.createElement("button",{type:"button","data-testid":`plugin-restart-confirm-${t.entryId}`,style:Nt,disabled:o,onClick:()=>(async t=>{if(null!==t&&"object"==typeof t&&null===k){x(t.entryId),E(null);try{const e=await c("plugin-restart",{entryId:t.entryId});if(!e||!0!==e.ok)throw Object.assign(new Error("plugin restart failed"),{code:e?.error});y(null),await Tt(!0)}catch(t){y(null),E((t=>{const a="string"==typeof t&&t.length>0?t:"internal-error";if(a.startsWith("restart-failed:")){const t=a.slice(15).trim(),r=e("plugin.error.restart-failed");return e("plugin.restartFailed",{detail:""===t?r:`${r}(${t})`})}const r={"unknown-plugin":"plugin.error.unknown-plugin","loader-unavailable":"plugin.error.loader-unavailable","plugin-disabled":"plugin.error.plugin-disabled","not-failed":"plugin.error.not-failed"}[a];return e("plugin.restartFailed",{detail:void 0===r?a:e(r)})})(t?.code??String(t?.message||t)))}finally{x(null)}}})(t)},e(o?"plugin.restarting":"plugin.restartConfirm")),r.createElement("button",{type:"button",style:$t,disabled:o,onClick:()=>{y(null),E(null)}},e("plugin.restartCancel")))):r.createElement("button",{type:"button","data-testid":`plugin-restart-${t.entryId}`,style:Lt,disabled:o,onClick:()=>{y(t.entryId),E(null)}},e(o?"plugin.restarting":"plugin.restart"))):null,w?r.createElement("p",{"data-testid":"plugin-restart-error",style:Object.assign({},Ft,{margin:"4px 0 0",color:"var(--dsw-alias-state-error-primary)"})},w):null))})),Fa=null!==p?.pluginCompat&&"object"==typeof p?.pluginCompat?p.pluginCompat:null,Pa=Array.isArray(Fa?.issues)?Fa.issues:[],_a=Array.isArray(Fa?.declaredOnly)?Fa.declaredOnly:[],Ua=Array.isArray(Fa?.unknown)?Fa.unknown:[],Va=[...Pa.map((e,t)=>({key:`broken-${t}`,kind:"broken",moduleName:e.moduleName,breaks:e.breaks})),..._a.map((e,t)=>({key:`declared-${t}`,kind:"declared",moduleName:e.moduleName})),...Ua.map((e,t)=>({key:`unknown-${t}`,kind:"unknown",moduleName:e.moduleName,reason:e.reason}))],Ka=null===Fa||0===Va.length?null:r.createElement("div",{"data-testid":"plugin-compat-list",style:{marginTop:"6px",padding:"8px 10px",borderRadius:"6px",border:"1px solid var(--dsh-svc-border)",background:"var(--dsh-svc-raised-bg)"}},Va.map((t,a)=>{const s="broken"===t.kind,n=s?"var(--dsh-svc-warning)":"var(--dsh-svc-info)",i=s?t.breaks.map(t=>e("plugin.compat.break."+t)).join(";"):"declared"===t.kind?e("plugin.compat.declared"):e(`plugin.compat.unknown.${t.reason}`);return r.createElement("div",{key:t.key,"data-testid":`plugin-compat-${t.key}`,style:{display:"flex",alignItems:"flex-start",gap:"9px",padding:"8px 2px",borderTop:0===a?0:"1px solid var(--dsh-svc-border)"}},r.createElement("span",{"aria-hidden":"true",style:{flex:"none",width:"7px",height:"7px",borderRadius:"50%",marginTop:"6px",background:n}}),r.createElement("div",{style:{minWidth:0,flex:1}},r.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:"8px",flexWrap:"wrap"}},r.createElement("span",{style:{fontFamily:"var(--ds-font-family-code, monospace)",fontSize:"12px",fontWeight:600,overflowWrap:"anywhere",color:"var(--dsw-alias-label-primary)"}},t.moduleName),s?r.createElement("span",{style:{fontSize:"11px",fontWeight:650,color:"var(--dsh-svc-warning)"}},e("plugin.compat.issue.broken",{count:1})):"declared"===t.kind?r.createElement("span",{style:{fontSize:"11px",fontWeight:650,color:"var(--dsh-svc-info)"}},e("plugin.compat.issue.declared",{count:1})):null),r.createElement("div",{style:{fontSize:"11px",marginTop:"3px",lineHeight:1.5,overflowWrap:"anywhere",color:s?"var(--dsh-svc-warning)":"var(--dsh-svc-text-muted)"}},i)))})),Ga=S&&!0===S.supported?S.items.filter(e=>!1===e.writable).length:0,Ya=Ga>0||X&&(X.ownerIssues>0||X.directoryModeIssues>0||X.fileModeIssues>0||X.unreadable>0),Ja=S&&!0===S.supported?r.createElement("div",{key:"permissions-section",style:{marginTop:"18px"}},r.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px",flexWrap:"wrap"}},r.createElement("div",{style:Gt},e("permissions.title")),r.createElement("button",{type:"button","data-testid":"permissions-toggle","aria-expanded":String(_),onClick:()=>U(e=>!e),style:{fontSize:"12px",lineHeight:"20px",padding:"2px 12px",borderRadius:999,border:"1px solid var(--dsh-svc-border-strong)",background:"transparent",color:Ga>0?"var(--dsw-alias-state-warn-primary)":"var(--dsw-alias-label-primary)",cursor:"pointer"}},`${_?"▾":"▸"} ${e(_?"permissions.hide":"permissions.show")}${Ga>0?` · ${Ga}`:""}`)),_?r.createElement("div",{style:Object.assign({},_t,{marginTop:"4px"})},r.createElement("p",{style:Ft},e("permissions.description")),Ga>0?r.createElement("div",{style:{marginTop:"8px",padding:"9px 11px",borderRadius:"7px",background:"rgba(198,128,0,0.12)",border:"1px solid rgba(198,128,0,0.3)"}},r.createElement("div",{style:{fontSize:"12px",fontWeight:700}},e("health.alert.title")),r.createElement("div",{style:Ft},e("permissions.summary.warning",{count:Ga}))):null,r.createElement("p",{style:Object.assign({},Ft,{fontWeight:600,color:Ga>0?"var(--dsw-alias-state-warn-primary)":"var(--dsw-alias-label-primary)"})},e(Ga>0?"permissions.summary.warning":"permissions.summary.ok",{count:Ga>0?Ga:S.items.length})),r.createElement("p",{style:Object.assign({},Ft,{fontWeight:600})},e("permissions.target",{owner:S.targetOwner})),r.createElement("div",{style:{display:"flex",gap:"8px",flexWrap:"wrap"}},r.createElement("button",{style:Dt,onClick:()=>P(e=>!e)},e(L?"permissions.hideDetails":"permissions.showDetails")),r.createElement("button",{style:Dt,"data-variant":"neutral",onClick:async()=>{if(S&&!0===S.supported){te(!0),H(null);try{const e=await c("permissions-deep",{planId:S.planId});if(!e||!1===e.ok)throw new Error("deep permission check failed");Z(e.value)}catch(t){H(e("permissions.error"))}finally{te(!1)}}},disabled:ee},e(ee?"permissions.deepChecking":"permissions.deep"))),X?r.createElement("p",{style:Ft},e("permissions.deepSummary",{scanned:X.scanned,duration:X.durationMs,owner:X.ownerIssues,directories:X.directoryModeIssues,files:X.fileModeIssues,unreadable:X.unreadable})):null,L?r.createElement("div",{style:{display:"grid",gap:"8px",marginTop:"8px"}},S.items.map(e=>r.createElement("div",{key:e.path,style:{padding:"9px 10px",borderRadius:"6px",border:"1px solid var(--dsw-alias-border-l1)",background:"var(--dsh-svc-raised-bg)",color:"var(--dsw-alias-label-primary)"}},r.createElement("div",{style:{fontSize:"12px",fontWeight:600}},e.label),r.createElement("div",{style:{fontFamily:"monospace",fontSize:"11px",color:"var(--dsw-alias-label-secondary)",overflowWrap:"anywhere"}},e.path),r.createElement("div",{style:{fontFamily:"monospace",fontSize:"12px",marginTop:"3px"}},`${e.owner} · ${e.mode}`)))):null,C?r.createElement("div",{style:{marginTop:"10px"}},r.createElement("p",{style:Object.assign({},Ft,{color:"var(--dsw-alias-state-error-primary)"})},e("permissions.confirmHint")),r.createElement("div",{style:{display:"flex",gap:"8px"}},r.createElement("button",{style:Nt,disabled:I,onClick:async()=>{if(S&&!0===S.supported){R(!0),H(null);try{const e=await c("permissions-repair",{planId:S.planId});if(!e||!1===e.ok)throw new Error("permission repair failed");q(e.value),T(!1)}catch(t){H(e("permissions.error"))}finally{R(!1)}}}},e(I?"permissions.repairing":"permissions.confirm")),r.createElement("button",{style:$t,disabled:I,onClick:()=>T(!1)},e("permissions.cancel")))):Ya?r.createElement("button",{style:Object.assign({},Lt,{marginTop:"10px"}),"data-variant":"dangerGhost",disabled:I,onClick:()=>T(!0)},e("permissions.repair")):null,z?r.createElement("p",{style:Object.assign({},Ft,{color:"var(--dsw-alias-state-error-primary)"})},z):null):null):null,Qa=r.createElement("div",{key:"health-section","data-testid":"health-card",style:Pt},$a,Ba,Ka,Ja),Xa=se&&!0===ie?.active,Za=Xa&&ie.phase||"copy",er={copy:1,archive:2,validate:3,publish:4}[Za]||1,tr=(()=>{if(!Xa)return 0;const e=Number(ie.totalBytes)||0;let t;if("copy"===Za)t=e>0?Math.min(30,Math.floor(ie.copiedBytes/e*30)):0;else if("archive"===Za){const a=e>0?Math.min(1,Number(ie.archiveBytes)/e):0;t=Math.min(70,30+Math.floor(40*a))}else t="validate"===Za?70:100;const a=Math.max(de.current,t);return de.current=a,a})(),ar=Xa?"copy"===Za?`${Yt(ie.copiedBytes)} / ${Yt(ie.totalBytes)}`:ie.archiveBytes>0?Yt(ie.archiveBytes):"":"",rr=r.createElement("div",{key:"backup-section"},r.createElement("div",{style:Gt},e("backup.title")),r.createElement("div",{style:Object.assign({},_t,{marginTop:"4px"})},r.createElement("p",{style:Ft},e("backup.description")),r.createElement("div",{style:{display:"flex",gap:"8px",marginTop:"12px",flexWrap:"wrap"}},r.createElement("button",{style:Object.assign({},Ht,{flex:1,minWidth:0,display:"inline-flex",alignItems:"center",justifyContent:"center",textAlign:"center"}),"data-variant":"brandGhost",onClick:async()=>{ne(!0),ue(null),oe(null),de.current=0;let e=!1,a=()=>{};const r=async()=>{if(!e){try{const t=await c("backup-progress",{});!e&&t&&t.ok&&oe(!0===t.value?.active?t.value:null)}catch(e){}e||(a=t.timer.timeout(r,400))}};r();try{const e=await c("backup-create",{});if(!e||!1===e.ok)throw Object.assign(new Error("backup failed"),{code:e?.error});re({items:e.value.items,totalBytes:e.value.totalBytes})}catch(e){ue(It(e?.code))}finally{e=!0,a(),oe(null),ne(!1)}},disabled:se},e(se?"backup.creating":"backup.create")),r.createElement("label",{style:Object.assign({},Dt,{flex:1,minWidth:0,display:"inline-flex",alignItems:"center",justifyContent:"center",textAlign:"center",cursor:Se?"default":"pointer"})},e(Se?"backup.importing":"backup.import"),r.createElement("input",{type:"file",accept:".tar.gz,application/gzip",disabled:Se,onChange:t=>{const a=t.target.files&&t.target.files[0];if(t.target.value="",!a)return;qe(!0),ue(null);const r=new FileReader;r.onload=async()=>{try{const e=new Uint8Array(r.result);let t="";for(let a=0;a<e.length;a+=32768)t+=String.fromCharCode(...e.subarray(a,a+32768));const s=await c("backup-import",{name:a.name,data:btoa(t)});if(!s||!1===s.ok)throw Object.assign(new Error("backup import failed"),{code:s?.error});re(s.value)}catch(t){ue(t?.code?It(t.code):e("backup.error"))}finally{qe(!1)}},r.onerror=()=>{qe(!1),ue(e("backup.error"))},r.readAsArrayBuffer(a)},style:{display:"none"}}))),se&&!0===ie?.active?r.createElement("div",{"data-testid":"backup-progress",style:{marginTop:"10px"}},r.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:"8px",fontSize:"11px",color:"var(--dsw-alias-label-secondary)"}},r.createElement("span",null,e("backup.progress."+Za,{current:er,total:4})),r.createElement("span",null,ar)),r.createElement("div",{style:{marginTop:"5px",height:"6px",borderRadius:"999px",background:"var(--dsh-svc-raised-bg)",border:"1px solid var(--dsw-alias-border-l1)",overflow:"hidden"}},r.createElement("div",{style:{height:"100%",width:tr+"%",background:"var(--dsw-alias-brand-primary)",transition:"width 240ms ease"}}))):null,r.createElement("p",{style:Ft},e("backup.total",{size:Yt(ae.totalBytes)})),ke?r.createElement("div",{"data-testid":"backup-manual-restart",style:{marginTop:"10px",padding:"10px 12px",borderRadius:"8px",border:"1px solid var(--dsw-alias-state-warn-primary)",background:"rgba(198,128,0,0.10)"}},r.createElement("div",{style:{fontWeight:650,color:"var(--dsw-alias-state-warn-primary)"}},e("backup.manualRestartTitle")),r.createElement("p",{style:Object.assign({},Ft,{margin:"4px 0 0"})},e("backup.manualRestartBody"))):null,ce?r.createElement("p",{style:Object.assign({},Ft,{color:"var(--dsw-alias-state-error-primary)"})},ce):null,0===ae.items.length?r.createElement("p",{style:Ft},e("backup.empty")):ae.items.length>10?r.createElement("button",{style:Object.assign({},$t,{marginTop:"8px"}),onClick:()=>Te(e=>!e)},e(Ce?"backup.hideRecords":"backup.showRecords")):null,ae.items.length>0&&(ae.items.length<=10||Ce)?r.createElement("div",{style:{marginTop:"10px",display:"grid",gap:"8px"}},ae.items.map(t=>r.createElement("div",{key:t.id,style:{padding:"9px 2px",borderBottom:"1px solid var(--dsh-svc-border)",color:"var(--dsw-alias-label-primary)"}},r.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:"12px",alignItems:"flex-start"}},r.createElement("div",null,r.createElement("div",{style:{fontFamily:"monospace",fontSize:"12px",overflowWrap:"anywhere"}},t.name),r.createElement("div",{style:{color:"var(--dsw-alias-label-secondary)",fontSize:"11px",marginTop:"3px"}},`${Yt(t.sizeBytes)} · ${new Date(t.createdAt).toLocaleString()}`)),r.createElement("div",{style:{display:"flex",gap:"6px",flexShrink:0}},pe===t.id||ge===t.id?null:r.createElement("button",{style:N(),disabled:we||se,onClick:()=>(async t=>{Ee(!0),ue(null);try{const e=await c("backup-export",{id:t});if(!e||!1===e.ok)throw new Error("export failed");const a=document.createElement("a");a.href=e.value.url,a.download=e.value.name,document.body.appendChild(a),a.click(),document.body.removeChild(a)}catch(t){ue(e("backup.exportError"))}finally{Ee(!1)}})(t.id)},e(we?"backup.exporting":"backup.export")),pe===t.id||ge===t.id?null:r.createElement("button",{style:N(),disabled:se,onClick:()=>(async e=>{ne(!0),ue(null),xe(!1),ve(null),ye(null),he(e);try{const t=await c("backup-inspect",{id:e});if(!t||!1===t.ok)throw Object.assign(new Error("backup inspect failed"),{code:t?.error});if(ve(t.value),!0!==t.value.validForRestore)return;const a=await c("backup-restore-prepare",{id:e});if(!a||!1===a.ok)throw Object.assign(new Error("backup prepare failed"),{code:a?.error});ye(a.value)}catch(e){ue(It(e?.code))}finally{ne(!1)}})(t.id)},e(se&&ge===t.id?"backup.inspecting":"backup.restore")),pe===t.id||ge===t.id?null:r.createElement("button",{style:Object.assign({},Lt,{minHeight:"28px",padding:"4px 9px"}),"data-variant":"dangerGhost",disabled:se,onClick:()=>me(t.id)},e("backup.delete")))),pe===t.id?r.createElement("div",{style:{marginTop:"8px"}},r.createElement("p",{style:Object.assign({},Ft,{color:"var(--dsw-alias-state-error-primary)",margin:"0 0 6px"})},e("backup.confirmHint")),r.createElement("div",{style:{display:"flex",gap:"8px"}},r.createElement("button",{style:Nt,disabled:se,onClick:()=>(async t=>{ne(!0),ue(null);try{const e=await c("backup-delete",{id:t});if(!e||!1===e.ok)throw new Error("backup failed");re(e.value),me(null)}catch(t){ue(e("backup.error"))}finally{ne(!1)}})(t.id)},e("backup.confirm")),r.createElement("button",{style:$t,disabled:se,onClick:()=>me(null)},e("backup.cancel")))):ge===t.id?r.createElement("div",{"data-testid":"backup-restore-preflight",style:{marginTop:"8px",padding:"10px",borderRadius:"8px",border:"1px solid var(--dsh-svc-border)",background:"var(--dsh-svc-raised-bg)"}},se&&null===be?r.createElement("p",{style:Ft},e("backup.inspecting")):null!==be?r.createElement("div",null,r.createElement("div",{style:{fontWeight:650,color:be.validForRestore?"var(--dsh-svc-success)":"var(--dsh-svc-danger)"}},e(be.validForRestore?"backup.integrity.ok":"backup.integrity.invalid")),r.createElement("p",{style:Object.assign({},Ft,{margin:"4px 0 0"})},e("backup.integrity.summary",{entries:be.archive?.entryCount||0,size:Yt(be.archive?.logicalBytes||0),sessions:be.sections?.sessions?.files||0,config:be.sections?.config?.files?.length||0,profiles:be.sections?.profiles?.count||0})),!0!==be.validForRestore?r.createElement("ul",{style:Object.assign({},Ft,{margin:"6px 0 0",paddingLeft:"18px",color:"var(--dsh-svc-danger)"})},(be.issues||[]).map((e,t)=>r.createElement("li",{key:t},It(e.code)))):null):null,null!==fe?r.createElement("div",{style:{marginTop:"8px"}},r.createElement("p",{style:Object.assign({},Ft,{color:"var(--dsw-alias-state-warn-primary)",margin:"0 0 6px"})},e("backup.restoreHint")),r.createElement("ul",{style:Object.assign({},Ft,{margin:"0 0 8px",paddingLeft:"18px"})},r.createElement("li",null,e("backup.plan.sessions")),r.createElement("li",null,e("backup.plan.config",{replace:fe.targets?.config?.replace?.length||0,remove:fe.targets?.config?.remove?.length||0})),r.createElement("li",null,e("backup.plan.profiles",{count:fe.targets?.profiles?.upsert?.length||0}))),r.createElement("p",{style:Object.assign({},Ft,{margin:"0 0 8px"})},e("backup.plan.expires",{time:new Date(fe.expiresAt).toLocaleTimeString()})),r.createElement("div",{style:{display:"flex",gap:"8px"}},r.createElement("button",{style:Nt,disabled:se,onClick:Rt},e("backup.restoreConfirm")),r.createElement("button",{style:$t,disabled:se,onClick:zt},e("backup.cancel")))):r.createElement("button",{style:$t,disabled:se,onClick:zt},e("backup.cancel"))):null))):null)),sr=(t,a,s,n,i,l,o)=>{const d=n?"unpublished"===n.status?e("update.unpublished"):"unavailable"===n.status?e("update.unavailable"):n.upToDate?e("update.current"):e("update.available",{version:n.latest}):He||e("update.checking"),c=n?n.upToDate?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-state-warn-primary)":"var(--dsw-alias-label-secondary)",u=l&&n&&"unpublished"!==n.status&&"unavailable"!==n.status&&!n.upToDate?r.createElement("button",{type:"button",title:e(wt?"update.detailsHide":"update.detailsButton"),style:{background:"transparent",border:0,padding:0,cursor:"pointer",display:"inline-flex",alignItems:"center",gap:"5px",fontSize:"12px",fontWeight:600,color:c},onClick:()=>Et(e=>!e)},(p=wt,r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:12,height:12,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block",transition:"transform 150ms ease",transform:p?"rotate(90deg)":"none"}},r.createElement("path",{d:"M9 6l6 6-6 6"}))),r.createElement("span",null,d)):r.createElement("div",{style:{color:c,fontWeight:600}},d);var p;return r.createElement("div",{key:t,style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:"16px",padding:"10px 2px",borderTop:o?"1px solid var(--dsw-alias-border-l1)":0}},r.createElement("div",{style:{whiteSpace:"nowrap",display:"flex",alignItems:"center",gap:"8px"}},r.createElement("span",{style:{fontSize:"13px",fontWeight:650}},`${a} `),n?.url?r.createElement("a",{"data-testid":`version-${t}-link`,href:n.url,target:"_blank",rel:"noreferrer",style:{color:"var(--dsw-alias-label-primary)",textDecoration:"underline",fontSize:"12px",whiteSpace:"nowrap",marginLeft:"16px"}},n.current||s||e("version.loading")):r.createElement("code",{style:{fontSize:"12px",color:"var(--dsw-alias-label-primary)",marginLeft:"16px"}},n?.current||s||e("version.loading"))),i||null,r.createElement("div",{style:{textAlign:"right",fontSize:"12px"}},u))},nr=Oe?.dsh,ir=nr&&"unpublished"!==nr.status&&"unavailable"!==nr.status&&!nr.upToDate,lr=!Oe?.plugin||Oe.plugin.upToDate||"available"!==Oe.plugin.status||tt||st?null:r.createElement("button",{style:Object.assign({},Dt,{minHeight:"24px",padding:"2px 8px",fontSize:"11px"}),disabled:Ve,onClick:Ot},e(Ve?"update.upgrading":"update.upgrade")),or=r.createElement("div",{key:"version-card","data-testid":"version-card",style:Pt},r.createElement("div",{key:"title",style:Gt},e("version.title")),r.createElement("div",{style:_t},sr("plugin","dsh-service",ze,Oe?.plugin,lr,!1,!1),sr("dsh","DSH",Ae,nr,null,!0===ir,!0),wt?r.createElement("div",{"data-testid":"version-channel-details",style:{marginTop:"6px",paddingTop:"8px",borderTop:"1px solid var(--dsw-alias-border-l1)",fontSize:"12px",lineHeight:1.7,color:"var(--dsw-alias-label-secondary)",display:"flex",flexDirection:"column",gap:"6px"}},r.createElement("div",null,e("update.details.current",{version:nr?.current||Ae||"—"})),r.createElement("div",null,e("update.details.latest",{version:nr?.latest||"—"})),dt(e,nr?.tags)):null,tt?r.createElement("div",{"data-testid":"upgrade-manual-confirm",style:{marginTop:"10px",padding:"10px 12px",borderRadius:"6px",background:"rgba(211,51,51,0.08)",border:"1px solid rgba(211,51,51,0.3)"}},r.createElement("p",{style:{margin:"0 0 6px",color:"var(--dsw-alias-state-error-primary)",fontSize:"13px",fontWeight:600}},e("update.manualConfirmTitle")),r.createElement("p",{style:Object.assign({},Ft,{margin:"0 0 8px"})},e("update.manualConfirm")),r.createElement("div",{style:Bt},r.createElement("button",{style:Lt,"data-variant":"dangerGhost",disabled:Ve,onClick:Ot},e(Ve?"update.upgrading":"update.manualProceed")),r.createElement("button",{style:$t,disabled:Ve,onClick:()=>at(!1)},e("restart.cancel")))):null,st?r.createElement("div",{"data-testid":"upgrade-manual-pending",style:{marginTop:"10px",padding:"10px 12px",borderRadius:"6px",border:"1px solid var(--dsw-alias-state-warn-primary)",background:"var(--dsh-svc-raised-bg)"}},r.createElement("p",{style:{margin:"0 0 4px",color:"var(--dsw-alias-state-warn-primary)",fontSize:"13px",fontWeight:650}},e("update.manualRestartTitle")),r.createElement("p",{style:Object.assign({},Ft,{margin:0})},e("update.manualRestartBody"))):null,Ye?r.createElement("p",{style:Object.assign({},Ft,{color:"var(--dsw-alias-state-error-primary)",margin:"4px 0 0"})},Ye):null)),dr=r.createElement(pt,{showNavToggle:!0}),{enabled:cr,done:ur,input:pr,bell:mr,setEnabled:gr,setDone:hr,setInput:br,setBell:vr}=le(),fr="undefined"!=typeof Notification,yr=fr?Notification.permission:"denied",kr=(e,t,a,s,n,i)=>r.createElement("div",{"data-testid":e,style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px",padding:"5px 0"}},r.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"2px"}},r.createElement("span",{style:{fontSize:"13px",color:"var(--dsw-alias-label-primary)"}},t),a?r.createElement("span",{style:Ft},a):null),((e,t,a)=>r.createElement("button",{type:"button",role:"switch","aria-checked":String(!0===e),"aria-disabled":a?"true":void 0,onClick:a?void 0:()=>t(!e),style:{width:"34px",height:"20px",borderRadius:"10px",padding:0,flexShrink:0,position:"relative",border:"1px solid "+(e?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-border-l2)"),background:e?"var(--dsw-alias-state-success-primary)":"var(--dsw-alias-bg-layer-2)",cursor:a?"default":"pointer",opacity:a?.5:1,lineHeight:0}},r.createElement("span",{style:{position:"absolute",top:"1px",left:e?"15px":"1px",width:"16px",height:"16px",borderRadius:"50%",background:e?"#fff":"var(--dsw-alias-label-tertiary)"}})))(s,n,i)),xr=fr?r.createElement("div",{style:{marginTop:"18px"}},r.createElement("div",{style:Gt},e("notification.title")),r.createElement("div",{style:Object.assign({},_t,{marginTop:"4px"})},r.createElement("p",{style:Ft},e("notification.description")),"granted"!==yr?r.createElement("div",{style:{marginTop:"8px",display:"flex",alignItems:"center",gap:"8px"}},r.createElement("button",{style:Dt,onClick:()=>{Notification.requestPermission().then(e=>{"granted"===e&&gr(!0)})}},e("notification.enable")),r.createElement("span",{style:Ft},"denied"===yr?e("notification.denied"):"")):r.createElement("div",{style:{marginTop:"8px",display:"flex",flexDirection:"column"}},kr("notify-row-master",e("notification.master"),null,cr,gr,!1),kr("notify-row-done",e("notification.done"),null,ur,hr,!cr),kr("notify-row-input",e("notification.input"),null,pr,br,!cr),kr("notify-row-bell",e("notification.bellShow"),null,mr,vr,!1)))):null,wr=null!=Oe&&(Oe.dsh&&!1===Oe.dsh.upToDate||Oe.plugin&&!1===Oe.plugin.upToDate),Er=null!==ae&&!se&&!ce,Sr=(p?.checks||[]).filter(e=>"error"===e.status||"warning"===e.status&&!0!==e.advisory&&"permissions"!==e.id),qr=[];d&&qr.push({level:"error",text:d}),_e&&qr.push({level:"error",text:_e}),ce&&qr.push({level:"error",text:ce}),St.error&&qr.push({level:"error",text:String(St.error)}),z&&qr.push({level:"error",text:z});for(const t of Sr)qr.push({level:"error"===t.status?"error":"warning",text:e(`health.check.${t.id}`)+":"+qa(t)});Ga>0&&qr.push({level:"warning",text:e("permissions.summary.warning",{count:Ga})}),wr&&qr.push({level:"info",text:e("overview.updateAvailable")}),null!==qt&&!0===qt.manualStartLikely&&qr.push({level:"info",text:e("health.detail.runtime-env.manual")}),Er&&0===ae.items.length&&qr.push({level:"info",text:e("overview.backupEmpty")});const Cr=qr.some(e=>"error"===e.level)?"error":qr.some(e=>"warning"===e.level)?"warning":qr.some(e=>"info"===e.level)?"info":"normal",Tr="normal"===Cr?e("overview.status.normal"):e(`overview.status.${Cr}`,{count:qr.length}),Ar=r.createElement("div",{"data-testid":"overview-status",style:Object.assign({},_t,{display:"flex",alignItems:"center",gap:"10px"})},r.createElement("span",{"aria-hidden":"true",style:{flex:"none",width:"10px",height:"10px",borderRadius:"50%",background:"normal"===Cr?"var(--dsh-svc-success)":"warning"===Cr?"var(--dsh-svc-warning)":"error"===Cr?"var(--dsh-svc-danger)":"var(--dsh-svc-info)"}}),r.createElement("span",{style:{fontSize:"13px",fontWeight:600,color:"var(--dsh-svc-text)"}},Tr)),Ir=0===qr.length?null:r.createElement("div",{"data-testid":"overview-actionables",style:Object.assign({},_t,{marginTop:"10px",padding:"4px 10px"})},qr.map((e,t)=>r.createElement("div",{key:`${e.level}-${t}`,style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 2px",fontSize:"12px",borderTop:0===t?0:"1px solid var(--dsh-svc-border)"}},r.createElement("span",{"aria-hidden":"true",style:{flex:"none",width:"7px",height:"7px",borderRadius:"50%",background:"error"===e.level?"var(--dsh-svc-danger)":"warning"===e.level?"var(--dsh-svc-warning)":"var(--dsh-svc-info)"}}),r.createElement("span",{style:{color:"var(--dsh-svc-text)"}},e.text)))),Rr=[!1!==s.healthDiagnostics?r.createElement("button",{key:"health",type:"button","data-testid":"overview-action-health","data-variant":"brandGhost",style:Ht,onClick:()=>{xt("diagnostics"),Tt(!1)}},e("overview.action.health")):null,!1!==s.quotaLookup?r.createElement("button",{key:"quota",type:"button","data-testid":"overview-action-quota","data-variant":"brandGhost",style:Ht,onClick:()=>xt("quota")},e("tabs.quota")):null,!1!==s.backupMaintenance?r.createElement("button",{key:"backup",type:"button","data-testid":"overview-action-backup","data-variant":"brandGhost",style:Ht,onClick:()=>{xt("maintenance"),Br("backup")}},e("backup.create")):null].filter(e=>null!==e),zr=0===Rr.length?null:r.createElement("div",{"data-testid":"overview-core-actions",style:{display:"flex",flexWrap:"wrap",gap:"8px",marginTop:"18px"}},Rr),Mr=r.createElement("div",null,Ar,Ir,or,Na,zr,Ma.length>0||Oa.length>0?La:null),Or=r.createElement("div",{key:"maintenance-card","data-testid":"maintenance-card",style:Pt},rr),jr=!0===p?.checks?.some(e=>"error"===e.status||"warning"===e.status&&!0!==e.advisory),{batch:Hr}=Re(),Dr={overview:!1,usage:Boolean(_e),quota:!1,diagnostics:Boolean(d||z||jr||Ga>0),maintenance:Boolean(ce||St.error),configuration:!1},[Nr,Lr]=a("subagent"),[$r,Wr]=a("features");l(()=>{let e=null;try{e=localStorage.getItem("dsh-service-maintenance-tab")}catch(e){}Lr(null===e?"subagent":K(e,s))},[]);const Br=e=>{Lr(e);try{localStorage.setItem("dsh-service-maintenance-tab",e)}catch(e){}},Fr=((e,t)=>W.filter(t=>void 0===F[t]||!1!==e[F[t]]).map(e=>({id:e,labelKey:B[e],warning:void 0!==t&&!0===t[e]})))(s,Dr),Pr=V(s),_r=Fr.filter(e=>e.warning).map(t=>e(t.labelKey)),Ur=Fr.some(e=>e.id===kt)?kt:"overview",Vr=K(Nr,s),Kr="overview"===Ur?Mr:"usage"===Ur?Ha:"quota"===Ur?r.createElement(fa,null):"diagnostics"===Ur?Qa:"maintenance"===Ur?null===Vr?r.createElement("div",{"data-testid":"maintenance-empty",style:_t},e("maintenance.empty")):"restart"===Vr?dr:"backup"===Vr?Or:"skills"===Vr?r.createElement(ia,null):"subagent"===Vr?r.createElement(Xt,null):r.createElement(va,null):"notifications"===$r?r.createElement("div",{"data-testid":"config-notifications-page",style:!1===s.taskNotifications?{opacity:.55}:void 0},xr,...!1===s.taskNotifications?[r.createElement("p",{key:"notify-off-hint",style:Object.assign({},Ft,{marginTop:"8px"})},e("config.notificationsDisabled"))]:[]):r.createElement(Jt,null);return r.createElement("div",{"data-testid":"service-panel-root","data-dshsvc-root":"","data-dshsvc-page":Ur,className:"dshsvc-page"},_r.length>0?r.createElement("div",{role:"alert",style:{marginBottom:"12px",padding:"11px 13px",borderRadius:"8px",background:"rgba(198,128,0,0.16)",border:"1px solid rgba(198,128,0,0.48)"}},r.createElement("div",{style:{fontSize:"13px",fontWeight:700}},e("tabs.alert.title")),r.createElement("div",{style:Object.assign({},Ft,{marginTop:"3px"})},e("tabs.alert.body",{tabs:_r.join(e("tabs.alert.join"))}))):null,r.createElement(Q,{items:Fr.map(t=>({id:t.id,label:e(t.labelKey),icon:"diagnostics"===t.id?"health":t.id,warning:t.warning,badge:"maintenance"===t.id&&null!==Hr&&"running"===Hr.phase?{testid:"skills-tab-badge",text:Hr.done+"/"+Hr.total}:null})),activeId:Ur,onChange:e=>{xt(e),"diagnostics"===e&&Tt(!1)},testIdPrefix:"service-tab",dotLabel:e("tabs.alert.dot"),ariaLabel:e("nav.label")}),r.createElement(J,{title:e(B[Ur]),description:void 0!==Y[Ur]?e(Y[Ur]):null,action:"diagnostics"===Ur?r.createElement("button",{type:"button","data-testid":"diagnostics-recheck","data-variant":"neutral",style:Dt,onClick:()=>Tt(!0),disabled:g},e(g?"health.checking":p?"health.recheck":"health.check")):null}),"maintenance"===Ur&&Pr.length>0?r.createElement(Q,{items:Pr.map(t=>({id:t.id,label:e(t.labelKey)})),activeId:Vr,onChange:Br,testIdPrefix:"maintenance-tab",variant:"sub",ariaLabel:e("tabs.maintenance")}):null,"configuration"===Ur?r.createElement(Q,{items:G.map(t=>({id:t.id,label:e(t.labelKey)})),activeId:$r,onChange:Wr,testIdPrefix:"config-tab",variant:"sub",ariaLabel:e("tabs.configuration")}):null,r.createElement("div",{"data-testid":"tab-panel",style:{padding:"14px 2px 2px",color:"var(--dsw-alias-label-primary)"}},Kr))}null!==ha&&console.info("[dsh-service-md] session detail markdown renderer ready");const ka=["M10.268 21a2 2 0 0 0 3.464 0","m15 8 2 2 4-4","M16.8607 4.4824A6 6 0 0 0 6 8C6 12.499 4.589 13.956 3.262 15.326","M3.262 15.326A1 1 0 0 0 4 17H20A1 1 0 0 0 20.74 15.327C20.209 14.779 19.665 14.218 19.203 13.454"],xa=["M10.268 21a2 2 0 0 0 3.464 0","M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742","m2 2 20 20","M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05"];function wa(){const{enabled:e,setEnabled:t}=le(),a=j();return r.createElement("button",{type:"button",title:a(e?"notification.bellOn":"notification.bellOff"),style:{background:"transparent",border:0,cursor:"pointer",padding:"2px 4px",color:"inherit",opacity:e?1:.45,lineHeight:0},onClick:()=>{"undefined"!=typeof Notification&&("granted"===Notification.permission?t(!e):Notification.requestPermission().then(e=>{"granted"===e&&t(!0)}))}},(s=e,r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"}},(s?ka:xa).map(function(e,t){return r.createElement("path",{key:t,d:e})}))));var s}t.slots.inject("conversation.input.left",()=>{let e=null;const a=()=>{null!==e&&(e(),e=null),M("taskNotifications")&&te&&(e=t.slots.register({name:"conversation.input.left",id:"dsh-service-notify",order:90,label:()=>C("notification.bellOn")},()=>r.createElement(wa,null)))};a();const s=R.subscribe(a),n=(i=a,re.add(i),()=>re.delete(i));var i;return()=>{s(),n(),null!==e&&e()}}),t.slots.inject("sidebar.footer.action",()=>t.slots.register({name:"sidebar.footer.action",id:"dsh-service-update",order:90,label:()=>C("update.badge")},()=>r.createElement(st,null))),t.slots.inject("settings.plugin.item",()=>t.slots.register({name:"settings.plugin.item",id:"dsh-service",key:"dsh-service",order:40},()=>r.createElement(Gt,null))),t.slots.inject("settings.section",()=>{const e=t.slots.register({name:"settings.section",id:"dsh-service",order:99,label:()=>C("nav.label")},()=>r.createElement(ya,null));de.sync(),ce.sync(),ue.sync();const a=R.subscribe(ce.sync),s=R.subscribe(ue.sync);return()=>{a(),s(),e(),de.disposeEntry(),ce.disposeEntry(),ue.disposeEntry()}}),t.slots.inject("shell.overlay",()=>t.slots.register({name:"shell.overlay",id:"dsh-service-restart",order:100,label:()=>C("overlay.label")},()=>r.createElement(ut,null))),t.slots.inject("conversation.input.right",()=>{let e=null;const a=()=>{null!==e&&(e(),e=null),M("quotaLookup")&&(e=t.slots.register({name:"conversation.input.right",id:"dsh-service-quota-ring",order:95,label:()=>C("quota.ring.label"),inject:e=>{if(null==e)return{};try{const t=Oe();if(void 0===t||"function"!=typeof t.directoryFor)return{sessionId:e};const a=t.directoryFor(e);return{sessionId:e,directoryStore:a.store,loadDirectory:()=>{try{const e=a.load();e&&"function"==typeof e.catch&&e.catch(()=>{})}catch(e){}}}}catch(t){return{sessionId:e}}}},e=>r.createElement(Kt,e)))};a();const s=R.subscribe(a);return()=>{s(),null!==e&&e()}}),t.slots.inject("conversation.chat.turnTail",()=>{let e=null;const a=()=>{null!==e&&(e(),e=null),M("subagentRoute")&&(e=t.slots.register({name:"conversation.chat.turnTail",id:"dsh-service-subagent-models",select:v},e=>r.createElement(E,e)))};a();const s=R.subscribe(a);return()=>{s(),null!==e&&e()}}),t.slots.inject("conversation.composer.dock",()=>{let e=null;const a=()=>{null!==e&&(e(),e=null),M("subagentRoute")&&M("subagentModelsDock")&&(e=t.slots.register({name:"conversation.composer.dock",id:"dsh-service-subagent-models-dock",order:60,label:()=>C("subagent.turnTail.label"),inject:e=>({sessionId:e})},e=>r.createElement(S,e)))};a();const s=R.subscribe(a);return()=>{s(),null!==e&&e()}});const Ea=(()=>{const e={observer:null,btn:null,styleTag:null,retryTimer:null,retryLeft:0,scrollHandler:null,rafId:null,slotRO:null},a=(()=>{const e=e=>{if("function"==typeof e.hasAttribute)try{return e.hasAttribute("data-conversation-scroll")}catch(e){return!1}try{return null!==e.attributes&&"function"==typeof e.attributes.getNamedItem&&null!==e.attributes.getNamedItem("data-conversation-scroll")}catch(e){return!1}};return{toBottomSlot:()=>{try{return document.querySelector('[class*="_toBottomSlot"]')}catch(e){return null}},toBottomButton:e=>{try{return e.querySelector('[class*="_toBottom"]:not([class*="Slot"])')}catch(e){return null}},scrollportOf:t=>{try{let a=t;for(;null!==a&&a!==document.documentElement&&!e(a);)a=a.parentNode;return null!==a&&a!==document.documentElement?a:t.parentNode}catch(e){return null}},officialTurnNavigatorVisible:e=>{try{if("function"!=typeof getComputedStyle)return!1;if(null===e||"function"!=typeof e.querySelector)return!1;const t=e.querySelector('[class*="_rail"]');return null!==t&&"none"!==getComputedStyle(t).display}catch(e){return!1}},userRows:e=>{const t=[];try{if("function"!=typeof e.querySelectorAll)return t;for(const a of e.querySelectorAll('[data-chat-flow-kind="user"]'))t.push(a)}catch(e){}return t},flowTopOf:(e,t)=>{try{return t.getBoundingClientRect().top-e.getBoundingClientRect().top}catch(e){return 0}},loadOlderButton:e=>{try{return"function"==typeof e.querySelector?e.querySelector('[class*="_older"] button'):null}catch(e){return null}}}})(),r=()=>{if(null!==e.retryTimer){try{e.retryTimer()}catch(e){}e.retryTimer=null}},s=()=>{if(null!==e.btn&&e.btn.isConnected)try{const t=a.toBottomSlot();if(null===t)return;const r=a.scrollportOf(t);if(null===r||"function"!=typeof r.querySelectorAll)return;let s=!1;for(const e of a.userRows(r))if(a.flowTopOf(r,e)<4){s=!0;break}const i=null!==a.loadOlderButton(r);e.btn.style.display=s||i?"flex":"none",n()}catch(e){}},n=()=>{if(null!==e.btn&&e.btn.isConnected)try{const t=a.toBottomSlot();if(null===t||"function"!=typeof t.querySelector)return;const r=a.toBottomButton(t);let s=0;if(null!==r){const e=t.getBoundingClientRect().right,a=r.getBoundingClientRect().right;s=Math.max(0,Math.round(e-a))}const n=`${s}px`;e.btn.style.right!==n&&(e.btn.style.right=n)}catch(e){}},i=()=>{if(null===e.btn||!e.btn.isConnected)try{const i=a.toBottomSlot();if(null===i||"function"!=typeof i.appendChild||"function"!=typeof i.querySelector)return;const l=a.toBottomButton(i),o=document.createElement("button");o.type="button",o.setAttribute("data-dshsvc-user-jump",""),o.setAttribute("aria-label",C("conversation.jump.previousReply"));let d=0;try{if(null!==l){const e=i.getBoundingClientRect().right,t=l.getBoundingClientRect().right;d=Math.max(0,Math.round(e-t))}}catch(e){}Object.assign(o.style,{position:"absolute",right:`${d}px`,bottom:"42px",zIndex:"1",width:"34px",height:"34px",padding:"0",cursor:"pointer",border:"1px solid var(--dsw-alias-border-l2)",background:"var(--dsw-alias-button-floating-fill)",color:"var(--dsw-alias-label-primary)",boxShadow:"var(--dsw-shadow-lv2)",borderRadius:"100px",display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"auto"}),o.innerHTML=(e=>{try{const t=a.toBottomButton(e),r=null!==t?t.querySelector("svg"):null;if(null!==r&&"string"==typeof r.outerHTML)return r.outerHTML.replace(/<svg/i,'<svg style="transform:rotate(180deg)"')}catch(e){}return'<svg width="14" height="14" viewBox="0 0 14 14" fill="none" aria-hidden="true"><path d="M7 10.5V3.5M3.5 7 7 3.5 10.5 7" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>'})(i),o.addEventListener("click",()=>{const s=a.scrollportOf(i);if(null===s||"function"!=typeof s.querySelectorAll)return;const n=Number(s.scrollTop)||0,l=()=>{e.retryTimer=null;const r=Number(s.scrollTop)||0;if(Math.abs(r-n)>40)try{s.scrollTop=n}catch(e){}const i=a.userRows(s);let o=null;for(let e=i.length-1;e>=0;e-=1)if(a.flowTopOf(s,i[e])<4){o=i[e];break}if(null!==o){const e=Math.max(0,n+a.flowTopOf(s,o)-12);try{s.scrollTop=e}catch(e){}return}if(e.retryLeft<=0)return;e.retryLeft-=1;const d=a.loadOlderButton(s);if(null!==d){if(!0!==d.disabled)try{d.click()}catch(e){}e.retryTimer=t.timer.timeout(l,220)}};r(),e.retryLeft=20,l()}),i.appendChild(o),e.btn=o,(()=>{if("function"==typeof ResizeObserver){if(null!==e.slotRO){try{e.slotRO.disconnect()}catch(e){}e.slotRO=null}try{const t=a.toBottomSlot();if(null===t)return;const r=new ResizeObserver(()=>{n()});r.observe(t),e.slotRO=r}catch(t){e.slotRO=null}}})(),s()}catch(e){}};return{start:()=>{try{if(null===e.styleTag){const t=document.createElement("style");t.dataset.plugin="@gehennawu/dsh-service",t.dataset.pluginCss="@gehennawu/dsh-service/user-jump.css",t.textContent="[data-dshsvc-user-jump]:hover,[data-dshsvc-user-jump]:active{background:var(--dsw-alias-button-floating-hover)!important}",document.head.appendChild(t),e.styleTag=t}}catch(e){}if(i(),null===e.observer){try{e.observer=new MutationObserver(()=>{i(),s()}),e.observer.observe(document.documentElement,{childList:!0,subtree:!0})}catch(t){e.observer=null}if(null===e.scrollHandler)try{e.scrollHandler=()=>{if("function"==typeof requestAnimationFrame){if(null!==e.rafId)return;e.rafId=requestAnimationFrame(()=>{e.rafId=null,s()})}else s()},document.documentElement.addEventListener("scroll",e.scrollHandler,!0)}catch(t){e.scrollHandler=null}}},stop:()=>{if(r(),null!==e.slotRO){try{e.slotRO.disconnect()}catch(e){}e.slotRO=null}if(null!==e.scrollHandler){try{document.documentElement.removeEventListener("scroll",e.scrollHandler,!0)}catch(e){}e.scrollHandler=null}if(null!==e.rafId){try{cancelAnimationFrame(e.rafId)}catch(e){}e.rafId=null}if(null!==e.observer){try{e.observer.disconnect()}catch(e){}e.observer=null}if(null!==e.btn){try{e.btn.remove()}catch(e){}e.btn=null}if(null!==e.styleTag){try{e.styleTag.remove()}catch(e){}e.styleTag=null}}}})();t.effect(()=>(Ea.start(),()=>Ea.stop()),"dsh-service user reply jump");const Sa=function(){const e={active:!1,mq:null,mqHandler:null,frameObserver:null,mountObserver:null,workspaceObserver:null,errorHandler:null,resizeHandler:null,styleTag:null,backdrop:null,fab:null,debugChip:null,debugEnabled:!1,errorCount:0,drawerOpen:!1,detailsOpen:!1,workspaceOpen:!1,lastFabDisplay:null,lastBackdropDisplay:null,immersive:!1,handle:null,lastHandleDisplay:null,chatAvailable:!1,chatScrollLastY:null,gestureAt:0,immersiveAcc:0,immersiveLockDir:null,zoneArmed:null,arrivalDone:!1,headerEl:null,headerRO:null},a=()=>{try{return"function"==typeof t.get?t.get("layout"):void 0}catch(e){return}},r=()=>{if(e.detailsOpen){const t=a();if(void 0!==t)try{t.closeDetails()}catch(e){}e.detailsOpen=!1}const t=e.drawerOpen||e.workspaceOpen?"none":"flex";null!==e.fab&&e.lastFabDisplay!==t&&(e.lastFabDisplay=t,e.fab.style.display=t);const r=e.drawerOpen?"block":"none";null!==e.backdrop&&e.lastBackdropDisplay!==r&&(e.lastBackdropDisplay=r,e.backdrop.style.display=r),h(),e.debugEnabled&&null!==e.debugChip&&f()};let s=!1;const n=()=>{const t=document.querySelector("[data-dshsvc-frame]");e.drawerOpen=null!==t&&!t.hasAttribute("data-sidebar-collapsed"),e.detailsOpen=null!==t&&!t.hasAttribute("data-details-collapsed"),e.workspaceOpen=!1;try{for(const t of document.querySelectorAll('[class*="nArs4W_panel"]')){const a="string"==typeof t.className?t.className:"";if(/nArs4W_panelHidden/.test(a))continue;const r=t.getBoundingClientRect();if(r.width>0&&r.left<window.innerWidth-2&&"hidden"!==getComputedStyle(t).visibility){e.workspaceOpen=!0;break}}}catch(t){e.workspaceOpen=!1}u()},i=e=>{const t=document.documentElement.style;(e=>"function"==typeof e.setProperty)(t)&&t.setProperty("--dshsvc-header-h",`${Math.max(0,Math.round(e))}px`)},l=(e,t)=>{if(t<=0||null===e||void 0===e.children||null===e.children)return null;for(const a of e.children||[]){if("HEADER"===("string"==typeof a.tagName?a.tagName.toUpperCase():""))return a;const e=l(a,t-1);if(null!==e)return e}return null},o=(e,t)=>{let a=t;for(;null!=a;){if(a===e)return!0;a=a.parentNode}return!1},d=t=>{if(e.active&&e.chatAvailable||(t=!1),e.immersive===t)return;e.immersive=t;const a=document.documentElement;try{t?a.setAttribute("data-dshsvc-immersive",""):a.removeAttribute("data-dshsvc-immersive")}catch(e){}g(),e.debugEnabled&&f()},c=()=>{e.chatScrollLastY=null,e.immersiveAcc=0,e.immersiveLockDir=null,e.zoneArmed=null,e.arrivalDone=!1,d(!1)},u=()=>{const t=(()=>{let e=null;try{e=document.querySelector("[data-conversation-scroll]")}catch(e){return null}if(null===e||!1===e.isConnected)return null;let t=e.parentNode;if(null===t||t===document.documentElement)return null;let a=null;try{a=t.getAttribute("data-phase")}catch(e){}let r=t;for(let e=0;null===a&&e<2&&(r=null==r?null:r.parentNode,null!==r&&r!==document.documentElement);e+=1){try{a=r.getAttribute("data-phase")}catch(e){break}null!==a&&(t=r)}return{scroller:e,rootEl:t,phase:a}})();let a=!1;if(null!==t&&"active"===t.phase){(t=>{const a=null!==t?t.rootEl:null;if(null===a||void 0===a.children)return e.headerEl;if(null!==e.headerEl&&e.headerEl.isConnected){try{e.headerEl.setAttribute("data-dshsvc-chat-header","")}catch(e){}return e.headerEl}let r=null;for(const e of a.children||[])if("HEADER"===("string"==typeof e.tagName?e.tagName.toUpperCase():"")){r=e;break}if(null===r)for(const e of a.children||[]){const t=l(e,3);if(null!==t){r=t;break}}null!==r&&(r.setAttribute("data-dshsvc-chat-header",""),e.headerEl=r,(t=>{if("function"==typeof ResizeObserver&&(null===e.headerRO||e.headerRO.__el!==t)){if(null!==e.headerRO)try{e.headerRO.disconnect()}catch(e){}try{const a=new ResizeObserver(()=>{try{const e=t.offsetHeight;"number"==typeof e&&e>0&&i(e)}catch(e){}});a.__el=t,a.observe(t),e.headerRO=a;const r=t.offsetHeight;"number"==typeof r&&r>0&&i(r)}catch(t){e.headerRO=null}}})(r))})(t);const r=(()=>{try{return document.querySelector("[data-composer-seat]")}catch(e){return null}})();if(null!==r&&o(t.scroller,r)){let e=NaN,r=NaN,s=NaN;try{e=Number(t.scroller.scrollTop),r=Number(t.scroller.scrollHeight),s=Number(t.scroller.clientHeight)}catch(e){}a=Number.isFinite(e)&&Number.isFinite(r)&&Number.isFinite(s)&&r-s>24}}e.chatAvailable=a,a||c()},p=t=>{if(!e.active||!e.chatAvailable)return;let a=NaN,r=NaN,s=NaN;try{a=Number(t.scrollTop),r=Number(t.scrollHeight),s=Number(t.clientHeight)}catch(e){return}if(!Number.isFinite(a)||!Number.isFinite(r)||!Number.isFinite(s))return;h();const n=a-(null===e.chatScrollLastY?a:e.chatScrollLastY);if(e.chatScrollLastY=a,!(()=>{const t=Date.now();return e.gestureAt>0&&t-e.gestureAt<=800})()||Math.abs(n)>200)return void(e.immersiveAcc=0);const i=a+s>=r-80;if(null===e.zoneArmed&&(e.zoneArmed=i),!1===e.zoneArmed&&i&&!e.arrivalDone&&e.immersive&&n>0)return e.arrivalDone=!0,e.immersiveAcc=0,e.immersiveLockDir=1,void d(!1);const l=Math.sign(n);if(0!==l&&null!==e.immersiveLockDir){if(l!==-e.immersiveLockDir)return void(e.immersiveAcc=0);e.immersiveLockDir=null}(e.immersiveAcc>0&&n<0||e.immersiveAcc<0&&n>0)&&(e.immersiveAcc=0),e.immersiveAcc+=n,e.immersiveAcc>240?e.immersiveAcc=240:e.immersiveAcc<-240&&(e.immersiveAcc=-240),e.immersiveAcc>=64?(e.immersiveAcc=0,e.immersiveLockDir=1,d(!0)):e.immersiveAcc<=-24&&(e.immersiveAcc=0,e.immersiveLockDir=-1,d(!1))},m=()=>{e.gestureAt=Date.now(),e.immersiveLockDir=null,e.zoneArmed=null,e.arrivalDone=!1},g=()=>{const t=e.handle;if(null===t)return;const a=e.immersive?'<svg width="12" height="12" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M3.5 10.5 8 6l4.5 4.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>':'<svg width="12" height="12" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M3.5 5.5 8 10l4.5-4.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>';t.__face!==a&&(t.__face=a,t.innerHTML=a);const r=e.immersive?"mobile.immersive.show":"mobile.immersive.hide",s=C(r);t.__label!==s&&(t.__label=s,t.setAttribute("aria-label",s),t.title=s);try{t.setAttribute("aria-expanded",String(!e.immersive))}catch(e){}},h=()=>{const t=e.drawerOpen||e.workspaceOpen,a=e.chatAvailable&&!t?"flex":"none";null!==e.handle&&e.lastHandleDisplay!==a&&(e.lastHandleDisplay=a,e.handle.style.display=a)},b=[["scroll",t=>{if(!e.active)return;let a=t&&t.target;for(let e=0;null!=a&&e<6;e+=1){if("function"==typeof a.hasAttribute)try{if(a.hasAttribute("data-conversation-scroll"))return void p(a)}catch(e){}a=a.parentNode}},{capture:!0,passive:!0}],["touchstart",m,{capture:!0,passive:!0}],["touchmove",m,{capture:!0,passive:!0}],["wheel",m,{capture:!0,passive:!0}],["focusin",t=>{if(!e.active||null===e.handle)return;let a=null;try{a=document.querySelector("[data-composer-seat]")}catch(e){return}null!==a&&o(a,t?.target)&&(e.immersiveAcc=0,e.immersive&&d(!1))},{capture:!0}]];let v=!1;const f=()=>{const t=e.debugChip;if(null===t)return;const a=e=>C(e?"mobile.debug.stateOn":"mobile.debug.stateOff");t.textContent=[`${C("mobile.debug.viewport")} ${window.innerWidth}×${window.innerHeight}`,`≤1023 ${a(e.active)}`,`${C("mobile.debug.drawer")} ${a(e.drawerOpen)}`,`${C("mobile.debug.details")} ${a(e.detailsOpen)}`,`${C("mobile.debug.immersive")} ${a(e.immersive)}`,`${C("mobile.debug.errors")} ${e.errorCount}`].join(" · ")},y=()=>{if(null!==e.fab)return!0;if(!(()=>{const e=document.querySelector("[data-shell-overlay]"),t=null!==e?e.parentNode:null;if(null===t||t===document.documentElement)return!1;t.setAttribute("data-dshsvc-frame","");let a=!1,r=!1,s=!1;for(const e of t.children){const t="string"==typeof e.className?e.className:"";!a&&/sidebarCol/.test(t)?(e.setAttribute("data-dshsvc-sidebar",""),a=!0):!r&&/centerCol/.test(t)?(e.setAttribute("data-dshsvc-center",""),r=!0):!s&&/detailsCol/.test(t)&&(e.setAttribute("data-dshsvc-details",""),s=!0)}return!0})())return!1;e.backdrop=document.createElement("div"),e.backdrop.setAttribute("data-dshsvc-backdrop",""),e.backdrop.setAttribute("aria-hidden","true"),Object.assign(e.backdrop.style,{position:"fixed",inset:"0",zIndex:"31",display:"none",background:"rgba(0,0,0,.42)",backdropFilter:"blur(1px)"}),e.backdrop.addEventListener("click",()=>{const t=a();void 0!==t&&e.drawerOpen&&t.toggleSidebar()}),document.body.appendChild(e.backdrop),e.fab=document.createElement("button"),e.fab.type="button",e.fab.setAttribute("data-dshsvc-fab",""),e.fab.setAttribute("aria-label",C("mobile.fab.label")),Object.assign(e.fab.style,{position:"fixed",left:"calc(env(safe-area-inset-left, 0px) + 10px)",top:"calc(env(safe-area-inset-top, 0px) + 12px)",width:"32px",height:"32px",borderRadius:"16px",zIndex:"33",display:"flex",alignItems:"center",justifyContent:"center",border:"none",background:"transparent",color:"var(--dsw-alias-label-primary)",padding:"0",cursor:"pointer",touchAction:"manipulation"}),e.fab.innerHTML='<svg width="18" height="18" viewBox="0 0 16 16" fill="none" aria-hidden="true"><rect x="1.75" y="2.75" width="12.5" height="10.5" rx="2" stroke="currentColor" stroke-width="1.5"/><line x1="6.25" y1="3.5" x2="6.25" y2="12.5" stroke="currentColor" stroke-width="1.5"/></svg>',e.fab.addEventListener("click",()=>{const e=a();void 0!==e&&e.toggleSidebar()}),document.body.appendChild(e.fab),(()=>{if(null!==e.handle)return;const t=document.createElement("button");t.type="button",t.setAttribute("data-dshsvc-handle",""),Object.assign(t.style,{position:"fixed",left:"50%",marginLeft:"-32px",bottom:"calc(env(safe-area-inset-bottom, 0px) + 8px)",width:"64px",height:"20px",borderRadius:"11px",zIndex:"30",display:"none",alignItems:"center",justifyContent:"center",background:"var(--dshsvc-handle-bg, rgba(127, 127, 127, .16))",border:"1px solid var(--dsw-alias-border-l2)",boxShadow:"var(--dsw-shadow-lv1, 0 1px 4px rgba(0, 0, 0, .18))",backdropFilter:"blur(6px)",WebkitBackdropFilter:"blur(6px)",opacity:".72",transition:"opacity var(--ds-transition-duration-fast, .15s) ease",color:"var(--dsw-alias-label-secondary)",padding:"0",cursor:"pointer",touchAction:"manipulation"}),t.addEventListener("click",()=>{e.active&&e.chatAvailable&&(m(),e.chatScrollLastY=null,e.immersiveAcc=0,d(!e.immersive))}),document.body.appendChild(t),e.handle=t,e.lastHandleDisplay=null,g()})(),n();try{e.workspaceObserver=new MutationObserver(()=>{(()=>{if(!s&&e.active){s=!0,setTimeout(()=>{if(s=!1,e.active)try{n(),r()}catch(e){}},50);for(const t of[400,900])setTimeout(()=>{if(e.active)try{n(),r()}catch(e){}},t)}})()}),e.workspaceObserver.observe(document.body,{attributes:!0,childList:!0,subtree:!0})}catch(t){e.workspaceObserver=null}e.frameObserver=new MutationObserver(()=>{n(),r()});const t=document.querySelector("[data-dshsvc-frame]");return null!==t&&e.frameObserver.observe(t,{attributes:!0,attributeFilter:["data-sidebar-collapsed","data-details-collapsed"]}),null!==e.mountObserver&&(e.mountObserver.disconnect(),e.mountObserver=null),r(),!0},k=()=>{if(!e.active)return;if(e.active=!1,e.drawerOpen=!1,e.detailsOpen=!1,(()=>{if(v){v=!1;for(const[e,t,a]of b)try{document.documentElement.removeEventListener(e,t,a)}catch(e){}}})(),document.documentElement.removeAttribute("data-dshsvc-mobile"),document.documentElement.removeAttribute("data-dshsvc-immersive"),null!==e.headerRO){try{e.headerRO.disconnect()}catch(e){}e.headerRO=null}e.headerEl=null,null!==e.frameObserver&&(e.frameObserver.disconnect(),e.frameObserver=null),null!==e.workspaceObserver&&(e.workspaceObserver.disconnect(),e.workspaceObserver=null),null!==e.mountObserver&&(e.mountObserver.disconnect(),e.mountObserver=null),null!==e.errorHandler&&window.removeEventListener("error",e.errorHandler),null!==e.resizeHandler&&window.removeEventListener("resize",e.resizeHandler),e.errorHandler=null,e.resizeHandler=null;for(const t of[e.styleTag,e.backdrop,e.fab,e.handle,e.debugChip])null!==t&&t.isConnected&&t.remove();for(const e of document.querySelectorAll("[data-dshsvc-frame],[data-dshsvc-sidebar],[data-dshsvc-center],[data-dshsvc-details],[data-dshsvc-chat-header]"))e.removeAttribute("data-dshsvc-frame"),e.removeAttribute("data-dshsvc-sidebar"),e.removeAttribute("data-dshsvc-center"),e.removeAttribute("data-dshsvc-details"),e.removeAttribute("data-dshsvc-chat-header");const t=(()=>{try{return document.documentElement.style}catch(e){return null}})();if(null!==t)try{t.removeProperty("--dshsvc-header-h")}catch(e){t["--dshsvc-header-h"]=""}e.styleTag=null,e.backdrop=null,e.fab=null,e.handle=null,e.lastHandleDisplay=null,e.debugChip=null,e.debugEnabled=!1,c()},x=()=>{M("mobileAdaptation")&&e.mmqMatches()?(()=>{if(e.active)return;if(void 0===a())return;e.active=!0,document.documentElement.setAttribute("data-dshsvc-mobile",""),(()=>{for(const e of document.querySelectorAll('meta[name="viewport"]')){const t=e.getAttribute("content")||"";/(^|,)\s*viewport-fit\s*=/.test(t)||e.setAttribute("content",""===t.trim()?"viewport-fit=cover":t.trim()+", viewport-fit=cover")}})(),e.styleTag=document.createElement("style"),e.styleTag.dataset.plugin="@gehennawu/dsh-service",e.styleTag.dataset.pluginCss="@gehennawu/dsh-service/mobile.css",e.styleTag.textContent='\n/* 侧栏/详情列改 absolute 后会退出 grid 排版流,中列会被自动放置进第 1 轨\n (0px)而整屏变黑 —— 三列必须用 grid-column 显式钉位,绝不依赖子元素顺序。 */\nhtml[data-dshsvc-mobile] [data-dshsvc-frame] { grid-template-columns: 0px minmax(0, 1fr) 0px !important; }\nhtml[data-dshsvc-mobile] [data-dshsvc-sidebar] { grid-column: 1 !important; grid-row: 1 !important; }\nhtml[data-dshsvc-mobile] [data-dshsvc-center] { grid-column: 2 !important; grid-row: 1 !important; }\nhtml[data-dshsvc-mobile] [data-dshsvc-details] { grid-column: 3 !important; grid-row: 1 !important; }\n/* 侧栏/详情列 → overlay 抽屉。两条铁律:\n ① 隐藏禁用 transform —— 设置模态(未 portal)长在本列子树里,\n transform 会成为其 fixed 定位的包含块;\n ② 离屏偏移必须用 vw 长度而非百分比 —— 这些列带显式 grid-column 钉位\n (修中列黑屏所需),绝对定位子项的包含块会变成那格 grid area(0px 宽),\n 百分比对 0 取值全变 0,元素被超约束解算推回屏内盖住会话。 */\nhtml[data-dshsvc-mobile] [data-dshsvc-sidebar] {\n position: absolute !important;\n top: 0 !important;\n bottom: 0 !important;\n left: calc(-100vw - 24px) !important;\n /* 外壳 sidebar slot 的原生展开内容固定 280px;外层也必须同宽,否则右侧\n 会露出一条只有 sidebarCol 背景、没有内容的空带。窄于 280px 时按视口裁切。 */\n width: min(100vw, 280px) !important;\n border-right: none !important;\n z-index: 32;\n transition: left var(--ds-transition-duration-slow, .25s) var(--ds-ease-in-out, ease);\n}\nhtml[data-dshsvc-mobile] [data-dshsvc-frame]:not([data-sidebar-collapsed]) [data-dshsvc-sidebar] {\n left: 0 !important;\n box-shadow: 8px 0 32px rgba(0, 0, 0, .22);\n}\n/* 详情列(预览/文件树)→ 移动端永久离屏。官方 computeColumns 在窄视口恒为\n 0 宽(原生手机本就不显示该列),抽屉化只会用空态盖住会话且关闭路径\n 与 backdrop/抽屉状态纠缠(真机反馈)。引擎在激活与属性观察时会自愈式\n closeDetails(),保证 store 也是干净的关闭态。 */\nhtml[data-dshsvc-mobile] [data-dshsvc-details] {\n position: absolute !important;\n top: 0 !important;\n bottom: 0 !important;\n right: calc(-100vw - 24px) !important;\n width: min(92vw, 420px) !important;\n z-index: 30;\n}\n/* 模态 → 全屏面板:外壳 portal 根是 fixed inset:0 flex 容器(无 transform,\n 无 containing-block 陷阱),dialog 改 absolute 四边拉满即可。\n 真机反馈:底部 sheet 顶部留空难看 → 顶部贴顶、圆角归零;\n 刘海/home 条遮挡由 dialog 自身 env() padding 补回。 */\nhtml[data-dshsvc-mobile] div[role="presentation"]:has(> [role="dialog"][aria-modal="true"]) {\n padding: 0 !important;\n}\nhtml[data-dshsvc-mobile] [role="dialog"][aria-modal="true"] {\n position: absolute !important;\n top: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n left: 0 !important;\n margin: 0 !important;\n width: 100% !important;\n max-width: none !important;\n max-height: none !important;\n height: 100% !important;\n border-radius: 0 !important;\n overflow: hidden auto !important;\n flex-direction: column !important;\n padding-top: env(safe-area-inset-top, 0px) !important;\n padding-bottom: env(safe-area-inset-bottom, 0px) !important;\n}\n/* 插件市场(dshmarket)在 ≤560px 媒体查询里把设置导航 display:none 藏掉\n 独占面板(其自有 CSS:[role=dialog]:has([data-dsh-market-root])>nav),\n 手机上会把用户困在市场分区 —— 用更高优先级把横滑标签条顶回来。 */\nhtml[data-dshsvc-mobile] [role="dialog"]:has([data-dsh-market-root]) > nav { display: flex !important; }\n/* 设置页标签条:nav 从 188px 竖列变顶部横滑条(宽度与列向必须显式推翻)。\n 右侧留 52px 给钉到角落的关闭钮。 */\nhtml[data-dshsvc-mobile] [role="dialog"] nav {\n flex-direction: row !important;\n align-items: center !important;\n gap: 6px !important;\n width: auto !important;\n flex: none !important;\n padding: 8px 52px 0 12px !important;\n overflow-x: auto !important;\n overflow-y: hidden !important;\n border-right: none !important;\n border-bottom: 1px solid var(--dsw-alias-border-l2);\n}\nhtml[data-dshsvc-mobile] [role="dialog"] nav > div { flex: none !important; }\nhtml[data-dshsvc-mobile] [role="dialog"] [class*="navList"] { flex-direction: row !important; }\nhtml[data-dshsvc-mobile] [role="dialog"] [class*="navCell"] { white-space: nowrap !important; flex: none !important; }\n/* 关闭钮钉到设置页右上角并压到面板顶层(原生在内容区头行、导航条下方,\n 会被横滑条/内容重叠遮挡——用户点名要顶层);加不透明圆形底衬保证任何\n 内容上都可辨识,底衬与钮同节点、随之置顶。类哈希 VOzbGW_ 取自\n dsh-client-ui-settings-general SettingsRoot.module.css(rc.2),升级需复核 */\nhtml[data-dshsvc-mobile] [role="dialog"][aria-modal="true"] [class*="VOzbGW_close"] {\n position: absolute !important;\n top: calc(env(safe-area-inset-top, 0px) + 9px) !important;\n right: 10px !important;\n z-index: 60;\n background-color: var(--dsw-specific-menu, var(--dsw-alias-bg-layer-1)) !important;\n border: 1px solid var(--dsw-alias-border-l2) !important;\n border-radius: 999px !important;\n box-shadow: var(--dsw-shadow-lv2, 0 4px 12px rgba(0, 0, 0, .12)) !important;\n}\n/* 设置/任意模态打开时藏抽屉钮与沉浸把手:抽屉列自带 z-index:32 层叠上下文会把模态的\n z1000 封顶在 32,body 级 z33 的钮反而浮在设置页上(真机实测)。:has 不支持时\n 退化为旧行为(钮仍显示),无副作用。 */\nhtml[data-dshsvc-mobile] body:has([role="dialog"][aria-modal="true"]) [data-dshsvc-fab],\nhtml[data-dshsvc-mobile] body:has([role="dialog"][aria-modal="true"]) [data-dshsvc-handle] {\n display: none !important;\n}\n/* composer 底行单行紧凑:外壳原生 flex-wrap:wrap 在窄屏把图标/模型名折成两行。\n 收紧间距 + 禁换行 + 最宽触发钮限宽省略。类哈希 uV2eYG_/Sh0Q9G_/pXSMma_ 取自\n dsh-client-ui-conversation composer(rc.2),升级需复核。 */\nhtml[data-dshsvc-mobile] [class*="uV2eYG_row"] {\n flex-wrap: nowrap !important;\n column-gap: 4px !important;\n padding-left: 10px !important;\n padding-right: 10px !important;\n}\nhtml[data-dshsvc-mobile] [class*="uV2eYG_row"] > * { min-width: 0 !important; }\nhtml[data-dshsvc-mobile] [class*="uV2eYG_tools"],\nhtml[data-dshsvc-mobile] [class*="uV2eYG_modes"],\nhtml[data-dshsvc-mobile] [class*="uV2eYG_trailing"] { gap: 6px !important; min-width: 0 !important; }\nhtml[data-dshsvc-mobile] [class*="uV2eYG_trailing"] { margin-left: auto !important; }\nhtml[data-dshsvc-mobile] [class*="Sh0Q9G_trigger"] { max-width: 38vw !important; }\nhtml[data-dshsvc-mobile] [class*="pXSMma_workspace"] { max-width: 30vw !important; }\n/* 工作区侧板(fixed z25 层内的 nArs4W_panel z40)开屏后会盖住它自己的外部\n 开关钮(tab bar 行 nArs4W_toggleButton)——手机上抽屉一开就再没有任何\n 可点的关闭入口(真机反馈「关不上」本体)。把开关钮提到面板之上,\n 恢复「同一颗钮开/关」语义。 */\nhtml[data-dshsvc-mobile] [class*="nArs4W_toggleButton"] {\n position: relative !important;\n z-index: 45 !important;\n}\n/* 会话底部统计条:外壳原生 white-space:nowrap + ellipsis 截断(StatsLine),\n 改横向滑动查看全文。哈希前缀随包拆分漂移:0.1.1-rc.2 在 dsh-client-ui-conversation\n (FJxK0a_),0.1.2-alpha.2 迁入 dsh-client-ui-chat(-NDN2W_root,前缀带横线);按\n 稳定的词干后缀 *_root 无法区分行(同名冲突风险),退化为按当前哈希复核。 */\nhtml[data-dshsvc-mobile] [class*="NDN2W_root"] {\n overflow-x: auto !important;\n overflow-y: hidden !important;\n text-overflow: clip !important;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none !important;\n}\nhtml[data-dshsvc-mobile] [class*="NDN2W_root"]::-webkit-scrollbar { display: none !important; }\n/* Assistant 回合尾部的运行元信息行(MessageIconActions)使用官方目录属性\n data-chat-flow-kind="turn-tail" 定位,内层兜底走回合尾节点自带的稳定\n data-turn-tail(0.1.2-alpha.2 起 data-time-hover-root 已删除):\n 「带 data-turn-tail 的节点」的最后一个子项 = actions 行,其最后一个 span =\n end-clock 时间文本(bundle 源码核实:clock:"end" 渲染在 children 末位)。\n 行容器 min-width:0、时间文本可收缩并省略,以免移动端时间信息把复制/分支\n 按钮挤出可视区域。 */\nhtml[data-dshsvc-mobile] [data-chat-flow-kind="turn-tail"] [data-turn-tail] > :last-child {\n min-width: 0 !important;\n max-width: 100% !important;\n}\nhtml[data-dshsvc-mobile] [data-chat-flow-kind="turn-tail"] [data-turn-tail] > :last-child > span:last-child {\n flex: 1 1 auto !important;\n min-width: 0 !important;\n white-space: nowrap !important;\n overflow: hidden !important;\n text-overflow: ellipsis !important;\n padding-inline: 2px !important;\n}\n/* 回到底部按钮簇(官方 *_toBottom 词干后缀,rc.2 Md3f7G_ → 0.1.2-alpha.2 EvIC1a_,\n 自有上箭头 data-dshsvc-user-jump):\n 移动端右侧还有约一行留白(scroll 的 --dsh-composer-side-clearance 侧清理),\n 纯位移右移贴边(transform 只动绘制不动布局,sticky 定位不受影响)。\n :not([class*="Slot"]) 排除命名含 Slot 的 sticky 槽层,只移按钮本体。\n 方向:正 translateX 向右;位移量 = 侧清理 +16(scroll 右 padding)再留 4px 缓冲。 */\nhtml[data-dshsvc-mobile] [class*="_toBottom"]:not([class*="Slot"]),\nhtml[data-dshsvc-mobile] [data-dshsvc-user-jump] {\n transform: translateX(calc(var(--dsh-composer-side-clearance, 16px) + 16px - 4px)) !important;\n}\n/* 左上角抽屉钮:悬停/按压用外壳交互底色;会话头部预留按钮位防遮面包屑 */\nhtml[data-dshsvc-mobile] [data-dshsvc-fab]:hover,\nhtml[data-dshsvc-mobile] [data-dshsvc-fab]:active { background: var(--dsw-alias-interactive-bg-hover) !important; }\nhtml[data-dshsvc-mobile] [data-dshsvc-frame] > :nth-child(2) header { padding-left: 46px !important; }\n/* 刘海安全区:viewport-fit=cover 后由 env() 补回遮挡区 */\nhtml[data-dshsvc-mobile] body {\n padding-top: env(safe-area-inset-top, 0px);\n padding-bottom: env(safe-area-inset-bottom, 0px);\n box-sizing: border-box;\n}\n/* 双击缩放与 iOS 聚焦放大 */\nhtml[data-dshsvc-mobile] button,\nhtml[data-dshsvc-mobile] a,\nhtml[data-dshsvc-mobile] [role="button"],\nhtml[data-dshsvc-mobile] input,\nhtml[data-dshsvc-mobile] textarea,\nhtml[data-dshsvc-mobile] select { touch-action: manipulation; }\nhtml[data-dshsvc-mobile] input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]),\nhtml[data-dshsvc-mobile] textarea { font-size: max(16px, 1em) !important; }\n/* composer 防挤压:保守规则,真机反馈后迭代 */\nhtml[data-dshsvc-mobile] [class*="toolbar" i] { flex-wrap: wrap !important; min-width: 0 !important; max-width: 100% !important; }\nhtml[data-dshsvc-mobile] [class*="composer" i] { min-width: 0 !important; max-width: 100% !important; }\nhtml[data-dshsvc-mobile] [class*="inputTriggers" i] > *,\nhtml[data-dshsvc-mobile] [class*="toolbar" i] button { flex: none !important; }\n/* —— 滑动沉浸(v0.36)——\n composer 座是滚动体内的 sticky 子项:transform 滑出后由滚动体自身 overflow:hidden\n 裁掉,布局零变化、scrollTop 不跳、外壳 ResizeObserver 维护的 --dsh-composer-height\n 与「回到底部」浮钮偏移不受任何影响。容器包含块陷阱不触发:composer 工具行本就带\n container-type:inline-size(fixed 后代已被圈在里面,圆环才在移动端 portal 出去)。 */\nhtml[data-dshsvc-mobile] [data-composer-seat] {\n transition: transform var(--ds-transition-duration-slow, .25s) var(--ds-ease-in-out, ease) !important;\n}\nhtml[data-dshsvc-mobile][data-dshsvc-immersive] [data-composer-seat] {\n transform: translateY(115%) !important;\n}\n/* 会话头部(面包屑+视图标签)在滚动体外面,藏在根列里:translateY(-100%) 上滑出\n data-phase=active 根的 overflow:hidden 裁剪区,负 margin-top 用引擎测得的高度\n (--dshsvc-header-h,ResizeObserver 实时校正;老内核无 RO 时回退常量)补位,\n 否则留一条空带。 */\nhtml[data-dshsvc-mobile] [data-dshsvc-chat-header] {\n transition: transform var(--ds-transition-duration-slow, .25s) var(--ds-ease-in-out, ease),\n margin-top var(--ds-transition-duration-slow, .25s) var(--ds-ease-in-out, ease);\n}\nhtml[data-dshsvc-mobile][data-dshsvc-immersive] [data-dshsvc-chat-header] {\n transform: translateY(-100%) !important;\n margin-top: calc(0px - var(--dshsvc-header-h, 76px)) !important;\n}\n@media (prefers-reduced-motion: reduce) {\n html[data-dshsvc-mobile][data-dshsvc-immersive] [data-composer-seat],\n html[data-dshsvc-mobile][data-dshsvc-immersive] [data-dshsvc-chat-header],\n html[data-dshsvc-mobile] [data-dshsvc-chat-header] { transition: none !important; }\n}\n/* 常驻底部小把手:沉浸态点它展开头部与输入框,未沉浸态也可先收起再读。\n 真机反馈改半透明磨砂(悬停/按压复原不透明),触摸目标不打折。\n z-index 30 低于 backdrop 31——抽屉/设置打开时被自然盖住,无需额外互斥。 */\nhtml[data-dshsvc-mobile] [data-dshsvc-handle]:hover,\nhtml[data-dshsvc-mobile] [data-dshsvc-handle]:active {\n background: var(--dsw-alias-interactive-bg-hover, rgba(127, 127, 127, .2)) !important;\n color: var(--dsw-alias-label-primary) !important;\n opacity: 1 !important;\n}\n',document.head.appendChild(e.styleTag),y()||(()=>{if(null===e.mountObserver&&"function"==typeof MutationObserver)try{e.mountObserver=new MutationObserver(()=>{y()}),e.mountObserver.observe(document.documentElement,{childList:!0,subtree:!0})}catch(t){e.mountObserver=null}})(),(()=>{if(!v){v=!0;for(const[e,t,a]of b)try{document.documentElement.addEventListener(e,t,a)}catch(e){}}})(),u();let t=!1;try{t=new URLSearchParams(window.location.search).has("dshsvc-mobile-debug")}catch(e){}t&&(e.debugEnabled=!0,e.errorHandler=()=>{e.errorCount+=1,f()},window.addEventListener("error",e.errorHandler),e.resizeHandler=()=>f(),window.addEventListener("resize",e.resizeHandler),e.debugChip=document.createElement("div"),e.debugChip.setAttribute("data-dshsvc-debug",""),Object.assign(e.debugChip.style,{position:"fixed",left:"8px",bottom:"calc(env(safe-area-inset-bottom, 0px) + 8px)",zIndex:"60",maxWidth:"94vw",padding:"4px 8px",borderRadius:"8px",font:"11px/1.5 var(--ds-font-family-code, monospace)",background:"var(--dsw-alias-bg-layer-2, #333)",color:"var(--dsw-alias-label-primary, #eee)",pointerEvents:"none",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}),e.debugChip.title=C("mobile.debug.title"),document.body.appendChild(e.debugChip),f()),r()})():k()};try{e.mq=window.matchMedia("(max-width: 1023px)")}catch(t){e.mq=null}return e.mmqMatches=()=>{try{return null!==e.mq&&!0===e.mq.matches}catch(e){return!1}},null!==e.mq&&(e.mqHandler=()=>x(),"function"==typeof e.mq.addEventListener?e.mq.addEventListener("change",e.mqHandler):"function"==typeof e.mq.addListener&&e.mq.addListener(e.mqHandler)),{evaluate:x,dispose:()=>{k(),null!==e.mq&&null!==e.mqHandler&&("function"==typeof e.mq.removeEventListener?e.mq.removeEventListener("change",e.mqHandler):"function"==typeof e.mq.removeListener&&e.mq.removeListener("change",e.mqHandler)),e.mqHandler=null}}}();t.effect(()=>{const e=R.subscribe(()=>Sa.evaluate());return Sa.evaluate(),()=>{e(),Sa.dispose()}},"dsh-service mobile adaptation")},a.subagentTurnTail={aggregateSubagentRoutes:f,selectSubagentModelsTurnTail:v,subagentRouteListText:y},t}});