@onescience/onecode-web 1.14.50-202609111047 → 1.14.50-202609111612
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/assets/{3Dmol-oozXMdO8.js → 3Dmol-CXMSHzDq.js} +1 -1
- package/assets/{account-system-DKD9iYLE.js → account-system-fBThSwVu.js} +1 -1
- package/assets/{alert-04-D5BNddSq.js → alert-01-BMiyRUZE.js} +1 -1
- package/assets/{alert-05-OHlA5fX0.js → alert-02-CKd_g3Ny.js} +1 -1
- package/assets/{alert-01-iLtAs75S.js → alert-04-Cd09aZv7.js} +1 -1
- package/assets/{alert-02-DMn01-sY.js → alert-05-B2vITv_N.js} +1 -1
- package/assets/alert-06-DG6wEIAw.js +1 -0
- package/assets/alert-07-WLDHvPqx.js +1 -0
- package/assets/alert-08-KaJmglNl.js +1 -0
- package/assets/alert-10-B6OC0izi.js +1 -0
- package/assets/{bip-bop-03-CHMF_I8R.js → bip-bop-03-BZF_yfR7.js} +1 -1
- package/assets/{bip-bop-04-CR6IBQh5.js → bip-bop-04-sdA3LsKV.js} +1 -1
- package/assets/{bip-bop-06-Czwpqai-.js → bip-bop-06-DRWZMRXj.js} +1 -1
- package/assets/{bip-bop-08-Csu9eiyl.js → bip-bop-08-CORLCKUc.js} +1 -1
- package/assets/bip-bop-09-5SEVpNuX.js +1 -0
- package/assets/{center-BO4sPNR0.js → center-C1vSBqI8.js} +4 -4
- package/assets/{current-project-3uZyhYQO.js → current-project-BS01LChF.js} +1 -1
- package/assets/{dialog-edit-project-CW4KRXv4.js → dialog-edit-project-D7rJz0nW.js} +1 -1
- package/assets/{dialog-fork-DvBRiV7V.js → dialog-fork-D20BG6HY.js} +1 -1
- package/assets/{dialog-project-upload-DpW39zJX.js → dialog-project-upload-CXo0faUP.js} +1 -1
- package/assets/{dialog-select-file-DRbDToF0.js → dialog-select-file-DPtRwBjd.js} +1 -1
- package/assets/{dialog-select-model-9QyCL5qa.js → dialog-select-model-Drx7k1n7.js} +2 -2
- package/assets/{dialog-terminal-unavailable-BNR9MrpX.js → dialog-terminal-unavailable-BupywAXN.js} +2 -2
- package/assets/{docs-fDTpjsAo.js → docs-Cz9HRotc.js} +1 -1
- package/assets/{ghostty-web-CMbck5Ns.js → ghostty-web-D1otktCg.js} +1 -1
- package/assets/home-CmNBeixF.js +1 -0
- package/assets/{index-8N6rOsri.js → index-BekReNoJ.js} +316 -316
- package/assets/{index-J5aZNTBC.css → index-Dmepx8Py.css} +1 -1
- package/assets/{intro-Dg3COWxs.js → intro-DgRB-hoa.js} +1 -1
- package/assets/{nope-02-GxdAny7s.js → nope-02-BYUZ5Yms.js} +1 -1
- package/assets/{nope-05-BFyT2lYm.js → nope-05-CwGll__G.js} +1 -1
- package/assets/{nope-08-BAx5CVAJ.js → nope-08-CHDuZRJ3.js} +1 -1
- package/assets/{nope-11-CLzsNL-A.js → nope-11-DmTnM4bX.js} +1 -1
- package/assets/nope-12-BSXSFZzZ.js +1 -0
- package/assets/{onescience-DrKFtyqG.js → onescience-D_th-7lD.js} +1 -1
- package/assets/{resources-C849bSBF.js → resources-8zKg4hSj.js} +1 -1
- package/assets/{selection-B5YefTBD.js → selection-CloKK1VU.js} +1 -1
- package/assets/shell-BKp97Y1O.js +2 -0
- package/assets/{skills-DLOo_W0X.js → skills-D3zVS9ud.js} +1 -1
- package/assets/{staplebops-03-D6xswWw7.js → staplebops-03-nzJ34dkk.js} +1 -1
- package/assets/{staplebops-04-DFFdjPS9.js → staplebops-04-BijcCHcg.js} +1 -1
- package/assets/{staplebops-06-KIoWnLdU.js → staplebops-06-C5Q4TE6b.js} +1 -1
- package/assets/{staplebops-07-CYqZKgAp.js → staplebops-07-BlZfyEdk.js} +1 -1
- package/assets/{status-popover-body-w_ZH2Wv4.js → status-popover-body-BMU9AfCe.js} +2 -2
- package/assets/{wizard-jcZD-GOf.js → wizard-DpJkxUbL.js} +1 -1
- package/assets/{yup-01-CHMS24Fv.js → yup-01-G_zmVKUR.js} +1 -1
- package/assets/{yup-03-Dp0-V-aS.js → yup-03-CYQG2ZCs.js} +1 -1
- package/assets/{yup-04-B4ArjJDp.js → yup-04-Dhp5C_ey.js} +1 -1
- package/assets/{yup-05-DyQhoF7H.js → yup-05-DWZ2_9AQ.js} +1 -1
- package/assets/{zh-BsleMGSy.js → zh-C2NNWL5w.js} +1 -1
- package/index.html +11 -11
- package/package.json +2 -2
- package/assets/alert-06-COIj_slE.js +0 -1
- package/assets/alert-07-884N9JMK.js +0 -1
- package/assets/alert-08-Ci-IX_0W.js +0 -1
- package/assets/alert-10-BiEsE-ut.js +0 -1
- package/assets/bip-bop-09-MbaoLqxT.js +0 -1
- package/assets/home-BYs0hcVA.js +0 -1
- package/assets/nope-12-DmdDTovG.js +0 -1
- package/assets/shell-D0MY8Emg.js +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e={"command.category.suggested":"建议","command.category.view":"视图","command.category.project":"项目","command.category.provider":"提供商","command.category.server":"服务器","command.category.session":"会话","command.category.theme":"主题","command.category.language":"语言","command.category.file":"文件","command.category.context":"上下文","command.category.terminal":"终端","command.category.model":"模型","command.category.mcp":"MCP","command.category.agent":"智能体","command.category.permissions":"权限","command.category.workspace":"工作区","command.category.settings":"设置","theme.scheme.system":"系统","theme.scheme.light":"浅色","theme.scheme.dark":"深色","command.sidebar.toggle":"切换侧边栏","titlebar.sidebar.label":"会话列表","command.project.open":"打开项目","command.project.createFolder":"新建文件夹","command.project.upload":"上传本地文件到项目","command.provider.connect":"连接提供商","command.server.switch":"切换服务器","command.settings.open":"打开设置","command.session.previous":"上一个会话","command.session.next":"下一个会话","command.session.previous.unseen":"上一个未读会话","command.session.next.unseen":"下一个未读会话","command.session.archive":"归档会话","command.palette":"命令面板","command.theme.cycle":"切换主题","command.theme.set":"使用主题:{{theme}}","command.theme.scheme.cycle":"切换配色方案","command.theme.scheme.set":"使用配色方案:{{scheme}}","command.language.cycle":"切换语言","command.language.set":"使用语言:{{language}}","command.session.new":"新建会话","command.file.open":"打开文件","command.tab.close":"关闭标签页","command.context.addSelection":"将所选内容添加到上下文","command.context.addSelection.description":"添加当前文件中选中的行","command.input.focus":"聚焦输入框","command.terminal.toggle":"切换终端","command.fileTree.toggle":"切换文件树","command.fileTree.sync":"同步文件","command.fileTree.sync.description":"从磁盘刷新文件树和更改列表","command.review.toggle":"切换审查面板","command.terminal.new":"新建终端","command.terminal.new.description":"创建新的终端标签页","terminal.fullscreen.enter":"全屏终端","terminal.fullscreen.exit":"退出全屏","command.steps.toggle":"切换步骤","command.steps.toggle.description":"显示或隐藏当前消息的步骤","command.message.previous":"上一条消息","command.message.previous.description":"跳转到上一条用户消息","command.message.next":"下一条消息","command.message.next.description":"跳转到下一条用户消息","command.model.choose":"选择模型","command.model.choose.description":"选择不同的模型","command.mcp.toggle":"切换 MCPs","command.mcp.toggle.description":"切换 MCPs","command.agent.cycle":"切换智能体","command.agent.cycle.description":"切换到下一个智能体","command.agent.cycle.reverse":"反向切换智能体","command.agent.cycle.reverse.description":"切换到上一个智能体","command.model.variant.cycle":"切换思考强度","command.model.variant.cycle.description":"切换到下一个强度等级","command.prompt.mode.shell":"Shell","command.prompt.mode.normal":"Prompt","command.permissions.autoaccept.enable":"自动接受权限","command.permissions.autoaccept.disable":"停止自动接受权限","command.workspace.toggle":"切换工作区","command.workspace.toggle.description":"在侧边栏启用或禁用多个工作区","command.session.undo":"撤销","command.session.undo.description":"撤销上一条消息","command.session.redo":"重做","command.session.redo.description":"重做上一条撤销的消息","command.session.compact":"精简会话","command.session.compact.description":"总结会话以减少上下文大小","command.session.fork":"从消息分叉","command.session.fork.description":"从之前的消息创建新会话","command.session.share":"分享会话","command.session.share.description":"分享此会话并将链接复制到剪贴板","command.session.unshare":"取消分享会话","command.session.unshare.description":"停止分享此会话","palette.search.placeholder":"搜索文件、命令和会话","palette.empty":"未找到结果","palette.group.commands":"命令","palette.group.files":"文件","dialog.provider.search.placeholder":"搜索提供商","dialog.provider.empty":"未找到提供商","dialog.provider.group.popular":"热门","dialog.provider.group.other":"其他","dialog.provider.tag.recommended":"推荐","dialog.provider.tag.connected":"已连接","dialog.provider.opencode.note":"使用 OpenCode Zen 或 API 密钥连接","dialog.provider.opencode.tagline":"可靠的优化模型","dialog.provider.opencodeGo.tagline":"适合所有人的低成本订阅","dialog.provider.anthropic.note":"使用 Claude Pro/Max 或 API 密钥连接","dialog.provider.copilot.note":"使用 Copilot 或 API 密钥连接","dialog.provider.openai.note":"远程/网页请用 headless 或 API 密钥;browser 登录仅限本机 OneCode","dialog.provider.google.note":"使用 Google 账号或 API 密钥连接","dialog.provider.openrouter.note":"使用 OpenRouter 账号或 API 密钥连接","dialog.provider.vercel.note":"使用 Vercel 账号或 API 密钥连接","dialog.model.select.title":"选择模型","dialog.model.search.placeholder":"搜索模型","dialog.model.empty":"未找到模型","dialog.model.manage":"管理模型","dialog.model.manage.description":"自定义模型选择器中显示的模型。","dialog.model.manage.provider.toggle":"切换所有 {{provider}} 模型","dialog.model.unpaid.freeModels.title":"OpenCode 提供的免费模型","dialog.model.unpaid.addMore.title":"从热门提供商添加更多模型","dialog.provider.viewAll":"查看更多提供商","provider.connect.title":"连接 {{provider}}","provider.connect.title.anthropicProMax":"使用 Claude Pro/Max 登录","provider.connect.selectMethod":"选择 {{provider}} 的登录方式。","provider.connect.method.apiKey":"API 密钥","provider.connect.status.inProgress":"正在授权...","provider.connect.status.connecting":"正在连接...","provider.connect.status.waiting":"等待授权...","provider.connect.status.failed":"授权失败:{{error}}","provider.connect.apiKey.description":"输入你的 {{provider}} API 密钥以连接帐户,并在 OpenCode 中使用 {{provider}} 模型。","provider.connect.apiKey.label":"{{provider}} API 密钥","provider.connect.apiKey.placeholder":"API 密钥","provider.connect.apiKey.required":"API 密钥为必填项","provider.connect.opencodeZen.line1":"OpenCode Zen 为你提供一组精选的可靠优化模型,用于代码智能体。","provider.connect.opencodeZen.line2":"只需一个 API 密钥,你就能使用 Claude、GPT、Gemini、GLM 等模型。","provider.connect.opencodeZen.visit.prefix":"访问 ","provider.connect.opencodeZen.visit.link":"opencode.ai/zen","provider.connect.opencodeZen.visit.suffix":" 获取你的 API 密钥。","provider.connect.oauth.code.visit.prefix":"访问 ","provider.connect.oauth.code.visit.link":"此链接","provider.connect.oauth.code.visit.suffix":" 获取授权码,以连接你的帐户并在 OpenCode 中使用 {{provider}} 模型。","provider.connect.oauth.code.label":"{{method}} 授权码","provider.connect.oauth.code.placeholder":"授权码","provider.connect.oauth.code.required":"授权码为必填项","provider.connect.oauth.code.invalid":"授权码无效","provider.connect.oauth.auto.visit.prefix":"访问 ","provider.connect.oauth.auto.visit.link":"此链接","provider.connect.oauth.auto.visit.suffix":" 并输入以下代码,以连接你的帐户并在 OpenCode 中使用 {{provider}} 模型。","provider.connect.oauth.auto.confirmationCode":"确认码","provider.connect.toast.connected.title":"{{provider}} 已连接","provider.connect.toast.connected.description":"现在可以使用 {{provider}} 模型了。","provider.custom.title":"自定义提供商","provider.custom.description.prefix":"配置与 OpenAI 兼容的提供商。请查看","provider.custom.description.link":"提供商配置文档","provider.custom.description.suffix":"。","provider.custom.field.providerID.label":"提供商 ID","provider.custom.field.providerID.placeholder":"myprovider","provider.custom.field.providerID.description":"使用小写字母、数字、连字符或下划线","provider.custom.field.providerID.hint":"本条配置的内部标识。同一中转站配置多个模型时请使用不同标识以便区分,通常可保留自动生成的值。","provider.custom.field.name.label":"名称","provider.custom.field.name.placeholder":"我的 AI 提供商","provider.custom.field.name.hint":"列表里显示的名称。默认取基础 URL 的域名;内部标识会按地址自动生成。","provider.custom.field.providerID.readonly":"内部标识:{{id}}(编辑时不可更改)","provider.custom.field.baseURL.label":"基础 URL","provider.custom.field.baseURL.placeholder":"https://api.myprovider.com/v1","provider.custom.field.baseURL.hint":"中转站 / OpenAI 兼容地址,一般以 /v1 结尾。","provider.custom.field.apiKey.label":"API 密钥","provider.custom.field.apiKey.placeholder":"API 密钥","provider.custom.field.apiKey.description":"可选。如果你通过请求头管理认证,可留空。","provider.custom.field.apiKey.hint":"中转站提供的密钥。多数情况下需要填写。","provider.custom.field.apiKey.keepPlaceholder":"留空则保持原密钥","provider.custom.field.apiKey.keepDescription":"可选。留空将保留已配置的 API 密钥。","provider.custom.field.apiKey.configuredHint":"已配置 API 密钥,留空将保持不变。重新填写会覆盖原密钥。","provider.custom.simple.hint":"填写中转站地址和 API 密钥,查询并勾选可用模型即可。名称可按需修改,默认取自地址域名。","provider.custom.advanced.show":"显示高级选项","provider.custom.advanced.hide":"隐藏高级选项","provider.custom.advanced.hint":"提供商 ID、显示名称与请求头为可选项;默认分别使用自动标识 / 域名 / 模型 ID。","provider.custom.models.label":"模型","provider.custom.models.id.label":"模型 ID","provider.custom.models.id.placeholder":"gpt-5.6-luna","provider.custom.models.id.hint":"可手动填写,或点击下方按钮从中转站 /v1/models 查询后勾选。","provider.custom.models.query":"查询当前中转站的可用模型","provider.custom.models.query.loading":"正在查询…","provider.custom.models.query.empty":"中转站未返回可用模型,请手动填写模型 ID。","provider.custom.models.query.needURL":"请先填写基础 URL。","provider.custom.models.query.needKey":"请先填写 API 密钥后再查询。","provider.custom.models.query.picked":"已选择 {{count}} 个模型","provider.custom.models.name.label":"显示名称","provider.custom.models.name.placeholder":"显示名称","provider.custom.models.name.section":"模型显示名称(可选)","provider.custom.models.name.hint":"出现在模型下拉里。留空则直接使用模型 ID。","provider.custom.models.remove":"移除模型","provider.custom.models.add":"添加模型","provider.custom.headers.label":"请求头(可选)","provider.custom.headers.hint":"多数中转站无需填写。仅在服务商要求额外 Header 时添加。","provider.custom.headers.key.label":"请求头","provider.custom.headers.key.placeholder":"Header-Name","provider.custom.headers.value.label":"值","provider.custom.headers.value.placeholder":"value","provider.custom.headers.remove":"移除请求头","provider.custom.headers.add":"添加请求头","provider.custom.error.providerID.required":"提供商 ID 为必填项","provider.custom.error.providerID.format":"请使用小写字母、数字、连字符或下划线","provider.custom.error.providerID.exists":"该提供商 ID 已存在","provider.custom.error.name.required":"显示名称为必填项","provider.custom.error.baseURL.required":"基础 URL 为必填项","provider.custom.error.baseURL.format":"必须以 http:// 或 https:// 开头","provider.custom.error.required":"必填","provider.custom.error.duplicate":"重复","provider.custom.error.probe.auth":"API 密钥认证失败,未保存完整密钥。","provider.custom.error.probe.network":"无法连接基础 URL,请检查地址与网络。","provider.custom.error.probe.timeout":"连接超时,请检查基础 URL 与网络。","provider.custom.error.probe.failed":"提供商接口探测失败。","provider.custom.edit.title":"编辑自定义提供商","provider.custom.toast.updated.title":"{{provider}} 已更新","provider.custom.toast.updated.description":"后续调用将使用新的配置。","provider.disconnect.toast.disconnected.title":"{{provider}} 已断开连接","provider.disconnect.toast.disconnected.description":"{{provider}} 模型已不再可用。","model.tag.free":"免费","model.tag.limited":"限免","model.tag.latest":"最新","model.provider.anthropic":"Anthropic","model.provider.openai":"OpenAI","model.provider.google":"Google","model.provider.xai":"xAI","model.provider.meta":"Meta","model.input.text":"文本","model.input.image":"图像","model.input.audio":"音频","model.input.video":"视频","model.input.pdf":"pdf","model.tooltip.allows":"支持:{{inputs}}","model.tooltip.reasoning.allowed":"支持推理","model.tooltip.reasoning.none":"不支持推理","model.tooltip.context":"上下文上限 {{limit}}","common.search.placeholder":"搜索","common.goBack":"返回","common.goForward":"前进","common.loading":"加载中","common.loading.ellipsis":"...","common.cancel":"取消","common.confirm":"确认","common.confirming":"确认中...","common.connect":"连接","common.disconnect":"断开连接","common.continue":"提交","common.submit":"提交","common.save":"保存","common.saving":"保存中...","common.default":"默认","common.attachment":"附件","prompt.placeholder.shell":"输入 shell 命令... {{example}}","prompt.placeholder.normal":"使用 OneScience {{example}}","prompt.placeholder.simple":"使用 OneScience...","prompt.placeholder.summarizeComments":"总结评论…","prompt.placeholder.summarizeComment":"总结该评论…","prompt.mode.shell":"Shell","prompt.mode.normal":"Prompt","prompt.mode.shell.exit":"按 esc 退出","prompt.example.1":"修复代码库中的一个 TODO","prompt.example.2":"这个项目的技术栈是什么?","prompt.example.3":"修复失败的测试","prompt.example.4":"解释认证是如何工作的","prompt.example.5":"查找并修复安全漏洞","prompt.example.6":"为用户服务添加单元测试","prompt.example.7":"重构这个函数,让它更易读","prompt.example.8":"这个错误是什么意思?","prompt.example.9":"帮我调试这个问题","prompt.example.10":"生成 API 文档","prompt.example.11":"优化数据库查询","prompt.example.12":"添加输入校验","prompt.example.13":"创建一个新的组件用于...","prompt.example.14":"我该如何部署这个项目?","prompt.example.15":"审查我的代码并给出最佳实践建议","prompt.example.16":"为这个函数添加错误处理","prompt.example.17":"解释这个正则表达式","prompt.example.18":"把它转换成 TypeScript","prompt.example.19":"在整个代码库中添加日志","prompt.example.20":"哪些依赖已经过期?","prompt.example.21":"帮我写一个迁移脚本","prompt.example.22":"为这个接口实现缓存","prompt.example.23":"给这个列表添加分页","prompt.example.24":"创建一个 CLI 命令用于...","prompt.example.25":"这里的环境变量是怎么工作的?","prompt.popover.emptyResults":"没有匹配的结果","prompt.popover.emptyCommands":"没有匹配的命令","prompt.dropzone.label":"将文件拖放到此处","prompt.dropzone.file.label":"拖放以 @提及文件","prompt.slash.badge.custom":"自定义","prompt.slash.badge.skill":"技能","prompt.slash.badge.mcp":"mcp","prompt.context.active":"当前","prompt.context.includeActiveFile":"包含当前文件","prompt.context.removeActiveFile":"从上下文移除活动文件","prompt.context.removeFile":"从上下文移除文件","prompt.context.removeSkill":"从上下文移除技能","prompt.toast.skillUnavailable.description":"当前工作区未加载该技能,请确认技能已同步后再发送。","prompt.action.attachFile":"附加文件","prompt.attachment.remove":"移除附件","prompt.attachment.uploading":"正在上传文件…","prompt.attachment.uploadingProgress":"正在上传文件… {{progress}}%","prompt.attachment.uploadFailed":"文件上传失败","prompt.attachment.ready":"可以发送","prompt.attachment.unsupported":"当前模型不支持此附件","prompt.attachment.unavailable":"附件不可用","prompt.action.waitForAttachments":"请等待文件上传完成","prompt.action.unsupportedAttachments":"{{model}} 不支持 {{modalities}} 附件","prompt.upload.status.uploading":"上传中…","prompt.upload.status.success":"已上传","prompt.upload.status.error":"上传失败","prompt.upload.retry":"重试上传","prompt.upload.dismiss":"收起","prompt.toast.attachmentReadFailed.title":"读取附件失败","prompt.toast.attachmentReadFailed.description":"无法读取该文件,请重试或更换文件。","prompt.toast.attachmentUploadFailed.title":"文件上传失败","prompt.toast.attachmentUploadFailed.description":"无法上传该文件,请重试或更换文件。","prompt.toast.attachmentUploadFailed.multiple":`{{count}} 个文件上传失败:
|
|
1
|
+
const e={"command.category.suggested":"建议","command.category.view":"视图","command.category.project":"项目","command.category.provider":"提供商","command.category.server":"服务器","command.category.session":"会话","command.category.theme":"主题","command.category.language":"语言","command.category.file":"文件","command.category.context":"上下文","command.category.terminal":"终端","command.category.model":"模型","command.category.mcp":"MCP","command.category.agent":"智能体","command.category.permissions":"权限","command.category.workspace":"工作区","command.category.settings":"设置","theme.scheme.system":"系统","theme.scheme.light":"浅色","theme.scheme.dark":"深色","command.sidebar.toggle":"切换侧边栏","titlebar.sidebar.label":"会话列表","command.project.open":"打开项目","command.project.createFolder":"新建项目","command.project.upload":"上传本地文件到项目","command.provider.connect":"连接提供商","command.server.switch":"切换服务器","command.settings.open":"打开设置","command.session.previous":"上一个会话","command.session.next":"下一个会话","command.session.previous.unseen":"上一个未读会话","command.session.next.unseen":"下一个未读会话","command.session.archive":"归档会话","command.palette":"命令面板","command.theme.cycle":"切换主题","command.theme.set":"使用主题:{{theme}}","command.theme.scheme.cycle":"切换配色方案","command.theme.scheme.set":"使用配色方案:{{scheme}}","command.language.cycle":"切换语言","command.language.set":"使用语言:{{language}}","command.session.new":"新建会话","command.file.open":"打开文件","command.tab.close":"关闭标签页","command.context.addSelection":"将所选内容添加到上下文","command.context.addSelection.description":"添加当前文件中选中的行","command.input.focus":"聚焦输入框","command.terminal.toggle":"切换终端","command.fileTree.toggle":"切换文件树","command.fileTree.sync":"同步文件","command.fileTree.sync.description":"从磁盘刷新文件树和更改列表","command.review.toggle":"切换审查面板","command.terminal.new":"新建终端","command.terminal.new.description":"创建新的终端标签页","terminal.fullscreen.enter":"全屏终端","terminal.fullscreen.exit":"退出全屏","command.steps.toggle":"切换步骤","command.steps.toggle.description":"显示或隐藏当前消息的步骤","command.message.previous":"上一条消息","command.message.previous.description":"跳转到上一条用户消息","command.message.next":"下一条消息","command.message.next.description":"跳转到下一条用户消息","command.model.choose":"选择模型","command.model.choose.description":"选择不同的模型","command.mcp.toggle":"切换 MCPs","command.mcp.toggle.description":"切换 MCPs","command.agent.cycle":"切换智能体","command.agent.cycle.description":"切换到下一个智能体","command.agent.cycle.reverse":"反向切换智能体","command.agent.cycle.reverse.description":"切换到上一个智能体","command.model.variant.cycle":"切换思考强度","command.model.variant.cycle.description":"切换到下一个强度等级","command.prompt.mode.shell":"Shell","command.prompt.mode.normal":"Prompt","command.permissions.autoaccept.enable":"自动接受权限","command.permissions.autoaccept.disable":"停止自动接受权限","command.workspace.toggle":"切换工作区","command.workspace.toggle.description":"在侧边栏启用或禁用多个工作区","command.session.undo":"撤销","command.session.undo.description":"撤销上一条消息","command.session.redo":"重做","command.session.redo.description":"重做上一条撤销的消息","command.session.compact":"精简会话","command.session.compact.description":"总结会话以减少上下文大小","command.session.fork":"从消息分叉","command.session.fork.description":"从之前的消息创建新会话","command.session.share":"分享会话","command.session.share.description":"分享此会话并将链接复制到剪贴板","command.session.unshare":"取消分享会话","command.session.unshare.description":"停止分享此会话","palette.search.placeholder":"搜索文件、命令和会话","palette.empty":"未找到结果","palette.group.commands":"命令","palette.group.files":"文件","dialog.provider.search.placeholder":"搜索提供商","dialog.provider.empty":"未找到提供商","dialog.provider.group.popular":"热门","dialog.provider.group.other":"其他","dialog.provider.tag.recommended":"推荐","dialog.provider.tag.connected":"已连接","dialog.provider.opencode.note":"使用 OpenCode Zen 或 API 密钥连接","dialog.provider.opencode.tagline":"可靠的优化模型","dialog.provider.opencodeGo.tagline":"适合所有人的低成本订阅","dialog.provider.anthropic.note":"使用 Claude Pro/Max 或 API 密钥连接","dialog.provider.copilot.note":"使用 Copilot 或 API 密钥连接","dialog.provider.openai.note":"远程/网页请用 headless 或 API 密钥;browser 登录仅限本机 OneCode","dialog.provider.google.note":"使用 Google 账号或 API 密钥连接","dialog.provider.openrouter.note":"使用 OpenRouter 账号或 API 密钥连接","dialog.provider.vercel.note":"使用 Vercel 账号或 API 密钥连接","dialog.model.select.title":"选择模型","dialog.model.search.placeholder":"搜索模型","dialog.model.empty":"未找到模型","dialog.model.manage":"管理模型","dialog.model.manage.description":"自定义模型选择器中显示的模型。","dialog.model.manage.provider.toggle":"切换所有 {{provider}} 模型","dialog.model.unpaid.freeModels.title":"OpenCode 提供的免费模型","dialog.model.unpaid.addMore.title":"从热门提供商添加更多模型","dialog.provider.viewAll":"查看更多提供商","provider.connect.title":"连接 {{provider}}","provider.connect.title.anthropicProMax":"使用 Claude Pro/Max 登录","provider.connect.selectMethod":"选择 {{provider}} 的登录方式。","provider.connect.method.apiKey":"API 密钥","provider.connect.status.inProgress":"正在授权...","provider.connect.status.connecting":"正在连接...","provider.connect.status.waiting":"等待授权...","provider.connect.status.failed":"授权失败:{{error}}","provider.connect.apiKey.description":"输入你的 {{provider}} API 密钥以连接帐户,并在 OpenCode 中使用 {{provider}} 模型。","provider.connect.apiKey.label":"{{provider}} API 密钥","provider.connect.apiKey.placeholder":"API 密钥","provider.connect.apiKey.required":"API 密钥为必填项","provider.connect.opencodeZen.line1":"OpenCode Zen 为你提供一组精选的可靠优化模型,用于代码智能体。","provider.connect.opencodeZen.line2":"只需一个 API 密钥,你就能使用 Claude、GPT、Gemini、GLM 等模型。","provider.connect.opencodeZen.visit.prefix":"访问 ","provider.connect.opencodeZen.visit.link":"opencode.ai/zen","provider.connect.opencodeZen.visit.suffix":" 获取你的 API 密钥。","provider.connect.oauth.code.visit.prefix":"访问 ","provider.connect.oauth.code.visit.link":"此链接","provider.connect.oauth.code.visit.suffix":" 获取授权码,以连接你的帐户并在 OpenCode 中使用 {{provider}} 模型。","provider.connect.oauth.code.label":"{{method}} 授权码","provider.connect.oauth.code.placeholder":"授权码","provider.connect.oauth.code.required":"授权码为必填项","provider.connect.oauth.code.invalid":"授权码无效","provider.connect.oauth.auto.visit.prefix":"访问 ","provider.connect.oauth.auto.visit.link":"此链接","provider.connect.oauth.auto.visit.suffix":" 并输入以下代码,以连接你的帐户并在 OpenCode 中使用 {{provider}} 模型。","provider.connect.oauth.auto.confirmationCode":"确认码","provider.connect.toast.connected.title":"{{provider}} 已连接","provider.connect.toast.connected.description":"现在可以使用 {{provider}} 模型了。","provider.custom.title":"自定义提供商","provider.custom.description.prefix":"配置与 OpenAI 兼容的提供商。请查看","provider.custom.description.link":"提供商配置文档","provider.custom.description.suffix":"。","provider.custom.field.providerID.label":"提供商 ID","provider.custom.field.providerID.placeholder":"myprovider","provider.custom.field.providerID.description":"使用小写字母、数字、连字符或下划线","provider.custom.field.providerID.hint":"本条配置的内部标识。同一中转站配置多个模型时请使用不同标识以便区分,通常可保留自动生成的值。","provider.custom.field.name.label":"名称","provider.custom.field.name.placeholder":"我的 AI 提供商","provider.custom.field.name.hint":"列表里显示的名称。默认取基础 URL 的域名;内部标识会按地址自动生成。","provider.custom.field.providerID.readonly":"内部标识:{{id}}(编辑时不可更改)","provider.custom.field.baseURL.label":"基础 URL","provider.custom.field.baseURL.placeholder":"https://api.myprovider.com/v1","provider.custom.field.baseURL.hint":"中转站 / OpenAI 兼容地址,一般以 /v1 结尾。","provider.custom.field.apiKey.label":"API 密钥","provider.custom.field.apiKey.placeholder":"API 密钥","provider.custom.field.apiKey.description":"可选。如果你通过请求头管理认证,可留空。","provider.custom.field.apiKey.hint":"中转站提供的密钥。多数情况下需要填写。","provider.custom.field.apiKey.keepPlaceholder":"留空则保持原密钥","provider.custom.field.apiKey.keepDescription":"可选。留空将保留已配置的 API 密钥。","provider.custom.field.apiKey.configuredHint":"已配置 API 密钥,留空将保持不变。重新填写会覆盖原密钥。","provider.custom.simple.hint":"填写中转站地址和 API 密钥,查询并勾选可用模型即可。名称可按需修改,默认取自地址域名。","provider.custom.advanced.show":"显示高级选项","provider.custom.advanced.hide":"隐藏高级选项","provider.custom.advanced.hint":"提供商 ID、显示名称与请求头为可选项;默认分别使用自动标识 / 域名 / 模型 ID。","provider.custom.models.label":"模型","provider.custom.models.id.label":"模型 ID","provider.custom.models.id.placeholder":"gpt-5.6-luna","provider.custom.models.id.hint":"可手动填写,或点击下方按钮从中转站 /v1/models 查询后勾选。","provider.custom.models.query":"查询当前中转站的可用模型","provider.custom.models.query.loading":"正在查询…","provider.custom.models.query.empty":"中转站未返回可用模型,请手动填写模型 ID。","provider.custom.models.query.needURL":"请先填写基础 URL。","provider.custom.models.query.needKey":"请先填写 API 密钥后再查询。","provider.custom.models.query.picked":"已选择 {{count}} 个模型","provider.custom.models.name.label":"显示名称","provider.custom.models.name.placeholder":"显示名称","provider.custom.models.name.section":"模型显示名称(可选)","provider.custom.models.name.hint":"出现在模型下拉里。留空则直接使用模型 ID。","provider.custom.models.remove":"移除模型","provider.custom.models.add":"添加模型","provider.custom.headers.label":"请求头(可选)","provider.custom.headers.hint":"多数中转站无需填写。仅在服务商要求额外 Header 时添加。","provider.custom.headers.key.label":"请求头","provider.custom.headers.key.placeholder":"Header-Name","provider.custom.headers.value.label":"值","provider.custom.headers.value.placeholder":"value","provider.custom.headers.remove":"移除请求头","provider.custom.headers.add":"添加请求头","provider.custom.error.providerID.required":"提供商 ID 为必填项","provider.custom.error.providerID.format":"请使用小写字母、数字、连字符或下划线","provider.custom.error.providerID.exists":"该提供商 ID 已存在","provider.custom.error.name.required":"显示名称为必填项","provider.custom.error.baseURL.required":"基础 URL 为必填项","provider.custom.error.baseURL.format":"必须以 http:// 或 https:// 开头","provider.custom.error.required":"必填","provider.custom.error.duplicate":"重复","provider.custom.error.probe.auth":"API 密钥认证失败,未保存完整密钥。","provider.custom.error.probe.network":"无法连接基础 URL,请检查地址与网络。","provider.custom.error.probe.timeout":"连接超时,请检查基础 URL 与网络。","provider.custom.error.probe.failed":"提供商接口探测失败。","provider.custom.edit.title":"编辑自定义提供商","provider.custom.toast.updated.title":"{{provider}} 已更新","provider.custom.toast.updated.description":"后续调用将使用新的配置。","provider.disconnect.toast.disconnected.title":"{{provider}} 已断开连接","provider.disconnect.toast.disconnected.description":"{{provider}} 模型已不再可用。","model.tag.free":"免费","model.tag.limited":"限免","model.tag.latest":"最新","model.provider.anthropic":"Anthropic","model.provider.openai":"OpenAI","model.provider.google":"Google","model.provider.xai":"xAI","model.provider.meta":"Meta","model.input.text":"文本","model.input.image":"图像","model.input.audio":"音频","model.input.video":"视频","model.input.pdf":"pdf","model.tooltip.allows":"支持:{{inputs}}","model.tooltip.reasoning.allowed":"支持推理","model.tooltip.reasoning.none":"不支持推理","model.tooltip.context":"上下文上限 {{limit}}","common.search.placeholder":"搜索","common.goBack":"返回","common.goForward":"前进","common.loading":"加载中","common.loading.ellipsis":"...","common.cancel":"取消","common.confirm":"确认","common.confirming":"确认中...","common.connect":"连接","common.disconnect":"断开连接","common.continue":"提交","common.submit":"提交","common.save":"保存","common.saving":"保存中...","common.default":"默认","common.attachment":"附件","prompt.placeholder.shell":"输入 shell 命令... {{example}}","prompt.placeholder.normal":"使用 OneScience {{example}}","prompt.placeholder.simple":"使用 OneScience...","prompt.placeholder.summarizeComments":"总结评论…","prompt.placeholder.summarizeComment":"总结该评论…","prompt.mode.shell":"Shell","prompt.mode.normal":"Prompt","prompt.mode.shell.exit":"按 esc 退出","prompt.example.1":"修复代码库中的一个 TODO","prompt.example.2":"这个项目的技术栈是什么?","prompt.example.3":"修复失败的测试","prompt.example.4":"解释认证是如何工作的","prompt.example.5":"查找并修复安全漏洞","prompt.example.6":"为用户服务添加单元测试","prompt.example.7":"重构这个函数,让它更易读","prompt.example.8":"这个错误是什么意思?","prompt.example.9":"帮我调试这个问题","prompt.example.10":"生成 API 文档","prompt.example.11":"优化数据库查询","prompt.example.12":"添加输入校验","prompt.example.13":"创建一个新的组件用于...","prompt.example.14":"我该如何部署这个项目?","prompt.example.15":"审查我的代码并给出最佳实践建议","prompt.example.16":"为这个函数添加错误处理","prompt.example.17":"解释这个正则表达式","prompt.example.18":"把它转换成 TypeScript","prompt.example.19":"在整个代码库中添加日志","prompt.example.20":"哪些依赖已经过期?","prompt.example.21":"帮我写一个迁移脚本","prompt.example.22":"为这个接口实现缓存","prompt.example.23":"给这个列表添加分页","prompt.example.24":"创建一个 CLI 命令用于...","prompt.example.25":"这里的环境变量是怎么工作的?","prompt.popover.emptyResults":"没有匹配的结果","prompt.popover.emptyCommands":"没有匹配的命令","prompt.dropzone.label":"将文件拖放到此处","prompt.dropzone.file.label":"拖放以 @提及文件","prompt.slash.badge.custom":"自定义","prompt.slash.badge.skill":"技能","prompt.slash.badge.mcp":"mcp","prompt.context.active":"当前","prompt.context.includeActiveFile":"包含当前文件","prompt.context.removeActiveFile":"从上下文移除活动文件","prompt.context.removeFile":"从上下文移除文件","prompt.context.removeSkill":"从上下文移除技能","prompt.toast.skillUnavailable.description":"当前工作区未加载该技能,请确认技能已同步后再发送。","prompt.action.attachFile":"附加文件","prompt.attachment.remove":"移除附件","prompt.attachment.uploading":"正在上传文件…","prompt.attachment.uploadingProgress":"正在上传文件… {{progress}}%","prompt.attachment.uploadFailed":"文件上传失败","prompt.attachment.ready":"可以发送","prompt.attachment.unsupported":"当前模型不支持此附件","prompt.attachment.unavailable":"附件不可用","prompt.action.waitForAttachments":"请等待文件上传完成","prompt.action.unsupportedAttachments":"{{model}} 不支持 {{modalities}} 附件","prompt.upload.status.uploading":"上传中…","prompt.upload.status.success":"已上传","prompt.upload.status.error":"上传失败","prompt.upload.retry":"重试上传","prompt.upload.dismiss":"收起","prompt.toast.attachmentReadFailed.title":"读取附件失败","prompt.toast.attachmentReadFailed.description":"无法读取该文件,请重试或更换文件。","prompt.toast.attachmentUploadFailed.title":"文件上传失败","prompt.toast.attachmentUploadFailed.description":"无法上传该文件,请重试或更换文件。","prompt.toast.attachmentUploadFailed.multiple":`{{count}} 个文件上传失败:
|
|
2
2
|
{{details}}`,"prompt.toast.attachmentUploadFailed.more":"另外还有 {{count}} 个失败","prompt.toast.attachmentTooLarge.description":"对话框单文件上限 {{limit}}MB,当前约 {{size}}MB。","prompt.toast.folderNotAllowed.title":"不支持上传文件夹","prompt.toast.folderNotAllowed.description":"对话框只能传文件。请使用项目面板右侧 ⋯ 中的上传来传文件夹。","prompt.toast.attachmentsUploading.title":"附件仍在加载","prompt.toast.attachmentsUploading.description":"请等待所有附件加载完成后再发送。","prompt.toast.attachmentUnavailable.title":"附件不可用","prompt.toast.attachmentUnavailable.description":"请重新附加文件后再发送。","prompt.action.send":"发送","prompt.action.stop":"停止","prompt.toast.pasteUnsupported.title":"不支持的附件","prompt.toast.pasteUnsupported.description":"此处仅能附加文件。","prompt.toast.modelAgentRequired.title":"请选择智能体和模型","prompt.toast.modelAgentRequired.description":"发送提示前请先选择智能体和模型。","prompt.toast.worktreeCreateFailed.title":"创建工作树失败","prompt.toast.sessionCreateFailed.title":"创建会话失败","prompt.toast.shellSendFailed.title":"发送 shell 命令失败","prompt.toast.commandSendFailed.title":"发送命令失败","prompt.toast.promptSendFailed.title":"发送提示失败","prompt.toast.promptSendFailed.description":"无法获取会话","prompt.toast.unsupportedAttachment.title":"当前模型不支持该附件","prompt.toast.unsupportedAttachment.description":"{{model}} 不支持 {{modalities}} 输入。对于 PDF,请先提取文本,或切换到支持 PDF 的模型。","dialog.mcp.title":"MCPs","dialog.mcp.description":"已启用 {{enabled}} / {{total}}","dialog.mcp.empty":"未配置 MCPs","dialog.mcp.addTitle":"添加 MCP 服务器","dialog.mcp.editTitle":"编辑 MCP 服务器","dialog.mcp.addButton":"添加 MCP 服务器","dialog.mcp.form.hint":"按业界通用方式配置 MCP:本地 stdio(command + env)或远程 HTTP(url + headers)。登录账号下仅本人可见与可改。","dialog.mcp.form.name":"名称","dialog.mcp.form.namePlaceholder":"filesystem","dialog.mcp.form.transport":"连接类型","dialog.mcp.form.transport.local":"本地 (stdio)","dialog.mcp.form.transport.remote":"远程 (HTTP)","dialog.mcp.form.command":"启动命令","dialog.mcp.form.commandPlaceholder":"npx -y @modelcontextprotocol/server-filesystem /data","dialog.mcp.form.environment":"环境变量(可选,每行 KEY=VALUE)","dialog.mcp.form.environmentPlaceholder":`API_KEY=...
|
|
3
3
|
REGION=...`,"dialog.mcp.form.url":"服务器 URL","dialog.mcp.form.urlPlaceholder":"https://api.example.com/mcp","dialog.mcp.form.headers":"请求头(可选,每行 KEY=VALUE)","dialog.mcp.form.headersPlaceholder":"Authorization=Bearer ...","dialog.mcp.form.enabled":"保存后启用","dialog.mcp.form.enabledDescription":"保存后立即连接此 MCP 服务器。","dialog.mcp.error.name":"请填写服务器名称","dialog.mcp.error.command":"请填写本地启动命令","dialog.mcp.error.url":"请填写远程 URL","dialog.mcp.error.duplicate":"已存在同名 MCP 服务器","dialog.mcp.error.missingConfig":"无法加载该 MCP 配置进行编辑","dialog.mcp.toast.saved":"MCP 配置已保存","dialog.ssh.title":"SSH 配置","dialog.ssh.description":"配置供智能体提交远程作业使用的 SSH 目标(仅当前登录账号可见)。","dialog.ssh.empty":"未配置 SSH 目标","dialog.ssh.addTitle":"添加 SSH 配置","dialog.ssh.editTitle":"编辑 SSH 配置","dialog.ssh.error.missingConfig":"无法加载该 SSH 配置进行编辑","dialog.ssh.addButton":"添加 SSH 配置","dialog.ssh.import":"一键导入 SSH Config","dialog.ssh.importDescription":"粘贴 SSH Config 后自动填充 Host、HostName、端口、用户、密钥和远程目录。","dialog.ssh.importAction":"一键导入","dialog.ssh.importPlaceholder":"粘贴 SSH Config,例如 Host、HostName、Port、User、IdentityFile、# RemoteWorkDir","dialog.ssh.name":"配置名称","dialog.ssh.nameDescription":"在列表中显示的名称,用来区分多套 SSH 目标。","dialog.ssh.host":"主机别名","dialog.ssh.hostPlaceholder":"my-hpc","dialog.ssh.hostDescription":"给这台机器起的短名,不是登录账号。例如 my-hpc。","dialog.ssh.hostName":"服务器地址","dialog.ssh.hostNamePlaceholder":"1.2.3.4","dialog.ssh.hostNameDescription":"实际连接的 IP 或域名。例如 1.2.3.4 或 cluster.example.com。","dialog.ssh.username":"登录用户名","dialog.ssh.usernamePlaceholder":"ubuntu","dialog.ssh.usernameDescription":"SSH 登录账号,例如 ubuntu、root。","dialog.ssh.port":"端口","dialog.ssh.remotePath":"远程工作目录","dialog.ssh.remotePathDescription":"智能体登录后进入的目录。","dialog.ssh.auth":"认证方式","dialog.ssh.auth.key":"密钥文件","dialog.ssh.auth.keyDescription":"使用上传到 OneCode 服务端的私钥文件。","dialog.ssh.auth.password":"密码","dialog.ssh.auth.passwordDescription":"用 SSH 登录密码连接。密码保存在 OneCode 服务端配置中,不会写入 ~/.ssh/config。","dialog.ssh.password":"SSH 密码","dialog.ssh.passwordPlaceholder":"your-password","dialog.ssh.passwordHint":"仅用于当前 SSH 目标。集群允许密钥登录时建议改用密钥。","dialog.ssh.passwordRequired":"请填写 SSH 密码","dialog.ssh.keyRequired":"请上传或填写私钥文件","dialog.ssh.keyPath":"Identity File","dialog.ssh.keyPathPlaceholder":"服务器端密钥路径,选择文件后会立即上传并自动填入","dialog.ssh.identity.upload":"选择并上传 IdentityFile","dialog.ssh.identity.uploading":"上传中","dialog.ssh.identity.uploaded":"IdentityFile 已上传到服务器","dialog.ssh.identity.ingested":"已从 OneCode 服务器导入密钥","dialog.ssh.identity.uploadFailed":"IdentityFile 上传失败","dialog.ssh.identity.hint":"选择文件后会立即上传到服务器;测试使用上传后的服务器路径。","dialog.ssh.identity.missingTitle":"服务器上找不到密钥文件","dialog.ssh.identity.missingDescription":"一键导入的 IdentityFile 路径在当前 OneCode 服务器上不存在,请先上传密钥后再测试。","dialog.ssh.identity.missingEmpty":"未解析到 IdentityFile,请上传密钥后再测试。","dialog.ssh.identity.missingLocalPath":"后台未能读取该 IdentityFile(本机 Windows 路径服务器上不存在)。请点击「选择并上传 IdentityFile」手动选择后上传。","dialog.ssh.identity.pickPromptTitle":"密钥不在 OneCode 所在环境","dialog.ssh.identity.pickPromptDescription":"导入的 IdentityFile 无法在当前 OneCode 服务器上读取。请选择本机密钥文件并上传。","dialog.ssh.identity.pickPromptAction":"选择密钥文件","dialog.ssh.identity.pickPromptLater":"稍后","dialog.ssh.identity.missingUnverified":"无法确认服务器上的密钥文件是否存在,请先上传密钥后再测试。","dialog.ssh.identity.missingInline":"当前密钥在服务器上不可用,请先上传后再测试。","dialog.ssh.identity.needsUploadTitle":"请上传密钥文件","dialog.ssh.identity.needsUploadDescription":"本机已找到导入的 IdentityFile,请点击「选择并上传 IdentityFile」后再测试。","dialog.ssh.identity.needsUploadInline":"本机已找到该密钥,请先上传后再测试。","dialog.ssh.identity.notFoundTitle":"密钥文件不存在","dialog.ssh.identity.notFoundDescription":"本机找不到导入的 IdentityFile 路径,请选择正确的密钥文件并上传。","dialog.ssh.identity.notFoundInline":"本机找不到该密钥文件,请选择正确的密钥并上传。","dialog.ssh.submitCommand":"提交命令(可选)","dialog.ssh.options":"SSH 选项(每行 KEY=VALUE)","dialog.ssh.submitWorkdir":"提交工作目录(可选)","dialog.ssh.submitWorkdirPlaceholder":"留空则使用上方的远程工作目录","dialog.ssh.submitWorkdirDescription":"仅用于「提交命令」(如 sbatch)的工作目录。不能代替上方必填的远程工作目录。","dialog.ssh.environment":"环境变量(每行 KEY=VALUE)","dialog.ssh.enabled":"启用","dialog.ssh.enabledDescription":"启用后智能体可在提交作业时读取此配置","dialog.ssh.status.enabled":"已启用","dialog.ssh.status.disabled":"已禁用","dialog.ssh.required":"请填写配置名称、SSH Host 和远程工作目录","dialog.ssh.portInvalid":"端口必须是 1-65535 的整数","dialog.ssh.connectivity.action":"检测连通性","dialog.ssh.connectivity.running":"检测中...","dialog.ssh.connectivity.progress":"检测中...({current}/{total})· {name}","dialog.ssh.connectivity.itemAction":"检测","dialog.ssh.connectivity.itemRunning":"检测中","dialog.ssh.test.action":"测试","dialog.ssh.test.running":"测试中","dialog.ssh.test.passed":"SSH 配置可用","dialog.ssh.test.failed":"SSH 配置不可用","dialog.ssh.test.description":"服务器已成功连接 SSH 目标,并确认远程工作目录可访问。","dialog.ssh.test.serverMissing":"当前 opencode server 未加载 SSH 测试接口,请重启 server 服务后再试。","dialog.ssh.test.detail.message":"原因","dialog.ssh.test.detail.stderr":"错误输出","dialog.ssh.test.detail.stdout":"标准输出","dialog.ssh.fixKnownHosts.action":"修复 known_hosts","dialog.ssh.fixKnownHosts.running":"修复中…","dialog.ssh.fixKnownHosts.done":"已重写 known_hosts 忽略并重新检测","dialog.ssh.fixKnownHosts.missing":"找不到要修复的 SSH 配置","dialog.ssh.fixPublicKey.action":"修复密钥认证","dialog.ssh.fixPublicKey.running":"修复中…","dialog.ssh.fixPublicKey.done":"密钥检查通过,连通性正常","dialog.ssh.fixPublicKey.failed":"密钥认证仍失败","dialog.ssh.fixPublicKey.missing":"找不到要修复的 SSH 配置","dialog.ssh.fixPublicKey.needKey":"未配置 IdentityFile,请上传私钥后再测","dialog.ssh.fixPublicKey.missingFile":"服务器上找不到密钥文件:{{path}}。请重新上传。","dialog.ssh.fixPublicKey.stillDenied":"本地密钥 {{path}} 可读,但远端仍拒绝公钥。请确认该私钥对应的公钥已写入远端 ~/.ssh/authorized_keys。详情:{{detail}}","dialog.ssh.toast.saved":"SSH 配置已保存","dialog.ssh.toast.removed":"SSH 配置已删除","dialog.ssh.usage.ok":"知道了","dialog.ssh.usage.connectedBanner":"以下项目正在连接此配置,请先断开后再重命名、禁用、删除或修改主机/用户/认证:{{projects}}","dialog.ssh.usage.blocked.title":"无法修改 SSH 配置","dialog.ssh.usage.blocked.delete":"以下项目正在连接 SSH 配置「{{name}}」,请先断开:{{projects}}","dialog.ssh.usage.blocked.rename":"以下项目正在连接 SSH 配置「{{name}}」,无法重命名。请先断开:{{projects}}","dialog.ssh.usage.blocked.identity":"以下项目正在连接 SSH 配置「{{name}}」,无法修改主机、用户或认证。请先断开:{{projects}}","dialog.ssh.usage.blocked.disable":"以下项目正在连接 SSH 配置「{{name}}」,无法禁用。请先断开:{{projects}}","dialog.ssh.usage.confirm.delete.title":"删除 SSH 配置","dialog.ssh.usage.confirm.delete":"删除「{{name}}」后,以下远程项目仍保持远程绑定,但无法连接,直到重新添加同名配置:{{projects}}","dialog.ssh.usage.confirm.delete.empty":"确定删除 SSH 配置「{{name}}」?","dialog.ssh.usage.confirm.rename":"将把以下项目的绑定从「{{from}}」更新为「{{to}}」:{{projects}}","dialog.ssh.usage.confirm.identity":"保存后,以下项目下次连接将使用新的主机/用户/认证;各项目记录的远程路径不变:{{projects}}","dialog.ssh.usage.confirm.disable":"禁用后,以下已绑定项目将无法连接,直到重新启用:{{projects}}","dialog.ssh.usage.confirm.save":"确认保存 SSH 配置","dialog.lsp.empty":"已从文件类型自动检测到 LSPs","dialog.plugins.empty":"在 opencode.json 中配置的插件","mcp.status.connected":"已连接","mcp.status.failed":"失败","mcp.status.needs_auth":"需要授权","mcp.status.disabled":"已禁用","dialog.fork.empty":"没有可用于分叉的消息","dialog.directory.search.placeholder":"搜索文件夹","dialog.directory.empty":"未找到文件夹","dialog.directory.browse":"工作区项目","dialog.directory.other":"其他项目","dialog.server.title":"后端连接","dialog.server.description":"切换此应用连接的 OneCode 后端(高级)。","dialog.server.search.placeholder":"搜索后端","dialog.server.empty":"暂无后端连接","dialog.server.group.http":"本地/HTTP","dialog.server.group.ssh":"SSH 配置","dialog.server.group.mcp":"MCP 工具","dialog.server.mcp.description":"MCP 是工具连接,作为远程执行和部署能力提供给会话使用。","dialog.server.mcp.manage":"管理 MCP","dialog.server.ssh.add":"新增 SSH 配置","dialog.server.add.title":"添加后端","dialog.server.add.url":"后端地址 (URL)","dialog.server.add.placeholder":"http://127.0.0.1:4096","dialog.server.add.error":"无法连接到后端","dialog.server.add.checking":"检查中...","dialog.server.add.button":"添加后端地址","dialog.server.add.name":"名称(可选)","dialog.server.add.namePlaceholder":"Localhost","dialog.server.add.username":"Basic 用户名(通常留空)","dialog.server.add.password":"访问令牌 / 密码(可选)","dialog.server.add.usernamePlaceholder":"仅当服务端用了 --username 时填写","dialog.server.add.passwordPlaceholder":"远程服务器可选密码","dialog.server.add.auth.hint":"日常使用可全部留空。仅当连接需要 HTTP Basic 认证的远程服务器时,再填写「访问令牌 / 密码」;通常不要填用户名。","dialog.server.edit.title":"编辑后端","dialog.server.default.title":"默认后端","dialog.server.default.description":"应用启动时连接此后端,而不是启动本地服务。需要重启。","dialog.server.default.none":"未选择后端","dialog.server.default.set":"将当前后端设为默认","dialog.server.default.clear":"清除","dialog.server.action.remove":"移除后端","dialog.server.menu.edit":"编辑","dialog.server.menu.reconnect":"重连","dialog.server.menu.default":"设为默认","dialog.server.menu.defaultRemove":"取消默认","dialog.server.menu.delete":"删除","dialog.server.current":"当前后端","dialog.server.status.default":"默认","dialog.project.createFolder.name":"文件夹名称","dialog.project.createFolder.placeholder":"例如 my_proj 或 team/proj","dialog.project.createFolder.path":"将创建在 {{path}}","dialog.project.createFolder.existing.title":"已有文件夹","dialog.project.createFolder.existing.inParent":"「{{parent}}」下已有文件夹","dialog.project.createFolder.existing.empty":"此层级暂无同级文件夹","dialog.project.createFolder.error.exists":"文件夹「{{name}}」已存在,请换一个名称。","dialog.project.createFolder.error.invalid":"名称无效,请使用字母、数字、下划线或连字符,可用 / 创建子目录。","dialog.project.createFolder.error.permission":"没有权限在此位置创建文件夹。","dialog.project.createFolder.error.server":"服务器错误({{status}}),请稍后重试。","dialog.project.createFolder.error.network":"请求失败,请检查网络连接后重试。","dialog.project.createFolder.failed":"无法创建文件夹,可能已存在或名称无效。","dialog.project.createFolder.environment":"执行环境","dialog.project.createFolder.nameAsFolder":"此文件夹将作为项目使用。","dialog.project.createFolder.nameRemote":"项目名称","dialog.project.createFolder.nameRemoteHint":"用于列表展示,不必与远端文件夹同名。","dialog.project.createFolder.localIdentityUnique":"本地已有同名文件夹,将另建独立项目对应远端,远端路径不变。","dialog.project.createFolder.remotePath":"远端项目路径","dialog.project.createFolder.remotePathPlaceholder":"例如 ~/.onecode/workspaces/alice/my_proj","dialog.project.createFolder.remotePathEdit":"修改","dialog.project.createFolder.remotePathReset":"恢复默认","dialog.project.environment.title":"项目执行环境","dialog.project.environment.hint":"这是项目级设置,会影响该项目下所有新建会话。已绑定其它环境的会话不能继续提问。","dialog.project.environment.disconnectWarning":"当前仍连着远端 {{target}}。确认后会断开远端进程,该项目下其它远端会话将无法继续提问(仍可查看已同步的记录)。","sidebar.project.environment":"执行环境","session.environment.mismatch":"此会话的执行环境与项目不一致,不能继续提问。请新建会话。","session.environment.session":"本会话","session.environment.project":"项目","session.environment.align":"对齐到本会话","session.environment.align.title":"对齐项目执行环境","session.environment.align.body":"这会修改整个项目的执行环境,不只是当前会话。项目环境将改为「{{env}}」。绑定其它环境的会话将无法继续提问。","session.environment.align.disconnect":"当前仍连着远端 {{target}},确认后会断开远端进程。","session.environment.align.confirm":"确认对齐","session.environment.connectFirst":"远端未连接,无法继续对话。请先连接后再输入。","session.environment.copy":"复制路径","session.environment.copied":"已复制路径","session.environment.copyFailed":"复制失败","dialog.project.upload.destinationLabel":"上传目标(当前项目目录)","dialog.project.upload.eyebrow":"工作区上传","dialog.project.upload.destinationHint":"将把这台电脑上选择的文件或文件夹上传到该项目路径下(OneCode 所在环境)。","dialog.project.upload.destinationRisk":"当前目标不在账号默认工作区内。同机其他账号若知道路径,可能读取或覆盖该目录中的文件,请确认路径与权限后再上传。","dialog.project.upload.pickFiles":"选择文件","dialog.project.upload.pickFolder":"选择文件夹","dialog.project.upload.summary":"{{count}} 项 · {{size}}","dialog.project.upload.folderSummary":"文件夹 {{folder}} · {{count}} 个文件 · {{size}}","dialog.project.upload.folderHint":"将上传整个文件夹及其内容,确认后按文件数量逐个传输。","dialog.project.upload.moreFiles":"…还有 {{count}} 项","dialog.project.upload.tooManyFiles":"所选 {{selected}} 个文件超过上限 {{max}},仅保留前 {{max}} 个。","dialog.project.upload.truncatedHint":"已截断到最多 {{max}} 个文件。","dialog.project.upload.fileTooLarge":"「{{path}}」大小为 {{size}},超过单文件上限 {{max}}。更大文件请放到工作区路径后点「接入」登记。","dialog.project.upload.totalTooLarge":"本次合计 {{size}},超过浏览器上传上限 {{max}}。更大数据请放到工作区路径后点「接入」登记。","dialog.project.upload.diskSpace":"可用空间:{{space}}","dialog.project.upload.diskInsufficient":"所选内容超过可用磁盘空间。","dialog.project.upload.overwrite":"覆盖已存在的文件","dialog.project.upload.progress":"正在上传 {{done}} / {{total}}","dialog.project.upload.confirm":"确认上传","dialog.project.upload.uploading":"上传中…","dialog.project.upload.failed":"上传失败","dialog.project.upload.partialFailed":"完成 {{written}},跳过 {{skipped}},失败 {{failed}}。","toast.project.upload.success":"已上传 {{written}} 个文件,跳过 {{skipped}} 个","dialog.project.edit.title":"编辑项目","dialog.project.edit.name":"名称","dialog.project.edit.icon":"图标","dialog.project.edit.icon.alt":"项目图标","dialog.project.edit.icon.hint":"点击或拖拽图片","dialog.project.edit.icon.recommended":"建议:128x128px","dialog.project.edit.color":"颜色","dialog.project.edit.color.select":"选择{{color}}颜色","dialog.project.edit.worktree.startup":"工作区启动脚本","dialog.project.edit.worktree.startup.description":"在创建新的工作区 (worktree) 后运行。","dialog.project.edit.worktree.startup.placeholder":"例如 bun install","dialog.project.rename.title":"重命名项目","dialog.project.rename.name":"项目名称","dialog.project.rename.path":"项目路径 {{path}}","context.breakdown.title":"上下文拆分","context.breakdown.note":"输入 token 的大致拆分。“其他”包含工具定义和开销。","context.breakdown.system":"系统","context.breakdown.user":"用户","context.breakdown.assistant":"助手","context.breakdown.tool":"工具调用","context.breakdown.other":"其他","context.systemPrompt.title":"系统提示词","context.rawMessages.title":"原始消息","context.stats.session":"会话","context.stats.messages":"消息数","context.stats.provider":"提供商","context.stats.model":"模型","context.stats.limit":"上下文限制","context.stats.totalTokens":"总 token","context.stats.usage":"使用率","context.stats.inputTokens":"输入 token","context.stats.outputTokens":"输出 token","context.stats.reasoningTokens":"推理 token","context.stats.cacheTokens":"缓存 token(读/写)","context.stats.userMessages":"用户消息","context.stats.assistantMessages":"助手消息","context.stats.totalCost":"总成本","context.stats.sessionCreated":"创建时间","context.stats.lastActivity":"最后活动","context.usage.tokens":"Token","context.usage.usage":"使用率","context.usage.cost":"成本","context.usage.clickToView":"点击查看上下文","context.usage.view":"查看上下文用量","language.en":"English","language.zh":"简体中文","language.zht":"繁體中文","language.ko":"한국어","language.de":"Deutsch","language.es":"Español","language.fr":"Français","language.da":"Dansk","language.ja":"日本語","language.pl":"Polski","language.ru":"Русский","language.ar":"العربية","language.no":"Norsk","language.br":"Português (Brasil)","language.bs":"Bosanski","language.th":"ไทย","language.tr":"Türkçe","toast.language.title":"语言","toast.language.description":"已切换到{{language}}","toast.theme.title":"主题已切换","toast.scheme.title":"颜色方案","toast.workspace.enabled.title":"工作区已启用","toast.workspace.enabled.description":"侧边栏现在显示多个工作树","toast.workspace.disabled.title":"工作区已禁用","toast.workspace.disabled.description":"侧边栏只显示主工作树","toast.permissions.autoaccept.on.title":"正在自动接受权限","toast.permissions.autoaccept.on.description":"权限请求将被自动批准","toast.permissions.autoaccept.off.title":"已停止自动接受权限","toast.permissions.autoaccept.off.description":"权限请求将需要批准","toast.model.none.title":"未选择模型","toast.model.none.description":"请先连接提供商以总结此会话","toast.file.loadFailed.title":"加载文件失败","toast.file.listFailed.title":"列出文件失败","toast.context.noLineSelection.title":"未选择行","toast.context.noLineSelection.description":"请先在文件标签中选择行范围。","toast.session.share.copyFailed.title":"无法复制链接到剪贴板","toast.session.share.success.title":"会话已分享","toast.session.share.success.description":"分享链接已复制到剪贴板","toast.session.share.failed.title":"分享会话失败","toast.project.copyPath.failed":"无法复制路径到剪贴板","toast.session.share.failed.description":"分享会话时发生错误","toast.session.unshare.success.title":"已取消分享会话","toast.session.unshare.success.description":"会话已成功取消分享","toast.session.unshare.failed.title":"取消分享失败","toast.session.unshare.failed.description":"取消分享会话时发生错误","toast.session.listFailed.title":"无法加载 {{project}} 的会话","toast.update.title":"有可用更新","toast.update.description":"OneCode 有新版本 ({{version}}) 可安装。","toast.update.action.installRestart":"安装并重启","toast.update.action.notYet":"稍后","error.page.title":"出了点问题","error.page.description":"加载应用程序时发生错误。","error.page.details.label":"错误详情","error.page.action.restart":"重启","error.page.action.report":"上报错误","error.page.action.reported":"错误已上报","error.page.action.checking":"检查中...","error.page.action.checkUpdates":"检查更新","error.page.action.updateTo":"更新到 {{version}}","error.page.report.prefix":"请将此错误报告给 OpenCode 团队","error.page.report.discord":"在 Discord 上","error.page.version":"版本:{{version}}","error.dev.rootNotFound":"未找到根元素。你是不是忘了把它添加到 index.html?或者 id 属性拼写错了?","error.globalSync.connectFailed":"无法连接到服务器。是否有服务器正在 `{{url}}` 运行?","directory.error.invalidUrl":"URL 中的目录无效。","error.chain.unknown":"未知错误","error.chain.causedBy":"原因:","error.chain.apiError":"API 错误","error.chain.status":"状态:{{status}}","error.chain.retryable":"可重试:{{retryable}}","error.chain.responseBody":`响应内容:
|
|
4
4
|
{{body}}`,"error.chain.didYouMean":"你是不是想输入:{{suggestions}}","error.chain.modelNotFound":"未找到模型:{{provider}}/{{model}}","error.chain.checkConfig":"请检查你的配置 (opencode.json) 中的 provider/model 名称","error.chain.mcpFailed":'MCP 服务器 "{{name}}" 启动失败。注意: OpenCode 暂不支持 MCP 认证。',"error.chain.providerAuthFailed":"提供商认证失败({{provider}}):{{message}}","error.chain.providerInitFailed":'无法初始化提供商 "{{provider}}"。请检查凭据和配置。',"error.chain.configJsonInvalid":"配置文件 {{path}} 不是有效的 JSON(C)","error.chain.configJsonInvalidWithMessage":"配置文件 {{path}} 不是有效的 JSON(C):{{message}}","error.chain.configDirectoryTypo":'{{path}} 中的目录 "{{dir}}" 无效。请将目录重命名为 "{{suggestion}}" 或移除它。这是一个常见拼写错误。',"error.chain.configFrontmatterError":`无法解析 {{path}} 中的 frontmatter:
|
package/index.html
CHANGED
|
@@ -8,19 +8,19 @@
|
|
|
8
8
|
name="description"
|
|
9
9
|
content="OneScience is an AI for Science workspace for research discovery, agent workflows, and scientific knowledge."
|
|
10
10
|
/>
|
|
11
|
-
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-
|
|
12
|
-
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-
|
|
13
|
-
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-
|
|
14
|
-
<link rel="manifest" href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-
|
|
15
|
-
<link rel="preload" href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-
|
|
16
|
-
<link rel="preload" href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-
|
|
11
|
+
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111612/favicon-96x96-v3.png" sizes="96x96" />
|
|
12
|
+
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111612/favicon-v3.ico" />
|
|
13
|
+
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111612/apple-touch-icon-v3.png" />
|
|
14
|
+
<link rel="manifest" href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111612/site.webmanifest" />
|
|
15
|
+
<link rel="preload" href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111612/assets/fonts/inter-400.woff2" as="font" type="font/woff2" crossorigin />
|
|
16
|
+
<link rel="preload" href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111612/assets/fonts/noto-sc-400.woff2" as="font" type="font/woff2" crossorigin />
|
|
17
17
|
<meta name="theme-color" content="#F8F7F7" />
|
|
18
18
|
<meta name="theme-color" content="#131010" media="(prefers-color-scheme: dark)" />
|
|
19
|
-
<meta property="og:image" content="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-
|
|
20
|
-
<meta property="twitter:image" content="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-
|
|
21
|
-
<script id="oc-theme-preload-script" src="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-
|
|
22
|
-
<script type="module" crossorigin src="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-
|
|
23
|
-
<link rel="stylesheet" crossorigin href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-
|
|
19
|
+
<meta property="og:image" content="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111612/social-share.png" />
|
|
20
|
+
<meta property="twitter:image" content="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111612/social-share.png" />
|
|
21
|
+
<script id="oc-theme-preload-script" src="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111612/oc-theme-preload.js"></script>
|
|
22
|
+
<script type="module" crossorigin src="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111612/assets/index-BekReNoJ.js"></script>
|
|
23
|
+
<link rel="stylesheet" crossorigin href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111612/assets/index-Dmepx8Py.css">
|
|
24
24
|
</head>
|
|
25
25
|
<body class="antialiased overscroll-none text-12-regular overflow-hidden">
|
|
26
26
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onescience/onecode-web",
|
|
3
|
-
"version": "1.14.50-
|
|
3
|
+
"version": "1.14.50-202609111612",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"description": "OneCode web UI static assets for CDN delivery.",
|
|
8
|
-
"homepage": "https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-
|
|
8
|
+
"homepage": "https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111612/index.html",
|
|
9
9
|
"jsdelivr": "index.html",
|
|
10
10
|
"files": [
|
|
11
11
|
"**/*"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111047/assets/alert-06-GK5Tqy6u.aac";export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111047/assets/alert-07-0r0kiLGz.aac";export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111047/assets/alert-08-CZowNquU.aac";export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111047/assets/alert-10-Ck5hR7zH.aac";export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111047/assets/bip-bop-09-CxEgoAHQ.aac";export{e as default};
|
package/assets/home-BYs0hcVA.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as f,o as i,q as w,i as l,c as e,t as d,b,s as v,r as p,v as g,w as h,x as y,b6 as P,S as u,R as k,a4 as E,aY as S,aZ as $,a_ as C,b7 as L,b8 as W,b9 as _,aX as A,f as D,as as R,ar as I,at as q,au as H,ba as M,bb as x,bc as F,a0 as O}from"./index-8N6rOsri.js";import{u as U}from"./current-project-3uZyhYQO.js";var j=d('<div class="os-client-chat-page os-client-welcome-chat"><section class="os-client-chat-stage is-empty"><div class=os-client-chat-hero><img class=os-client-logo src=/assets/onescience/onescience-logo.png alt=OneScience><h1>全流程科研模型生成平台</h1><p>从需求、数据、模型、skills 到运行环境,把科研工作组织成可执行的客户端任务。'),B=d("<div class=os-client-welcome-prompt-empty role=region aria-label=登录提示><div class=os-client-welcome-login-card><div class=os-client-welcome-login-copy><strong>登录后开始对话</strong><p>使用个人工作区与 Agent 协作,管理项目、会话与科研任务。"),K=d("<div class=os-client-welcome-prompt-empty><p>正在准备工作区…"),N=d('<div class="os-client-welcome-prompt os-code-embed"data-component=session-prompt-dock>');function z(){const n=U(),[o,m]=f(0),a=i(()=>(o(),!!v())),t=i(()=>a()?n():"");return w(()=>{const r=()=>m(c=>c+1);window.addEventListener(p,r),window.addEventListener(g,r),window.addEventListener(h,r),y(()=>{window.removeEventListener(p,r),window.removeEventListener(g,r),window.removeEventListener(h,r)}),P()?.type==="prompt"&&queueMicrotask(()=>document.querySelector('[data-component="prompt-input"]')?.focus())}),(()=>{var r=j();return r.firstChild,l(r,e(u,{get when(){return a()},get fallback(){return(()=>{var s=B(),c=s.firstChild;return c.firstChild,l(c,e(k,{get href(){return`/login?redirect=${encodeURIComponent("/workspace")}`},class:"os-client-welcome-login-cta",children:"去登录"}),null),s})()},get children(){return e(u,{get when(){return t()},get fallback(){return K()},children:s=>e(T,{get directory(){return s()}})})}}),null),r})()}function T(n){const o=i(()=>({dir:E(n.directory),id:void 0}));return e(A,{params:o,get children(){return e(S,{directory:()=>n.directory,get children(){return e($,{get children(){return e(C,{get children(){return e(L,{get children(){return e(W,{get children(){return e(_,{get children(){return e(X,{directory:()=>n.directory})}})}})}})}})}})}})}})}function X(n){const o=D(),m=i(()=>{R(),I();const t=n.directory();return t?q(t).kind==="ssh"&&!H(t):!1}),a=t=>{const r=t.target;r instanceof Element&&r.closest('[data-action="prompt-attach"], [data-action="prompt-submit"]')&&(v()||(t.preventDefault(),t.stopPropagation(),O({navigate:o,action:{type:"prompt",prompt:""},isLoggedIn:!1})))};return[e(M,{}),(()=>{var t=N();return t.$$click=a,l(t,e(x,{get directory(){return n.directory}}),null),l(t,e(u,{get when(){return!m()},get children(){return e(F,{})}}),null),t})()]}b(["click"]);export{z as WorkbenchHomePage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111047/assets/nope-12-BJR1Ka3c.aac";export{e as default};
|
package/assets/shell-D0MY8Emg.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dialog-project-upload-DpW39zJX.js","assets/index-8N6rOsri.js","assets/index-J5aZNTBC.css","assets/dialog-terminal-unavailable-BNR9MrpX.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{u as Te,c as e,I as he,D as O,i,S as _,F as Ce,d as Ne,t as a,p as le,a as ke,s as te,b as Me,e as it,f as Sn,g as St,h as xn,j as Cn,k as Ln,l as Pn,m as xt,n as K,o as $,q as je,r as Nt,v as rt,w as st,x as Ee,y as Dn,z as Kt,A as En,B as Ct,C as Z,E as Tt,G as lt,H as jn,J as Wt,K as Mn,L as fe,M as Rn,N as In,O as An,P as On,Q as zn,R as pe,T as Fn,U as Nn,V as Kn,W as X,X as be,Y as F,Z as Tn,_ as Wn,$ as an,a0 as ct,a1 as Ke,a2 as Hn,a3 as Ht,a4 as wt,a5 as ce,a6 as ln,a7 as Bn,a8 as cn,a9 as qn,aa as Un,ab as De,ac as dt,ad as tt,ae as Vn,af as Xn,ag as Gn,ah as ut,ai as Qn,aj as Zn,ak as dn,al as Jn,am as Yn,an as er,ao as tr,ap as nr,aq as rr,ar as Bt,as as qt,at as Ut,au as $t,av as _t,aw as Vt,ax as sr,ay as yt,az as ir,aA as un,aB as ve,aC as or,aD as Xt,aE as ar,aF as lr,aG as cr,aH as dr,aI as ur,aJ as hn,aK as kt,aL as Gt,aM as hr,aN as gr,aO as mr,aP as ht,aQ as Qt,aR as Zt,aS as fr,aT as gn,aU as Lt,aV as mn,aW as pr,aX as vr,aY as br,aZ as wr,a_ as $r,a$ as _r,b0 as yr,b1 as Jt,b2 as Yt,b3 as kr,b4 as Sr,b5 as ze}from"./index-8N6rOsri.js";import{DialogEditProject as xr}from"./dialog-edit-project-CW4KRXv4.js";import{c as Cr}from"./selection-B5YefTBD.js";import{u as fn}from"./current-project-3uZyhYQO.js";var Lr=a("<span class=os-client-session-menu-label>"),Pr=a("<div class=os-client-session-menu-empty>");const Dr="os-client-session-menu",Er="os-client-session-menu os-client-session-menu-sub";function jr(r){const u=Te(),n=()=>te(),p=()=>ke(n(),r.currentDirectory),l=()=>r.projects().filter(c=>le(c.worktree)!==le(r.currentDirectory)).filter(c=>!ke(n(),c.worktree));return e(_,{get when(){return p()},get children(){return e(O.Sub,{get children(){return[e(O.SubTrigger,{"data-action":"session-move",class:"os-client-session-menu-item",get children(){return[e(he,{name:"folder",size:"small",class:"os-client-session-menu-icon"}),(()=>{var c=Lr();return i(c,()=>u.t("session.move.toProject")),c})(),e(he,{name:"chevron-right",size:"small",class:"os-client-session-menu-chevron"})]}}),e(O.Portal,{get children(){return e(O.SubContent,{class:Er,get children(){return[e(O.Item,{"data-action":"session-move-new-project",class:"os-client-session-menu-item",onSelect:()=>r.onNewProject(),get children(){return[e(he,{name:"plus",size:"small",class:"os-client-session-menu-icon"}),e(O.ItemLabel,{class:"os-client-session-menu-label",get children(){return u.t("session.move.newProject")}})]}}),e(O.Separator,{class:"os-client-session-menu-separator"}),e(_,{get when(){return l().length>0},get fallback(){return(()=>{var c=Pr();return i(c,()=>u.t("session.move.emptyProjects")),c})()},get children(){return e(Ce,{get each(){return l()},children:c=>e(O.Item,{"data-action":"session-move-target",class:"os-client-session-menu-item",onSelect:()=>r.onMove(c.worktree),get children(){return[e(he,{name:"folder",size:"small",class:"os-client-session-menu-icon"}),e(O.ItemLabel,{class:"os-client-session-menu-label",get children(){return Ne(c)}})]}})})}})]}})}})]}})}})}function en(r){const u=Te();return[e(O.Item,{"data-action":"session-archive",class:"os-client-session-menu-item",onSelect:()=>r.onArchive(),get children(){return[e(he,{name:"archive",size:"small",class:"os-client-session-menu-icon"}),e(O.ItemLabel,{class:"os-client-session-menu-label",get children(){return u.t("common.archive")}})]}}),e(jr,{get currentDirectory(){return r.currentDirectory},get projects(){return r.projects},get onMove(){return r.onMove},get onNewProject(){return r.onNewProject}}),e(O.Separator,{class:"os-client-session-menu-separator"}),e(O.Item,{"data-action":"session-delete",class:"os-client-session-menu-item is-danger",onSelect:()=>r.onDelete(),get children(){return[e(he,{name:"trash",size:"small",class:"os-client-session-menu-icon"}),e(O.ItemLabel,{class:"os-client-session-menu-label",get children(){return u.t("common.delete")}})]}})]}var Mr=a("<button type=button aria-haspopup=menu>..."),gt=a('<div class="flex flex-col gap-4 pl-6 pr-2.5 pb-3"><span class="text-14-regular text-text-strong"></span><div class="flex justify-end gap-2">'),Rr=a("<span class=os-sidebar-label>"),Ir=a('<svg class=os-sidebar-icon viewBox="0 0 24 24"aria-hidden=true><path d="M21 15a2 2 0 0 1-2 2H8l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z">'),Ar=a("<span class=os-sidebar-label>新建会话"),Or=a('<svg class=os-sidebar-icon viewBox="0 0 24 24"aria-hidden=true><path d="M5 5h5v5H5z"></path><path d="M14 5h5v5h-5z"></path><path d="M5 14h5v5H5z"></path><path d="M14 14h5v5h-5z">'),zr=a("<span class=os-sidebar-label>能力中心"),Fr=a('<svg class=os-sidebar-icon viewBox="0 0 24 24"aria-hidden=true><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.5-3.5a5.8 5.8 0 0 1-7.6 7.6l-6.8 6.8a2.1 2.1 0 0 1-3-3l6.8-6.8a5.8 5.8 0 0 1 7.6-7.6z">'),Nr=a("<span class=os-sidebar-label>skills设置"),Kr=a('<svg class=os-sidebar-icon viewBox="0 0 24 24"aria-hidden=true><rect x=3 y=4 width=18 height=6 rx=1.5></rect><rect x=3 y=14 width=18 height=6 rx=1.5></rect><path d="M7 7h.01"></path><path d="M7 17h.01">'),Tr=a("<span class=os-sidebar-label>资源配置"),Wr=a("<p class=os-client-empty-hint>登录后同步个人空间"),Hr=a("<div class=os-client-task-list-scroll>"),Br=a("<button type=button class=os-client-task-more data-action=recent-expand>展开更多"),qr=a("<button type=button class=os-client-task-more data-action=recent-collapse>收起"),Ur=a("<p class=os-client-empty-hint>登录后查看未分类会话"),Vr=a("<button type=button class=os-client-shared-cases-more data-action=shared-cases-expand>展开更多"),Xr=a("<button type=button class=os-client-shared-cases-more data-action=shared-cases-collapse>收起"),Gr=a("<div class=os-client-shared-cases-list>"),Qr=a('<section class="os-sidebar-group os-client-shared-cases"data-section=shared-cases><button type=button class=os-client-shared-cases-toggle data-action=shared-cases-toggle><span class=os-client-shared-cases-chevron aria-hidden=true></span><span>'),Zr=a('<svg class=os-sidebar-icon viewBox="0 0 24 24"aria-hidden=true><path d="M7 4h7l3 3v13H7z"></path><path d="M14 4v4h4"></path><path d="M10 12h5"></path><path d="M10 16h5">'),Jr=a("<span class=os-sidebar-label>帮助"),Yr=a('<aside class=os-sidebar><div class=os-sidebar-brand></div><nav class=os-sidebar-nav><div class=os-sidebar-nav-scroll><div class="os-sidebar-group os-client-capability-group"></div><div class="os-sidebar-group os-client-list-section"><div class=os-client-section-title><span>项目</span><span class=os-client-section-actions><button type=button aria-label=新建项目>+</button></span></div><div class=os-client-project-list></div></div><div class="os-sidebar-group os-client-list-section"><div class=os-client-section-title><span>未分类</span><span class=os-client-section-actions><button type=button aria-label=新建会话>+</button></span></div><div class=os-client-task-list></div></div></div></nav><div class=os-sidebar-footer><div class=os-sidebar-footer-actions><button type=button class=os-sidebar-footer-action><svg class=os-sidebar-icon viewBox="0 0 24 24"aria-hidden=true><path d="M12 8.5a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7Z"></path><path d="M12 3.5v2"></path><path d="M12 18.5v2"></path><path d="m5.6 5.6 1.4 1.4"></path><path d="m17 17 1.4 1.4"></path><path d="M3.5 12h2"></path><path d="M18.5 12h2"></path><path d="m5.6 18.4 1.4-1.4"></path><path d="m17 7 1.4-1.4"></path></svg><span class=os-sidebar-label>设置'),es=a("<p class=os-client-empty-hint>暂无项目,点击 + 打开目录"),ts=a("<div class=os-client-project-sessions>"),ns=a("<div class=os-client-project-block><div class=os-client-project-row>"),mt=a("<span class=os-client-task-main><span>"),tn=a("<div class=os-client-session-row>"),rs=a("<p class=os-client-empty-hint>暂无未分类会话,点击 + 新建"),ss=a("<p class=os-client-empty-hint>暂无默认案例");const nt=4,nn=200,ft=4,rn=400;function pt(r){let u;const n=()=>r.openKey()===r.menuKey,p=l=>{l.preventDefault(),l.stopPropagation(),n()?r.setOpenKey(""):r.setOpenKey(r.menuKey)};return e(O,{modal:!1,preventScroll:!1,gutter:6,placement:"bottom-end",get open(){return n()},getAnchorRect:()=>u?.getBoundingClientRect(),onOpenChange:l=>{if(l){n()||r.setOpenKey(r.menuKey);return}Date.now()-r.openedAt()<rn||r.setOpenKey("")},get children(){return[(()=>{var l=Mr();return l.$$click=p,l.$$pointerup=c=>{c.preventDefault(),c.stopPropagation()},l.$$pointerdown=c=>{c.preventDefault(),c.stopPropagation()},Ke(c=>{u=c},l),X(c=>{var S=r.triggerClass,x=r.label,v=n();return S!==c.e&&Hn(l,c.e=S),x!==c.t&&F(l,"aria-label",c.t=x),v!==c.a&&F(l,"aria-expanded",c.a=v),c},{e:void 0,t:void 0,a:void 0}),l})(),e(O.Portal,{get children(){return e(O.Content,{class:Dr,onOpenAutoFocus:l=>l.preventDefault(),onFocusOutside:l=>l.preventDefault(),onCloseAutoFocus:l=>l.preventDefault(),onInteractOutside:l=>{const c=l.target;if(c instanceof Node&&u?.contains(c)){l.preventDefault();return}Date.now()-r.openedAt()<rn&&l.preventDefault()},onPointerDown:l=>l.stopPropagation(),get children(){return r.children}})}})]}})}function is(){const r=it(),u=Sn(),n=Te(),p=St(),l=xn(),c=Cn(),S=Ln(),x=Pn(),v=xt(),[E,z]=K(0),L=$(()=>(E(),!!te())),V=()=>an(r.pathname),f=()=>(r.pathname,r.search,Cr()),j=()=>r.pathname.startsWith("/workspace/capabilities"),N=()=>r.pathname.startsWith("/workspace/skills"),y=()=>r.pathname.startsWith("/workspace/resources"),b=()=>r.pathname.startsWith("/workspace/docs"),[J,Y]=K(!0),[ne,de]=K(!1),[T,A]=K(!1),[M,se]=K("");let ie=0;const Se=t=>{t&&(ie=Date.now()),se(t)},ge=()=>ie;je(()=>{const t=()=>z(o=>o+1);window.addEventListener(Nt,t),window.addEventListener(rt,t),window.addEventListener(st,t),Ee(()=>{window.removeEventListener(Nt,t),window.removeEventListener(rt,t),window.removeEventListener(st,t)})});const Le=$(()=>Dn(p.projects.list(),te())),re=$(()=>Le().filter(t=>!ke(te(),t.worktree))),h=$(()=>Kt(te())?.trim()||""),I=$(()=>En(te())?.trim()||""),W=$(()=>{const t=/^\/workspace\/([^/]+)\/session/.exec(r.pathname)?.[1];return t?Ct(t)??"":""}),d=()=>/\/session\/([^/?#]+)/.exec(r.pathname)?.[1],C=t=>{const o=W();if(!o)return!1;const g=le(o);return le(t.worktree)===g?!0:t.sandboxes?.some(R=>le(R)===g)??!1};Z(()=>{if(!L())return;const t=[...re().flatMap(o=>[o.worktree,...o.sandboxes??[]]),h()].filter(o=>o.length>0);for(const o of t)Tt(()=>{l.project.loadSessions(o)})}),Z(()=>{const t=I();if(!t)return;const[o,g]=l.child(t,{bootstrap:!1});(o.limit??0)<nn&&g("limit",nn),Tt(()=>{l.project.loadSessions(t)})});const w=$(()=>{const t=h();if(!t)return[];const[o]=l.child(t,{bootstrap:!1});return lt(o,Date.now(),t).map(g=>({session:g,directory:t}))}),s=$(()=>T()?w():w().slice(0,ft)),P=$(()=>!T()&&w().length>ft),H=$(()=>T()&&w().length>ft),_e=$(()=>{const t=I();if(!t)return[];const[o]=l.child(t,{bootstrap:!1});return jn(lt(o,Date.now(),t).filter(g=>Wt(g.id)))}),Re=$(()=>J()?ne()?_e():_e().slice(0,nt):[]),We=$(()=>J()&&!ne()&&_e().length>nt),He=$(()=>J()&&ne()&&_e().length>nt);Z(()=>{const t=Mn(r.search),o=d(),g=t&&t!=="open"?t:Wt(o)?o:void 0;if((t||g)&&Y(!0),g&&_e().findIndex(B=>B.id===g)>=nt&&de(!0),!t||t==="open")return;const R=I();R&&o!==t&&u(fe(R,t),{replace:!0})});function we(t,o=!0){p.projects.open(t),x.projects.touchCode(t),o&&u(fe(t))}function Be(){v.show(()=>e(Zn,{onCreated:t=>we(t)}))}function qe(t){v.show(()=>e(xr,{project:t}))}function Ue(t){const o=t.worktree;if(ke(te(),o))return;const g=re(),R=le(o),k=g.findIndex(ee=>le(ee.worktree)===R);if(k===-1)return;const B=C(t);if(p.projects.close(o),B){const ee=g[k+1]??g[k-1];u(ee?fe(ee.worktree):"/workspace")}}function Ve(t){const[o,g]=l.child(t,{bootstrap:!1}),R=o.session.map(k=>k.id);Jn(t,R),l.session.setActive(t,void 0),g(ut(k=>{Yn(k,R),k.session=[]})),er(t,void 0),l.set("project",ut(k=>{const B=k.findIndex(ee=>le(ee.worktree)===le(t));B>=0&&k.splice(B,1)}))}async function Xe(t){if(ke(te(),t.worktree))return!1;const o=t.worktree,g=re(),R=le(o),k=g.findIndex(Q=>le(Q.worktree)===R),B=C(t);if(await c.client.experimental.session.list({directory:o,roots:!0,archived:!0,limit:1}).then(Q=>(Q.data??[]).some(Ae=>!!Ae.time?.archived)).catch(()=>!1))return ce({title:n.t("sidebar.project.delete.failed"),description:n.t("sidebar.project.delete.hasArchived")}),!1;const ue=dn(o)?.workspaceID?.trim();if(ue&&await c.client.experimental.workspace.remove({id:ue,directory:o}).catch(()=>{}),!await c.client.project.remove({directory:o}).then(Q=>Q.data).catch(Q=>(ce({title:n.t("sidebar.project.delete.failed"),description:tt(Q,n.t("common.requestFailed"))}),!1)))return!1;if(Ve(o),p.projects.close(o),B){const Q=k>=0?g[k+1]??g[k-1]:void 0;u(Q?fe(Q.worktree):"/workspace")}return!0}function Ge(t){const o=$(()=>Ne(t.project)),[g,R]=K(!1),[k,B]=K("checking");je(()=>{c.client.experimental.session.list({directory:t.project.worktree,roots:!0,archived:!0,limit:1}).then(ue=>{const xe=(ue.data??[]).some(Q=>!!Q.time?.archived);B(xe?"blocked":"ok")}).catch(()=>B("ok"))});const ee=async()=>{if(g()||k()!=="ok")return;R(!0);const ue=await Xe(t.project);R(!1),ue&&v.close()};return e(dt,{get title(){return n.t("sidebar.project.delete.title")},fit:!0,get children(){var ue=gt(),xe=ue.firstChild,Q=xe.nextSibling;return i(xe,(()=>{var Ae=be(()=>k()==="blocked");return()=>Ae()?n.t("sidebar.project.delete.hasArchived"):n.t("sidebar.project.delete.confirm",{name:o()})})()),i(Q,e(De,{variant:"ghost",size:"large",get disabled(){return g()},onClick:()=>v.close(),get children(){return n.t("common.cancel")}}),null),i(Q,e(_,{get when(){return k()!=="blocked"},get children(){return e(De,{variant:"primary",size:"large",get disabled(){return g()||k()==="checking"},onClick:()=>void ee(),get children(){return be(()=>!!g())()?n.t("sidebar.project.delete.busy"):n.t("sidebar.project.delete.button")}})}}),null),ue}})}function Qe(t){ke(te(),t.worktree)||v.show(()=>e(Ge,{project:t}))}async function Ze(){const t=S.openDirectoryPickerDialog;function o(g){if(Array.isArray(g)){g.forEach((R,k)=>we(R,k===0));return}g&&we(g)}if(t&&Xn({hasNativePicker:!!t,isLocalServer:!!x.isLocal(),hasPlatformSession:!!te()})){const g=await t({title:n.t("command.project.open"),multiple:!0});o(g);return}v.show(()=>e(Gn,{multiple:!0,onSelect:o,onCreateFolder:Be}),()=>o(null))}function Pe(){ct({navigate:u,action:{type:"install",resourceId:"__project__"},isLoggedIn:L()})&&Ze()}function Je(){if(!ct({navigate:u,action:{type:"install",resourceId:"__task__"},isLoggedIn:L()}))return;const t=Kt(te());t&&(Ht(wt(t)),we(t))}function Ye(t){ct({navigate:u,action:{type:"install",resourceId:"__task__"},isLoggedIn:L()})&&(Ht(wt(t)),we(t))}function Ie(t){const o=te();return Bn(o,t)?!1:cn(o,t)}function pn(t){if(!Ie(t)){ce({title:n.t("dialog.project.upload.failed"),description:n.t("dialog.project.upload.destinationHint"),variant:"error"});return}ln(()=>import("./dialog-project-upload-DpW39zJX.js"),__vite__mapDeps([0,1,2])).then(o=>{v.show(()=>e(o.DialogProjectUpload,{directory:t}))})}function Pt(t){if(d()!==t.id)return;const o=W();if(!o){u("/workspace");return}u(fe(o))}function ot(t,o){const[,g]=l.child(t,{bootstrap:!1});g(ut(R=>{const k=Qn.search(R.session,o,ee=>ee.id);if(!k.found)return;const B=R.session[k.index];R.session.splice(k.index,1),B&&!B.parentID&&(R.sessionTotal=Math.max(0,R.sessionTotal-1))}))}async function Dt(t){ot(t.directory,t.id),Pt(t),await c.client.session.update({directory:t.directory,sessionID:t.id,time:{archived:Date.now()}}).then(()=>!0).catch(g=>(ce({title:n.t("common.archive"),description:tt(g,n.t("common.requestFailed"))}),!1))||l.project.loadSessions(t.directory)}async function vn(t){return await c.client.session.delete({sessionID:t.id,directory:t.directory}).then(g=>g.data).catch(g=>(ce({title:n.t("session.delete.failed.title"),description:tt(g,n.t("common.requestFailed"))}),!1))?(ot(t.directory,t.id),Pt(t),!0):!1}function Et(t){const o=at(t);v.show(()=>e(dt,{get title(){return n.t("session.delete.title")},fit:!0,get children(){var g=gt(),R=g.firstChild,k=R.nextSibling;return i(R,()=>n.t("session.delete.confirm",{name:o})),i(k,e(De,{variant:"ghost",size:"large",onClick:()=>v.close(),get children(){return n.t("common.cancel")}}),null),i(k,e(De,{variant:"primary",size:"large",onClick:()=>{vn(t).then(B=>{B&&v.close()})},get children(){return n.t("session.delete.button")}}),null),g}}))}function jt(t){const[o]=l.child(t,{bootstrap:!1});return lt(o,Date.now(),t).map(g=>({session:g,directory:t}))}function at(t){const[o]=l.child(t.directory,{bootstrap:!1});return qn({title:t.title,fallbackText:Un(t.id,o.message,o.part),emptyLabel:n.t("command.session.new")})}function Mt(t,o){if(le(t.directory)===le(o))return;if(!ke(te(),t.directory)){ce({title:n.t("session.move.failed.title"),description:n.t("session.move.failed.onlyDefault")});return}if(ke(te(),o)){ce({title:n.t("session.move.failed.title"),description:n.t("session.move.failed.onlyDefault")});return}const g=Ne({worktree:o});v.show(()=>e(dt,{get title(){return n.t("session.move.confirm.title")},fit:!0,get children(){var R=gt(),k=R.firstChild,B=k.nextSibling;return i(k,()=>n.t("session.move.confirm.description",{project:g})),i(B,e(De,{variant:"ghost",size:"large",onClick:()=>v.close(),get children(){return n.t("common.cancel")}}),null),i(B,e(De,{variant:"primary",size:"large",onClick:()=>{bn(t,o).then(ee=>{ee&&v.close()})},get children(){return n.t("session.move.confirm.action")}}),null),R}}))}async function bn(t,o){const g=t.directory;return await c.client.session.update({directory:t.directory,sessionID:t.id,moveTo:o}).then(()=>!0).catch(k=>(ce({title:n.t("session.move.failed.title"),description:tt(k,n.t("common.requestFailed"))}),!1))?(ot(g,t.id),p.projects.open(o),x.projects.touchCode(o),l.project.loadSessions(g),l.project.loadSessions(o),d()===t.id?(u(fe(o,t.id)),!0):(ce({title:n.t("session.move.success.title"),description:n.t("session.move.success.description",{project:Ne({worktree:o})})}),!0)):!1}function wn(){v.show(()=>e(Vn,{tab:"account"}))}return(()=>{var t=Yr(),o=t.firstChild,g=o.nextSibling,R=g.firstChild,k=R.firstChild,B=k.nextSibling,ee=B.firstChild,ue=ee.firstChild,xe=ue.nextSibling,Q=xe.firstChild,Ae=ee.nextSibling,Rt=B.nextSibling,It=Rt.firstChild,$n=It.firstChild,_n=$n.nextSibling,At=_n.firstChild,yn=It.nextSibling,kn=g.nextSibling,Ot=kn.firstChild,zt=Ot.firstChild;return Rn(o,In(()=>S.platform==="desktop"?{"data-tauri-drag-region":!0}:{}),!1,!0),i(o,e(pe,{get href(){return zn(S.platform)},class:"os-sidebar-brand-link",get children(){return[e(An,{class:"os-sidebar-brand-mark"}),(()=>{var D=Rr();return i(D,()=>On(S.platform)),D})()]}})),i(k,e(pe,{get href(){return Fn()},class:"os-sidebar-link",get classList(){return{"is-active":V()}},get children(){return[Ir(),Ar()]}}),null),i(k,e(pe,{get href(){return f()},class:"os-sidebar-link",get classList(){return{"is-active":j()}},get children(){return[Or(),zr()]}}),null),i(k,e(pe,{get href(){return Nn()},class:"os-sidebar-link",get classList(){return{"is-active":N()}},get children(){return[Fr(),Nr()]}}),null),i(k,e(pe,{get href(){return Kn()},class:"os-sidebar-link",get classList(){return{"is-active":y()}},get children(){return[Kr(),Tr()]}}),null),Q.$$click=Pe,i(Ae,e(_,{get when(){return be(()=>!!L())()&&re().length>0},get fallback(){return e(_,{get when(){return L()},get children(){return es()}})},get children(){return e(Ce,{get each(){return re().map(D=>D.worktree)},children:D=>{const G=()=>re().find(oe=>oe.worktree===D);return e(_,{get when(){return G()},children:oe=>(()=>{var ae=ns(),q=ae.firstChild;return i(q,e(pe,{get href(){return fe(D)},class:"os-client-project-item",get classList(){return{"is-active":C(oe())}},onClick:m=>{m.metaKey||m.ctrlKey||m.shiftKey||m.altKey||(m.preventDefault(),we(D))},get children(){return Ne(oe())}}),null),i(q,e(pt,{menuKey:`project:${D}`,openKey:M,setOpenKey:Se,openedAt:ge,triggerClass:"os-client-project-more",get label(){return n.t("common.moreOptions")},get children(){return[e(O.Item,{"data-action":"project-new-session",class:"os-client-session-menu-item",onSelect:()=>Ye(D),get children(){return[e(he,{name:"new-session",size:"small",class:"os-client-session-menu-icon"}),e(O.ItemLabel,{class:"os-client-session-menu-label",get children(){return n.t("command.session.new")}})]}}),e(_,{get when(){return Ie(D)},get children(){return e(O.Item,{"data-action":"project-upload",class:"os-client-session-menu-item",onSelect:()=>pn(D),get children(){return[e(he,{name:"cloud-upload",size:"small",class:"os-client-session-menu-icon"}),e(O.ItemLabel,{class:"os-client-session-menu-label",get children(){return n.t("command.project.upload")}})]}})}}),e(O.Item,{"data-action":"project-rename",class:"os-client-session-menu-item",onSelect:()=>{const m=G();m&&qe(m)},get children(){return[e(he,{name:"edit",size:"small",class:"os-client-session-menu-icon"}),e(O.ItemLabel,{class:"os-client-session-menu-label",get children(){return n.t("common.rename")}})]}}),e(O.Separator,{class:"os-client-session-menu-separator"}),e(O.Item,{"data-action":"project-remove-from-view",class:"os-client-session-menu-item",onSelect:()=>{const m=G();m&&Ue(m)},get children(){return[e(he,{name:"close-small",size:"small",class:"os-client-session-menu-icon"}),e(O.ItemLabel,{class:"os-client-session-menu-label",get children(){return n.t("sidebar.project.removeFromView")}})]}}),e(O.Item,{"data-action":"project-delete",class:"os-client-session-menu-item is-danger",onSelect:()=>{const m=G();m&&Qe(m)},get children(){return[e(he,{name:"trash",size:"small",class:"os-client-session-menu-icon"}),e(O.ItemLabel,{class:"os-client-session-menu-label",get children(){return n.t("sidebar.project.delete")}})]}})]}}),null),i(ae,e(_,{get when(){return C(oe())},get children(){var m=ts();return i(m,e(Ce,{get each(){return jt(D).map(U=>U.session.id)},children:U=>{const $e=()=>jt(D).find(ye=>ye.session.id===U);return e(_,{get when(){return $e()},children:ye=>(()=>{var Oe=tn();return i(Oe,e(pe,{get href(){return fe(ye().directory,U)},class:"os-client-task-item",get classList(){return{"is-active":d()===U}},"data-session-id":U,get children(){var me=mt(),et=me.firstChild;return i(et,()=>at(ye().session)),me}}),null),i(Oe,e(pt,{menuKey:`session:${U}`,openKey:M,setOpenKey:Se,openedAt:ge,triggerClass:"os-client-session-more",get label(){return n.t("common.moreOptions")},get children(){return e(en,{get currentDirectory(){return ye().directory},projects:re,onArchive:()=>void Dt(ye().session),onDelete:()=>Et(ye().session),onMove:me=>Mt(ye().session,me),onNewProject:Pe})}}),null),X(me=>{var et=d()===U,Ft=M()===`session:${U}`;return et!==me.e&&Oe.classList.toggle("is-active",me.e=et),Ft!==me.t&&Oe.classList.toggle("is-menu-open",me.t=Ft),me},{e:void 0,t:void 0}),Oe})()})}})),m}}),null),X(m=>{var U=!!C(oe()),$e=M()===`project:${D}`;return U!==m.e&&q.classList.toggle("is-active",m.e=U),$e!==m.t&&q.classList.toggle("is-menu-open",m.t=$e),m},{e:void 0,t:void 0}),ae})()})}})}})),i(B,e(_,{get when(){return!L()},get children(){return Wr()}}),null),At.$$click=Je,i(yn,e(_,{get when(){return be(()=>!!L())()&&w().length>0},get fallback(){return e(_,{get when(){return L()},get children(){return rs()}})},get children(){return[(()=>{var D=Hr();return i(D,e(Ce,{get each(){return s().map(G=>G.session.id)},children:G=>{const oe=()=>s().find(ae=>ae.session.id===G);return e(_,{get when(){return oe()},children:ae=>(()=>{var q=tn();return i(q,e(pe,{get href(){return fe(ae().directory,G)},class:"os-client-task-item",get classList(){return{"is-active":d()===G}},"data-session-id":G,get children(){var m=mt(),U=m.firstChild;return i(U,()=>at(ae().session)),m}}),null),i(q,e(pt,{menuKey:`recent:${G}`,openKey:M,setOpenKey:Se,openedAt:ge,triggerClass:"os-client-session-more",get label(){return n.t("common.moreOptions")},get children(){return e(en,{get currentDirectory(){return ae().directory},projects:re,onArchive:()=>void Dt(ae().session),onDelete:()=>Et(ae().session),onMove:m=>Mt(ae().session,m),onNewProject:Pe})}}),null),X(m=>{var U=d()===G,$e=M()===`recent:${G}`;return U!==m.e&&q.classList.toggle("is-active",m.e=U),$e!==m.t&&q.classList.toggle("is-menu-open",m.t=$e),m},{e:void 0,t:void 0}),q})()})}})),X(()=>F(D,"data-expanded",T()?"true":"false")),D})(),e(_,{get when(){return P()},get children(){var D=Br();return D.$$click=()=>A(!0),D}}),e(_,{get when(){return H()},get children(){var D=qr();return D.$$click=()=>A(!1),D}})]}})),i(Rt,e(_,{get when(){return!L()},get children(){return Ur()}}),null),i(g,e(_,{get when(){return I()},get children(){var D=Qr(),G=D.firstChild,oe=G.firstChild,ae=oe.nextSibling;return G.$$click=()=>Y(q=>!q),i(ae,()=>n.t("sidebar.section.sharedCases")),i(D,e(_,{get when(){return J()},get children(){var q=Gr();return i(q,e(_,{get when(){return Re().length>0},get fallback(){return ss()},get children(){return e(Ce,{get each(){return Re()},children:m=>e(pe,{get href(){return fe(I(),m.id)},class:"os-client-task-item",get classList(){return{"is-active":d()===m.id}},get"data-session-id"(){return m.id},get children(){var U=mt(),$e=U.firstChild;return i($e,()=>Tn(m.title)??m.id),U}})})}}),null),i(q,e(_,{get when(){return We()},get children(){var m=Vr();return m.$$click=()=>de(!0),m}}),null),i(q,e(_,{get when(){return He()},get children(){var m=Xr();return m.$$click=()=>de(!1),m}}),null),q}}),null),X(q=>{var m=J(),U=J()?"true":"false";return m!==q.e&&F(G,"aria-expanded",q.e=m),U!==q.t&&F(oe,"data-open",q.t=U),q},{e:void 0,t:void 0}),D}}),null),i(Ot,e(pe,{get href(){return Wn()},class:"os-sidebar-footer-action",get classList(){return{"is-active":b()}},get children(){return[Zr(),Jr()]}}),zt),zt.$$click=wn,X(D=>{var G=!L(),oe=!L();return G!==D.e&&Q.classList.toggle("is-muted",D.e=G),oe!==D.t&&At.classList.toggle("is-muted",D.t=oe),D},{e:void 0,t:void 0}),t})()}Me(["pointerdown","pointerup","click"]);var os=a('<pre class="os-client-right-files-preview whitespace-pre-wrap break-all p-3 text-12-regular m-0">'),as=a("<button type=button class=os-client-right-files-back>← 返回目录"),ls=a("<span class=os-client-right-files-title>"),cs=a("<button type=button>"),ds=a("<div class=os-client-right-files-actions><button type=button>关闭"),us=a("<p class=os-client-right-files-hint>SSH 未连接,目录显示远端路径。请先在项目栏连接远端。"),hs=a("<p class=os-client-right-files-hint>正在加载目录…"),gs=a("<p class=os-client-right-files-hint>该目录为空"),ms=a("<div class=os-client-right-files-tree-scroll>"),fs=a("<div class=os-client-right-files-tree><p class=os-client-right-files-root>"),ps=a("<div class=os-client-right-files-unsaved>"),vs=a("<p class=os-client-right-files-hint>…"),bs=a("<textarea class=os-client-right-files-textarea autocapitalize=off autocomplete=off autocorrect=off>"),ws=a("<pre class=os-client-right-files-preview>"),$s=a("<div class=os-client-right-files-editor>"),_s=a("<section class=os-client-right-files><header class=os-client-right-files-header>"),ys=a("<strong>目录"),ks=a("<div class=os-client-right-files-actions><button type=button aria-label=刷新>刷新</button><button type=button>关闭"),Ss=a("<p class=os-client-right-files-hint>加载失败:"),xs=a("<p class=os-client-right-files-hint>");function Cs(r){const u=r.replace(/\\/g,"/").split("/");return u[u.length-1]||r}function Ls(r){const u=tr(),n=nr(),p=Te(),[l,c]=K("tree"),[S,x]=K(),[v,E]=K(""),[z,L]=K(!1),[V,f]=K(!1),[j,N]=K(0);let y;const b=$(()=>u.tree.state("")),J=$(()=>u.tree.children("")),Y=$(()=>rr(S())),ne=$(()=>{Bt(),qt();const d=n.directory;return d?Ut(d).kind==="ssh"&&!$t(d):!1}),de=$(()=>{Bt(),qt();const d=n.directory;return d&&Ut(d).kind==="ssh"?dn(d)?.remotePath?.trim()||"未连接远端":d}),T=(d=!1)=>{!n.directory||ne()||(d?u.tree.refresh(""):u.tree.list(""))};je(()=>{queueMicrotask(()=>T(!0))}),Z(()=>{if(!n.directory||l()!=="tree"||ne())return;const C=b();C?.loading||C?.loaded||C?.error||u.tree.list("")}),Z(_t(()=>$t(n.directory)??"",()=>{l()==="tree"&&T(!0)}));const A=$(()=>{const d=S();if(d)return u.get(d)}),M=$(()=>A()?.content?.content??""),se=$(()=>!!A()?.loaded),ie=$(()=>!!A()?.loading),Se=$(()=>A()?.error),ge=$(()=>{const d=A();return!(!d?.loaded||d.content?.type!=="text"||d.content.encoding==="base64"||Vt(S()))}),Le=$(()=>ge()&&Y()==="text"),re=$(()=>{if(!(!ge()||Le()))return{draft:v,setDraft:d=>{E(d),L(!0)},textareaRef:d=>{y=d},class:"os-client-right-files-textarea"}}),h=d=>(()=>{var C=os();return i(C,d),C})();Z(()=>{const d=S();d&&u.load(d)}),Z(_t(S,()=>{L(!1),E(se()?M():""),N(0)},{defer:!1})),Z(()=>{!se()||z()||E(M())});const I=async()=>{const d=S();if(!(!d||V()||!z()||!ge())){f(!0);try{await u.write(d,v()),L(!1),Xt(d)&&N(C=>C+1)}finally{f(!1)}}};Z(()=>{if(typeof window>"u")return;sr(window,"keydown",C=>{!(C.metaKey||C.ctrlKey)||C.key.toLowerCase()!=="s"||!y?.contains(document.activeElement)&&document.activeElement!==y||(C.preventDefault(),I())})});const W=d=>{x(d),c("editor")};return(()=>{var d=_s(),C=d.firstChild;return i(C,e(_,{get when(){return l()==="editor"},get fallback(){return[ys(),(()=>{var w=ks(),s=w.firstChild,P=s.nextSibling;return s.$$click=()=>{T(!0),u.tree.refreshAll()},yt(P,"click",r.onClose,!0),w})()]},get children(){return[(()=>{var w=as();return w.$$click=()=>c("tree"),w})(),(()=>{var w=ls();return i(w,(()=>{var s=be(()=>!!S());return()=>s()?Cs(S()):""})()),X(()=>F(w,"title",S())),w})(),(()=>{var w=ds(),s=w.firstChild;return i(w,e(_,{get when(){return ge()},get children(){var P=cs();return P.$$click=()=>void I(),i(P,(()=>{var H=be(()=>!!V());return()=>H()?p.t("common.saving"):p.t("common.save")})()),X(()=>P.disabled=!z()||V()),P}}),s),yt(s,"click",r.onClose,!0),w})()]}})),i(d,e(_,{get when(){return l()==="tree"},get children(){var w=fs(),s=w.firstChild;return i(s,de),i(w,e(_,{get when(){return ne()},get children(){return us()}}),null),i(w,e(_,{get when(){return be(()=>!!(!ne()&&b()?.loading))()&&J().length===0},get children(){return hs()}}),null),i(w,e(_,{get when(){return be(()=>!ne())()&&b()?.error},children:P=>(()=>{var H=Ss();return H.firstChild,i(H,P,null),H})()}),null),i(w,e(_,{get when(){return be(()=>!!(!ne()&&b()?.loaded&&J().length===0))()&&!b()?.error},get children(){return gs()}}),null),i(w,e(_,{get when(){return!ne()},get children(){var P=ms();return i(P,e(ir,{path:"",class:"os-client-right-file-tree",nodeClass:"os-client-right-file-node",get active(){return S()},draggable:!1,onFileClick:H=>W(H.path)})),P}}),null),X(()=>F(s,"title",de())),w}}),null),i(d,e(_,{get when(){return l()==="editor"},get children(){var w=$s();return i(w,e(_,{get when(){return z()},get children(){var s=ps();return i(s,()=>p.t("session.file.unsaved")),s}}),null),i(w,e(_,{get when(){return be(()=>!!ie())()&&!se()},get children(){var s=vs(),P=s.firstChild;return i(s,()=>p.t("common.loading"),P),s}}),null),i(w,e(_,{get when(){return Se()},children:s=>(()=>{var P=xs();return i(P,s),P})()}),null),i(w,e(_,{get when(){return se()},get children(){return e(un,{get children(){return[e(ve,{get when(){return Xt(S())},get children(){return e(or,{path:S,contents:M,renderSource:h,get editSource(){return re()},previewRevision:j,chrome:"workbench"})}}),e(ve,{get when(){return Y()==="markdown"},get children(){return e(ar,{path:S,contents:M,renderSource:h,get editSource(){return re()},chrome:"workbench"})}}),e(ve,{get when(){return Y()==="csv"},get children(){return e(lr,{path:S,contents:M,renderSource:h,get editSource(){return re()},chrome:"workbench"})}}),e(ve,{get when(){return Vt(S())},get children(){return e(cr,{path:S,chrome:"workbench"})}}),e(ve,{get when(){return ur(S())},get children(){return e(dr,{path:S,contents:M,renderSource:h,get editSource(){return re()},chrome:"workbench"})}}),e(ve,{get when(){return Le()},get children(){var s=bs();s.$$input=H=>{E(H.currentTarget.value),L(!0)};var P=y;return typeof P=="function"?Ke(P,s):y=s,F(s,"spellcheck",!1),X(()=>s.value=v()),s}}),e(ve,{when:!0,get children(){var s=ws();return i(s,()=>M()||"(二进制或不支持预览的文件)"),s}})]}})}}),null),w}}),null),X(()=>F(d,"data-view",l())),d})()}Me(["click","input"]);var Ps=a('<svg viewBox="0 0 12 12"width=12 height=12 fill=currentColor aria-hidden=true><circle cx=6 cy=6 r=3 class=os-client-right-todo-pulse>'),Ds=a("<ul class=os-client-right-todo-list>"),Es=a("<span class=os-client-right-todo-text>"),js=a('<li class="os-client-right-todo-item is-clickable"role=button tabindex=0>'),Ms=a("<p class=os-client-right-todo-progress>已完成 <!> / "),Rs=a("<section class=os-client-right-todo><header class=os-client-right-todo-header><strong></strong><button type=button>关闭"),Is=a("<p class=os-client-right-todo-empty>暂无场景工作流。从能力中心场景创建任务后,步骤会显示在这里。"),As=a("<span class=os-client-right-todo-stop> · ");function Os(r){return r==="completed"?"completed":r==="in_progress"?"in_progress":r==="failed"?"cancelled":"pending"}function zs(r){if(r==="in_progress")return Ps()}function Fs(r,u){return u?"confirm":r==="pending"?"edit":r==="completed"||r==="failed"||r==="in_progress"?"rerun":"view"}function Ns(r){return(()=>{var u=Ds();return i(u,e(Ce,{get each(){return r.items},children:n=>(()=>{var p=js();return p.$$keydown=l=>{(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),r.onOpen(n.index))},p.$$click=()=>r.onOpen(n.index),i(p,e(hr,{readOnly:!0,get checked(){return n.status==="completed"},get indeterminate(){return n.status==="in_progress"},get icon(){return zs(n.status)},get children(){var l=Es();return i(l,()=>n.content),X(c=>{var S=n.status==="completed"||n.status==="cancelled",x=n.status==="pending";return S!==c.e&&l.classList.toggle("is-done",c.e=S),x!==c.t&&l.classList.toggle("is-pending",c.t=x),c},{e:void 0,t:void 0}),l}})),X(()=>F(p,"data-state",n.status)),p})()})),u})()}function Ks(r){const u=xt();hn();const n=$(()=>kt(r.directoryKey,r.sessionID)??Gt(r.directoryKey)),p=$(()=>{const x=n();return x?.steps.length?x.steps.map((v,E)=>({content:v.name,status:Os(v.status),index:E})):[]}),l=$(()=>p().filter(x=>x.status==="completed").length),c=$(()=>n()?.title||"待办"),S=x=>{const v=kt(r.directoryKey,r.sessionID)??Gt(r.directoryKey);if(!v)return;const E=v.steps[x];if(!E)return;const z=gr(v,x),L=E.status==="pending"&&v.phase==="awaiting_confirm"&&v.currentIndex===x,V=Fs(E.status,L),f=E.status==="in_progress",j=V==="confirm"?"确认下一步参数":V==="edit"?"编辑步骤参数":f?"终止并重新执行":V==="rerun"?"从此步重新执行":"查看步骤参数",N=r.directoryKey;u.show(()=>e(fr,{title:j,get stepName(){return E.name},fields:z,get values(){return v.values},mode:V,get firstDecision(){return L&&v.confirmMode==="unset"},aborting:f,rerunActionLabel:f?"终止并重新执行":"从此步重新执行",get reason(){return V==="confirm"?`下一步「${E.name}」可按需调整参数,确认后将自动发送并执行。`:V==="edit"?`可修改「${E.name}」的预填参数,保存后在执行该步时生效。`:f?`将停止自动续跑并从「${E.name}」重发。已提交的外部作业需自行取消;可先修改参数再确认。`:V==="rerun"?`可修改「${E.name}」参数。确认后将从该步重新执行,并重置后续步骤状态。`:`「${E.name}」当前为只读,展示该步相关参数。`},canContinue:L,onSave:y=>{Qt(N,y),ce({title:"已保存步骤参数"})},onConfirm:y=>{const b=Zt(N,y);b&&(ht(N,b),ce({title:y.mode==="auto"?`连续执行:${b.stepName}`:`继续执行:${b.stepName}`}))},onSaveAndContinue:y=>{Qt(N,y.values);const b=Zt(N,y);b&&(ht(N,b),ce({title:y.mode==="auto"?`连续执行:${b.stepName}`:`继续执行:${b.stepName}`}))},onRerun:y=>{const b=mr(N,{stepIndex:x,values:y});b&&(ht(N,b),ce({title:f?`已终止并从该步重跑:${b.stepName}`:`已从该步重新执行:${b.stepName}`}))}}))};return(()=>{var x=Rs(),v=x.firstChild,E=v.firstChild,z=E.nextSibling;return i(E,c),yt(z,"click",r.onClose,!0),i(x,e(_,{get when(){return p().length>0},get fallback(){return Is()},get children(){return[(()=>{var L=Ms(),V=L.firstChild,f=V.nextSibling;return f.nextSibling,i(L,l,f),i(L,()=>p().length,null),i(L,e(_,{get when(){return n()?.stopReason},children:j=>(()=>{var N=As();return N.firstChild,i(N,j,null),N})()}),null),L})(),e(Ns,{get items(){return p()},onOpen:S})]}}),null),X(()=>F(E,"title",c())),x})()}Me(["click","keydown"]);var Ts=a("<div class=os-client-right-add-dropdown role=menu>"),Ws=a('<aside class="os-client-right-sidebar os-client-right-dock"><div class=os-client-right-toolbar><div class=os-client-right-add-menu><button type=button class=os-client-right-add-button aria-label=打开页面><span class=os-client-right-add-icon aria-hidden=true></span></button></div></div><div class=os-client-right-dock-body>'),Hs=a("<button type=button role=menuitem>"),Bs=a("<section class=os-client-right-empty><strong>尚未打开页面</strong><p>点击 + 打开目录、可视化组件或待办;在会话中可从目录点文件到右侧编辑。"),qs=a("<section class=os-client-right-pane-stub><header><strong>可视化组件</strong><button type=button>关闭</button></header><p>请从「目录」中打开 `.html` / `.md` / `.csv` / `.pdf` / `.xyz` 文件查看可视化预览;后续版本将提供独立可视化入口。"),Us=a("<section class=os-client-right-pane-stub><header><strong>目录</strong><button type=button>关闭</button></header><p>请先打开项目或任务后再查看目录。"),Vs=a("<section class=os-client-right-pane-stub><header><strong>待办</strong><button type=button>关闭</button></header><p>请先打开项目或任务后再查看待办。");const Xs=[{id:"directory",label:"目录"},{id:"viz",label:"可视化组件"},{id:"todo",label:"待办"}];function Gs(){const r=it(),u=fn(),[n,p]=K(!1),[l,c]=K();let S;const x=$(()=>gn(r.pathname)),v=$(()=>{const y=x()?.dir;return y?Ct(y)??"":""}),E=$(()=>Lt(r.pathname)&&!!v()),z=$(()=>v()||u()),L=$(()=>x()?.dir||(z()?wt(z()):"")),V=$(()=>!!z()&&!!L()),f=$(()=>{hn();const y=x()?.dir;if(!y)return!1;const b=kt(y,x()?.id);return b?b.phase!=="done"&&b.phase!=="stopped":!1});je(()=>{const y=b=>{n()&&(S?.contains(b.target)||p(!1))};document.addEventListener("pointerdown",y),Ee(()=>document.removeEventListener("pointerdown",y))}),Z(y=>{const b=E();return b&&!y&&!l()&&c("directory"),b}),Z(()=>{if(!mn())return;const b=pr();b&&(c(b),p(!1))});const j=y=>{c(y),p(!1)},N=()=>{if(f()&&l()!=="todo"){c("todo");return}c(void 0)};return(()=>{var y=Ws(),b=y.firstChild,J=b.firstChild,Y=J.firstChild,ne=b.nextSibling,de=S;return typeof de=="function"?Ke(de,b):S=b,Y.$$click=()=>p(T=>!T),i(J,e(_,{get when(){return n()},get children(){var T=Ts();return i(T,e(Ce,{get each(){return[...Xs]},children:A=>(()=>{var M=Hs();return M.$$click=()=>j(A.id),i(M,()=>A.label),M})()})),T}}),null),i(ne,e(_,{get when(){return l()},get fallback(){return Bs()},children:T=>e(un,{get children(){return[e(ve,{get when(){return T()==="directory"},get children(){return e(_,{get when(){return V()},get fallback(){return(()=>{var A=Us(),M=A.firstChild,se=M.firstChild,ie=se.nextSibling;return ie.$$click=N,A})()},get children(){return e(vr,{params:()=>({dir:L(),id:x()?.id}),get children(){return e(br,{directory:()=>z(),get children(){return e(wr,{get children(){return e($r,{get children(){return e(Ls,{onClose:N})}})}})}})}})}})}}),e(ve,{get when(){return T()==="todo"},get children(){return e(_,{get when(){return x()?.dir},get fallback(){return(()=>{var A=Vs(),M=A.firstChild,se=M.firstChild,ie=se.nextSibling;return ie.$$click=()=>c(void 0),A})()},children:A=>e(Ks,{get directoryKey(){return A()},get sessionID(){return x()?.id},onClose:()=>c(void 0)})})}}),e(ve,{get when(){return T()==="viz"},get children(){var A=qs(),M=A.firstChild,se=M.firstChild,ie=se.nextSibling;return ie.$$click=N,A}})]}})})),X(T=>{var A=!!n(),M=n();return A!==T.e&&Y.classList.toggle("is-open",T.e=A),M!==T.t&&F(Y,"aria-expanded",T.t=M),T},{e:void 0,t:void 0}),y})()}Me(["click"]);var Qs=a('<button type=button class="os-client-panel-toggle os-client-terminal-toggle"aria-controls=terminal-panel>'),Zs=a('<svg class=os-client-pane-toggle-icon viewBox="0 0 24 24"aria-hidden=true><rect x=4.5 y=5.5 width=15 height=13 rx=1.35 fill=none stroke=currentColor stroke-width=1.4></rect><path d="M8 10.25l2.4 2.25L8 14.75M12.25 14.75H16"fill=none stroke=currentColor stroke-width=1.4 stroke-linecap=round stroke-linejoin=round>');function Js(){const r=it(),u=St(),n=Te(),p=_r(),l=xt(),[c,S]=K(te()),x=fn(),v=$(()=>an(r.pathname)||Lt(r.pathname)),E=$(()=>!v()||yr()&&!c()?!1:u.terminal.enabled()?!0:Jt(c())),z=$(()=>u.view("workbench").terminal.opened()),L=$(()=>{const f=gn(r.pathname);return f?.dir?Ct(f.dir)??"":x()});je(()=>{const f=()=>S(te());window.addEventListener(st,f),window.addEventListener(rt,f),window.addEventListener("storage",f),Ee(()=>{window.removeEventListener(st,f),window.removeEventListener(rt,f),window.removeEventListener("storage",f)})}),Z(()=>{E()&&Yt()}),Z(_t(v,(f,j)=>{j===void 0||f||!j||z()&&(u.view("workbench").terminal.close(),u.terminal.closeFullscreen())}));const V=()=>{if(Jt(c())||!u.terminal.enabled()){ln(()=>import("./dialog-terminal-unavailable-BNR9MrpX.js"),__vite__mapDeps([3,1,2])).then(f=>{l.show(()=>e(f.DialogTerminalUnavailable,{}))});return}if(!z()){const f=L();if(f&&!$t(f)&&!cn(c(),f))return;Yt()}u.view("workbench").terminal.toggle()};return e(_,{get when(){return E()},get children(){var f=Qs();return f.$$click=j=>j.preventDefault(),f.$$pointerdown=j=>{j.button===0&&(j.preventDefault(),V())},i(f,e(Ys,{get active(){return z()}})),X(j=>{var N=!!z(),y=n.t("command.terminal.toggle"),b=n.t("command.terminal.toggle"),J=z(),Y=`${n.t("command.terminal.toggle")} (${p.keybind("terminal.toggle")})`;return N!==j.e&&f.classList.toggle("is-active",j.e=N),y!==j.t&&F(f,"data-tooltip",j.t=y),b!==j.a&&F(f,"aria-label",j.a=b),J!==j.o&&F(f,"aria-expanded",j.o=J),Y!==j.i&&F(f,"title",j.i=Y),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),f}})}function Ys(r){return(()=>{var u=Zs(),n=u.firstChild,p=n.nextSibling;return X(()=>F(p,"opacity",r.active?1:.85)),u})()}Me(["pointerdown","click"]);var ei=a('<svg class=os-client-pane-toggle-icon viewBox="0 0 24 24"aria-hidden=true><rect class=os-client-pane-toggle-icon-main x=4.5 y=5.5 width=7.7 height=13 rx=1.35></rect><rect class=os-client-pane-toggle-icon-divider x=12.15 y=5.5 width=1.15 height=13 rx=0.55></rect><rect class=os-client-pane-toggle-icon-side x=14.05 y=5.5 width=5.45 height=13 rx=1.35>'),ti=a('<div class="os-client-pane-resizer os-client-pane-resizer-sidebar"role=separator aria-orientation=vertical aria-label=调整左边栏宽度 aria-valuemin=230 aria-valuemax=430 tabindex=0>'),ni=a('<div class="os-client-pane-resizer os-client-pane-resizer-tool"role=separator aria-orientation=vertical aria-label=调整右边栏宽度 aria-valuemin=200 aria-valuemax=1280 tabindex=0>'),ri=a("<main class=os-client-workbench><div class=os-client-workbench-chrome><button type=button class=os-client-panel-toggle></button><button type=button class=os-client-panel-toggle></button></div><section class=os-workspace-main></section><div class=os-client-terminal-dock>");const Fe=320,si=230,ii=430,oi=200,sn=1280;function on(r){return(()=>{var u=ei();return X(n=>{var p=r.side,l=r.open?"true":"false";return p!==n.e&&F(u,"data-side",n.e=p),l!==n.t&&F(u,"data-open",n.t=l),n},{e:void 0,t:void 0}),u})()}function vt(r){return Math.min(ii,Math.max(si,Math.round(r)))}function bt(r){const u=typeof window>"u"?sn:Math.min(sn,Math.floor(window.innerWidth*.85));return Math.min(u,Math.max(oi,Math.round(r)))}function ui(r){const u=St(),n=it(),[p,l]=K(!0),[c,S]=K(!1),[x,v]=K(Fe),[E,z]=K(Fe),[L,V]=K(!1),[f,j]=K(!1),[N,y]=K(0),[b,J]=K({left:0,right:0}),[Y,ne]=K(),[de,T]=K(),A=$(()=>u.view("workbench").terminal.opened()),M=()=>A(),se=$(()=>{if(!A())return 0;const h=N();return h>0?h:u.terminal.height()}),ie=()=>{const h=Y();if(!h)return;const I=h.querySelector(":scope > .os-workspace-main");if(!I)return;const W=h.getBoundingClientRect(),d=getComputedStyle(h),C=W.left+(parseFloat(d.borderLeftWidth)||0),w=W.right-(parseFloat(d.borderRightWidth)||0),s=I.getBoundingClientRect(),H=h.querySelector(":scope > .os-client-right-sidebar")?.getBoundingClientRect()??s;J({left:Math.max(0,Math.round(s.left-C)),right:Math.max(0,Math.round(w-H.right))})},Se=()=>{l(h=>(h||v(Fe),!h))},ge=()=>{S(h=>(h||(z(Fe),Lt(n.pathname)&&kr("directory")),!h))};Z(()=>{mn()&&(S(!0),z(I=>I>0?I:Fe))});const Le=h=>{if(h.button!==0)return;h.preventDefault();const I=h.clientX,W=x();V(!0);const d=w=>{v(vt(W+(w.clientX-I)))},C=()=>{V(!1),window.removeEventListener("pointermove",d),window.removeEventListener("pointerup",C),window.removeEventListener("pointercancel",C)};window.addEventListener("pointermove",d),window.addEventListener("pointerup",C),window.addEventListener("pointercancel",C)},re=h=>{if(h.button!==0)return;h.preventDefault();const I=h.clientX,W=E();j(!0);const d=w=>{z(bt(W+(I-w.clientX)))},C=()=>{j(!1),window.removeEventListener("pointermove",d),window.removeEventListener("pointerup",C),window.removeEventListener("pointercancel",C)};window.addEventListener("pointermove",d),window.addEventListener("pointerup",C),window.addEventListener("pointercancel",C)};return Z(()=>{const h=de();if(!h||typeof ResizeObserver>"u")return;const I=()=>{const d=h.querySelector("#terminal-panel");y(d?Math.round(d.getBoundingClientRect().height):0)};I();const W=new ResizeObserver(I);W.observe(h),Ee(()=>W.disconnect())}),Z(()=>{A()||y(0)}),je(()=>{u.view("workbench").terminal.close(),u.terminal.closeFullscreen(),y(0)}),Z(()=>{p(),c(),x(),E(),L(),f(),M(),Y(),ie();const h=requestAnimationFrame(ie);Ee(()=>cancelAnimationFrame(h))}),Z(()=>{const h=Y();if(!h||typeof ResizeObserver>"u")return;const I=new ResizeObserver(()=>ie());I.observe(h);const W=h.querySelector(":scope > .os-workspace-main");W&&I.observe(W);const d=h.querySelector(":scope > .os-client-right-sidebar");d&&I.observe(d),Ee(()=>I.disconnect())}),(()=>{var h=ri(),I=h.firstChild,W=I.firstChild,d=W.nextSibling,C=I.nextSibling,w=C.nextSibling;return Ke(ne,h),W.$$click=Se,i(W,e(on,{side:"left",get open(){return p()}})),i(I,e(Js,{}),d),d.$$click=ge,i(d,e(on,{side:"right",get open(){return c()}})),i(h,e(_,{get when(){return p()},get children(){return[e(is,{}),(()=>{var s=ti();return s.$$keydown=P=>{if(P.key==="ArrowLeft"){P.preventDefault(),v(H=>vt(H-16));return}P.key==="ArrowRight"&&(P.preventDefault(),v(H=>vt(H+16)))},s.$$pointerdown=Le,X(()=>F(s,"aria-valuenow",x())),s})()]}}),C),i(C,()=>r.children),i(h,e(_,{get when(){return c()},get children(){return[(()=>{var s=ni();return s.$$keydown=P=>{if(P.key==="ArrowLeft"){P.preventDefault(),z(H=>bt(H+16));return}P.key==="ArrowRight"&&(P.preventDefault(),z(H=>bt(H-16)))},s.$$pointerdown=re,X(()=>F(s,"aria-valuenow",E())),s})(),e(Gs,{})]}}),w),Ke(T,w),F(w,"id",Sr),X(s=>{var P=!!p(),H=!!c(),_e=!!L(),Re=!!f(),We=!!M(),He=!!(u.terminal.fullscreen()&&u.view("workbench").terminal.opened()),we=`${x()}px`,Be=`${E()}px`,qe=`${se()}px`,Ue=`${b().left}px`,Ve=`${b().right}px`,Xe=!!p(),Ge=p()?"关闭左侧栏":"打开左侧栏",Qe=p()?"关闭左侧栏":"打开左侧栏",Ze=!!c(),Pe=c()?"关闭右侧栏":"打开右侧栏",Je=c()?"关闭右侧栏":"打开右侧栏",Ye=!!M(),Ie=!M();return P!==s.e&&h.classList.toggle("has-left-sidebar",s.e=P),H!==s.t&&h.classList.toggle("has-right-sidebar",s.t=H),_e!==s.a&&h.classList.toggle("is-resizing-left",s.a=_e),Re!==s.o&&h.classList.toggle("is-resizing-right",s.o=Re),We!==s.i&&h.classList.toggle("has-terminal-open",s.i=We),He!==s.n&&h.classList.toggle("has-terminal-fullscreen",s.n=He),we!==s.s&&ze(h,"--os-client-sidebar-w",s.s=we),Be!==s.h&&ze(h,"--os-client-tool-w",s.h=Be),qe!==s.r&&ze(h,"--os-client-terminal-h",s.r=qe),Ue!==s.d&&ze(h,"--os-client-terminal-left",s.d=Ue),Ve!==s.l&&ze(h,"--os-client-terminal-right",s.l=Ve),Xe!==s.u&&W.classList.toggle("is-active",s.u=Xe),Ge!==s.c&&F(W,"data-tooltip",s.c=Ge),Qe!==s.w&&F(W,"aria-label",s.w=Qe),Ze!==s.m&&d.classList.toggle("is-active",s.m=Ze),Pe!==s.f&&F(d,"data-tooltip",s.f=Pe),Je!==s.y&&F(d,"aria-label",s.y=Je),Ye!==s.g&&w.classList.toggle("is-open",s.g=Ye),Ie!==s.p&&F(w,"aria-hidden",s.p=Ie),s},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0}),h})()}Me(["click","pointerdown","keydown"]);export{ui as WorkbenchShell};
|