@onescience/onecode-web 1.14.50-202609111023 → 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.
Files changed (61) hide show
  1. package/assets/{3Dmol-BSDiGUn_.js → 3Dmol-CXMSHzDq.js} +1 -1
  2. package/assets/{account-system-hIEBb0C2.js → account-system-fBThSwVu.js} +1 -1
  3. package/assets/{alert-04-2LFq8K76.js → alert-01-BMiyRUZE.js} +1 -1
  4. package/assets/{alert-05-CPxcVIW7.js → alert-02-CKd_g3Ny.js} +1 -1
  5. package/assets/{alert-01-DPxhzwi-.js → alert-04-Cd09aZv7.js} +1 -1
  6. package/assets/{alert-02-DJhkSwSf.js → alert-05-B2vITv_N.js} +1 -1
  7. package/assets/alert-06-DG6wEIAw.js +1 -0
  8. package/assets/alert-07-WLDHvPqx.js +1 -0
  9. package/assets/alert-08-KaJmglNl.js +1 -0
  10. package/assets/alert-10-B6OC0izi.js +1 -0
  11. package/assets/{bip-bop-03-C_9VodYJ.js → bip-bop-03-BZF_yfR7.js} +1 -1
  12. package/assets/{bip-bop-04-BQn96GQb.js → bip-bop-04-sdA3LsKV.js} +1 -1
  13. package/assets/{bip-bop-06-DUhyGJMm.js → bip-bop-06-DRWZMRXj.js} +1 -1
  14. package/assets/{bip-bop-08-CeqQ7KX5.js → bip-bop-08-CORLCKUc.js} +1 -1
  15. package/assets/bip-bop-09-5SEVpNuX.js +1 -0
  16. package/assets/center-C1vSBqI8.js +15 -0
  17. package/assets/{current-project-EXMEeabO.js → current-project-BS01LChF.js} +1 -1
  18. package/assets/{dialog-edit-project-B254pmyQ.js → dialog-edit-project-D7rJz0nW.js} +1 -1
  19. package/assets/{dialog-fork-emqfLkzP.js → dialog-fork-D20BG6HY.js} +1 -1
  20. package/assets/{dialog-project-upload-BZGUQDbp.js → dialog-project-upload-CXo0faUP.js} +1 -1
  21. package/assets/{dialog-select-file-WfqQO3bU.js → dialog-select-file-DPtRwBjd.js} +1 -1
  22. package/assets/{dialog-select-model-CfE_5plV.js → dialog-select-model-Drx7k1n7.js} +2 -2
  23. package/assets/{dialog-terminal-unavailable-UuRpjwl3.js → dialog-terminal-unavailable-BupywAXN.js} +1 -1
  24. package/assets/{docs-BCslr7DG.js → docs-Cz9HRotc.js} +1 -1
  25. package/assets/{ghostty-web-Du0THRA_.js → ghostty-web-D1otktCg.js} +1 -1
  26. package/assets/home-CmNBeixF.js +1 -0
  27. package/assets/{index-ZiVCMYWM.js → index-BekReNoJ.js} +318 -318
  28. package/assets/{index-DB3e1HKI.css → index-Dmepx8Py.css} +1 -1
  29. package/assets/{intro-DnZ9Pm-9.js → intro-DgRB-hoa.js} +1 -1
  30. package/assets/{nope-02-DL6ln2qg.js → nope-02-BYUZ5Yms.js} +1 -1
  31. package/assets/{nope-05-JTWgwaPY.js → nope-05-CwGll__G.js} +1 -1
  32. package/assets/{nope-08-D3SqkUDP.js → nope-08-CHDuZRJ3.js} +1 -1
  33. package/assets/{nope-11-Cv0_9ycO.js → nope-11-DmTnM4bX.js} +1 -1
  34. package/assets/nope-12-BSXSFZzZ.js +1 -0
  35. package/assets/{onescience-C1y0EEMS.js → onescience-D_th-7lD.js} +1 -1
  36. package/assets/{resources--qSz2GSE.js → resources-8zKg4hSj.js} +1 -1
  37. package/assets/{selection-DsQv8k7m.js → selection-CloKK1VU.js} +1 -1
  38. package/assets/shell-BKp97Y1O.js +2 -0
  39. package/assets/{skills-DJ3E_JVe.js → skills-D3zVS9ud.js} +1 -1
  40. package/assets/{staplebops-03-DRdnYT0k.js → staplebops-03-nzJ34dkk.js} +1 -1
  41. package/assets/{staplebops-04-DcOcJ3tj.js → staplebops-04-BijcCHcg.js} +1 -1
  42. package/assets/{staplebops-06-CTpShXu7.js → staplebops-06-C5Q4TE6b.js} +1 -1
  43. package/assets/{staplebops-07-PTbtZxG4.js → staplebops-07-BlZfyEdk.js} +1 -1
  44. package/assets/{status-popover-body-BNRC0XvS.js → status-popover-body-BMU9AfCe.js} +2 -2
  45. package/assets/{wizard-BYwkk6b3.js → wizard-DpJkxUbL.js} +1 -1
  46. package/assets/{yup-01-NPhEMsEc.js → yup-01-G_zmVKUR.js} +1 -1
  47. package/assets/{yup-03-X0CZGrmX.js → yup-03-CYQG2ZCs.js} +1 -1
  48. package/assets/{yup-04-D-ZsZfTw.js → yup-04-Dhp5C_ey.js} +1 -1
  49. package/assets/{yup-05-DCwi2-Fh.js → yup-05-DWZ2_9AQ.js} +1 -1
  50. package/assets/{zh-BsleMGSy.js → zh-C2NNWL5w.js} +1 -1
  51. package/index.html +11 -11
  52. package/package.json +2 -2
  53. package/assets/alert-06-n5VqpIlB.js +0 -1
  54. package/assets/alert-07-D_pzC6jc.js +0 -1
  55. package/assets/alert-08--NH6fthN.js +0 -1
  56. package/assets/alert-10-Dh0MXhIE.js +0 -1
  57. package/assets/bip-bop-09-Fmsvp3hr.js +0 -1
  58. package/assets/center-0pTDl_-z.js +0 -13
  59. package/assets/home-B6p0gQFa.js +0 -1
  60. package/assets/nope-12-C7hz-s_D.js +0 -1
  61. package/assets/shell-Be-Wd8nm.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-202609111023/favicon-96x96-v3.png" sizes="96x96" />
12
- <link rel="shortcut icon" href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111023/favicon-v3.ico" />
13
- <link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111023/apple-touch-icon-v3.png" />
14
- <link rel="manifest" href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111023/site.webmanifest" />
15
- <link rel="preload" href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111023/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-202609111023/assets/fonts/noto-sc-400.woff2" as="font" type="font/woff2" crossorigin />
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-202609111023/social-share.png" />
20
- <meta property="twitter:image" content="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111023/social-share.png" />
21
- <script id="oc-theme-preload-script" src="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111023/oc-theme-preload.js"></script>
22
- <script type="module" crossorigin src="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111023/assets/index-ZiVCMYWM.js"></script>
23
- <link rel="stylesheet" crossorigin href="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111023/assets/index-DB3e1HKI.css">
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-202609111023",
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-202609111023/index.html",
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-202609111023/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-202609111023/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-202609111023/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-202609111023/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-202609111023/assets/bip-bop-09-CxEgoAHQ.aac";export{e as default};
@@ -1,13 +0,0 @@
1
- import{b as je,n as A,c as r,i as t,S as g,W as D,bg as pa,t as s,bh as ha,a0 as st,bi as Ht,bj as ht,be as bt,z as vt,s as Ce,bf as ft,a4 as Kt,bk as Qt,a3 as Jt,a5 as Ae,L as $t,bl as ba,a2 as Tt,aB as Se,F as z,X as H,Y as T,aA as va,C as We,x as fa,a1 as $a,l as Ye,h as Xe,e as mt,f as Ge,m as ma,o as ce,bd as Ze,bm as Vt,bn as ya,bo as _a,bp as wa,bq as ka,br as Sa,bs as Ee,bt as Ca,bu as xa,bv as Ia,bw as Da,bx as La,by as Ta,bz as Oa,bA as Ea,bB as Aa,bC as Pa,bD as ja,bE as Ra,bF as Fa,bG as qa,bH as Ma,bI as Ua,g as yt,q as ot,bJ as Yt,bK as Ba,bL as za,bM as nt,ay as Xt,bN as Wa,bO as Na,bP as Ha,bQ as Ka,bR as Qa,bS as ct,bT as Ja,bU as Ot,bV as Va,bW as Et,b6 as Ya,bX as Be,bY as Xa,bZ as Ga,b_ as _t,b$ as Za,R as At,c0 as el}from"./index-ZiVCMYWM.js";import{m as tl,O as al,S as ll,s as nl}from"./onescience-C1y0EEMS.js";import{DialogProjectUpload as rl}from"./dialog-project-upload-BZGUQDbp.js";import{d as il,r as sl,s as Pt,w as ol}from"./selection-DsQv8k7m.js";import{s as cl,a as jt,b as dl,S as ul}from"./wizard-BYwkk6b3.js";import"./onescience-docs-CH5KBTI9.js";var gl=s("<p class=os-client-capability-upload-error role=alert>"),pl=s('<div class=os-client-capability-wizard-overlay role=dialog aria-modal=true aria-label=上传私有模型><button type=button class=os-client-capability-wizard-backdrop aria-label=关闭上传></button><form class=os-client-capability-upload-dialog><header class=os-client-capability-upload-head><div class=os-client-capability-upload-head-copy><div class=os-client-capability-upload-eyebrow>私有资产 · 模型</div><h2>上传私有模型</h2><p>填写与模型卡片一致的基础信息。保存后会出现在当前领域的 onemodel 列表,并标注为私有资产。</p></div><button type=button class=os-client-capability-upload-close aria-label=关闭>×</button></header><div class=os-client-capability-upload-notice role=note><strong>后台登记为 AI 原语</strong><p>AI 原语是后台知识资产体系,不对用户单独展示。上传后会自动登记,供 Agent 检索与编排时利用该模型知识。</p></div><div class=os-client-capability-upload-body><label class=os-client-capability-upload-field><span>名称<span class=os-client-capability-upload-required> *</span></span><small>显示在模型卡片标题</small><input maxlength=64 required placeholder="例如:团队内部微调 MACE"></label><label class=os-client-capability-upload-field><span>简介<span class=os-client-capability-upload-required> *</span></span><small>对应卡片正文,建议 1–2 句说明用途与适用场景</small><textarea maxlength=160 required rows=3 placeholder="例如:面向界面体系的内部势函数,可用于弛豫与短时程 MD 冒烟"></textarea></label><div class=os-client-capability-upload-grid data-cols=2><label class=os-client-capability-upload-field><span>标签<span class=os-client-capability-upload-required> *</span></span><small>逗号分隔,将显示为卡片标签;系统会自动加上「私有」</small><input required placeholder="例如:mlff, 界面, 内部模型"></label><label class=os-client-capability-upload-field><span>领域</span><small>跟随当前能力中心领域,卡片会出现在该领域下</small><input class=is-readonly readonly></label></div></div><footer class=os-client-capability-upload-actions><button type=button>取消</button><button type=submit data-primary=true>保存并发布');function hl(e){return e.split(/[,,、]/).map(l=>l.trim()).filter(Boolean)}function bl(e){const[l,n]=A(""),[i,a]=A(""),[o,d]=A(""),[c,u]=A(""),$=()=>{n(""),a(""),d(""),u("")},b=()=>{$(),e.onClose()},v=h=>{h.preventDefault();const m=l().trim(),f=i().trim(),E=hl(o());if(!m||!f||E.length===0){u("请填写名称、简介和至少一个标签,以便生成与现有模型卡片一致的展示信息。");return}const Q=ha({name:m,blurb:f,tags:E,domain:e.domain});e.onSaved({id:Q.id,name:Q.name}),b()};return r(g,{get when(){return e.open},get children(){var h=pl(),m=h.firstChild,f=m.nextSibling,E=f.firstChild,Q=E.firstChild,W=Q.nextSibling,de=E.nextSibling,p=de.nextSibling,C=p.firstChild,ue=C.firstChild,le=ue.nextSibling,Y=le.nextSibling,O=C.nextSibling,L=O.firstChild,N=L.nextSibling,y=N.nextSibling,P=O.nextSibling,x=P.firstChild,X=x.firstChild,ne=X.nextSibling,G=ne.nextSibling,I=x.nextSibling,Z=I.firstChild,oe=Z.nextSibling,xe=oe.nextSibling,me=p.nextSibling,Pe=me.firstChild;return m.$$click=b,f.addEventListener("submit",v),W.$$click=b,Y.$$input=re=>n(re.currentTarget.value),y.$$input=re=>a(re.currentTarget.value),G.$$input=re=>d(re.currentTarget.value),t(f,r(g,{get when(){return c()},get children(){var re=gl();return t(re,c),re}}),me),Pe.$$click=b,D(()=>Y.value=l()),D(()=>y.value=i()),D(()=>G.value=o()),D(()=>xe.value=pa(e.domain)),h}})}je(["click","input"]);function vl(e,l){return e.includes("modelscope download --model ")?e:`${e}
2
-
3
- 【从魔搭下载模型】
4
- ${tl(l,{kind:"local"})}`}function fl(e){const l=Ht(e);if(!l)throw new Error(`Unknown capability resource: ${e}`);if(!ht(l))throw new Error(`Capability resource is not installable: ${e}`);const n=ba(l);return{banner:l.install.banner,prompt:n?vl(l.install.prompt,n):l.install.prompt}}function Gt(e){if(!st({navigate:e.navigate,action:{type:"install",resourceId:e.resourceId},isLoggedIn:e.isLoggedIn}))return!1;const l=Ht(e.resourceId);if(!l||!ht(l))return!1;const{banner:n,prompt:i}=fl(e.resourceId),a=bt({path:e.path,recent:e.recent,lastCodeWorkspace:e.lastCodeWorkspace})||vt(Ce())||ft(document,e.path);if(!a)return!1;const o=Kt(a);return Qt(o,i),Jt(o),e.openProject?.(a),e.touchCode?.(a),Ae({variant:"success",title:n}),e.navigate($t(a)),!0}const $l={all:"全部",weather:"地球科学",materials:"材料化学",bio:"生命科学",fluid:"流体仿真"};function ml(e){switch(e){case"local_fs":return"工作区";case"http_dataset":return"公开网址";case"object_store":return"对象存储";case"remote_workspace":return"远端环境";case"onedata_ref":return"公开数据引用";default:return"其他"}}function yl(e){return e==="ready"?"可训练":"未就绪"}function Ve(e){switch(e){case"s3":return"Amazon S3";case"oss":return"阿里云 OSS";case"cos":return"腾讯云 COS"}}function Rt(e){const l=e.trim().toLowerCase();if(l.startsWith("http://")||l.startsWith("https://"))return"http_dataset";if(l.startsWith("s3://")||l.startsWith("oss://")||l.startsWith("cos://"))return"object_store"}function _l(e){switch(e){case"local_fs":return"服务器上可访问的绝对路径(账号工作区或其他有权限的目录)";case"http_dataset":return"公开可访问的网址";case"object_store":return"对象存储路径或地址";case"remote_workspace":return"已连接远端机器上的文件路径"}}function wl(e,l){const n=l.map(c=>c.replace(/\\/g,"/").trim()).filter(c=>c.startsWith("/")||/^[a-zA-Z]:\//.test(c));if(n.length>0&&n.length===l.length){if(n.length===1){const $=n[0];return[{kind:"file",label:$.split("/").filter(Boolean).at(-1)||$,uri:$}]}const c=kl(n),u=n.slice(0,50).map($=>({kind:"file",label:$,uri:$}));return c?[{kind:"folder",label:c,uri:c},...u]:u}const i=e.replace(/\/+$/,""),a=l.map(c=>c.replace(/\\/g,"/").replace(/^\/+/,"")).filter(Boolean);if(a.length===0)return[];if(a.length===1)return[{kind:"file",label:a[0],uri:`${i}/${a[0]}`}];const o=Zt(a),d=a.slice(0,50).map(c=>({kind:"file",label:c,uri:`${i}/${c}`}));return o?[{kind:"folder",label:o,uri:`${i}/${o}`},...d]:d}function kl(e){const l=Zt(e.map(n=>n.replace(/^\/+/,"")));return l?`/${l}`:void 0}function Zt(e){const l=e.map(a=>a.split("/").filter(Boolean)),n=l[0];if(!n||n.length===0)return;let i=0;for(;i<n.length-1;){const a=n[i];if(!l.every(o=>o[i]===a))break;i+=1}if(i!==0)return n.slice(0,i).join("/")}function dt(e){return!e||e<=0?"":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:e<1024*1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${(e/(1024*1024*1024)).toFixed(1)} GB`}const Sl=new Set(["csv","tsv","xlsx"]),Cl=new Set(["json","jsonl","ndjson"]),xl=new Set(["fasta","fa","fna","faa"]),Il=new Set(["fastq","fq"]),Dl=new Set(["pdb","cif","mmcif","mol","sdf","mol2","xyz","extxyz"]),Ll=new Set(["nc","nc4","cdf","netcdf","h5","hdf5","hdf","he5","npy","npz","mat"]);function ut(e,l){const n=(e.probe?.format_hint||l.format||"unknown").toLowerCase(),i=dt(e.probe?.logical_bytes),a={title:l.title,format:n,subtitle:[i,gt(n)].filter(Boolean).join(" · "),samplePath:e.sample_path};if(e.zarr_summary?.arrays?.length)return{...a,kind:"zarr",format:"zarr",subtitle:[i,"Zarr",`${e.zarr_summary.arrays.length} 个数组`].filter(Boolean).join(" · "),cards:e.zarr_summary.arrays.map(o=>({label:o.path||".",value:`${o.shape.join(" × ")} · ${o.dtype}${o.chunks?.length?` · chunks ${o.chunks.join("×")}`:""}`}))};if(e.directory_listing?.entries.length){const o=e.sample_path||e.directory_listing.sample_path,d=Tl(o||"");return{...a,kind:"directory",format:"directory",subtitle:[e.probe?.entry_count?`${e.probe.entry_count} 个文件`:"目录",i].filter(Boolean).join(" · "),entries:e.directory_listing.entries.map(c=>({path:c.path,is_dir:c.is_dir,size:dt(c.size_bytes)||void 0})),truncated:e.directory_listing.truncated,samplePath:o,nested:e.sample?ut({sample:e.sample,probe:{format_hint:d||"txt"}},{title:o||"样例文件",format:d||"txt"}):void 0}}return e.sample?Sl.has(n)?{...a,kind:"table",...Ol(e.sample,n)}:Cl.has(n)?{...a,kind:"json",body:Pl(e.sample)}:xl.has(n)?{...a,kind:"fasta",sequences:jl(e.sample)}:Il.has(n)?{...a,kind:"fastq",sequences:Rl(e.sample)}:n==="pdf"?{...a,kind:"pdf",lines:e.sample.split(/\n+/).map(o=>o.trim()).filter(Boolean).slice(0,60)}:Ll.has(n)||Fl(e.sample)?{...a,kind:"scientific",cards:ql(e.sample),body:e.sample}:Dl.has(n)?{...a,kind:"structure",lines:e.sample.split(`
5
- `).slice(0,120)}:{...a,kind:"text",body:e.sample,lines:e.sample.split(`
6
- `).slice(0,160)}:{...a,kind:"empty",body:[i,gt(n)].filter(Boolean).join(" · ")||"暂无预览内容"}}function gt(e){return{csv:"CSV 表格",tsv:"TSV 表格",xlsx:"Excel 表格",json:"JSON",jsonl:"JSON Lines",ndjson:"JSON Lines",fasta:"FASTA 序列",fa:"FASTA 序列",fna:"FASTA 序列",faa:"FASTA 序列",fastq:"FASTQ 序列",fq:"FASTQ 序列",pdf:"PDF 文本",pdb:"PDB 结构",cif:"CIF 结构",mmcif:"mmCIF 结构",xyz:"XYZ 结构",extxyz:"EXTXYZ 结构",sdf:"SDF 分子",mol:"MOL 分子",nc:"NetCDF",nc4:"NetCDF",netcdf:"NetCDF",h5:"HDF5",hdf5:"HDF5",npy:"NumPy",npz:"NumPy Archive",mat:"MATLAB",zarr:"Zarr",directory:"目录",txt:"文本"}[e]||e.toUpperCase()}function Tl(e){const l=e.split("/").filter(Boolean).at(-1)||"";return(l.includes(".")?l.split(".").pop()?.toLowerCase():"")||""}function Ol(e,l){const n=l==="csv"?",":El(e),i=e.replace(/\r\n/g,`
7
- `).split(`
8
- `).map(c=>c.trimEnd()).filter(c=>c.length>0).slice(0,41);if(i.length===0)return{headers:[],rows:[]};const a=i.map(c=>Al(c,n)),o=Math.min(Math.max(...a.map(c=>c.length),1),12),d=c=>Array.from({length:o},(u,$)=>c[$]??"");return{headers:d(a[0]),rows:a.slice(1,21).map(d)}}function El(e){const l=e.split(/\r?\n/).find(a=>a.trim())||"",n=(l.match(/\t/g)||[]).length,i=(l.match(/,/g)||[]).length;return n>=i?" ":","}function Al(e,l){if(l===" ")return e.split(" ");const n=[];let i="",a=!1;for(let o=0;o<e.length;o++){const d=e[o];if(d==='"'){a&&e[o+1]==='"'?(i+='"',o+=1):a=!a;continue}if(d===l&&!a){n.push(i),i="";continue}i+=d}return n.push(i),n}function Pl(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e.split(`
9
- `).map(l=>l.trim()).filter(Boolean).slice(0,30).map(l=>{try{return JSON.stringify(JSON.parse(l),null,2)}catch{return l}}).join(`
10
-
11
- `)}}function jl(e){const l=[];let n="",i=[];for(const a of e.split(/\r?\n/)){if(a.startsWith(">")){if((n||i.length)&&l.push({header:n||"sequence",sequence:i.join("")}),l.length>=8)break;n=a.slice(1).trim()||"sequence",i=[];continue}a.trim()&&i.push(a.trim())}return(n||i.length)&&l.length<8&&l.push({header:n||"sequence",sequence:i.join("")}),l}function Rl(e){const l=e.split(/\r?\n/),n=[];for(let i=0;i+1<l.length&&n.length<8;i+=4){const a=(l[i]||"").replace(/^@/,"").trim()||"read",o=(l[i+1]||"").trim();o&&n.push({header:a,sequence:o})}return n}function Fl(e){return/^(netcdf|hdf5|npy|npz|mat variables):/im.test(e)||/\bshape=\(/i.test(e)}function ql(e){return e.split(`
12
- `).map(l=>l.trimEnd()).filter(Boolean).slice(0,40).map(l=>{const n=l.match(/^\s*(.+?):\s*(.+)$/);return n?{label:n[1].trim(),value:n[2].trim()}:{label:"",value:l.trim()}})}var Ml=s("<span>"),Ul=s("<button type=button class=os-onedata-preview-close>关闭"),Bl=s("<section aria-label=原始数据预览><header class=os-onedata-preview-head><div class=os-onedata-preview-head-main><span></span><div class=os-onedata-preview-titles><strong></strong></div></div></header><div class=os-onedata-preview-body>"),zl=s("<div class=os-onedata-preview-table-wrap><table class=os-onedata-preview-table><thead><tr></tr></thead><tbody>"),Wl=s('<pre class="os-onedata-preview-pre os-onedata-preview-json">'),Nl=s("<ul class=os-onedata-preview-seq-list>"),Hl=s("<div class=os-onedata-preview-pdf>"),Kl=s("<ul class=os-onedata-preview-cards>"),Ql=s("<p class=os-onedata-preview-note>仅显示前若干项"),Jl=s("<div class=os-onedata-preview-directory><ul class=os-onedata-preview-dir-list>"),Vl=s("<div class=os-onedata-preview-structure>"),Yl=s("<p class=os-onedata-preview-empty>"),Ft=s("<pre class=os-onedata-preview-pre>"),Xl=s("<th>"),Gl=s("<tr>"),Zl=s("<td>"),en=s("<li><div class=os-onedata-preview-seq-head><span></span><strong></strong><em> bp</em></div><p class=os-onedata-preview-seq-body>"),tn=s("<p>"),an=s("<span class=os-onedata-preview-card-label>"),qt=s("<span class=os-onedata-preview-card-value>"),ln=s("<li>"),nn=s("<em>"),rn=s("<li><span class=os-onedata-preview-dir-mark></span><code>"),sn=s("<div class=os-onedata-preview-nested><div class=os-onedata-preview-nested-label>样例文件"),on=s("<code>");function Mt(e){return(()=>{var l=Bl(),n=l.firstChild,i=n.firstChild,a=i.firstChild,o=a.nextSibling,d=o.firstChild,c=n.nextSibling;return t(a,()=>gt(e.model.format)),t(d,()=>e.model.title),t(o,r(g,{get when(){return e.model.subtitle},get children(){var u=Ml();return t(u,()=>e.model.subtitle),u}}),null),t(n,r(g,{get when(){return e.onClose},get children(){var u=Ul();return u.$$click=()=>e.onClose?.(),u}}),null),t(c,r(ea,{get model(){return e.model}})),D(u=>{var $=`os-onedata-preview-pane os-onedata-preview-kind-${e.model.kind}`,b=`os-onedata-preview-badge os-onedata-preview-badge-${cn(e.model)}`;return $!==u.e&&Tt(l,u.e=$),b!==u.t&&Tt(a,u.t=b),u},{e:void 0,t:void 0}),l})()}function ea(e){return r(va,{get fallback(){return(()=>{var l=Ft();return t(l,()=>e.model.body||"暂无预览内容"),l})()},get children(){return[r(Se,{get when(){return H(()=>e.model.kind==="table")()&&e.model.headers},get children(){var l=zl(),n=l.firstChild,i=n.firstChild,a=i.firstChild,o=i.nextSibling;return t(a,r(z,{get each(){return e.model.headers},children:d=>(()=>{var c=Xl();return t(c,d||"—"),c})()})),t(o,r(z,{get each(){return e.model.rows},children:d=>(()=>{var c=Gl();return t(c,r(z,{each:d,children:u=>(()=>{var $=Zl();return t($,u),$})()})),c})()})),l}}),r(Se,{get when(){return e.model.kind==="json"},get children(){var l=Wl();return t(l,()=>e.model.body),l}}),r(Se,{get when(){return H(()=>e.model.kind==="fasta"||e.model.kind==="fastq")()&&e.model.sequences},get children(){var l=Nl();return t(l,r(z,{get each(){return e.model.sequences},children:n=>(()=>{var i=en(),a=i.firstChild,o=a.firstChild,d=o.nextSibling,c=d.nextSibling,u=c.firstChild,$=a.nextSibling;return t(o,()=>e.model.kind==="fastq"?"@":">"),t(d,()=>n.header),t(c,()=>n.sequence.length,u),t($,()=>dn(n.sequence)),i})()})),l}}),r(Se,{get when(){return H(()=>e.model.kind==="pdf")()&&e.model.lines},get children(){var l=Hl();return t(l,r(z,{get each(){return e.model.lines},children:n=>(()=>{var i=tn();return t(i,n),i})()})),l}}),r(Se,{get when(){return H(()=>e.model.kind==="zarr"||e.model.kind==="scientific")()&&e.model.cards},get children(){var l=Kl();return t(l,r(z,{get each(){return e.model.cards},children:n=>(()=>{var i=ln();return t(i,r(g,{get when(){return n.label},get fallback(){return(()=>{var a=qt();return t(a,()=>n.value),a})()},get children(){return[(()=>{var a=an();return t(a,()=>n.label),a})(),(()=>{var a=qt();return t(a,()=>n.value),a})()]}})),i})()})),l}}),r(Se,{get when(){return e.model.kind==="directory"},get children(){var l=Jl(),n=l.firstChild;return t(n,r(z,{get each(){return e.model.entries},children:i=>(()=>{var a=rn(),o=a.firstChild,d=o.nextSibling;return t(o,()=>i.is_dir?"DIR":"FILE"),t(d,()=>i.path),t(a,r(g,{get when(){return i.size},get children(){var c=nn();return t(c,()=>i.size),c}}),null),D(()=>T(a,"data-dir",i.is_dir?"true":"false")),a})()})),t(l,r(g,{get when(){return e.model.truncated},get children(){return Ql()}}),null),t(l,r(g,{get when(){return e.model.nested},children:i=>(()=>{var a=sn(),o=a.firstChild;return o.firstChild,t(o,(()=>{var d=H(()=>!!e.model.samplePath);return()=>d()?` · ${e.model.samplePath}`:""})(),null),t(a,r(ea,{get model(){return i()}}),null),a})()}),null),l}}),r(Se,{get when(){return H(()=>e.model.kind==="structure")()&&e.model.lines},get children(){var l=Vl();return t(l,r(z,{get each(){return e.model.lines},children:n=>(()=>{var i=on();return t(i,n||" "),D(()=>T(i,"data-kind",un(n))),i})()})),l}}),r(Se,{get when(){return e.model.kind==="empty"},get children(){var l=Yl();return t(l,()=>e.model.body),l}}),r(Se,{get when(){return H(()=>e.model.kind==="text")()&&e.model.lines},get children(){var l=Ft();return t(l,()=>e.model.lines.join(`
13
- `)),l}})]}})}function cn(e){return e.kind==="table"?"table":e.kind==="json"?"json":e.kind==="fasta"||e.kind==="fastq"?"seq":e.kind==="pdf"?"pdf":e.kind==="directory"?"dir":e.kind==="zarr"||e.kind==="scientific"?"sci":e.kind==="structure"?"struct":"text"}function dn(e){return e.replace(/(.{10})/g,"$1 ").trim()}function un(e){return/^(ATOM|HETATM)\b/.test(e)?"atom":/^(HEADER|TITLE|COMPND|SOURCE|KEYWDS|EXPDTA|AUTHOR|REMARK|SEQRES|CRYST1|MODEL|ENDMDL|END|DATA_|loop_)\b/i.test(e)?"meta":"plain"}je(["click"]);var Ut=s("<button type=button class=os-client-capability-filter-select-option role=option>"),gn=s("<div class=os-client-capability-filter-select-menu role=listbox>"),pn=s("<div class=os-client-capability-filter-select><button type=button class=os-client-capability-filter-select-trigger aria-haspopup=listbox><span class=os-client-capability-filter-select-value></span><span class=os-client-capability-filter-select-chevron aria-hidden=true>");function ze(e){const[l,n]=A(!1);let i;const a=()=>e.options.find(d=>d.value===e.value)?.label??"",o=()=>!e.value;return We(()=>{if(!l())return;const d=u=>{i?.contains(u.target)||n(!1)},c=u=>{u.key==="Escape"&&n(!1)};document.addEventListener("pointerdown",d),document.addEventListener("keydown",c),fa(()=>{document.removeEventListener("pointerdown",d),document.removeEventListener("keydown",c)})}),(()=>{var d=pn(),c=d.firstChild,u=c.firstChild,$=i;return typeof $=="function"?$a($,d):i=d,c.$$click=b=>{b.stopPropagation(),e.onFocusTab?.(),n(v=>!v)},t(u,(()=>{var b=H(()=>!!o());return()=>b()?e.placeholder:a()})()),t(d,r(g,{get when(){return l()},get children(){var b=gn();return t(b,r(g,{get when(){return H(()=>!!e.uploadLabel)()&&e.onUpload},get children(){var v=Ut();return v.$$click=h=>{h.stopPropagation(),n(!1),e.onUpload?.()},t(v,()=>e.uploadLabel),v}}),null),t(b,r(z,{get each(){return e.options},children:v=>(()=>{var h=Ut();return h.$$click=m=>{m.stopPropagation(),n(!1),e.onChange(v.value)},t(h,()=>v.label),D(m=>{var f=v.value===e.value,E=v.value===e.value;return f!==m.e&&h.classList.toggle("is-selected",m.e=f),E!==m.t&&T(h,"aria-selected",m.t=E),m},{e:void 0,t:void 0}),h})()}),null),D(()=>T(b,"aria-label",e["aria-label"])),b}}),null),D(b=>{var v=o()?"true":"false",h=l()?"true":"false",m=e["aria-label"],f=l();return v!==b.e&&T(d,"data-empty",b.e=v),h!==b.t&&T(d,"data-open",b.t=h),m!==b.a&&T(c,"aria-label",b.a=m),f!==b.o&&T(c,"aria-expanded",b.o=f),b},{e:void 0,t:void 0,a:void 0,o:void 0}),d})()}je(["click"]);var hn=s("<div class=os-onedata-subtabs role=tablist aria-label=可训练数据范围><button type=button>我的</button><button type=button>已公开"),bn=s("<p class=os-client-capability-empty>登录后才能查看和接入自己的数据。"),vn=s("<p class=os-onedata-error>"),fn=s("<div class=os-onedata-field><span>登记粒度"),$n=s("<p class=os-onedata-upload-hint>默认登记整个文件夹为一条原始数据;若只要某个文件可预览,可改选「仅文件」。"),Bt=s("<div class=os-onedata-field><span>远端环境"),mn=s("<form class=os-onedata-register><strong>接入原始数据</strong><p class=os-onedata-upload-hint>「工作区路径」是 OneCode 部署机器上的账号目录,不是你浏览器所在电脑的盘符。若数据在 Windows/Mac,请先上传到工作区,或改用对象存储 / 公开网址 / 已连接远端。</p><div class=os-onedata-actions><button type=button>从这台电脑上传到工作区</button></div><label class=os-onedata-field><span>名称</span><input placeholder=可选,不填则使用路径或网址></label><label class=os-onedata-field><span>数据位置</span><input required></label><div class=os-onedata-field><span>来源</span><div class=os-onedata-source-pills role=radiogroup aria-label=数据来源><button type=button role=radio>工作区路径</button><button type=button role=radio>公开网址</button><button type=button role=radio>对象存储</button><button type=button role=radio>已连接的远端</button></div></div><button type=submit>接入"),rt=s("<ul class=os-onedata-list>"),yn=s('<details class=os-onedata-advanced><summary>对象存储密钥</summary><p>使用个人桶时需要先保存对应云厂商的密钥,界面只保留末几位。</p><form class="os-onedata-register os-onedata-register-nested"><label class=os-onedata-field><span>云厂商</span></label><label class=os-onedata-field><span>访问密钥 ID</span><input required></label><label class=os-onedata-field><span>密钥</span><input required type=password></label><label class=os-onedata-field><span>服务地址(可选)</span><input></label><label class=os-onedata-field><span>地域(可选)</span><input></label><button type=submit>保存密钥'),_n=s("<p class=os-client-capability-empty>还没有原始数据。可从「公开目录」下载后登记,从这台电脑上传到工作区,或填写工作区路径 / 公开网址 / 已连接远端路径。工作区路径须在账号目录内(通常是 …/workspaces/你的账号/…)。"),wn=s("<span class=os-onedata-chip-hint>需要先有一个当前工程下的会话。请在左侧打开或新建会话后再回来点这里。"),kn=s("<span class=os-onedata-chip-hint>勾选上方列表中的原始数据后可点击"),Sn=s("<div class=os-onedata-chip-row><button type=button class=os-onedata-chip-btn>"),Cn=s("<div class=os-onedata-status role=status><p>"),xn=s("<div class=os-onedata-actions><div class=os-onedata-field><span>训练位置"),In=s("<p class=os-client-capability-empty>"),Dn=s('<section class="os-client-capability-resource-panel os-onedata-catalog"><header class="os-client-capability-page-section-head os-client-capability-page-section-head-active"><p></p></header><div class=os-onedata-subtabs role=tablist aria-label="OneData 内容"><button type=button>公开目录</button><button type=button>原始数据</button><button type=button>可训练数据'),Ln=s("<p class=os-onedata-upload-hint>还没有已连接的远端,请先在资源里添加 SSH 节点。"),Tn=s("<li><span> · 末位 </span><button type=button>删除"),On=s("<button type=button class=os-onedata-action-primary>转为可训练数据"),En=s("<li><label class=os-onedata-raw-pick><input type=checkbox><span class=os-onedata-raw-pick-body><strong></strong><span class=os-onedata-card-chips></span><small></small></span></label><div class=os-onedata-actions><button type=button>预览</button><button type=button class=os-onedata-action-danger>删除"),zt=s("<span class=os-onedata-card-chip>"),An=s("<button type=button class=os-onedata-action-primary>加入对话加工"),Pn=s("<button type=button class=os-onedata-status-action>打开会话查看"),jn=s("<p class=os-onedata-upload-hint>还没有已连接的远端。"),Rn=s("<button type=button class=os-onedata-action-primary>发布"),Fn=s("<button type=button>取消发布"),qn=s("<button type=button class=os-onedata-action-primary>接入为我的原始数据"),Mn=s("<button type=button class=os-onedata-action-primary>开始训练"),Un=s("<button type=button class=os-onedata-action-danger>删除"),Bn=s("<li><strong></strong><span class=os-onedata-card-chips></span><small></small><div class=os-onedata-actions><button type=button>预览");function zn(e){const l=Ye(),n=Xe(),i=mt(),a=Ge(),o=ma(),d=ce(()=>new URLSearchParams(i.search)),c=ce(()=>{const k=d().get("onedata");return k==="already"?"already":k==="raw"?"raw":"catalog"}),u=ce(()=>d().get("already")==="public"?"public":"mine"),[$,b]=A([]),[v,h]=A([]),[m,f]=A(""),[E,Q]=A(""),[W,de]=A(),[p,C]=A(!1),[ue,le]=A(""),[Y,O]=A(""),[L,N]=A("local_fs"),[y,P]=A(""),[x,X]=A([]),[ne,G]=A(),[I,Z]=A([]),[oe,xe]=A([]),[me,Pe]=A("local"),[re,Ie]=A([]),[He,Ke]=A("s3"),[Re,be]=A(""),[et,wt]=A(""),[tt,sa]=A(""),[at,oa]=A(""),ge=()=>l.current?.http.url,Fe=()=>!!Ce(),Qe=ce(()=>bt({path:n.data.path,recent:Ze(n.data.project??[]),lastCodeWorkspace:l.projects.lastCode()})||Vt(Ce(),l.projects.lastCode())||vt(Ce())||ft(document,n.data.path)),De=ce(()=>{const k=Qe();if(!k)return;const q=ya(k);if(q)return q;const[ee]=n.child(k,{bootstrap:!1});return(ee.session??[]).find(te=>!te.parentID&&!te.time?.archived)?.id});We(()=>{const k=Qe();!k||!Fe()||n.project.loadSessions(k)});const ca=ce(()=>$l[e.domain]),da=ce(()=>c()==="raw"?"登记服务器上可访问的路径、公开网址或已连接远端上的数据(也可先从「公开目录」下载,或从这台电脑上传)。登记后可以预览,但不能直接训练。":c()==="already"?u()==="public"?"这里是已发布的可训练数据(OneData),可供他人使用;也可接入为自己的原始数据再加工。":"可训练数据来自原始数据直接转化,或对话加工后回写。只有就绪的数据能给模型使用;发布后会出现在「已公开」。":`${e.copy.replace(/[。.]$/,"")}。公开目录是外部下载源,下载后请到「原始数据」登记;转为可训练数据后才能给模型使用。`),ua=()=>{const k=Qe();if(!k){f("请先打开个人工作区项目,再上传文件");return}o.show(()=>r(rl,{directory:k,pathPrefix:"onedata",allowEditDestination:!0,title:"从这台电脑上传到工作区",destinationLabel:"上传目标路径(OneCode 所在环境)",destinationHint:"默认写到当前工作区的 onedata/ 目录。可改成服务器上其他可写路径;单文件不超过 200 MB,单次合计不超过 512 MB。上传不会自动登记。",maxFileBytes:qa,maxTotalBytes:Fa,onUploadedPaths:q=>{const ee=wl(k,q);if(ee.length===0)return;Z(ee);const te=ee[0];if(N("local_fs"),O(te.uri),!ue().trim()){const fe=te.label.split("/").filter(Boolean).at(-1);fe&&le(fe)}f("")}}))},qe=k=>{const q=new URLSearchParams(i.search);for(const[ee,te]of Object.entries(k))te?q.set(ee,te):q.delete(ee);q.set("category","onedata"),a(`${i.pathname}?${q}`)},lt=k=>{G(void 0),qe({onedata:k==="catalog"?"":k})},ve=async()=>{const k=ge();if(!k||!Fe()){b([]),h([]);return}f("");try{const q=e.domain==="all"?void 0:e.domain,[ee,te,fe,Le]=await Promise.all([Aa(k,{domain:q}),Pa(k,{scope:u(),domain:q}),ja(k).catch(()=>[]),Ra(k).catch(()=>({items:[]}))]);b(ee.items),h(te.items),X(fe.filter(ye=>ye.id.startsWith("wrk_")).map(ye=>({id:ye.id,name:ye.name||ye.id}))),Ie(Le.items)}catch(q){f(q instanceof Error?q.message:"无法加载数据")}};We(()=>{e.domain,c(),u(),ve()}),We(()=>{if(c()!=="raw")return;const k=d(),q=k.get("rawUri")?.trim(),ee=k.get("rawTitle")?.trim();if(q){O(q);const te=Rt(q);te&&N(te)}ee&&le(ee)});const ga=ce(()=>v().filter(k=>k.status==="ready")),kt=k=>[k.format,k.connector?ml(k.connector):"",dt(k.logical_bytes),k.status?yl(k.status):"",k.visibility==="public"?"已公开":"",k.build_method==="agent"?"对话加工":""].filter(q=>!!q),St=async k=>{const q=ge(),ee=De();if(!q){f("无法连接服务器,请刷新后重试");return}if(!ee){f("请先在左侧打开或新建一个会话,再加入对话加工");return}if(k.length===0){f("请先勾选要加入对话的原始数据");return}C(!0),f(""),Q(""),de(void 0);try{const te=await Ma(q,ee),fe=Array.from(new Set([...te.raw_ids,...k]));await Ua(q,ee,fe),window.dispatchEvent(new Event("onedata-session-chips-changed")),xe([]),de(ee),Q(`已加入当前会话(共 ${fe.length} 项)。可在该会话输入框上方查看「对话加工用的原始数据」。`)}catch(te){f(Ee(te,"加入对话失败"))}finally{C(!1)}};return(()=>{var k=Dn(),q=k.firstChild,ee=q.firstChild,te=q.nextSibling,fe=te.firstChild,Le=fe.nextSibling;Le.firstChild;var ye=Le.nextSibling;return ye.firstChild,t(ee,da),fe.$$click=()=>lt("catalog"),Le.$$click=()=>lt("raw"),t(Le,(()=>{var _=H(()=>!!$().length);return()=>_()?` ${$().length}`:""})(),null),ye.$$click=()=>lt("already"),t(ye,(()=>{var _=H(()=>!!v().length);return()=>_()?` ${v().length}`:""})(),null),t(k,r(g,{get when(){return c()==="already"},get children(){var _=hn(),w=_.firstChild,R=w.nextSibling;return w.$$click=()=>qe({already:"mine"}),R.$$click=()=>qe({already:"public"}),D(j=>{var ae=u()==="mine",pe=u()==="public";return ae!==j.e&&T(w,"aria-pressed",j.e=ae),pe!==j.t&&T(R,"aria-pressed",j.t=pe),j},{e:void 0,t:void 0}),_}}),null),t(k,r(g,{get when(){return H(()=>!Fe())()&&c()!=="catalog"},get children(){return bn()}}),null),t(k,r(g,{get when(){return m()},get children(){var _=vn();return t(_,m),_}}),null),t(k,r(g,{get when(){return c()==="catalog"},get children(){return r(al,{get filter(){return ca()},get domainLabel(){return e.domainLabel}})}}),null),t(k,r(g,{get when(){return H(()=>c()==="raw")()&&Fe()},get children(){return[(()=>{var _=mn(),w=_.firstChild,R=w.nextSibling,j=R.nextSibling,ae=j.firstChild,pe=j.nextSibling,he=pe.firstChild,_e=he.nextSibling,M=pe.nextSibling,F=M.firstChild,J=F.nextSibling,we=M.nextSibling,V=we.firstChild,B=V.nextSibling,ie=B.firstChild,$e=ie.nextSibling,Te=$e.nextSibling,Me=Te.nextSibling,K=we.nextSibling;return _.addEventListener("submit",async S=>{S.preventDefault();const U=ge();if(U){C(!0),f("");try{await _a(U,{title:ue().trim()||Y().trim(),domain:e.domain==="all"?"unspecified":e.domain,uri:Y().trim(),connector:L(),...L()==="remote_workspace"?{workspace_id:y()}:{}}),le(""),O(""),Z([]),await ve()}catch(se){f(se instanceof Error?se.message:"接入失败")}finally{C(!1)}}}),ae.$$click=ua,_e.$$input=S=>le(S.currentTarget.value),J.$$input=S=>{const U=S.currentTarget.value;O(U),Z([]);const se=Rt(U);se&&N(se)},t(_,r(g,{get when(){return I().length>1},get children(){return[(()=>{var S=fn();return S.firstChild,t(S,r(ze,{"aria-label":"登记粒度",get value(){return Y()},placeholder:"选择登记路径",get options(){return I().map(U=>({value:U.uri,label:U.kind==="folder"?`整个文件夹:${U.label}`:`仅文件:${U.label}`}))},onChange:U=>{const se=I().find(ke=>ke.uri===U);if(O(U),se){const ke=se.label.split("/").filter(Boolean).at(-1);ke&&le(ke)}}}),null),S})(),$n()]}}),we),ie.$$click=()=>N("local_fs"),$e.$$click=()=>N("http_dataset"),Te.$$click=()=>N("object_store"),Me.$$click=()=>N("remote_workspace"),t(_,r(g,{get when(){return L()==="remote_workspace"},get children(){var S=Bt();return S.firstChild,t(S,r(g,{get when(){return x().length>0},get fallback(){return Ln()},get children(){return r(ze,{"aria-label":"远端环境",get value(){return y()},placeholder:"选择已连接的远端",get options(){return x().map(U=>({value:U.id,label:U.name}))},onChange:P})}}),null),S}}),K),D(S=>{var U=p(),se=_l(L()),ke=L()==="local_fs",Je=L()==="local_fs"?"true":"false",Oe=L()==="http_dataset",Ue=L()==="http_dataset"?"true":"false",Ct=L()==="object_store",xt=L()==="object_store"?"true":"false",It=L()==="remote_workspace",Dt=L()==="remote_workspace"?"true":"false",Lt=p()||!Y().trim()||L()==="remote_workspace"&&!y();return U!==S.e&&(ae.disabled=S.e=U),se!==S.t&&T(J,"placeholder",S.t=se),ke!==S.a&&T(ie,"aria-checked",S.a=ke),Je!==S.o&&T(ie,"data-active",S.o=Je),Oe!==S.i&&T($e,"aria-checked",S.i=Oe),Ue!==S.n&&T($e,"data-active",S.n=Ue),Ct!==S.s&&T(Te,"aria-checked",S.s=Ct),xt!==S.h&&T(Te,"data-active",S.h=xt),It!==S.r&&T(Me,"aria-checked",S.r=It),Dt!==S.d&&T(Me,"data-active",S.d=Dt),Lt!==S.l&&(K.disabled=S.l=Lt),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}),D(()=>_e.value=ue()),D(()=>J.value=Y()),_})(),r(g,{get when(){return L()==="object_store"},get children(){var _=yn(),w=_.firstChild,R=w.nextSibling,j=R.nextSibling,ae=j.firstChild;ae.firstChild;var pe=ae.nextSibling,he=pe.firstChild,_e=he.nextSibling,M=pe.nextSibling,F=M.firstChild,J=F.nextSibling,we=M.nextSibling,V=we.firstChild,B=V.nextSibling,ie=we.nextSibling,$e=ie.firstChild,Te=$e.nextSibling,Me=ie.nextSibling;return j.addEventListener("submit",async K=>{K.preventDefault();const S=ge();if(S){C(!0),f("");try{await wa(S,{provider:He(),access_key_id:Re().trim(),secret:et().trim(),...tt().trim()?{endpoint:tt().trim()}:{},...at().trim()?{region:at().trim()}:{}}),be(""),wt(""),await ve()}catch(U){f(U instanceof Error?U.message:"保存密钥失败")}finally{C(!1)}}}),t(ae,r(ze,{"aria-label":"云厂商",get value(){return He()},placeholder:"选择云厂商",get options(){return[{value:"s3",label:Ve("s3")},{value:"oss",label:Ve("oss")},{value:"cos",label:Ve("cos")}]},onChange:K=>Ke(K)}),null),_e.$$input=K=>be(K.currentTarget.value),J.$$input=K=>wt(K.currentTarget.value),B.$$input=K=>sa(K.currentTarget.value),Te.$$input=K=>oa(K.currentTarget.value),t(j,r(g,{get when(){return re().length>0},get children(){var K=rt();return t(K,r(z,{get each(){return re()},children:S=>(()=>{var U=Tn(),se=U.firstChild,ke=se.firstChild,Je=se.nextSibling;return t(se,()=>Ve(S.provider),ke),t(se,()=>S.access_key_id_suffix,null),t(se,(()=>{var Oe=H(()=>!!S.endpoint);return()=>Oe()?` · ${S.endpoint}`:""})(),null),Je.$$click=async()=>{const Oe=ge();if(Oe)try{await ka(Oe,S.provider),await ve()}catch(Ue){f(Ue instanceof Error?Ue.message:"删除密钥失败")}},U})()})),K}}),null),D(K=>{var S=re().length===0,U=p()||!Re().trim()||!et().trim();return S!==K.e&&(_.open=K.e=S),U!==K.t&&(Me.disabled=K.t=U),K},{e:void 0,t:void 0}),D(()=>_e.value=Re()),D(()=>J.value=et()),D(()=>B.value=tt()),D(()=>Te.value=at()),_}}),r(g,{get when(){return $().length===0},get fallback(){return(()=>{var _=rt();return t(_,r(z,{get each(){return $()},children:w=>(()=>{var R=En(),j=R.firstChild,ae=j.firstChild,pe=ae.nextSibling,he=pe.firstChild,_e=he.nextSibling,M=_e.nextSibling,F=j.nextSibling,J=F.firstChild,we=J.nextSibling;return ae.addEventListener("change",V=>{const B=V.currentTarget.checked;xe(ie=>B?[...ie,w.id]:ie.filter($e=>$e!==w.id))}),t(he,()=>w.title),t(_e,r(z,{get each(){return kt(w)},children:V=>(()=>{var B=zt();return t(B,V),B})()})),t(M,()=>w.uri),J.$$click=async()=>{const V=ge();if(V)try{const B=await Sa(V,w.id,y()||void 0);G(ut(B,{title:w.title,format:w.format}))}catch(B){f(Ee(B,"预览失败"))}},t(F,r(g,{get when(){return w.connector!=="onedata_ref"},get fallback(){return(()=>{var V=An();return V.$$click=()=>void St([w.id]),D(B=>{var ie=!De()||p(),$e=De()?"从公开 OneData 拉回的数据需对话加工,不能直接转为可训练数据":"请先在左侧打开或新建一个会话";return ie!==B.e&&(V.disabled=B.e=ie),$e!==B.t&&T(V,"title",B.t=$e),B},{e:void 0,t:void 0}),V})()},get children(){var V=On();return V.$$click=async()=>{const B=ge();if(B){C(!0);try{await Ca(B,w.id),qe({onedata:"already",already:"mine"}),await ve()}catch(ie){f(Ee(ie,"转化失败"))}finally{C(!1)}}},V}}),we),we.$$click=async()=>{if(!window.confirm(`删除原始数据「${w.title}」?此操作不可恢复。`))return;const V=ge();if(V){C(!0);try{await xa(V,w.id),xe(B=>B.filter(ie=>ie!==w.id)),await ve()}catch(B){f(Ee(B,"删除失败"))}finally{C(!1)}}},D(()=>we.disabled=p()),D(()=>ae.checked=oe().includes(w.id)),R})()})),_})()},get children(){return _n()}}),r(g,{get when(){return $().length>0},get children(){return[(()=>{var _=Sn(),w=_.firstChild;return w.$$click=()=>void St(oe()),t(w,()=>p()?"正在加入…":"把选中的原始数据加入当前对话"),t(_,r(g,{get when(){return!De()},get children(){return wn()}}),null),t(_,r(g,{get when(){return H(()=>!!De())()&&oe().length===0},get children(){return kn()}}),null),D(R=>{var j=!De()||oe().length===0||p(),ae=De()?oe().length===0?"请先勾选上方列表中的原始数据":"把选中的原始数据绑定到当前会话,供对话加工":"请先在左侧打开或新建一个会话";return j!==R.e&&(w.disabled=R.e=j),ae!==R.t&&T(w,"title",R.t=ae),R},{e:void 0,t:void 0}),_})(),r(g,{get when(){return E()},get children(){var _=Cn(),w=_.firstChild;return t(w,E),t(_,r(g,{get when(){return H(()=>!!W())()&&Qe()},children:R=>(()=>{var j=Pn();return j.$$click=()=>a($t(R(),W())),j})()}),null),_}})]}}),r(g,{get when(){return ne()},children:_=>r(Mt,{get model(){return _()},onClose:()=>G(void 0)})})]}}),null),t(k,r(g,{get when(){return H(()=>c()==="already")()&&Fe()},get children(){return[r(g,{get when(){return ga().length>0},get children(){var _=xn(),w=_.firstChild;return w.firstChild,t(w,r(ze,{"aria-label":"训练位置",get value(){return me()},placeholder:"选择训练位置",options:[{value:"local",label:"当前执行环境"},{value:"workspace",label:"已连接的远端"},{value:"shared_root",label:"平台共享盘"}],onChange:R=>Pe(R)}),null),t(_,r(g,{get when(){return me()==="workspace"},get children(){var R=Bt();return R.firstChild,t(R,r(g,{get when(){return x().length>0},get fallback(){return jn()},get children(){return r(ze,{"aria-label":"训练远端环境",get value(){return y()},placeholder:"选择远端环境",get options(){return x().map(j=>({value:j.id,label:j.name}))},onChange:P})}}),null),R}}),null),_}}),r(g,{get when(){return v().length===0},get fallback(){return(()=>{var _=rt();return t(_,r(z,{get each(){return v()},children:w=>(()=>{var R=Bn(),j=R.firstChild,ae=j.nextSibling,pe=ae.nextSibling,he=pe.nextSibling,_e=he.firstChild;return t(j,()=>w.title),t(ae,r(z,{get each(){return kt(w)},children:M=>(()=>{var F=zt();return t(F,M),F})()})),t(pe,()=>w.uri),_e.$$click=async()=>{const M=ge();if(M)try{const F=await Ia(M,w.id,u()==="public"&&y()||void 0);G(ut(F,{title:w.title,format:w.format}))}catch(F){f(F instanceof Error?F.message:"预览失败")}},t(he,r(g,{get when(){return H(()=>u()==="mine"&&w.status==="ready")()&&w.visibility!=="public"},get children(){var M=Rn();return M.$$click=async()=>{const F=ge();if(F){C(!0);try{await Da(F,w.id),await ve()}catch(J){f(Ee(J,"发布失败"))}finally{C(!1)}}},M}}),null),t(he,r(g,{get when(){return H(()=>u()==="mine")()&&w.visibility==="public"},get children(){var M=Fn();return M.$$click=async()=>{const F=ge();if(F){C(!0);try{await La(F,w.id),await ve()}catch(J){f(J instanceof Error?J.message:"取消发布失败")}finally{C(!1)}}},M}}),null),t(he,r(g,{get when(){return u()==="public"},get children(){var M=qn();return M.$$click=async()=>{const F=ge();if(F){C(!0);try{await Ta(F,w.id),qe({onedata:"raw"}),await ve()}catch(J){f(J instanceof Error?J.message:"再次接入失败")}finally{C(!1)}}},M}}),null),t(he,r(g,{get when(){return w.status==="ready"},get children(){var M=Mn();return M.$$click=async()=>{const F=ge();if(F){if(me()==="workspace"&&!y()){f("请选择要运行训练的远端环境");return}C(!0);try{await Oa(F,w.id,{target:me(),...me()==="workspace"?{workspace_id:y()}:{}}),await ve()}catch(J){f(Ee(J,"开始训练失败"))}finally{C(!1)}}},M}}),null),t(he,r(g,{get when(){return u()==="mine"},get children(){var M=Un();return M.$$click=async()=>{if(!window.confirm(`删除可训练数据「${w.title}」?此操作不可恢复。`))return;const F=ge();if(F){C(!0);try{await Ea(F,w.id),await ve()}catch(J){f(Ee(J,"删除失败"))}finally{C(!1)}}},D(()=>M.disabled=p()),M}}),null),R})()})),_})()},get children(){var _=In();return t(_,()=>u()==="public"?"还没有已公开的可训练数据。发布后会出现在这里,他人可拉回再加工。":"还没有可训练数据。请先登记原始数据并转化,或等待对话加工完成。"),_}}),r(g,{get when(){return ne()},children:_=>r(Mt,{get model(){return _()},onClose:()=>G(void 0)})})]}}),null),D(_=>{var w=c()==="catalog",R=c()==="raw",j=c()==="already";return w!==_.e&&T(fe,"aria-pressed",_.e=w),R!==_.t&&T(Le,"aria-pressed",_.t=R),j!==_.a&&T(ye,"aria-pressed",_.a=j),_},{e:void 0,t:void 0,a:void 0}),k})()}je(["click","input"]);var Wn=s('<article class="os-client-capability-card os-client-capability-skill-card"><div class=os-client-capability-skill-card-head><h4></h4></div><p></p><div class=os-client-capability-meta><span class=os-client-capability-skill-provider></span></div><div class=os-client-capability-actions><button type=button>详情</button><button type=button data-primary=true>开发'),ta=s("<span>"),Nn=s("<div>"),Hn=s("<button type=button class=os-client-capability-oneskills-expand>"),Kn=s("<section class=os-client-capability-oneskills-section><header class=os-client-capability-oneskills-section-head><div class=os-client-capability-oneskills-section-title><h3></h3></div><p>"),Qn=s("<p class=os-client-capability-empty>当前分类暂无技能卡片。"),Jn=s("<span class=os-client-capability-oneskills-count> 个技能"),Vn=s("<p class=os-client-capability-oneskills-error>"),Yn=s("<div class=os-client-capability-oneskills-top-row>"),Xn=s("<div class=os-client-capability-oneskills-overview>"),Gn=s('<section class="os-client-capability-resource-panel os-client-capability-oneskills-panel"><header class=os-client-capability-oneskills-toolbar><div class=os-client-capability-oneskills-toolbar-copy><p>按 OneSkills 分层浏览官方技能,查看详情或进入开发。</p></div><div class=os-client-capability-oneskills-actions><span class=inline-flex><button type=button class=os-client-capability-oneskills-upgrade>'),Zn=s("<p class=os-client-capability-empty>正在加载 OneSkills 技能..."),er=s("<p class=os-client-capability-empty>暂无可展示的 OneSkills 技能,请先安装或更新技能。");const Wt=4,pt=new Set(["orchestrator","resource"]);function tr(e,l){return e.layer===l.title||e.tags.includes(l.title)||e.tags.includes(l.id)}function ar(e){return bt(e)||Vt(Ce(),e.lastCodeWorkspace)||vt(Ce())||ft(document,e.path)}function lr(e){const l=()=>e.item.tags.filter(n=>n!==e.item.layer&&n!==e.item.provider).slice(0,3);return(()=>{var n=Wn(),i=n.firstChild,a=i.firstChild,o=i.nextSibling,d=o.nextSibling,c=d.firstChild,u=d.nextSibling,$=u.firstChild,b=$.nextSibling;return Xt(n,"click",e.onOpen,!0),t(a,()=>e.item.title),t(o,()=>e.item.copy),t(c,()=>e.item.provider),t(d,r(z,{get each(){return l()},children:v=>(()=>{var h=ta();return t(h,v),h})()}),null),$.$$click=v=>{v.stopPropagation(),e.onOpen()},b.$$click=v=>{v.stopPropagation(),e.onDevelop()},D(v=>{var h=e.layerId,m=e.canDevelop?void 0:"登录后使用";return h!==v.e&&T(n,"data-layer",v.e=h),m!==v.t&&T(b,"title",v.t=m),v},{e:void 0,t:void 0}),n})()}function Nt(e){const[l,n]=A(!1),i=()=>e.items.length,a=()=>Math.max(0,i()-Wt),o=()=>l()||a()===0?e.items:e.items.slice(0,Wt),d=()=>pt.has(e.group.id);return(()=>{var c=Kn(),u=c.firstChild,$=u.firstChild,b=$.firstChild,v=$.nextSibling;return t(b,()=>e.group.title),t($,r(g,{get when(){return i()>0},get children(){var h=ta();return t(h,i),h}}),null),t(v,()=>e.group.copy),t(c,r(g,{get when(){return i()>0},get fallback(){return Qn()},get children(){return[(()=>{var h=Nn();return t(h,r(z,{get each(){return o()},children:m=>r(lr,{item:m,get layerId(){return e.group.id},get canDevelop(){return e.canDevelop},onOpen:()=>e.onOpen(m),onDevelop:()=>e.onDevelop(m)})})),D(m=>{var f=!d(),E=!!d();return f!==m.e&&h.classList.toggle("os-client-capability-page-grid",m.e=f),E!==m.t&&h.classList.toggle("os-client-capability-oneskills-compact-grid",m.t=E),m},{e:void 0,t:void 0}),h})(),r(g,{get when(){return H(()=>!d())()&&a()>0},get children(){var h=Hn();return h.$$click=()=>n(m=>!m),t(h,(()=>{var m=H(()=>!!l());return()=>m()?"收起":`展开其余 ${a()} 个`})()),D(()=>T(h,"aria-expanded",l())),h}})]}}),null),D(h=>{var m=e.group.id,f=!!e.compact,E=e.group.id;return m!==h.e&&T(c,"id",h.e=m),f!==h.t&&c.classList.toggle("is-compact",h.t=f),E!==h.a&&T(c,"data-layer",h.a=E),h},{e:void 0,t:void 0,a:void 0}),c})()}function nr(){const e=mt(),l=Ge(),n=Ye(),i=Xe(),a=yt(),[o,d]=A([]),[c,u]=A(!1),[$,b]=A(!1),[v,h]=A(),[m,f]=A(!1),[E,Q]=A(),W=ce(()=>!!Ce()?.account.id),de=ce(()=>ar({path:i.data.path,recent:Ze(i.data.project),lastCodeWorkspace:n.projects.lastCode()})),p=async()=>{const y=n.current;if(!y){d([]),u(!0);return}const P=await Ba(y.http.url,{limit:100});d(P.loaded?P.items:[]),u(!0)};ot(()=>{const y=il(e.search)??sl()?.domainId??"all";l(Yt("oneskills",y),{replace:!0}),p()});const C=y=>o().filter(P=>tr(P,y)),ue=()=>Wa.filter(y=>C(y).length>0),le=()=>{const y=ue();return{pair:y.filter(P=>pt.has(P.id)),rest:y.filter(P=>!pt.has(P.id))}},Y=y=>{Q(y),f(!0)},O=()=>{f(!1),Q(void 0)},L=y=>{if(!st({navigate:l,action:{type:"prompt",prompt:""},isLoggedIn:W()}))return;const P=de();if(!P){Ae({variant:"error",title:"无法开发",description:"未检测到工作目录"});return}const x=nl({id:y.id,title:y.title,copy:y.copy,layer:y.layer,tags:y.tags,provider:y.provider}),X=Kt(P);Qt(X,x.prompt,{skill:x.skill}),Jt(X),a.projects.open(P),n.projects.touchCode(P),f(!1),Q(void 0),Ae({variant:"success",title:`已为你创建「${y.title}」开发任务`}),l($t(P))},N=async()=>{if(!st({navigate:l,action:{type:"install",resourceId:"oneskills"},isLoggedIn:W()}))return;const y=n.current,P=de();if(!y){const x=nt();h(x),Ae({variant:"error",title:"更新失败",description:x});return}if(!P){const x=nt();h(x),Ae({variant:"error",title:"更新失败",description:x});return}b(!0),h(void 0);try{const x=await za(y.http.url,P);await p();const X=x.version?`版本 ${x.version} · ${x.skillCount} 个技能`:`${x.skillCount} 个技能`,ne=x.seedSource==="bundled"&&x.seedFallbackReason?"原语已回退内置 seed":x.seedSource==="disk"?"原语已同步磁盘 oneskills":void 0;Ae({variant:"success",title:"OneSkills 已更新",description:ne?`${X} · ${ne}`:X})}catch(x){const X=nt(x instanceof Error?x.message:"更新 OneSkills 失败");h(X),Ae({variant:"error",title:"更新失败",description:X})}finally{b(!1)}};return(()=>{var y=Gn(),P=y.firstChild,x=P.firstChild;x.firstChild;var X=x.nextSibling,ne=X.firstChild,G=ne.firstChild;return t(x,r(g,{get when(){return H(()=>!!c())()&&o().length>0},get children(){var I=Jn(),Z=I.firstChild;return t(I,()=>o().length,Z),I}}),null),t(X,r(g,{get when(){return v()},get children(){var I=Vn();return t(I,v),I}}),ne),G.$$click=()=>void N(),t(G,()=>$()?"更新中...":"更新 OneSkills"),t(y,r(g,{get when(){return c()},get fallback(){return Zn()},get children(){return r(g,{get when(){return o().length>0},get fallback(){return er()},get children(){var I=Xn();return t(I,r(g,{get when(){return le().pair.length>0},get children(){var Z=Yn();return t(Z,r(z,{get each(){return le().pair},children:oe=>r(Nt,{group:oe,get items(){return C(oe)},compact:!0,get canDevelop(){return W()},onOpen:Y,onDevelop:L})})),Z}}),null),t(I,r(z,{get each(){return le().rest},children:Z=>r(Nt,{group:Z,get items(){return C(Z)},get canDevelop(){return W()},onOpen:Y,onDevelop:L})}),null),I}})}}),null),t(y,r(ll,{variant:"workbench",get item(){return E()},get open(){return m()},get serverUrl(){return n.current?.http.url},onClose:O,onDevelop:()=>{const I=E();I&&(O(),L(I))}}),null),D(I=>{var Z=W()?void 0:"登录后使用",oe=$();return Z!==I.e&&T(ne,"title",I.e=Z),oe!==I.t&&(G.disabled=I.t=oe),I},{e:void 0,t:void 0}),y})()}je(["click"]);async function rr(e,l){const n=[];let i=0;for(;;){const a=new URLSearchParams;a.set("limit","200"),a.set("offset",String(i));const o=await Na(`${Ha(e)}/experimental/onescience/scenario?${a}`);if(!o.ok)throw new Error(`scenario catalog failed: ${o.status}`);const d=await o.json(),c=(d.items??[]).map(u=>({...u,model_ids:u.model_ids??[]}));if(n.push(...c),d.nextOffset==null||c.length===0)break;i=d.nextOffset}return Ka(n),n}var ir=s("<span>当前范围:"),sr=s("<strong>全领域"),or=s("<small>OneSkills 原语跨领域通用,不区分材料 / 气象 / 流体 / 生信"),cr=s("<div class=os-client-capability-domain-row role=tablist aria-label=能力中心领域>"),dr=s("<div class=os-client-capability-scenario-grid>"),ur=s("<section class=os-client-capability-scenario-panel><div class=os-client-capability-scenario-toolbar><span>场景卡片</span><strong></strong><small> · 点击卡片打开场景弹窗</small><label class=os-client-capability-scenario-search><input type=search placeholder=搜索场景名称、ID、模型、HPC… aria-label=搜索场景>"),gr=s("<div class=os-client-capability-page><section class=os-client-capability-selector aria-label=能力中心筛选><div class=os-client-capability-current-domain></div><div class=os-client-capability-filter-tabs aria-label=能力类型></div></section><div class=os-client-capability-page-body>"),pr=s("<span>当前领域:"),hr=s("<strong>"),br=s("<small>"),vr=s("<button type=button>"),fr=s("<button type=button class=os-client-capability-filter-tab role=tab><div class=os-client-capability-filter-tab-text><strong></strong><small>"),$r=s("<p class=os-client-capability-hint>"),Ne=s("<span>"),mr=s("<button type=button class=os-client-capability-scenario-card><div class=os-client-capability-scenario-card-head><h4></h4><span></span></div><p></p><div class=os-client-capability-scenario-card-meta><span> 步工作流</span><span> 个字段</span></div><div class=os-client-capability-scenario-card-action><span>使用"),yr=s("<button type=button class=os-client-capability-upload-trigger><span aria-hidden=true>+</span>上传私有模型"),_r=s("<label class=os-client-capability-catalog-search><span>搜索</span><input type=search placeholder=按名称、简介或标签筛选>"),wr=s("<div class=os-client-capability-catalog-toolbar><div class=os-client-capability-catalog-toolbar-side><span class=os-client-capability-catalog-count></span><div class=os-client-capability-view-switch role=tablist aria-label=展示方式>"),kr=s('<section class=os-client-capability-resource-panel><header class="os-client-capability-page-section-head os-client-capability-page-section-head-active"><p>'),Sr=s("<p class=os-client-capability-empty>当前「<!>」领域暂无<!>卡片。"),Cr=s("<button type=button role=tab>"),xr=s("<p class=os-client-capability-empty>没有匹配的结果,试试换个关键词。"),Ir=s("<div class=os-client-capability-catalog role=list>"),Dr=s("<article class=os-client-capability-catalog-row role=listitem>"),Lr=s("<div class=os-client-capability-page-grid>"),aa=s("<span class=os-client-capability-private-badge>私有资产"),la=s("<span class=os-client-capability-unavailable-badge>暂不可用"),Tr=s("<div class=os-client-capability-meta>"),Or=s("<article class=os-client-capability-card><div class=os-client-capability-card-body><div class=os-client-capability-card-head><div class=os-client-capability-card-title><h4></h4></div></div><p>"),Er=s("<p class=os-client-capability-unavailable-hint>暂无 OneScience 源码或魔搭映射"),Ar=s("<div class=os-client-capability-catalog-tags>"),Pr=s("<div class=os-client-capability-catalog-copy><div class=os-client-capability-card-title><h4></h4></div><p>"),jr=s("<div>"),Rr=s("<button type=button>安装");const Fr=[{id:"all",label:"全部"},{id:"materials",label:"材料"},{id:"weather",label:"气象"},{id:"fluid",label:"流体"},{id:"bio",label:"生信"}],qr=[{id:"scenario",label:"场景",title:"场景库"},{id:"onemodel",label:"onemodel",title:"模型库"},{id:"hpc",label:"HPC 软件",title:"软件库"},{id:"onedata",label:"onedata",title:"数据集"},{id:"oneskills",label:"oneskills",title:"技能库"}],Mr=[{id:"cards",label:"卡片"},{id:"list",label:"列表"}],na="os-capability-view-mode";function it(e){return e==="all"||e==="materials"||e==="weather"||e==="fluid"||e==="bio"?e:"all"}function Ur(e){return e==="materials"||e==="weather"||e==="fluid"||e==="bio"?e:"materials"}function Br(e,l){const n=e.split("?")[0]??e;return new RegExp(`^${ct.capabilities}/[^/]+`).test(n)?!new URLSearchParams(l).has("domain"):!1}function ti(e){const l=mt(),n=Ge(),i=Pt(l.pathname,l.search),[a,o]=Qa({domainId:it(i.domainId),categoryId:i.categoryId,scenarioQuery:"",activeScenarioId:"",uploadPage:null,scenarioCatalogTick:0}),d=Xe(),c=yt(),u=Ye();ot(()=>{const p=u.current?.http.url;p&&rr(p).then(()=>o("scenarioCatalogTick",C=>C+1)).catch(()=>{})});const $=p=>{ol({categoryId:p.categoryId,domainId:it(p.domainId)})},b=p=>{$(p),n(Yt(p.categoryId,p.domainId),{replace:!0})};We(()=>{const p=l.pathname,C=l.search,ue=Pt(p,C);if(Br(p,C)){o("categoryId",ue.categoryId);return}const le=it(ue.domainId),Y=ue.categoryId;o({domainId:le,categoryId:Y}),$({domainId:le,categoryId:Y});const O=p.split("?")[0]??p,L=O===ct.capabilities||O===`${ct.capabilities}/`,N=new URLSearchParams(C);L&&!N.get("category")&&!N.get("domain")&&b({domainId:le,categoryId:Y})});const v=ce(()=>(Ja(),a.domainId==="all"?Ot():Ot(a.domainId))),h=ce(()=>v().find(p=>p.id===a.categoryId)??v()[0]),m=ce(()=>(a.scenarioCatalogTick,Va(a.domainId,a.scenarioQuery))),f=ce(()=>{if(a.scenarioCatalogTick,!!a.activeScenarioId)return Et(a.activeScenarioId)}),E=p=>{o({categoryId:p,activeScenarioId:"",scenarioQuery:p==="scenario"?a.scenarioQuery:""}),b({domainId:a.domainId,categoryId:p})},Q=()=>o("activeScenarioId",""),W=()=>({navigate:n,isLoggedIn:!!Ce(),path:d.data.path,recent:Ze(d.data.project),lastCodeWorkspace:u.projects.lastCode(),openProject:p=>c.projects.open(p),touchCode:p=>u.projects.touchCode(p)});ot(()=>{const p=Ya();if(p)try{if(p.type==="install"){if(p.resourceId==="oneskills"){o("categoryId","oneskills"),b({domainId:a.domainId,categoryId:"oneskills"});return}if(p.resourceId.startsWith("__"))return;Gt({resourceId:p.resourceId,...W()});return}if(p.type==="prompt"&&p.prompt.trim()){cl({prompt:p.prompt,title:p.title||"能力中心任务",workflow:p.workflow,...W()});return}if(p.type==="scenario-run"){const C=Et(p.scenarioId);if(!C)return;jt({scenario:C,values:p.values,...W()});return}p.type==="wizard"&&dl({resourceId:p.resourceId,scenarioId:p.scenarioId,values:p.values,prompt:p.prompt,...W()})}catch{}});const de=(p,C)=>{jt({scenario:p,values:C.values,...W()})};return(()=>{var p=gr(),C=p.firstChild,ue=C.firstChild,le=ue.nextSibling,Y=C.nextSibling;return t(ue,r(g,{get when(){return a.categoryId==="oneskills"},get fallback(){return[pr(),(()=>{var O=hr();return t(O,()=>Be(a.domainId)),O})(),(()=>{var O=br();return t(O,()=>a.categoryId==="scenario"?"切换领域后,下方场景同步刷新":"切换领域后,下方模型、HPC 软件与数据集内容同步刷新"),O})()]},get children(){return[ir(),sr(),or()]}})),t(C,r(g,{get when(){return a.categoryId!=="oneskills"},get children(){var O=cr();return t(O,r(z,{each:Fr,children:L=>(()=>{var N=vr();return N.$$click=()=>{o({domainId:L.id,activeScenarioId:"",scenarioQuery:""}),b({domainId:L.id,categoryId:a.categoryId})},t(N,()=>L.label),D(y=>{var P=L.id===a.domainId,x=L.id===a.domainId;return P!==y.e&&N.classList.toggle("is-active",y.e=P),x!==y.t&&T(N,"aria-pressed",y.t=x),y},{e:void 0,t:void 0}),N})()})),O}}),le),t(le,r(z,{each:qr,children:O=>(()=>{var L=fr(),N=L.firstChild,y=N.firstChild,P=y.nextSibling;return L.$$click=()=>E(O.id),t(y,()=>O.label),t(P,()=>O.title),D(x=>{var X=a.categoryId===O.id,ne=a.categoryId===O.id;return X!==x.e&&L.classList.toggle("is-active",x.e=X),ne!==x.t&&T(L,"aria-selected",x.t=ne),x},{e:void 0,t:void 0}),L})()})),t(Y,r(g,{get when(){return a.categoryId==="oneskills"},get children(){return r(nr,{})}}),null),t(Y,r(g,{get when(){return a.categoryId==="scenario"},get children(){var O=ur(),L=O.firstChild,N=L.firstChild,y=N.nextSibling,P=y.nextSibling,x=P.firstChild,X=P.nextSibling,ne=X.firstChild;return t(y,()=>m().length),t(P,()=>Be(a.domainId),x),ne.$$input=G=>o("scenarioQuery",G.currentTarget.value),t(O,r(g,{get when(){return m().length>0},get fallback(){return(()=>{var G=$r();return t(G,(()=>{var I=H(()=>!!a.scenarioQuery.trim());return()=>I()?`未找到匹配「${a.scenarioQuery.trim()}」的场景。`:`当前「${Be(a.domainId)}」领域暂无场景卡片。`})()),G})()},get children(){var G=dr();return t(G,r(z,{get each(){return m()},children:I=>(()=>{var Z=mr(),oe=Z.firstChild,xe=oe.firstChild,me=xe.nextSibling,Pe=oe.nextSibling,re=Pe.nextSibling,Ie=re.firstChild,He=Ie.firstChild,Ke=Ie.nextSibling,Re=Ke.firstChild;return Z.$$click=()=>o("activeScenarioId",Xa(I)),t(xe,()=>I.name),t(me,()=>I.scenario_id),t(Pe,()=>Ga(I.problem_and_applicability)),t(re,r(g,{get when(){return I.type?.trim()},get children(){var be=Ne();return t(be,()=>I.type),be}}),Ie),t(re,r(g,{get when(){return I.model?.trim()},get children(){var be=Ne();return t(be,()=>I.model),be}}),Ie),t(re,r(g,{get when(){return I.HPC?.trim()},get children(){var be=Ne();return t(be,()=>I.HPC),be}}),Ie),t(Ie,()=>I.workflow_steps?.length||I.workflow.length,He),t(Ke,()=>I.user_input.length,Re),Z})()})),G}}),null),D(()=>ne.value=a.scenarioQuery),O}}),null),t(Y,r(g,{get when(){return a.categoryId==="onemodel"||a.categoryId==="hpc"},get children(){return r(zr,{get category(){return h()},get domainId(){return a.domainId},get domainLabel(){return Be(a.domainId)},get onUpload(){return a.categoryId==="onemodel"?()=>o("uploadPage","models"):void 0}})}}),null),t(Y,r(g,{get when(){return a.categoryId==="onedata"},get children(){return r(zn,{get domain(){return a.domainId},get domainLabel(){return Be(a.domainId)},get copy(){return h().copy}})}}),null),t(p,r(g,{get when(){return f()},children:O=>r(ul,{get scenario(){return O()},onClose:Q,onSubmit:L=>de(O(),L)})}),null),t(p,r(bl,{get open(){return a.uploadPage!==null},page:"models",get domain(){return Ur(a.domainId)},onClose:()=>o("uploadPage",null),onSaved:()=>{o({categoryId:"onemodel",uploadPage:null,activeScenarioId:""}),b({domainId:a.domainId,categoryId:"onemodel"})}}),null),t(p,()=>e.children,null),p})()}function zr(e){const[l,n]=A(""),[i,a]=A(Qr()),o=()=>({category:e.category.id,domain:e.domainId}),d=ce(()=>{const u=l().trim().toLowerCase();return u?e.category.items.filter($=>[$.name,$.blurb,...$.tags].some(b=>b.toLowerCase().includes(u))):e.category.items}),c=u=>{a(u),Jr(u)};return(()=>{var u=kr(),$=u.firstChild,b=$.firstChild;return t(b,()=>e.category.copy.replace(/[。.]$/,"")),t($,r(g,{get when(){return e.onUpload},get children(){var v=yr();return Xt(v,"click",e.onUpload,!0),v}}),null),t(u,r(g,{get when(){return e.category.items.length>0},get fallback(){return(()=>{var v=Sr(),h=v.firstChild,m=h.nextSibling,f=m.nextSibling,E=f.nextSibling;return E.nextSibling,t(v,()=>e.domainLabel,m),t(v,()=>e.category.id==="hpc"?" HPC 软件":"模型",E),v})()},get children(){return[(()=>{var v=wr(),h=v.firstChild,m=h.firstChild,f=m.nextSibling;return t(v,r(g,{get when(){return e.category.items.length>=6},get children(){var E=_r(),Q=E.firstChild,W=Q.nextSibling;return W.$$input=de=>n(de.currentTarget.value),D(()=>W.value=l()),E}}),h),t(m,(()=>{var E=H(()=>d().length===e.category.items.length);return()=>E()?`共 ${e.category.items.length} 项`:`${d().length} / ${e.category.items.length} 项`})()),t(f,r(z,{each:Mr,children:E=>(()=>{var Q=Cr();return Q.$$click=()=>c(E.id),t(Q,()=>E.label),D(W=>{var de=i()===E.id,p=i()===E.id;return de!==W.e&&T(Q,"aria-selected",W.e=de),p!==W.t&&Q.classList.toggle("is-active",W.t=p),W},{e:void 0,t:void 0}),Q})()})),v})(),r(g,{get when(){return d().length>0},get fallback(){return xr()},get children(){return[r(g,{get when(){return i()==="list"},get children(){return r(Wr,{get items(){return d()},get catalog(){return o()}})}}),r(g,{get when(){return i()==="cards"},get children(){return r(Nr,{get items(){return d()},get catalog(){return o()}})}})]}})]}}),null),u})()}function Wr(e){return(()=>{var l=Ir();return t(l,r(z,{get each(){return e.items},children:n=>{const i=()=>_t(n);return(()=>{var a=Dr();return t(a,r(Hr,{item:n}),null),t(a,r(g,{get when(){return i()},get fallback(){return r(ra,{})},get children(){return r(ia,{item:n,get catalog(){return e.catalog}})}}),null),D(o=>{var d=n.ownership==="private",c=!i(),u=i()?void 0:!0,$=i()?void 0:"暂无 OneScience 源码或魔搭映射,暂不可用";return d!==o.e&&a.classList.toggle("is-private",o.e=d),c!==o.t&&a.classList.toggle("is-unavailable",o.t=c),u!==o.a&&T(a,"aria-disabled",o.a=u),$!==o.o&&T(a,"title",o.o=$),o},{e:void 0,t:void 0,a:void 0,o:void 0}),a})()}})),l})()}function Nr(e){return(()=>{var l=Lr();return t(l,r(z,{get each(){return e.items},children:n=>{const i=()=>_t(n);return(()=>{var a=Or(),o=a.firstChild,d=o.firstChild,c=d.firstChild,u=c.firstChild,$=d.nextSibling;return t(u,()=>n.name),t(c,r(g,{get when(){return n.ownership==="private"},get children(){return aa()}}),null),t(c,r(g,{get when(){return!i()},get children(){return la()}}),null),t(d,r(g,{get when(){return n.tags.length>0},get children(){var b=Tr();return t(b,r(z,{get each(){return n.tags},children:v=>(()=>{var h=Ne();return t(h,v),h})()})),b}}),null),t($,()=>n.blurb),t(a,r(g,{get when(){return i()},get fallback(){return r(ra,{variant:"card"})},get children(){return r(ia,{item:n,variant:"card",get catalog(){return e.catalog}})}}),null),D(b=>{var v=n.ownership==="private",h=!i(),m=i()?void 0:!0,f=i()?void 0:"暂无 OneScience 源码或魔搭映射,暂不可用";return v!==b.e&&a.classList.toggle("is-private",b.e=v),h!==b.t&&a.classList.toggle("is-unavailable",b.t=h),m!==b.a&&T(a,"aria-disabled",b.a=m),f!==b.o&&T(a,"title",b.o=f),b},{e:void 0,t:void 0,a:void 0,o:void 0}),a})()}})),l})()}function ra(e){return(()=>{var l=Er();return D(()=>l.classList.toggle("os-client-capability-unavailable-hint-card",e.variant==="card")),l})()}function Hr(e){return(()=>{var l=Pr(),n=l.firstChild,i=n.firstChild,a=n.nextSibling;return t(i,()=>e.item.name),t(n,r(g,{get when(){return e.item.ownership==="private"},get children(){return aa()}}),null),t(n,r(g,{get when(){return!_t(e.item)},get children(){return la()}}),null),t(a,()=>e.item.blurb),t(l,r(g,{get when(){return e.item.tags.length>0},get children(){var o=Ar();return t(o,r(z,{get each(){return e.item.tags},children:d=>(()=>{var c=Ne();return t(c,d),c})()})),o}}),null),l})()}function ia(e){const l=()=>e.catalog?{category:e.catalog.category,domain:e.catalog.domain}:void 0;return(()=>{var n=jr();return t(n,r(At,{get href(){return Za(e.item.id,l())},children:"详情"}),null),t(n,r(Kr,{get item(){return e.item}}),null),t(n,r(At,{get href(){return el(e.item.id,void 0,l())},"data-primary":"true",children:"使用"}),null),D(i=>{var a=e.variant!=="card",o=e.variant==="card";return a!==i.e&&n.classList.toggle("os-client-capability-catalog-actions",i.e=a),o!==i.t&&n.classList.toggle("os-client-capability-actions",i.t=o),i},{e:void 0,t:void 0}),n})()}function Kr(e){const l=Ge(),n=Xe(),i=yt(),a=Ye(),o=()=>ht(e.item);return(()=>{var d=Rr();return d.$$click=()=>{o()&&Gt({resourceId:e.item.id,navigate:l,isLoggedIn:!!Ce(),path:n.data.path,recent:Ze(n.data.project),lastCodeWorkspace:a.projects.lastCode(),openProject:c=>i.projects.open(c),touchCode:c=>a.projects.touchCode(c)})},D(c=>{var u=!o(),$=o()?void 0:"暂无魔搭安装包";return u!==c.e&&(d.disabled=c.e=u),$!==c.t&&T(d,"title",c.t=$),c},{e:void 0,t:void 0}),d})()}function Qr(){if(typeof localStorage>"u")return"cards";const e=localStorage.getItem(na);return e==="cards"||e==="list"?e:"cards"}function Jr(e){typeof localStorage>"u"||localStorage.setItem(na,e)}je(["input","click"]);export{ti as CapabilityCenterPage};
@@ -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-ZiVCMYWM.js";import{u as U}from"./current-project-EXMEeabO.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-202609111023/assets/nope-12-BJR1Ka3c.aac";export{e as default};