@jetv/chat-widget 0.4.4 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/{JsonRenderStandalone-VUWW3ET2.js → JsonRenderStandalone-FWA3H2IY.js} +4 -4
  2. package/dist/{KicadViewer-ZLQA2YQZ.js → KicadViewer-ZGDJYW46.js} +3 -3
  3. package/dist/{KicadViewerCore-3DULQ6FL.js → KicadViewerCore-P7QOLTH2.js} +3 -3
  4. package/dist/{PdfViewer-UJ6N4RTJ.js → PdfViewer-ESXNFQIL.js} +3 -3
  5. package/dist/{PdfViewerCore-Q3327I54.js → PdfViewerCore-DGEOG2UX.js} +2 -2
  6. package/dist/{StepViewerCore-YUKJQBSO.js → StepViewerCore-GV2SJA24.js} +2 -2
  7. package/dist/{ThreeViewerCore-U7LJPY4R.js → ThreeViewerCore-XDWHZQPU.js} +2 -2
  8. package/dist/{chunk-KCHA4SMG.js → chunk-72C4QM5Z.js} +2 -2
  9. package/dist/{chunk-FIQDTE6E.js → chunk-LMTPAJEF.js} +4 -4
  10. package/dist/{chunk-BA4QDLZV.js → chunk-QXC6V2HI.js} +2 -2
  11. package/dist/chunk-QXC6V2HI.js.map +1 -0
  12. package/dist/{chunk-NVGFU7WY.js → chunk-TJDP3DYP.js} +2 -2
  13. package/dist/components/JsonRender/standalone.cjs +1 -1
  14. package/dist/components/JsonRender/standalone.cjs.map +1 -1
  15. package/dist/components/JsonRender/standalone.js +4 -4
  16. package/dist/index.cjs +1 -1
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.js +8 -8
  19. package/dist/provenance/index.cjs +1 -1
  20. package/dist/provenance/index.cjs.map +1 -1
  21. package/dist/provenance/index.js +2 -2
  22. package/package.json +1 -1
  23. package/dist/chunk-BA4QDLZV.js.map +0 -1
  24. /package/dist/{JsonRenderStandalone-VUWW3ET2.js.map → JsonRenderStandalone-FWA3H2IY.js.map} +0 -0
  25. /package/dist/{KicadViewer-ZLQA2YQZ.js.map → KicadViewer-ZGDJYW46.js.map} +0 -0
  26. /package/dist/{KicadViewerCore-3DULQ6FL.js.map → KicadViewerCore-P7QOLTH2.js.map} +0 -0
  27. /package/dist/{PdfViewer-UJ6N4RTJ.js.map → PdfViewer-ESXNFQIL.js.map} +0 -0
  28. /package/dist/{PdfViewerCore-Q3327I54.js.map → PdfViewerCore-DGEOG2UX.js.map} +0 -0
  29. /package/dist/{StepViewerCore-YUKJQBSO.js.map → StepViewerCore-GV2SJA24.js.map} +0 -0
  30. /package/dist/{ThreeViewerCore-U7LJPY4R.js.map → ThreeViewerCore-XDWHZQPU.js.map} +0 -0
  31. /package/dist/{chunk-KCHA4SMG.js.map → chunk-72C4QM5Z.js.map} +0 -0
  32. /package/dist/{chunk-FIQDTE6E.js.map → chunk-LMTPAJEF.js.map} +0 -0
  33. /package/dist/{chunk-NVGFU7WY.js.map → chunk-TJDP3DYP.js.map} +0 -0
@@ -9,8 +9,8 @@ import {
9
9
  ProvenanceI18nProvider,
10
10
  fetchProvenanceGraph,
11
11
  useProvenanceGraph
12
- } from "../chunk-NVGFU7WY.js";
13
- import "../chunk-BA4QDLZV.js";
12
+ } from "../chunk-TJDP3DYP.js";
13
+ import "../chunk-QXC6V2HI.js";
14
14
  export {
15
15
  FilterBar,
16
16
  GraphBuilder,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jetv/chat-widget",
3
- "version": "0.4.4",
3
+ "version": "0.4.5",
4
4
  "description": "JetPave ChatWidget SDK — Agent conversation UI component",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/i18n/messages.ts","../src/i18n/context.ts"],"sourcesContent":["export interface ChatWidgetMessages {\n 'header.title': string\n 'header.icon': string\n 'status.connecting': string\n 'status.running': string\n 'status.compressing': string\n 'status.error': string\n 'status.idle': string\n 'empty.waiting': string\n 'empty.icon': string\n 'round.separator': string\n 'round.status.running': string\n 'round.status.completed': string\n 'round.status.error': string\n 'round.noMessage': string\n 'footer.attribution': string\n 'selection.ask': string\n 'viewer.loading': string\n 'viewer.error': string\n 'viewer.back': string\n 'viewer.defaultTitle': string\n 'viewer.copyFull': string\n 'viewer.copyFullTitle': string\n 'viewer.referenceFile': string\n 'viewer.referenceFileTitle': string\n 'viewer.referencePage': string\n 'viewer.referencePageTitle': string\n 'viewer.download': string\n 'viewer.downloadOriginal': string\n 'viewer.downloadWord': string\n 'viewer.downloadPdf': string\n 'viewer.exporting': string\n 'viewer.fullscreen': string\n 'viewer.fullscreenExit': string\n 'viewer.close': string\n 'viewer.unknownType': string\n 'viewer.iframeHint': string\n 'viewer.copySnippet': string\n 'viewer.loadingPdf': string\n 'viewer.pdfPages': string\n 'viewer.loadingKicad': string\n 'viewer.loading3d': string\n 'viewer.loadingStep': string\n 'viewer.3d.wireframe': string\n 'viewer.3d.resetView': string\n 'viewer.gerberTitle': string\n 'viewer.gerberBlobWarning': string\n 'viewer.gerberNoHttpUrl': string\n 'viewer.pdfPreview': string\n 'viewer.htmlPreview': string\n 'viewer.htmlProjectLoading': string\n 'viewer.htmlProjectNoEntry': string\n 'viewer.htmlProjectSizeLimit': string\n 'viewer.htmlStrategyForcedInlineWarning': string\n 'viewer.htmlStrategyFallbackCspWarning': string\n 'viewer.copyFullKicadTitle': string\n 'viewer.zoomIn': string\n 'viewer.zoomOut': string\n 'viewer.zoomReset': string\n 'viewer.loadingWord': string\n 'viewer.loadingExcel': string\n 'viewer.loadingPowerPoint': string\n 'viewer.pptPrev': string\n 'viewer.pptNext': string\n 'viewer.pptSlide': string\n 'viewer.pptThumbnails': string\n 'viewer.excelRows': string\n 'viewer.excelColumns': string\n 'childAgent.status.running': string\n 'childAgent.status.completed': string\n 'hitl.form.defaultTitle': string\n 'hitl.wait.default': string\n 'todo.completed.count': string\n 'todo.blocked.count': string\n 'todo.more': string\n 'todo.header.done': string\n 'tool.phase.generating': string\n 'tool.phase.executing': string\n 'tool.phase.complete': string\n 'tool.phase.error': string\n 'tool.executing': string\n 'tool.mcp.running': string\n 'tool.mcp.success': string\n 'tool.mcp.error': string\n 'form.placeholder.select': string\n 'form.required.default': string\n 'form.submit.submit': string\n 'form.submit.submitting': string\n 'form.requestId': string\n 'pinned.label': string\n 'plan.title': string\n 'plan.step': string\n 'thinking.inProgress': string\n 'thinking.completed': string\n 'split.unreadCount': string\n 'split.askQuestion': string\n 'split.exitFullscreen': string\n 'context.inputPlaceholder': string\n 'context.inputPlaceholderWithFile': string\n 'context.send': string\n 'context.removeReference': string\n 'split.home': string\n 'split.workspace': string\n 'split.annotation': string\n 'split.tabClose': string\n 'split.tabNew': string\n 'split.tabScrollLeft': string\n 'split.tabScrollRight': string\n 'workspace.title': string\n 'workspace.searchPlaceholder': string\n 'workspace.empty': string\n 'workspace.downloadAll': string\n 'workspace.recent': string\n 'workspace.open': string\n 'workspace.openInNewTab': string\n 'workspace.download': string\n 'workspace.copyPath': string\n 'workspace.expandAll': string\n 'workspace.collapseAll': string\n 'annotation.title': string\n 'annotation.empty': string\n 'annotation.fileLevelTitle': string\n 'annotation.fileLevelPlaceholder': string\n 'annotation.anchoredPlaceholder': string\n 'annotation.inlineInputPlaceholder': string\n 'annotation.replyPlaceholder': string\n 'annotation.anchorLabel': string\n 'annotation.close': string\n 'annotation.fabLabel': string\n 'annotation.fabHeader': string\n 'annotation.messageCount': string\n 'annotation.anchorInvalid': string\n 'annotation.errorRetry': string\n 'annotation.queuedHint': string\n 'annotation.selectionLabel': string\n 'agentControl.pause': string\n 'agentControl.resume': string\n 'agentControl.stop': string\n 'agentControl.paused': string\n 'agentControl.groupTitle': string\n 'aria.fileNavigation': string\n 'kicad.loadFailed': string\n 'kicad.urlNotReady': string\n 'kicad.loadingEngine': string\n 'kicad.sidebarTitle': string\n 'kicad.sidebarPcb': string\n 'kicad.sidebarSch': string\n 'kicad.sidebarGeneric': string\n 'kicad.viewVisual': string\n 'kicad.viewSource': string\n 'provenance.filter.type.agent': string\n 'provenance.filter.type.action': string\n 'provenance.filter.type.file': string\n 'provenance.filter.type.task': string\n 'provenance.filter.type.reasoning': string\n 'provenance.filter.depth': string\n 'provenance.toolbar.zoomToFit': string\n 'provenance.toolbar.resetCamera': string\n 'provenance.toolbar.refresh': string\n 'provenance.legend.reasoning': string\n 'provenance.legend.action': string\n 'provenance.legend.file': string\n 'provenance.legend.task': string\n 'provenance.legend.references': string\n 'provenance.legend.edges': string\n 'provenance.legend.depth': string\n 'provenance.detail.title': string\n 'provenance.detail.noSelection': string\n 'provenance.detail.label.name': string\n 'provenance.detail.label.id': string\n 'provenance.detail.label.timestamp': string\n 'provenance.detail.label.agentId': string\n 'provenance.detail.label.instanceId': string\n 'provenance.detail.label.level': string\n 'provenance.detail.label.status': string\n 'provenance.detail.label.tool': string\n 'provenance.detail.label.purpose': string\n 'provenance.detail.label.duration': string\n 'provenance.detail.label.path': string\n 'provenance.detail.label.operation': string\n 'provenance.detail.label.taskId': string\n 'provenance.detail.label.description': string\n 'provenance.detail.label.model': string\n 'provenance.detail.label.tokenCount': string\n 'provenance.detail.label.reasoningPreview': string\n 'provenance.detail.relatedEdges': string\n 'provenance.page.noSessionHint': string\n 'provenance.page.loading': string\n 'provenance.page.emptyGraph': string\n 'provenance.drawer.emptyGraph': string\n 'provenance.graph.edgeType.references': string\n 'toolResult.label': string\n 'toolResult.expandAll': string\n 'toolResult.searchSummary': string\n 'toolResult.scrapeSummary': string\n 'toolResult.more': string\n 'plan.status.active': string\n 'pinned.noMessage': string\n 'viewer.fallback.unknownType': string\n 'viewer.fallback.download': string\n 'fileSize.B': string\n 'fileSize.KB': string\n 'fileSize.MB': string\n 'thinking.title': string\n 'thinking.step': string\n 'viewer.stepHint': string\n 'viewer.threeHint': string\n 'reference.header': string\n 'history.noMessage': string\n 'agent.defaultName': string\n 'error.unknown': string\n 'locale': string\n 'skill.inlineLabel': string\n 'skill.empty': string\n 'skill.searchPlaceholder': string\n 'skill.removeLabel': string\n 'skill.loading': string\n 'skill.loadError': string\n 'skill.loadMore': string\n 'skill.selectorLabel': string\n 'pool.idle': string\n 'pool.collaborating': string\n /** JETP-083 WS3.7.7 follow-up: badge text when at least one agent is\n * paused on a HIL response (no RUNNING agents). ``{{count}}`` = number\n * of paused agents. */\n 'pool.awaiting': string\n 'pool.title': string\n 'pool.empty': string\n 'pool.state.running': string\n /** JETP-083 WS3.7.7 follow-up: agent-row state label for an agent that\n * is blocked inside ``_await_genui_blocking`` waiting on a human HIL\n * reply. Distinguishes from ``running`` / ``completed`` / ``lost``;\n * mapped from backend ``state=\"PAUSED\"``. */\n 'pool.state.paused': string\n 'pool.state.completed': string\n /** JETP-108: user pressed stop and the agent is draining the current\n * tool/LLM call (backend ``state=\"STOPPING\"``). */\n 'pool.state.stopping': string\n /** JETP-108: agent was stopped by the user and has retired\n * (backend ``state=\"STOPPED\"``). */\n 'pool.state.stopped': string\n 'pool.state.lost': string\n 'pool.state.unknown': string\n /** Synthetic \"current activity\" row shown when an agent is RUNNING but has\n * no in-flight tool call (i.e. it is reasoning between tool calls). Keeps the\n * pool panel from looking idle/done during the model-thinking phase. */\n 'pool.action.thinking': string\n 'input.placeholder': string\n 'input.placeholderPrimary': string\n 'input.placeholderSkillHint': string\n 'input.placeholderLoading': string\n // busy-queue:表层 agent 工作中继续输入时,被退回的消息在输入区上方排队\n 'composer.queued.count': string\n 'composer.queued.editAria': string\n 'composer.queued.removeAria': string\n 'composer.queued.interjectLabel': string\n 'composer.queued.interjectTitle': string\n 'composer.queued.interjectAria': string\n // JETP-038:对话流内\"插话气泡\"的小标\n 'message.interjectionTag': string\n 'discussion.title': string\n 'discussion.empty': string\n 'discussion.active': string\n 'discussion.resolved': string\n 'discussion.archived': string\n 'round.foreign.label': string\n 'round.foreign.unread': string\n 'round.foreign.expand': string\n 'sidebar.mainChat': string\n 'sidebar.chat': string\n 'sidebar.fileQA': string\n 'sidebar.selectionQA': string\n 'sessionList.title': string\n 'sessionList.newSession': string\n 'sessionList.logout': string\n 'sessionList.loading': string\n 'sessionList.empty': string\n 'sessionList.unsupported': string\n 'sessionList.untitled': string\n 'sessionList.deleteTitle': string\n 'sessionList.deleteConfirm': string\n 'sessionList.prevPage': string\n 'sessionList.nextPage': string\n 'sessionList.pageInfo': string\n // ModelPicker (composer 内的\"本次发送使用的模型\"切换器)\n 'modelPicker.menu.head': string\n 'modelPicker.menu.aria': string\n 'modelPicker.auto.title': string\n 'modelPicker.auto.hint.knownChannel': string\n 'modelPicker.auto.hint.knownBasename': string\n 'modelPicker.auto.hint.fallback': string\n 'modelPicker.row.hint.channelMulti': string\n 'modelPicker.row.hint.channelSingle': string\n 'modelPicker.row.hint.versionMulti': string\n 'modelPicker.fallback.placeholder': string\n 'modelPicker.inert.title': string\n 'modelPicker.guestLocked.label': string\n 'modelPicker.guestLocked.title': string\n 'modelPicker.loadingList': string\n 'modelPicker.trigger.title.stale': string\n 'modelPicker.trigger.title.agentDefault.withChannel': string\n 'modelPicker.trigger.title.agentDefault': string\n 'modelPicker.trigger.title.current': string\n 'modelPicker.row.title.pickDefault': string\n 'modelPicker.row.title.pick': string\n 'modelPicker.chip.aria': string\n 'modelPicker.chip.title.available': string\n 'modelPicker.chip.title.unavailable': string\n // ── Picker UX v2:搜索 + 模态 tab + 最近 + 家族分组 ──\n 'modelPicker.search.placeholder': string\n 'modelPicker.search.aria': string\n 'modelPicker.search.clear.aria': string\n 'modelPicker.modality.aria': string\n 'modelPicker.modality.all': string\n 'modelPicker.modality.chat': string\n 'modelPicker.modality.image': string\n 'modelPicker.modality.video': string\n 'modelPicker.modality.audio': string\n 'modelPicker.modality.embedding': string\n 'modelPicker.modality.realtime': string\n 'modelPicker.section.recent': string\n 'modelPicker.section.vendor': string\n 'modelPicker.section.toggle.expand': string\n 'modelPicker.section.toggle.collapse': string\n 'modelPicker.empty.title': string\n 'modelPicker.empty.hint': string\n 'modelPicker.vendor.openai': string\n 'modelPicker.vendor.anthropic': string\n 'modelPicker.vendor.google': string\n 'modelPicker.vendor.xai': string\n 'modelPicker.vendor.alibaba': string\n 'modelPicker.vendor.zhipu': string\n 'modelPicker.vendor.moonshot': string\n 'modelPicker.vendor.bytedance': string\n 'modelPicker.vendor.deepseek': string\n 'modelPicker.vendor.minimax': string\n 'modelPicker.vendor.openrouter': string\n 'modelPicker.vendor.xiaomi': string\n 'modelPicker.vendor.other': string\n // Capability badges (v2.x: 每个模型尾部的小图标)\n 'modelPicker.cap.aria': string\n 'modelPicker.cap.image.title': string\n 'modelPicker.cap.video.native.title': string\n 'modelPicker.cap.video.derived.title': string\n 'modelPicker.cap.audio.title': string\n 'modelPicker.cap.tools.title': string\n 'modelPicker.cap.imageGen.title': string\n 'modelPicker.cap.videoGen.title': string\n 'modelPicker.cap.audioGen.title': string\n // CWRF-013 Phase 4 P2-T00 — `jr-primitives` i18n namespace\n // (spec drift D-I18N-01: rather than pull in `react-i18next` + `i18next`\n // as the spec D9 originally proposed, we extend the existing chat-widget\n // in-house i18n. Same key semantics, zero new dependency.)\n 'jr.confirmDialog.cancel': string\n 'jr.confirmDialog.confirm': string\n 'jr.confirmDialog.loading': string\n // JETP-084 — RAG paragraph-level provenance chip / popover.\n // Wired through the central i18n so hosts can override via `locale` /\n // `messages` instead of the component-only ChipI18n/PopoverI18n props.\n 'rag.chip.label': string\n // JETP-117 Phase 3 — rich chip labels (AC-FEC-001). Fragment templates are\n // interpolated inside Chip via `interpolate` ({{n}} / {{start}} / {{end}}).\n 'rag.chip.fragment.chunk': string\n 'rag.chip.fragment.line': string\n 'rag.chip.fragment.lineRange': string\n 'rag.chip.fragment.row': string\n /** Collapsed cluster face: `{{name}} ×{{count}}`. */\n 'rag.chip.cluster': string\n 'rag.chip.cluster.expandAria': string\n // JETP-117 Phase 3 — unresolved citation chip (AC-FEC-003).\n 'rag.unresolved.label': string\n 'rag.unresolved.reason.pathForm': string\n 'rag.unresolved.reason.unknownRid': string\n 'rag.unresolved.reason.urlUnreachable': string\n 'rag.unresolved.retry': string\n 'rag.unresolved.resolving': string\n 'rag.unresolved.failed': string\n 'rag.popover.viewNetwork': string\n /** JETP-117 Phase 3 — file-level precision badge label (AC-FEC-004). */\n 'rag.precision.file': string\n /** JETP-117 Phase 3 — degradation note for viewers without fragment highlight. */\n 'viewer.fragmentUnsupported': string\n 'viewer.viewGraph': string\n // JETP-117 Phase 3 — backlinks panel (AC-FEB-001..004).\n 'backlinks.tab': string\n 'backlinks.group.answer': string\n 'backlinks.group.file': string\n 'backlinks.group.transcript': string\n 'backlinks.pinnedFragment': string\n 'backlinks.loading': string\n 'backlinks.error': string\n 'backlinks.retry': string\n 'backlinks.empty': string\n 'backlinks.ghost': string\n 'backlinks.filter.all': string\n 'backlinks.openAnswer': string\n 'backlinks.close': string\n // AC-FEB-005 — transcript entry navigation + locator copy.\n 'backlinks.openTranscript': string\n 'backlinks.copyLocator': string\n 'backlinks.locatorCopied': string\n 'backlinks.turnUnreachable': string\n // JETP-117 Phase 3 — local 2D knowledge graph (AC-FEG-001..004).\n 'localGraph.title': string\n 'localGraph.loading': string\n 'localGraph.error': string\n 'localGraph.retry': string\n 'localGraph.refresh': string\n 'localGraph.empty': string\n 'localGraph.depth': string\n 'localGraph.aggregated': string\n 'localGraph.nodeOpenAria': string\n 'localGraph.close': string\n 'localGraph.openFile': string\n 'rag.popover.openInViewer': string\n 'rag.popover.staleWarning': string\n 'rag.popover.missingTitle': string\n 'rag.popover.missingHint': string\n 'rag.popover.loadingHint': string\n 'rag.popover.imageNoPreview': string\n 'rag.popover.tableEmpty': string\n // JETP-105 交互网关:环境面板 + Web Shell / Web 桌面(能力门控入口)\n 'compute.panel.title': string\n 'compute.panel.loading': string\n 'compute.panel.empty': string\n 'compute.panel.error': string\n 'compute.panel.refresh': string\n 'compute.target.offline': string\n 'compute.target.ready': string\n 'compute.action.shell': string\n 'compute.action.desktop': string\n 'compute.action.noShell': string\n 'compute.action.noDesktop': string\n 'compute.shell.title': string\n 'compute.shell.connecting': string\n 'compute.shell.connected': string\n 'compute.shell.disconnected': string\n 'compute.shell.error': string\n 'compute.shell.close': string\n 'compute.desktop.title': string\n 'compute.desktop.connecting': string\n 'compute.desktop.connected': string\n 'compute.desktop.disconnected': string\n 'compute.desktop.error': string\n 'compute.desktop.close': string\n}\n\nexport const zhCN: ChatWidgetMessages = {\n 'header.title': 'JetV',\n 'header.icon': '',\n 'status.connecting': '连接中...',\n 'status.running': '执行中...',\n 'status.compressing': '上下文压缩中...',\n 'status.error': '连接错误',\n 'status.idle': '待命',\n 'empty.waiting': '等待对话开始...',\n 'empty.icon': '',\n 'round.separator': '上一轮对话',\n 'round.status.running': '执行中',\n 'round.status.completed': '已完成',\n 'round.status.error': '执行失败',\n 'round.noMessage': '(无消息)',\n 'footer.attribution': '',\n 'selection.ask': '问一下',\n 'viewer.loading': '加载中...',\n 'viewer.error': '无法获取文件内容',\n 'viewer.back': '← 返回',\n 'viewer.defaultTitle': '文件预览',\n 'viewer.copyFull': '复制全文',\n 'viewer.copyFullTitle': '复制全文到剪贴板并引用',\n 'viewer.referenceFile': '引用此文件',\n 'viewer.referenceFileTitle': '引用此文件',\n 'viewer.referencePage': '引用当前页面',\n 'viewer.referencePageTitle': '引用当前页面到对话',\n 'viewer.download': '下载',\n 'viewer.downloadOriginal': '原始格式',\n 'viewer.downloadWord': '下载为 Word',\n 'viewer.downloadPdf': '下载为 PDF',\n 'viewer.exporting': '正在生成文档…',\n 'viewer.fullscreen': '全屏 (⌘L)',\n 'viewer.fullscreenExit': '退出全屏',\n 'viewer.close': '关闭',\n 'viewer.unknownType': '未知类型',\n 'viewer.iframeHint': 'iframe 内容无法直接选中文本,请使用上方「引用此文件」按钮',\n 'viewer.copySnippet': '复制片段',\n 'viewer.loadingPdf': '加载 PDF 查看器...',\n 'viewer.pdfPages': '共 {{count}} 页',\n 'viewer.loadingKicad': '加载 KiCad 查看器...',\n 'viewer.loading3d': '加载 3D 查看器...',\n 'viewer.loadingStep': '加载 STEP 查看器...',\n 'viewer.gerberTitle': 'DFX Copilot — Gerber 预览',\n 'viewer.gerberBlobWarning':\n 'DFX Copilot 需要从公网可访问的地址拉取文件。当前为本地 blob/data URL,iframe 内无法使用。请在 Adapter 中返回 content_url,或实现 getResourceUrl 提供 HTTPS 预签名链接。',\n 'viewer.gerberNoHttpUrl':\n '当前资源地址不是 http(s),无法嵌入 DFX Copilot。请使用直链或预签名 URL。',\n 'viewer.pdfPreview': 'PDF 预览',\n 'viewer.htmlPreview': 'HTML 预览',\n 'viewer.htmlProjectLoading': '正在加载 HTML 项目文件…',\n 'viewer.htmlProjectNoEntry': 'HTML 项目缺少入口文件(如 index.html),无法预览',\n 'viewer.htmlProjectSizeLimit': 'HTML 项目超出大小限制,仅显示入口文件',\n 'viewer.htmlStrategyForcedInlineWarning': '检测到 ESM 模块,但已强制 inline 策略,可能加载失败',\n 'viewer.htmlStrategyFallbackCspWarning': '宿主 CSP 禁止 blob:,已自动降级到 inline 策略',\n 'viewer.copyFullKicadTitle': '复制全文 KiCad 原文到剪贴板并引用,粘贴到输入框即可带入',\n 'viewer.zoomIn': '放大',\n 'viewer.zoomOut': '缩小',\n 'viewer.zoomReset': '重置',\n 'viewer.loadingWord': '加载 Word 查看器...',\n 'viewer.loadingExcel': '加载 Excel 查看器...',\n 'viewer.loadingPowerPoint': '加载 PowerPoint 查看器...',\n 'viewer.pptPrev': '‹ 上一页',\n 'viewer.pptNext': '下一页 ›',\n 'viewer.pptSlide': '幻灯片',\n 'viewer.pptThumbnails': '缩略图',\n 'viewer.excelRows': '行',\n 'viewer.excelColumns': '列',\n 'childAgent.status.running': '执行中',\n 'childAgent.status.completed': '已完成',\n 'hitl.form.defaultTitle': '请填写表单',\n 'hitl.wait.default': '等待用户输入...',\n 'todo.completed.count': '已完成 {{completed}}/{{total}}',\n 'todo.blocked.count': '{{count}} 项阻塞',\n 'todo.more': '+ {{count}} 更多',\n 'todo.header.done': '已完成',\n 'tool.phase.generating': '生成中',\n 'tool.phase.executing': '执行中',\n 'tool.phase.complete': '完成',\n 'tool.phase.error': '失败',\n 'tool.executing': '执行工具: {{name}}',\n 'tool.mcp.running': '执行中',\n 'tool.mcp.success': '完成',\n 'tool.mcp.error': '失败',\n 'form.placeholder.select': '请选择',\n 'form.required.default': '此项为必填项',\n 'form.submit.submit': '提交',\n 'form.submit.submitting': '提交中...',\n 'form.requestId': '请求 ID: ',\n 'pinned.label': '置顶',\n 'plan.title': '执行计划',\n 'plan.step': '步骤 {{index}}',\n 'thinking.inProgress': '思考中...',\n 'thinking.completed': '思考完成',\n 'split.unreadCount': '{{count}} 条新消息',\n 'split.askQuestion': '提问 (⌘/)',\n 'split.exitFullscreen': '退出全屏 (Esc)',\n 'context.inputPlaceholder': '在这里提问…',\n 'context.inputPlaceholderWithFile': '关于 {{fileName}} 提问…',\n 'context.send': '发送',\n 'context.removeReference': '移除引用',\n 'split.home': '主对话',\n 'split.workspace': '工作空间',\n 'split.annotation': '批注',\n 'split.tabClose': '关闭标签页',\n 'split.tabNew': '新标签页',\n 'split.tabScrollLeft': '向左滚动标签',\n 'split.tabScrollRight': '向右滚动标签',\n 'workspace.title': '工作空间',\n 'workspace.searchPlaceholder': '搜索文件…',\n 'workspace.empty': '暂无文件',\n 'workspace.downloadAll': '打包下载全部文件',\n 'workspace.recent': '最近修改',\n 'workspace.open': '打开',\n 'workspace.openInNewTab': '在新标签页打开',\n 'workspace.download': '下载',\n 'workspace.copyPath': '复制路径',\n 'workspace.expandAll': '展开全部',\n 'workspace.collapseAll': '折叠全部',\n 'annotation.title': '批注',\n 'annotation.empty': '暂无批注',\n 'annotation.fileLevelTitle': '文件对话',\n 'annotation.fileLevelPlaceholder': '关于此文件提问…',\n 'annotation.anchoredPlaceholder': '关于所选内容提问…',\n 'annotation.inlineInputPlaceholder': '就此处提问…',\n 'annotation.replyPlaceholder': '继续追问…',\n 'annotation.anchorLabel': '锚点: {{text}}',\n 'annotation.close': '关闭',\n 'annotation.fabLabel': '文件批注',\n 'annotation.fabHeader': '{{fileName}} · 文件对话',\n 'annotation.messageCount': '{{count}} 条消息',\n 'annotation.anchorInvalid': '锚点已失效',\n 'annotation.errorRetry': '发送失败,点击重试',\n 'annotation.queuedHint': '排队中,请稍候…',\n 'annotation.selectionLabel': '选中内容',\n 'agentControl.pause': '暂停',\n 'agentControl.resume': '继续',\n 'agentControl.stop': '停止',\n 'agentControl.paused': '已暂停',\n 'agentControl.groupTitle': '工作组',\n 'aria.fileNavigation': '文件导航',\n 'kicad.loadFailed': 'KiCanvas 加载失败,已切换至源码视图',\n 'kicad.urlNotReady': '资源 URL 未就绪,当前显示源码',\n 'kicad.loadingEngine': '加载 KiCanvas 可视化引擎...',\n 'kicad.sidebarTitle': 'KiCanvas 侧栏提供:属性、符号/封装列表、文档信息等',\n 'kicad.sidebarPcb': 'PCB:侧栏可查属性、封装列表',\n 'kicad.sidebarSch': 'SCH:侧栏可查符号/子图属性',\n 'kicad.sidebarGeneric': '侧栏查看属性',\n 'kicad.viewVisual': '可视化',\n 'kicad.viewSource': '源码',\n 'provenance.filter.type.agent': '智能体',\n 'provenance.filter.type.action': '工具',\n 'provenance.filter.type.file': '文件',\n 'provenance.filter.type.task': '任务',\n 'provenance.filter.type.reasoning': '推理',\n 'provenance.filter.depth': '深度:',\n 'provenance.toolbar.zoomToFit': '自适应',\n 'provenance.toolbar.resetCamera': '重置视角',\n 'provenance.toolbar.refresh': '刷新',\n 'provenance.legend.reasoning': '推理',\n 'provenance.legend.action': '工具',\n 'provenance.legend.file': '文件',\n 'provenance.legend.task': '任务',\n 'provenance.legend.references': '引用',\n 'provenance.legend.edges': '边: ',\n 'provenance.legend.depth': '深度: ',\n 'provenance.detail.title': '节点详情',\n 'provenance.detail.noSelection': '未选中节点',\n 'provenance.detail.label.name': '名称',\n 'provenance.detail.label.id': 'ID',\n 'provenance.detail.label.timestamp': '时间',\n 'provenance.detail.label.agentId': 'Agent ID',\n 'provenance.detail.label.instanceId': '实例 ID',\n 'provenance.detail.label.level': '层级',\n 'provenance.detail.label.status': '状态',\n 'provenance.detail.label.tool': '工具',\n 'provenance.detail.label.purpose': '目的',\n 'provenance.detail.label.duration': '耗时',\n 'provenance.detail.label.path': '路径',\n 'provenance.detail.label.operation': '操作',\n 'provenance.detail.label.taskId': '任务 ID',\n 'provenance.detail.label.description': '描述',\n 'provenance.detail.label.model': '模型',\n 'provenance.detail.label.tokenCount': 'Token 数',\n 'provenance.detail.label.reasoningPreview': '推理预览',\n 'provenance.detail.relatedEdges': '关联边 ({{count}})',\n 'provenance.page.noSessionHint': '请通过 URL 参数指定会话: ?session_id=NNN',\n 'provenance.page.loading': '加载推理图谱...',\n 'provenance.page.emptyGraph': '当前会话暂无图谱数据',\n 'provenance.drawer.emptyGraph': '暂无图谱数据',\n 'provenance.graph.edgeType.references': '引用',\n 'toolResult.label': '执行结果',\n 'toolResult.expandAll': '展开全部 ({{count}} 行)',\n 'toolResult.searchSummary': '搜索结果 · {{count}} 条',\n 'toolResult.scrapeSummary': '抓取结果 · {{title}}',\n 'toolResult.more': '+{{count}} more',\n 'plan.status.active': '执行中',\n 'pinned.noMessage': '(无消息内容)',\n 'viewer.fallback.unknownType': '未知类型',\n 'viewer.fallback.download': '下载文件',\n 'fileSize.B': '{{size}} B',\n 'fileSize.KB': '{{size}} KB',\n 'fileSize.MB': '{{size}} MB',\n 'thinking.title': '思考推理',\n 'thinking.step': '步骤 {{step}}',\n 'viewer.stepHint': '鼠标拖拽旋转,滚轮缩放,右键平移',\n 'viewer.threeHint': '鼠标拖拽旋转,滚轮缩放,右键平移',\n 'viewer.3d.wireframe': '线框模式',\n 'viewer.3d.resetView': '重置视角',\n 'reference.header': '[引用文件: {{fileName}}]',\n 'history.noMessage': '(历史消息)',\n 'agent.defaultName': '助手',\n 'error.unknown': '未知错误',\n 'locale': 'zh-CN',\n 'skill.inlineLabel': '先查看并使用{{name}}技能,去解决:',\n 'skill.empty': '暂无可用技能',\n 'skill.searchPlaceholder': '搜索技能...',\n 'skill.removeLabel': '移除技能',\n 'skill.loading': '加载中...',\n 'skill.loadError': '加载技能失败',\n 'skill.loadMore': '加载更多',\n 'skill.selectorLabel': '技能选择',\n 'pool.idle': '待命',\n 'pool.collaborating': '{{count}} 协作中',\n 'pool.awaiting': '{{count}} 等待人工',\n 'pool.title': '智能体池',\n 'pool.empty': '暂无活跃智能体',\n 'pool.state.running': '执行中',\n 'pool.state.paused': '等待人工',\n 'pool.state.completed': '已完成',\n 'pool.state.stopping': '停止中',\n 'pool.state.stopped': '已停止',\n 'pool.state.lost': '已失联',\n 'pool.state.unknown': '未知',\n 'pool.action.thinking': '思考中',\n 'input.placeholder': '输入消息,/ 选择技能',\n 'input.placeholderPrimary': '输入消息',\n 'input.placeholderSkillHint': ',/ 选择技能',\n 'input.placeholderLoading': '等待回复中…',\n 'composer.queued.count': '已排队 {{count}} 条 · 当前完成后自动依次发送',\n 'composer.queued.editAria': '编辑并移出队列:{{text}}',\n 'composer.queued.removeAria': '移除排队消息:{{text}}',\n 'composer.queued.interjectLabel': '插队',\n 'composer.queued.interjectTitle': '立即送达:插队给正在运行的智能体,不等当前回合结束',\n 'composer.queued.interjectAria': '插队送达:{{text}}',\n 'message.interjectionTag': '插话',\n 'discussion.title': '讨论',\n 'discussion.empty': '暂无讨论',\n 'discussion.active': '进行中',\n 'discussion.resolved': '已结论',\n 'discussion.archived': '已归档',\n 'round.foreign.label': '来自其他窗口的对话',\n 'round.foreign.unread': '{{count}} 条新消息',\n 'round.foreign.expand': '点击展开',\n 'sidebar.mainChat': '主对话',\n 'sidebar.chat': '对话',\n 'sidebar.fileQA': '文件问答',\n 'sidebar.selectionQA': '选区问答',\n 'sessionList.title': '历史会话',\n 'sessionList.newSession': '+ 新会话',\n 'sessionList.logout': '退出',\n 'sessionList.loading': '加载中...',\n 'sessionList.empty': '暂无会话',\n 'sessionList.unsupported': '当前 adapter 未实现 listSessions',\n 'sessionList.untitled': '无标题',\n 'sessionList.deleteTitle': '删除会话',\n 'sessionList.deleteConfirm': '确定删除该会话?',\n 'sessionList.prevPage': '←',\n 'sessionList.nextPage': '→',\n 'sessionList.pageInfo': '第 {{page}} / {{totalPages}} 页',\n 'modelPicker.menu.head': '本次使用的模型',\n 'modelPicker.menu.aria': '选择本次使用的模型',\n 'modelPicker.auto.title': '默认(跟随 Agent)',\n 'modelPicker.auto.hint.knownChannel': '当前 Agent 默认:{{name}} · {{channel}}',\n 'modelPicker.auto.hint.knownBasename': '当前 Agent 默认:{{name}}',\n 'modelPicker.auto.hint.fallback': '使用 Agent 注册的默认模型,跨子 Agent 自动切换',\n 'modelPicker.row.hint.channelMulti': '{{available}}/{{total}} 个渠道可用',\n 'modelPicker.row.hint.channelSingle': '渠道:{{channel}}',\n 'modelPicker.row.hint.versionMulti': '{{count}} 个版本可用',\n 'modelPicker.fallback.placeholder': '默认模型',\n 'modelPicker.inert.title': '模型选择当前不可用',\n 'modelPicker.guestLocked.label': '默认模型 · 登录后可选',\n 'modelPicker.guestLocked.title': '登录后可在多个模型间切换;游客先用默认模型即可开干。',\n 'modelPicker.loadingList': '加载模型清单…',\n 'modelPicker.trigger.title.stale': '{{name}}(已不在清单中,发送时仍会尝试使用)',\n 'modelPicker.trigger.title.agentDefault.withChannel':\n '当前 Agent 默认:{{name}} · {{channel}}(发送时跟随 Agent)',\n 'modelPicker.trigger.title.agentDefault': '当前 Agent 默认:{{name}}(发送时跟随 Agent)',\n 'modelPicker.trigger.title.current': '当前模型:{{name}}',\n 'modelPicker.row.title.pickDefault': '选默认渠道({{hint}})',\n 'modelPicker.row.title.pick': '选用 {{name}}',\n 'modelPicker.chip.aria': '{{title}} 渠道',\n 'modelPicker.chip.title.available': '渠道 {{channel}} · 模型 {{name}}',\n 'modelPicker.chip.title.unavailable': '渠道 {{channel}} · 当前不可用',\n 'modelPicker.search.placeholder': '搜索模型,如 gpt5、claude opus…',\n 'modelPicker.search.aria': '搜索模型',\n 'modelPicker.search.clear.aria': '清空搜索',\n 'modelPicker.modality.aria': '按能力筛选',\n 'modelPicker.modality.all': '全部',\n 'modelPicker.modality.chat': '对话',\n 'modelPicker.modality.image': '图像',\n 'modelPicker.modality.video': '视频',\n 'modelPicker.modality.audio': '语音',\n 'modelPicker.modality.embedding': '向量',\n 'modelPicker.modality.realtime': '实时',\n 'modelPicker.section.recent': '最近使用',\n 'modelPicker.section.vendor': '{{vendor}}',\n 'modelPicker.section.toggle.expand': '展开 {{vendor}}',\n 'modelPicker.section.toggle.collapse': '折叠 {{vendor}}',\n 'modelPicker.empty.title': '没有匹配的模型',\n 'modelPicker.empty.hint': '试试清空搜索或换一个能力分类',\n 'modelPicker.vendor.openai': 'OpenAI',\n 'modelPicker.vendor.anthropic': 'Anthropic',\n 'modelPicker.vendor.google': 'Google',\n 'modelPicker.vendor.xai': 'xAI',\n 'modelPicker.vendor.alibaba': '阿里',\n 'modelPicker.vendor.zhipu': '智谱',\n 'modelPicker.vendor.moonshot': '月之暗面',\n 'modelPicker.vendor.bytedance': '字节',\n 'modelPicker.vendor.deepseek': 'DeepSeek',\n 'modelPicker.vendor.minimax': 'MiniMax',\n 'modelPicker.vendor.openrouter': 'OpenRouter',\n 'modelPicker.vendor.xiaomi': '小米',\n 'modelPicker.vendor.other': '其他',\n 'modelPicker.cap.aria': '模型能力',\n 'modelPicker.cap.image.title': '图像理解(可读取图片输入)',\n 'modelPicker.cap.video.native.title': '原生视频推理',\n 'modelPicker.cap.video.derived.title': '视频推理(通过图像理解能力衍生,按帧采样处理)',\n 'modelPicker.cap.audio.title': '语音输入理解',\n 'modelPicker.cap.tools.title': '工具调用 / Function Call',\n 'modelPicker.cap.imageGen.title': '图像生成',\n 'modelPicker.cap.videoGen.title': '视频生成',\n 'modelPicker.cap.audioGen.title': '音频生成 / TTS / 音乐合成',\n 'jr.confirmDialog.cancel': '取消',\n 'jr.confirmDialog.confirm': '确认',\n 'jr.confirmDialog.loading': '处理中',\n 'rag.chip.label': '原文',\n 'rag.chip.fragment.chunk': '块{{n}}',\n 'rag.chip.fragment.line': 'L{{start}}',\n 'rag.chip.fragment.lineRange': 'L{{start}}-{{end}}',\n 'rag.chip.fragment.row': '行{{start}}',\n 'rag.chip.cluster': '{{name}} ×{{count}}',\n 'rag.chip.cluster.expandAria': '展开 {{count}} 条对 {{name}} 的引用',\n 'rag.unresolved.label': '未解析引用',\n 'rag.unresolved.reason.pathForm': '该引用未能解析:路径未归一化,点击尝试重新解析',\n 'rag.unresolved.reason.unknownRid': '该引用未能解析:引用不在本会话引用上下文中',\n 'rag.unresolved.reason.urlUnreachable': '该引用未能解析:网页地址不可达',\n 'rag.unresolved.retry': '点击尝试重新解析',\n 'rag.unresolved.resolving': '解析中…',\n 'rag.unresolved.failed': '解析失败',\n 'rag.popover.viewNetwork': '查看引用网络',\n 'rag.precision.file': '文件级定位',\n 'viewer.fragmentUnsupported': '已定位到文件(该格式暂不支持片段高亮)',\n 'viewer.viewGraph': '查看引用网络',\n 'backlinks.tab': '当前任务中被引用 ({{count}})',\n 'backlinks.group.answer': '来自回答 ({{count}})',\n 'backlinks.group.file': '来自文件 ({{count}})',\n 'backlinks.group.transcript': '来自执行轨迹 ({{count}})',\n 'backlinks.pinnedFragment': '引用此片段 ({{count}})',\n 'backlinks.loading': '加载引用…',\n 'backlinks.error': '引用加载失败',\n 'backlinks.retry': '重试',\n 'backlinks.empty': '暂无引用',\n 'backlinks.ghost': '目标已删除',\n 'backlinks.filter.all': '全部',\n 'backlinks.openAnswer': '跳转到对应回答',\n 'backlinks.close': '关闭引用面板',\n 'backlinks.openTranscript': '跳转到对应对话轮',\n 'backlinks.copyLocator': '复制轨迹定位',\n 'backlinks.locatorCopied': '已复制',\n 'backlinks.turnUnreachable': '对话轮不在当前会话内,可复制轨迹定位后手动查看',\n 'localGraph.title': '知识图谱',\n 'localGraph.loading': '加载图谱…',\n 'localGraph.error': '图谱加载失败',\n 'localGraph.retry': '重试',\n 'localGraph.refresh': '刷新',\n 'localGraph.empty': '此文件尚未被引用',\n 'localGraph.depth': '深度',\n 'localGraph.aggregated': '…还有 {{count}} 个',\n 'localGraph.nodeOpenAria': '打开 {{label}}',\n 'localGraph.close': '关闭图谱',\n 'localGraph.openFile': '在源文件打开',\n 'rag.popover.openInViewer': '→ 在原文中查看',\n 'rag.popover.staleWarning': '⚠️ 文件已更新',\n 'rag.popover.missingTitle': '无法加载段落',\n 'rag.popover.missingHint': '请稍后重试或在文件中查看',\n 'rag.popover.loadingHint': '加载中…',\n 'rag.popover.imageNoPreview': '🖼 图片(无预览)',\n 'rag.popover.tableEmpty': '表格(无内容)',\n 'compute.panel.title': '运行环境',\n 'compute.panel.loading': '加载环境中…',\n 'compute.panel.empty': '暂无可用环境',\n 'compute.panel.error': '环境列表加载失败',\n 'compute.panel.refresh': '刷新',\n 'compute.target.offline': '离线',\n 'compute.target.ready': '在线',\n 'compute.action.shell': '进入终端',\n 'compute.action.desktop': '进入桌面',\n 'compute.action.noShell': '该环境不支持终端',\n 'compute.action.noDesktop': '该环境不支持桌面',\n 'compute.shell.title': '终端',\n 'compute.shell.connecting': '连接中…',\n 'compute.shell.connected': '已连接',\n 'compute.shell.disconnected': '连接已断开',\n 'compute.shell.error': '终端连接失败',\n 'compute.shell.close': '关闭',\n 'compute.desktop.title': '远程桌面',\n 'compute.desktop.connecting': '连接中…',\n 'compute.desktop.connected': '已连接',\n 'compute.desktop.disconnected': '连接已断开',\n 'compute.desktop.error': '桌面连接失败',\n 'compute.desktop.close': '关闭',\n}\n\nexport const enUS: ChatWidgetMessages = {\n 'header.title': 'AI Assistant',\n 'header.icon': '',\n 'status.connecting': 'Connecting...',\n 'status.running': 'Running...',\n 'status.compressing': 'Compressing context...',\n 'status.error': 'Connection error',\n 'status.idle': 'Idle',\n 'empty.waiting': 'Waiting for conversation...',\n 'empty.icon': '',\n 'round.separator': 'Previous round',\n 'round.status.running': 'Running',\n 'round.status.completed': 'Completed',\n 'round.status.error': 'Failed',\n 'round.noMessage': '(no message)',\n 'footer.attribution': '',\n 'selection.ask': 'Ask',\n 'viewer.loading': 'Loading...',\n 'viewer.error': 'Failed to load file content',\n 'viewer.back': '← Back',\n 'viewer.defaultTitle': 'File Preview',\n 'viewer.copyFull': 'Copy full',\n 'viewer.copyFullTitle': 'Copy full content to clipboard',\n 'viewer.referenceFile': 'Reference file',\n 'viewer.referenceFileTitle': 'Reference this file',\n 'viewer.referencePage': 'Reference page',\n 'viewer.referencePageTitle': 'Reference this page in chat',\n 'viewer.download': 'Download',\n 'viewer.downloadOriginal': 'Original format',\n 'viewer.downloadWord': 'Download as Word',\n 'viewer.downloadPdf': 'Download as PDF',\n 'viewer.exporting': 'Generating document…',\n 'viewer.fullscreen': 'Fullscreen (⌘L)',\n 'viewer.fullscreenExit': 'Exit fullscreen',\n 'viewer.close': 'Close',\n 'viewer.unknownType': 'Unknown type',\n 'viewer.iframeHint': 'iframe content cannot be selected directly. Use the \"Reference file\" button above.',\n 'viewer.copySnippet': 'Copy snippet',\n 'viewer.loadingPdf': 'Loading PDF viewer...',\n 'viewer.pdfPages': '{{count}} pages',\n 'viewer.loadingKicad': 'Loading KiCad viewer...',\n 'viewer.loading3d': 'Loading 3D viewer...',\n 'viewer.loadingStep': 'Loading STEP viewer...',\n 'viewer.gerberTitle': 'DFX Copilot — Gerber preview',\n 'viewer.gerberBlobWarning':\n 'DFX Copilot must fetch the file from a public URL. Local blob/data URLs cannot be used inside a cross-origin iframe. Return content_url from getResourceContent or implement getResourceUrl with an HTTPS presigned link.',\n 'viewer.gerberNoHttpUrl':\n 'The resource URL is not http(s); it cannot be passed to DFX Copilot. Use a direct or presigned URL.',\n 'viewer.pdfPreview': 'PDF Preview',\n 'viewer.htmlPreview': 'HTML Preview',\n 'viewer.htmlProjectLoading': 'Loading HTML project files…',\n 'viewer.htmlProjectNoEntry': 'HTML project is missing an entry file (e.g. index.html); cannot render',\n 'viewer.htmlProjectSizeLimit': 'HTML project exceeds size limit; only the entry file is rendered',\n 'viewer.htmlStrategyForcedInlineWarning': 'ESM modules detected, but inline strategy is forced; imports may fail',\n 'viewer.htmlStrategyFallbackCspWarning': 'Host CSP blocks blob: URLs; automatically falling back to inline strategy',\n 'viewer.copyFullKicadTitle': 'Copy full KiCad source to clipboard and reference',\n 'viewer.zoomIn': 'Zoom in',\n 'viewer.zoomOut': 'Zoom out',\n 'viewer.zoomReset': 'Reset',\n 'viewer.loadingWord': 'Loading Word viewer...',\n 'viewer.loadingExcel': 'Loading Excel viewer...',\n 'viewer.loadingPowerPoint': 'Loading PowerPoint viewer...',\n 'viewer.pptPrev': '‹ Prev',\n 'viewer.pptNext': 'Next ›',\n 'viewer.pptSlide': 'Slide',\n 'viewer.pptThumbnails': 'Thumbnails',\n 'viewer.excelRows': 'rows',\n 'viewer.excelColumns': 'columns',\n 'childAgent.status.running': 'Running',\n 'childAgent.status.completed': 'Completed',\n 'hitl.form.defaultTitle': 'Please fill the form',\n 'hitl.wait.default': 'Waiting for user input...',\n 'todo.completed.count': '{{completed}}/{{total}} completed',\n 'todo.blocked.count': '{{count}} blocked',\n 'todo.more': '+ {{count}} more',\n 'todo.header.done': 'Done',\n 'tool.phase.generating': 'Generating',\n 'tool.phase.executing': 'Executing',\n 'tool.phase.complete': 'Complete',\n 'tool.phase.error': 'Failed',\n 'tool.executing': 'Execute tool: {{name}}',\n 'tool.mcp.running': 'Running',\n 'tool.mcp.success': 'Complete',\n 'tool.mcp.error': 'Failed',\n 'form.placeholder.select': 'Please select',\n 'form.required.default': 'This field is required',\n 'form.submit.submit': 'Submit',\n 'form.submit.submitting': 'Submitting...',\n 'form.requestId': 'Request ID: ',\n 'pinned.label': 'Pinned',\n 'plan.title': 'Execution Plan',\n 'plan.step': 'Step {{index}}',\n 'thinking.inProgress': 'Thinking...',\n 'thinking.completed': 'Thinking completed',\n 'split.unreadCount': '{{count}} new messages',\n 'split.askQuestion': 'Ask (⌘/)',\n 'split.exitFullscreen': 'Exit fullscreen (Esc)',\n 'context.inputPlaceholder': 'Ask here...',\n 'context.inputPlaceholderWithFile': 'Ask about {{fileName}}...',\n 'context.send': 'Send',\n 'context.removeReference': 'Remove reference',\n 'split.home': 'Main Chat',\n 'split.workspace': 'Workspace',\n 'split.annotation': 'Annotations',\n 'split.tabClose': 'Close tab',\n 'split.tabNew': 'New tab',\n 'split.tabScrollLeft': 'Scroll tabs left',\n 'split.tabScrollRight': 'Scroll tabs right',\n 'workspace.title': 'Workspace',\n 'workspace.searchPlaceholder': 'Search files...',\n 'workspace.empty': 'No files yet',\n 'workspace.downloadAll': 'Download all files as zip',\n 'workspace.recent': 'Recent changes',\n 'workspace.open': 'Open',\n 'workspace.openInNewTab': 'Open in new tab',\n 'workspace.download': 'Download',\n 'workspace.copyPath': 'Copy path',\n 'workspace.expandAll': 'Expand all',\n 'workspace.collapseAll': 'Collapse all',\n 'annotation.title': 'Annotations',\n 'annotation.empty': 'No annotations',\n 'annotation.fileLevelTitle': 'File Conversation',\n 'annotation.fileLevelPlaceholder': 'Ask about this file...',\n 'annotation.anchoredPlaceholder': 'Ask about selection...',\n 'annotation.inlineInputPlaceholder': 'Ask about this...',\n 'annotation.replyPlaceholder': 'Follow up...',\n 'annotation.anchorLabel': 'Anchor: {{text}}',\n 'annotation.close': 'Close',\n 'annotation.fabLabel': 'File annotation',\n 'annotation.fabHeader': '{{fileName}} · File Conversation',\n 'annotation.messageCount': '{{count}} messages',\n 'annotation.anchorInvalid': 'Anchor invalidated',\n 'annotation.errorRetry': 'Send failed, click to retry',\n 'annotation.queuedHint': 'Queued, please wait...',\n 'annotation.selectionLabel': 'Selected text',\n 'agentControl.pause': 'Pause',\n 'agentControl.resume': 'Resume',\n 'agentControl.stop': 'Stop',\n 'agentControl.paused': 'Paused',\n 'agentControl.groupTitle': 'Agent Group',\n 'aria.fileNavigation': 'File navigation',\n 'kicad.loadFailed': 'KiCanvas load failed, switched to source view',\n 'kicad.urlNotReady': 'Resource URL not ready, showing source',\n 'kicad.loadingEngine': 'Loading KiCanvas engine...',\n 'kicad.sidebarTitle': 'KiCanvas sidebar: properties, symbol/footprint list, docs',\n 'kicad.sidebarPcb': 'PCB: view properties, footprint list',\n 'kicad.sidebarSch': 'SCH: view symbol/sub-sheet properties',\n 'kicad.sidebarGeneric': 'View properties',\n 'kicad.viewVisual': 'Visual',\n 'kicad.viewSource': 'Source',\n 'provenance.filter.type.agent': 'Agent',\n 'provenance.filter.type.action': 'Action',\n 'provenance.filter.type.file': 'File',\n 'provenance.filter.type.task': 'Task',\n 'provenance.filter.type.reasoning': 'Reasoning',\n 'provenance.filter.depth': 'Depth:',\n 'provenance.toolbar.zoomToFit': 'Zoom to fit',\n 'provenance.toolbar.resetCamera': 'Reset camera',\n 'provenance.toolbar.refresh': 'Refresh',\n 'provenance.legend.reasoning': 'Reasoning',\n 'provenance.legend.action': 'Action',\n 'provenance.legend.file': 'File',\n 'provenance.legend.task': 'Task',\n 'provenance.legend.references': 'References',\n 'provenance.legend.edges': 'Edges: ',\n 'provenance.legend.depth': 'Depth: ',\n 'provenance.detail.title': 'Node details',\n 'provenance.detail.noSelection': 'No node selected',\n 'provenance.detail.label.name': 'Name',\n 'provenance.detail.label.id': 'ID',\n 'provenance.detail.label.timestamp': 'Timestamp',\n 'provenance.detail.label.agentId': 'Agent ID',\n 'provenance.detail.label.instanceId': 'Instance ID',\n 'provenance.detail.label.level': 'Level',\n 'provenance.detail.label.status': 'Status',\n 'provenance.detail.label.tool': 'Tool',\n 'provenance.detail.label.purpose': 'Purpose',\n 'provenance.detail.label.duration': 'Duration',\n 'provenance.detail.label.path': 'Path',\n 'provenance.detail.label.operation': 'Operation',\n 'provenance.detail.label.taskId': 'Task ID',\n 'provenance.detail.label.description': 'Description',\n 'provenance.detail.label.model': 'Model',\n 'provenance.detail.label.tokenCount': 'Token count',\n 'provenance.detail.label.reasoningPreview': 'Reasoning preview',\n 'provenance.detail.relatedEdges': 'Related edges ({{count}})',\n 'provenance.page.noSessionHint': 'Please specify session via URL: ?session_id=NNN',\n 'provenance.page.loading': 'Loading provenance graph...',\n 'provenance.page.emptyGraph': 'No graph data for this session',\n 'provenance.drawer.emptyGraph': 'No graph data',\n 'provenance.graph.edgeType.references': 'References',\n 'toolResult.label': 'Result',\n 'toolResult.expandAll': 'Expand all ({{count}} lines)',\n 'toolResult.searchSummary': 'Search results · {{count}}',\n 'toolResult.scrapeSummary': 'Scrape result · {{title}}',\n 'toolResult.more': '+{{count}} more',\n 'plan.status.active': 'Running',\n 'pinned.noMessage': '(no message content)',\n 'viewer.fallback.unknownType': 'Unknown type',\n 'viewer.fallback.download': 'Download file',\n 'fileSize.B': '{{size}} B',\n 'fileSize.KB': '{{size}} KB',\n 'fileSize.MB': '{{size}} MB',\n 'thinking.title': 'Thinking',\n 'thinking.step': 'Step {{step}}',\n 'viewer.stepHint': 'Drag to rotate, scroll to zoom, right-click to pan',\n 'viewer.threeHint': 'Drag to rotate, scroll to zoom, right-click to pan',\n 'viewer.3d.wireframe': 'Wireframe',\n 'viewer.3d.resetView': 'Reset view',\n 'reference.header': '[Reference: {{fileName}}]',\n 'history.noMessage': '(history message)',\n 'agent.defaultName': 'Assistant',\n 'error.unknown': 'Unknown error',\n 'locale': 'en-US',\n 'skill.inlineLabel': 'First check and use the {{name}} skill to solve: ',\n 'skill.empty': 'No skills available',\n 'skill.searchPlaceholder': 'Search skills...',\n 'skill.removeLabel': 'Remove skill',\n 'skill.loading': 'Loading...',\n 'skill.loadError': 'Failed to load skills',\n 'skill.loadMore': 'Load more',\n 'skill.selectorLabel': 'Skill selector',\n 'pool.idle': 'Idle',\n 'pool.collaborating': '{{count}} working',\n 'pool.awaiting': '{{count}} awaiting human',\n 'pool.title': 'Agent Pool',\n 'pool.empty': 'No active agents',\n 'pool.state.running': 'Running',\n 'pool.state.paused': 'Awaiting human',\n 'pool.state.completed': 'Completed',\n 'pool.state.stopping': 'Stopping',\n 'pool.state.stopped': 'Stopped',\n 'pool.state.lost': 'Lost',\n 'pool.state.unknown': 'Unknown',\n 'pool.action.thinking': 'Thinking',\n 'input.placeholder': 'Type a message, / for skills',\n 'input.placeholderPrimary': 'Type a message',\n 'input.placeholderSkillHint': ', / for skills',\n 'input.placeholderLoading': 'Waiting for response…',\n 'composer.queued.count': '{{count}} queued · will send automatically after the current run',\n 'composer.queued.editAria': 'Edit and dequeue: {{text}}',\n 'composer.queued.removeAria': 'Remove queued message: {{text}}',\n 'composer.queued.interjectLabel': 'Jump',\n 'composer.queued.interjectTitle': 'Deliver now: interject into the running agent without waiting for the current run',\n 'composer.queued.interjectAria': 'Interject now: {{text}}',\n 'message.interjectionTag': 'Interjection',\n 'discussion.title': 'Discussions',\n 'discussion.empty': 'No discussions',\n 'discussion.active': 'Active',\n 'discussion.resolved': 'Resolved',\n 'discussion.archived': 'Archived',\n 'round.foreign.label': 'Conversation from another tab',\n 'round.foreign.unread': '{{count}} new messages',\n 'round.foreign.expand': 'Click to expand',\n 'sidebar.mainChat': 'Main chat',\n 'sidebar.chat': 'Chat',\n 'sidebar.fileQA': 'File Q&A',\n 'sidebar.selectionQA': 'Selection Q&A',\n 'sessionList.title': 'Sessions',\n 'sessionList.newSession': '+ New chat',\n 'sessionList.logout': 'Logout',\n 'sessionList.loading': 'Loading...',\n 'sessionList.empty': 'No sessions yet',\n 'sessionList.unsupported': 'Adapter does not implement listSessions',\n 'sessionList.untitled': 'Untitled',\n 'sessionList.deleteTitle': 'Delete session',\n 'sessionList.deleteConfirm': 'Delete this session?',\n 'sessionList.prevPage': '←',\n 'sessionList.nextPage': '→',\n 'sessionList.pageInfo': 'Page {{page}} / {{totalPages}}',\n 'modelPicker.menu.head': 'Model for this turn',\n 'modelPicker.menu.aria': 'Choose the model for this turn',\n 'modelPicker.auto.title': 'Default (follow agent)',\n 'modelPicker.auto.hint.knownChannel': 'Agent default: {{name}} · {{channel}}',\n 'modelPicker.auto.hint.knownBasename': 'Agent default: {{name}}',\n 'modelPicker.auto.hint.fallback':\n \"Use the agent's registered default model; sub-agents follow automatically\",\n 'modelPicker.row.hint.channelMulti': '{{available}} of {{total}} channels available',\n 'modelPicker.row.hint.channelSingle': 'Channel: {{channel}}',\n 'modelPicker.row.hint.versionMulti': '{{count}} versions available',\n 'modelPicker.fallback.placeholder': 'Default model',\n 'modelPicker.inert.title': 'Model picker is unavailable',\n 'modelPicker.guestLocked.label': 'Default model · sign in to choose',\n 'modelPicker.guestLocked.title':\n 'Signed-in users can switch among multiple models. As a guest you start with the default — sign in any time to swap.',\n 'modelPicker.loadingList': 'Loading model list…',\n 'modelPicker.trigger.title.stale':\n '{{name}} (no longer listed — will still be attempted on send)',\n 'modelPicker.trigger.title.agentDefault.withChannel':\n 'Agent default: {{name}} · {{channel}} (sent value follows the agent)',\n 'modelPicker.trigger.title.agentDefault':\n 'Agent default: {{name}} (sent value follows the agent)',\n 'modelPicker.trigger.title.current': 'Current model: {{name}}',\n 'modelPicker.row.title.pickDefault': 'Use default channel ({{hint}})',\n 'modelPicker.row.title.pick': 'Use {{name}}',\n 'modelPicker.chip.aria': '{{title}} channels',\n 'modelPicker.chip.title.available': 'Channel {{channel}} · model {{name}}',\n 'modelPicker.chip.title.unavailable': 'Channel {{channel}} · currently unavailable',\n 'modelPicker.search.placeholder': 'Search models — e.g. gpt5, claude opus…',\n 'modelPicker.search.aria': 'Search models',\n 'modelPicker.search.clear.aria': 'Clear search',\n 'modelPicker.modality.aria': 'Filter by capability',\n 'modelPicker.modality.all': 'All',\n 'modelPicker.modality.chat': 'Chat',\n 'modelPicker.modality.image': 'Image',\n 'modelPicker.modality.video': 'Video',\n 'modelPicker.modality.audio': 'Audio',\n 'modelPicker.modality.embedding': 'Embedding',\n 'modelPicker.modality.realtime': 'Realtime',\n 'modelPicker.section.recent': 'Recent',\n 'modelPicker.section.vendor': '{{vendor}}',\n 'modelPicker.section.toggle.expand': 'Expand {{vendor}}',\n 'modelPicker.section.toggle.collapse': 'Collapse {{vendor}}',\n 'modelPicker.empty.title': 'No models match',\n 'modelPicker.empty.hint': 'Try clearing the search or switching capability',\n 'modelPicker.vendor.openai': 'OpenAI',\n 'modelPicker.vendor.anthropic': 'Anthropic',\n 'modelPicker.vendor.google': 'Google',\n 'modelPicker.vendor.xai': 'xAI',\n 'modelPicker.vendor.alibaba': 'Alibaba',\n 'modelPicker.vendor.zhipu': 'Zhipu',\n 'modelPicker.vendor.moonshot': 'Moonshot',\n 'modelPicker.vendor.bytedance': 'ByteDance',\n 'modelPicker.vendor.deepseek': 'DeepSeek',\n 'modelPicker.vendor.minimax': 'MiniMax',\n 'modelPicker.vendor.openrouter': 'OpenRouter',\n 'modelPicker.vendor.xiaomi': 'Xiaomi',\n 'modelPicker.vendor.other': 'Other',\n 'modelPicker.cap.aria': 'Model capabilities',\n 'modelPicker.cap.image.title': 'Vision (accepts image input)',\n 'modelPicker.cap.video.native.title': 'Native video understanding',\n 'modelPicker.cap.video.derived.title': 'Video understanding (derived from vision via frame sampling)',\n 'modelPicker.cap.audio.title': 'Audio input understanding',\n 'modelPicker.cap.tools.title': 'Tool calling / function call',\n 'modelPicker.cap.imageGen.title': 'Image generation',\n 'modelPicker.cap.videoGen.title': 'Video generation',\n 'modelPicker.cap.audioGen.title': 'Audio generation / TTS / music synthesis',\n 'jr.confirmDialog.cancel': 'Cancel',\n 'jr.confirmDialog.confirm': 'Confirm',\n 'jr.confirmDialog.loading': 'Processing',\n 'rag.chip.label': 'Source',\n 'rag.chip.fragment.chunk': 'chunk {{n}}',\n 'rag.chip.fragment.line': 'L{{start}}',\n 'rag.chip.fragment.lineRange': 'L{{start}}-{{end}}',\n 'rag.chip.fragment.row': 'row {{start}}',\n 'rag.chip.cluster': '{{name}} ×{{count}}',\n 'rag.chip.cluster.expandAria': 'Expand {{count}} references to {{name}}',\n 'rag.unresolved.label': 'Unresolved reference',\n 'rag.unresolved.reason.pathForm': 'Unresolved reference: path not normalized — click to retry resolution',\n 'rag.unresolved.reason.unknownRid': 'Unresolved reference: not found in this session citation context',\n 'rag.unresolved.reason.urlUnreachable': 'Unresolved reference: web URL unreachable',\n 'rag.unresolved.retry': 'Click to retry resolution',\n 'rag.unresolved.resolving': 'Resolving…',\n 'rag.unresolved.failed': 'Resolution failed',\n 'rag.popover.viewNetwork': 'View reference network',\n 'rag.precision.file': 'File-level locate',\n 'viewer.fragmentUnsupported': 'File located (fragment highlight not supported for this format)',\n 'viewer.viewGraph': 'View reference network',\n 'backlinks.tab': 'Referenced in this task ({{count}})',\n 'backlinks.group.answer': 'From answers ({{count}})',\n 'backlinks.group.file': 'From files ({{count}})',\n 'backlinks.group.transcript': 'From transcripts ({{count}})',\n 'backlinks.pinnedFragment': 'References to this fragment ({{count}})',\n 'backlinks.loading': 'Loading references…',\n 'backlinks.error': 'Failed to load references',\n 'backlinks.retry': 'Retry',\n 'backlinks.empty': 'No references yet',\n 'backlinks.ghost': 'Target deleted',\n 'backlinks.filter.all': 'All',\n 'backlinks.openAnswer': 'Jump to the answer',\n 'backlinks.close': 'Close references panel',\n 'backlinks.openTranscript': 'Jump to the chat turn',\n 'backlinks.copyLocator': 'Copy transcript locator',\n 'backlinks.locatorCopied': 'Copied',\n 'backlinks.turnUnreachable': 'Turn is outside this session — copy the locator to inspect it manually',\n 'localGraph.title': 'Knowledge graph',\n 'localGraph.loading': 'Loading graph…',\n 'localGraph.error': 'Failed to load graph',\n 'localGraph.retry': 'Retry',\n 'localGraph.refresh': 'Refresh',\n 'localGraph.empty': 'This file has no references yet',\n 'localGraph.depth': 'Depth',\n 'localGraph.aggregated': '…{{count}} more',\n 'localGraph.nodeOpenAria': 'Open {{label}}',\n 'localGraph.close': 'Close graph',\n 'localGraph.openFile': 'Open in source file',\n 'rag.popover.openInViewer': '→ Open in source',\n 'rag.popover.staleWarning': '⚠️ File updated',\n 'rag.popover.missingTitle': 'Unable to load passage',\n 'rag.popover.missingHint': 'Please retry or open the file',\n 'rag.popover.loadingHint': 'Loading…',\n 'rag.popover.imageNoPreview': '🖼 Image (no preview)',\n 'rag.popover.tableEmpty': 'Table (no content)',\n 'compute.panel.title': 'Environments',\n 'compute.panel.loading': 'Loading environments…',\n 'compute.panel.empty': 'No environments available',\n 'compute.panel.error': 'Failed to load environments',\n 'compute.panel.refresh': 'Refresh',\n 'compute.target.offline': 'Offline',\n 'compute.target.ready': 'Online',\n 'compute.action.shell': 'Open Shell',\n 'compute.action.desktop': 'Open Desktop',\n 'compute.action.noShell': 'Shell not supported',\n 'compute.action.noDesktop': 'Desktop not supported',\n 'compute.shell.title': 'Terminal',\n 'compute.shell.connecting': 'Connecting…',\n 'compute.shell.connected': 'Connected',\n 'compute.shell.disconnected': 'Disconnected',\n 'compute.shell.error': 'Shell connection failed',\n 'compute.shell.close': 'Close',\n 'compute.desktop.title': 'Remote Desktop',\n 'compute.desktop.connecting': 'Connecting…',\n 'compute.desktop.connected': 'Connected',\n 'compute.desktop.disconnected': 'Disconnected',\n 'compute.desktop.error': 'Desktop connection failed',\n 'compute.desktop.close': 'Close',\n}\n\nexport type ChatWidgetLocale = 'zh-CN' | 'en-US'\n\nconst builtinMessages: Record<ChatWidgetLocale, ChatWidgetMessages> = {\n 'zh-CN': zhCN,\n 'en-US': enUS,\n}\n\nexport function resolveMessages(\n locale: ChatWidgetLocale = 'zh-CN',\n overrides?: Partial<ChatWidgetMessages>,\n): ChatWidgetMessages {\n const base = builtinMessages[locale] ?? zhCN\n if (!overrides) return base\n return { ...base, ...overrides }\n}\n\nexport function interpolate(\n template: string,\n params?: Record<string, string | number>,\n): string {\n if (!params) return template\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) =>\n String(params[key] ?? ''),\n )\n}\n","import { createContext, useContext, useCallback } from 'react'\nimport type { ChatWidgetMessages, ChatWidgetLocale } from './messages.js'\nimport { zhCN, interpolate } from './messages.js'\n\nexport const I18nContext = createContext<ChatWidgetMessages>(zhCN)\n\nexport function useChatWidgetI18n() {\n const messages = useContext(I18nContext)\n\n const locale: ChatWidgetLocale = (messages['locale'] as ChatWidgetLocale) || 'zh-CN'\n\n const t = useCallback(\n (key: keyof ChatWidgetMessages, params?: Record<string, string | number>): string => {\n const template = messages[key] ?? key\n return interpolate(template, params)\n },\n [messages],\n )\n\n return { messages, t, locale }\n}\n"],"mappings":"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","names":[]}